diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml new file mode 100644 index 000000000..1691f376a --- /dev/null +++ b/.github/workflows/analyze.yml @@ -0,0 +1,53 @@ +# name: 🧐 Analyze + +# permissions: write-all + +# on: +# push: +# branches: +# - main +# - develop +# pull_request: +# types: +# - opened +# - reopened +# - synchronize +# - ready_for_review +# branches: +# - main +# - develop +# paths-ignore: +# - '**.md' +# - doc/** +# - .git/ +# - .vscode/ + +# jobs: +# analyze: +# name: Analyze +# if: github.event.pull_request.draft == false +# timeout-minutes: 30 +# runs-on: macos-latest +# steps: +# - name: âŦ‡ī¸ Checkout repository +# uses: actions/checkout@v3 +# - name: ⚙ī¸ Setup Flutter +# uses: subosito/flutter-action@v2 +# with: +# channel: stable +# cache: true +# - name: ⚠ī¸â„šī¸ Run Dart analysis for hmssdk_flutter package +# uses: zgosalvez/github-actions-analyze-dart@v2.0.9 +# with: +# working-directory: "${{github.workspace}}/packages/hmssdk_flutter" +# - name: ⚠ī¸â„šī¸ Run Dart analysis for hms_room_kit package +# uses: zgosalvez/github-actions-analyze-dart@v2.0.9 +# with: +# working-directory: "${{github.workspace}}/packages/hms_room_kit" +# # - name: 📈 Check metrics +# # uses: dart-code-checker/dart-code-metrics-action@v3.0.0 +# # with: +# # github_token: ${{ secrets.GITHUB_TOKEN }} +# # pull_request_comment: true +# # check_unused_files: true +# # folders: 'packages/hmssdk_flutter, packages/hms_room_kit' \ No newline at end of file diff --git a/.github/workflows/deploy-uat-apps.yml b/.github/workflows/deploy-uat-apps.yml new file mode 100644 index 000000000..3ea024b6c --- /dev/null +++ b/.github/workflows/deploy-uat-apps.yml @@ -0,0 +1,73 @@ +name: Deploy UAT Apps + +on: + # push: + # branches: [ main, develop ] + pull_request: + branches: [ main, develop ] + + # # 3 + # workflow_dispatch: + +jobs: + + build_with_signing: + runs-on: macos-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + distribution: zulu + java-version: 12.x + - uses: subosito/flutter-action@v2 + with: + channel: stable + - name: Install the Apple certificate and provisioning profile + env: + BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} + P12_PASSWORD: ${{ secrets.P12_PASSWORD }} + FLUTTERADHOCDISTRIBUTION: ${{ secrets.FLUTTERADHOCDISTRIBUTION }} + FLUTTERADHOCBROADCASTUPLOADEXTENSION: ${{ secrets.FLUTTERADHOCBROADCASTUPLOADEXTENSION }} + FLUTTERAPPSTORE: ${{ secrets.FLUTTERAPPSTORE }} + FLUTTERAPPSTOREBROADCASTUPLOADEXTENSION: ${{ secrets.FLUTTERAPPSTOREBROADCASTUPLOADEXTENSION }} + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + SLACK_URL: ${{ secrets.SLACK_URL }} + FLUTTER_HMS_JSON: ${{ secrets.FLUTTER_HMS_JSON }} + run: | + # create variables + CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 + PP_PATH_FLUTTERADHOCDISTRIBUTION=$RUNNER_TEMP/FLUTTERADHOCDISTRIBUTION.mobileprovision + PP_PATH_FLUTTERADHOCBROADCASTUPLOADEXTENSION=$RUNNER_TEMP/FLUTTERADHOCBROADCASTUPLOADEXTENSION.mobileprovision + PP_PATH_FLUTTERAPPSTORE=$RUNNER_TEMP/FLUTTERAPPSTORE.mobileprovision + PP_PATH_FLUTTERAPPSTOREBROADCASTUPLOADEXTENSION=$RUNNER_TEMP/FLUTTERAPPSTOREBROADCASTUPLOADEXTENSION.mobileprovision + KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + + # import certificate and provisioning profile from secrets + echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH + echo -n "$FLUTTERADHOCDISTRIBUTION" | base64 --decode -o $PP_PATH_FLUTTERADHOCDISTRIBUTION + echo -n "$FLUTTERADHOCBROADCASTUPLOADEXTENSION" | base64 --decode -o $PP_PATH_FLUTTERADHOCBROADCASTUPLOADEXTENSION + echo -n "$FLUTTERAPPSTORE" | base64 --decode -o $PP_PATH_FLUTTERAPPSTORE + echo -n "$FLUTTERAPPSTOREBROADCASTUPLOADEXTENSION" | base64 --decode -o $PP_PATH_FLUTTERAPPSTOREBROADCASTUPLOADEXTENSION + + # create temporary keychain + security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + security set-keychain-settings -lut 21600 $KEYCHAIN_PATH + security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + + # import certificate to keychain + security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH + security list-keychain -d user -s $KEYCHAIN_PATH + + # apply provisioning profile + mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles + cp $PP_PATH_FLUTTERADHOCDISTRIBUTION ~/Library/MobileDevice/Provisioning\ Profiles + cp $PP_PATH_FLUTTERADHOCBROADCASTUPLOADEXTENSION ~/Library/MobileDevice/Provisioning\ Profiles + cp $PP_PATH_FLUTTERAPPSTORE ~/Library/MobileDevice/Provisioning\ Profiles + cp $PP_PATH_FLUTTERAPPSTOREBROADCASTUPLOADEXTENSION ~/Library/MobileDevice/Provisioning\ Profiles + # - name: Run Release Script + # run: | + # chmod +x ./release-apps.sh + # ./release-apps.sh + # shell: bash diff --git a/.gitignore b/.gitignore index 7df1c3575..91b2eff6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,39 +1,2147 @@ -.DS_Store -.dart_tool/ - -.packages -.pub/ -build/ - -*.g.dart -*.idea -private_key.pepk -./example/android/app/100msKeyStore -100msKeyStore -example/ios/Runner.app.dSYM.zip -example/ios/Runner.ipa -example/lib/app_secrets.dart -launch.json -./documentation - -example/android/app/google-services.json -example/android/fastlane/Appfile -example/android/fastlane/Fastfile -example/android/fastlane/Pluginfile -example/android/fastlane/README.md -example/android/flutter-hms-4aea6d38fd2a.json -/example/android/fastlane/report.xml - -example/ios/fastlane/Appfile -example/ios/fastlane/Fastfile -example/ios/fastlane/Pluginfile -example/ios/flutter-hms-4aea6d38fd2a.json -example/ios/fastlane/README.md -/example/ios/fastlane/report.xml -example/ios/Runner/GoogleService-Info.plist -example/ios/config/GoogleService-Info.plist -*.p8 -sample apps/hms-callkit-app/.flutter-plugins -sample apps/hms-callkit-app/.flutter-plugins-dependencies -sample apps/flutter-quickstart-app/.flutter-plugins -sample apps/flutter-quickstart-app/.flutter-plugins-dependencies +sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/outputs.json +sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/outputs.json +sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/outputs.json +sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/outputs.json +.dart_tool/package_config.json +.dart_tool/package_config_subset +.dart_tool/version +android/.gradle/6.8.3/gc.properties +android/.gradle/6.8.3/fileChanges/last-build.bin +android/.gradle/6.8.3/fileHashes/fileHashes.lock +android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +android/.gradle/buildOutputCleanup/cache.properties +android/.gradle/checksums/checksums.lock +android/.gradle/checksums/sha1-checksums.bin +android/.gradle/configuration-cache/gc.properties +android/.gradle/vcs-1/gc.properties +android/.idea/.name +android/.idea/gradle.xml +android/.idea/misc.xml +android/.idea/workspace.xml +example/.flutter-plugins +example/.flutter-plugins-dependencies +example/.dart_tool/package_config.json +example/.dart_tool/package_config_subset +example/.dart_tool/flutter_build/dart_plugin_registrant.dart +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/.filecache +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/app.dill +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/debug_android_application.stamp +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/flutter_assets.d +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/gen_dart_plugin_registrant.stamp +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/gen_localizations.stamp +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/kernel_snapshot.d +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/kernel_snapshot.stamp +example/.dart_tool/flutter_build/b49e8e923d270d37aed9e7339a6d5e85/outputs.json +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/.filecache +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/_composite.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/android_aot_bundle_release_android-arm.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/android_aot_bundle_release_android-arm64.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/android_aot_bundle_release_android-x64.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/android_aot_release_android-arm.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/android_aot_release_android-arm64.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/android_aot_release_android-x64.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/aot_android_asset_bundle.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/app.dill +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/flutter_android_aot_bundle_release_android-arm.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/flutter_android_aot_bundle_release_android-arm64.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/flutter_android_aot_bundle_release_android-x64.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/flutter_android_aot_release_android-arm.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/flutter_android_aot_release_android-arm64.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/flutter_android_aot_release_android-x64.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/flutter_assets.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/gen_dart_plugin_registrant.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/gen_localizations.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/kernel_snapshot.d +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/kernel_snapshot.stamp +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/outputs.json +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/arm64-v8a/app.so +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/armeabi-v7a/app.so +example/.dart_tool/flutter_build/f81ef0561ff7300ab4ee5ec35e19b789/x86_64/app.so +example/android/.gradle/file-system.probe +example/android/.gradle/7.3.3/gc.properties +example/android/.gradle/7.3.3/checksums/checksums.lock +example/android/.gradle/7.3.3/checksums/md5-checksums.bin +example/android/.gradle/7.3.3/checksums/sha1-checksums.bin +example/android/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock +example/android/.gradle/7.3.3/dependencies-accessors/gc.properties +example/android/.gradle/7.3.3/executionHistory/executionHistory.bin +example/android/.gradle/7.3.3/executionHistory/executionHistory.lock +example/android/.gradle/7.3.3/fileChanges/last-build.bin +example/android/.gradle/7.3.3/fileHashes/fileHashes.bin +example/android/.gradle/7.3.3/fileHashes/fileHashes.lock +example/android/.gradle/7.3.3/fileHashes/resourceHashesCache.bin +example/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +example/android/.gradle/buildOutputCleanup/cache.properties +example/android/.gradle/buildOutputCleanup/outputFiles.bin +example/android/.gradle/vcs-1/gc.properties +example/android/.idea/.gitignore +example/android/.idea/compiler.xml +example/android/.idea/gradle.xml +example/android/.idea/jarRepositories.xml +example/android/.idea/kotlinc.xml +example/android/.idea/misc.xml +example/android/.idea/vcs.xml +example/android/.idea/modules/-1059653521/android.firebase_core.androidTest.iml +example/android/.idea/modules/-106276478/android.flutter_plugin_android_lifecycle.androidTest.iml +example/android/.idea/modules/-1576442464/android.hmssdk_flutter.androidTest.iml +example/android/.idea/modules/-1640452365/android.permission_handler_android.androidTest.iml +example/android/.idea/modules/-1701833509/android.qr_code_scanner.androidTest.iml +example/android/.idea/modules/-257583320/android.firebase_crashlytics.androidTest.iml +example/android/.idea/modules/-487299342/android.flutter_foreground_task.androidTest.iml +example/android/.idea/modules/-533816108/android.shared_preferences_android.androidTest.iml +example/android/.idea/modules/-596433577/android.image_gallery_saver.androidTest.iml +example/android/.idea/modules/-676922960/android.firebase_analytics.androidTest.iml +example/android/.idea/modules/-788473241/android.package_info_plus.androidTest.iml +example/android/.idea/modules/-808683992/android.file_picker.androidTest.iml +example/android/.idea/modules/1185687231/android.uni_links.androidTest.iml +example/android/.idea/modules/1953350377/android.firebase_performance.androidTest.iml +example/android/.idea/modules/450572045/android.url_launcher_android.androidTest.iml +example/android/.idea/modules/572881098/android.firebase_dynamic_links.androidTest.iml +example/android/.idea/modules/70239017/android.path_provider_android.androidTest.iml +example/android/.idea/modules/759568764/android.wakelock.androidTest.iml +example/android/.idea/modules/99196934/android.share_plus.androidTest.iml +example/android/.idea/modules/app/android.app.androidTest.iml +example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java +example/ios/.symlinks/plugins/file_picker +example/ios/.symlinks/plugins/firebase_analytics +example/ios/.symlinks/plugins/firebase_core +example/ios/.symlinks/plugins/firebase_crashlytics +example/ios/.symlinks/plugins/firebase_dynamic_links +example/ios/.symlinks/plugins/firebase_performance +example/ios/.symlinks/plugins/flutter_foreground_task +example/ios/.symlinks/plugins/hmssdk_flutter +example/ios/.symlinks/plugins/image_gallery_saver +example/ios/.symlinks/plugins/package_info_plus +example/ios/.symlinks/plugins/path_provider_foundation +example/ios/.symlinks/plugins/permission_handler_apple +example/ios/.symlinks/plugins/qr_code_scanner +example/ios/.symlinks/plugins/share_plus +example/ios/.symlinks/plugins/shared_preferences_foundation +example/ios/.symlinks/plugins/uni_links +example/ios/.symlinks/plugins/url_launcher_ios +example/ios/.symlinks/plugins/wakelock +example/ios/Flutter/Flutter.podspec +example/ios/Flutter/flutter_export_environment.sh +example/ios/Flutter/Generated.xcconfig +example/ios/Pods/Manifest.lock +example/ios/Pods/DKImagePickerController/LICENSE +example/ios/Pods/DKImagePickerController/README.md +example/ios/Pods/DKImagePickerController/Sources/DKImageDataManager/DKImageBaseManager.swift +example/ios/Pods/DKImagePickerController/Sources/DKImageDataManager/DKImageDataManager.swift +example/ios/Pods/DKImagePickerController/Sources/DKImageDataManager/DKImageGroupDataManager.swift +example/ios/Pods/DKImagePickerController/Sources/DKImageDataManager/Model/DKAsset+Export.swift +example/ios/Pods/DKImagePickerController/Sources/DKImageDataManager/Model/DKAsset+Fetch.swift +example/ios/Pods/DKImagePickerController/Sources/DKImageDataManager/Model/DKAsset.swift +example/ios/Pods/DKImagePickerController/Sources/DKImageDataManager/Model/DKAssetGroup.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/DKImageAssetExporter.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/DKImageExtensionController.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/DKImagePickerController.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/DKImagePickerControllerBaseUIDelegate.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/DKPopoverViewController.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/DKImagePickerControllerResource.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/ar.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Base.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/da.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/de.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/en.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/es.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/fr.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/hu.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/camera.imageset/camera.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/camera.imageset/camera@2x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/camera.imageset/camera@3x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/camera.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/checked_background.imageset/checked_background.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/checked_background.imageset/checked_background@2x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/checked_background.imageset/checked_background@3x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/checked_background.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/empty_album.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/empty_album.imageset/empty_album.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_back_arrow.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_back_arrow.imageset/photoGallery_back_arrow.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_back_arrow.imageset/photoGallery_back_arrow@2x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_back_arrow.imageset/photoGallery_back_arrow@3x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_checked_image.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_checked_image.imageset/photoGallery_checked_image.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_checked_image.imageset/photoGallery_checked_image@2x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_checked_image.imageset/photoGallery_checked_image@3x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_unchecked_image.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_unchecked_image.imageset/photoGallery_unchecked_image.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_unchecked_image.imageset/photoGallery_unchecked_image@2x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/photoGallery_unchecked_image.imageset/photoGallery_unchecked_image@3x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/tick_blue.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/tick_blue.imageset/tick_blue.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/tick_blue.imageset/tick_blue@2x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/tick_blue.imageset/tick_blue@3x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/video_camera.imageset/Contents.json +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/video_camera.imageset/video_camera.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/video_camera.imageset/video_camera@2x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/Images.xcassets/video_camera.imageset/video_camera@3x.png +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/it.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/ja.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/ko.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/nb-NO.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/nl.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/pt_BR.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/ru.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/tr.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/ur.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/vi.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/zh-Hans.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/Resource/Resources/zh-Hant.lproj/DKImagePickerController.strings +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/DKAssetGroupDetailVC.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/DKAssetGroupGridLayout.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/DKAssetGroupListVC.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/DKPermissionView.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/Cell/DKAssetGroupCellItemProtocol.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/Cell/DKAssetGroupDetailBaseCell.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/Cell/DKAssetGroupDetailCameraCell.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/Cell/DKAssetGroupDetailImageCell.swift +example/ios/Pods/DKImagePickerController/Sources/DKImagePickerController/View/Cell/DKAssetGroupDetailVideoCell.swift +example/ios/Pods/DKImagePickerController/Sources/Extensions/DKImageExtensionGallery.swift +example/ios/Pods/DKPhotoGallery/LICENSE +example/ios/Pods/DKPhotoGallery/README.md +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/DKPhotoGallery.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/DKPhotoGalleryContentVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/DKPhotoGalleryItem.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/DKPhotoGalleryScrollView.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/DKPhotoIncrementalIndicator.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/DKPhotoPreviewFactory.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/DKPhotoBasePreviewVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/DKPhotoContentAnimationView.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/DKPhotoProgressIndicator.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/DKPhotoProgressIndicatorProtocol.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/ImagePreview/DKPhotoBaseImagePreviewVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/ImagePreview/DKPhotoImageDownloader.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/ImagePreview/DKPhotoImagePreviewVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/ImagePreview/DKPhotoImageUtility.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/ImagePreview/DKPhotoImageView.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/PDFPreview/DKPDFView.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/PDFPreview/DKPhotoPDFPreviewVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/PlayerPreview/DKPhotoPlayerPreviewVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/PlayerPreview/DKPlayerView.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/QRCode/DKPhotoQRCodeResultVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Preview/QRCode/DKPhotoWebVC.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/DKPhotoGalleryResource.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Base.lproj/DKPhotoGallery.strings +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/en.lproj/DKPhotoGallery.strings +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ImageFailed.imageset/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ImageFailed.imageset/ImageFailed.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ImageFailed.imageset/ImageFailed@2x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ImageFailed.imageset/ImageFailed@3x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPause.imageset/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPause.imageset/ToolbarPause.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPause.imageset/ToolbarPause@2x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPause.imageset/ToolbarPause@3x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPlay.imageset/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPlay.imageset/ToolbarPlay.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPlay.imageset/ToolbarPlay@2x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/ToolbarPlay.imageset/ToolbarPlay@3x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoClose.imageset/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoClose.imageset/VideoClose.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoClose.imageset/VideoClose@2x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoClose.imageset/VideoClose@3x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlay.imageset/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlay.imageset/VideoPlay.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlay.imageset/VideoPlay@2x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlay.imageset/VideoPlay@3x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlayControlBackground.imageset/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlayControlBackground.imageset/VideoPlayControlBackground.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlayControlBackground.imageset/VideoPlayControlBackground@2x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoPlayControlBackground.imageset/VideoPlayControlBackground@3x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoTimeSlider.imageset/Contents.json +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoTimeSlider.imageset/VideoTimeSlider.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoTimeSlider.imageset/VideoTimeSlider@2x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/Images.xcassets/VideoTimeSlider.imageset/VideoTimeSlider@3x.png +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Resource/Resources/zh-Hans.lproj/DKPhotoGallery.strings +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Transition/DKPhotoGalleryInteractiveTransition.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Transition/DKPhotoGalleryTransitionController.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Transition/DKPhotoGalleryTransitionDismiss.swift +example/ios/Pods/DKPhotoGallery/DKPhotoGallery/Transition/DKPhotoGalleryTransitionPresent.swift +example/ios/Pods/Firebase/LICENSE +example/ios/Pods/Firebase/README.md +example/ios/Pods/Firebase/CoreOnly/Sources/Firebase.h +example/ios/Pods/Firebase/CoreOnly/Sources/module.modulemap +example/ios/Pods/FirebaseABTesting/LICENSE +example/ios/Pods/FirebaseABTesting/README.md +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/ABTConditionalUserPropertyController.h +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/ABTConditionalUserPropertyController.m +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/ABTConstants.h +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/ABTExperimentPayload.m +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/FIRExperimentController.m +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/FIRLifecycleEvents.m +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/Private/ABTExperimentPayload.h +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/Private/FirebaseABTestingInternal.h +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/Public/FirebaseABTesting/FirebaseABTesting.h +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/Public/FirebaseABTesting/FIRExperimentController.h +example/ios/Pods/FirebaseABTesting/FirebaseABTesting/Sources/Public/FirebaseABTesting/FIRLifecycleEvents.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebaseABTesting/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebaseABTesting/Interop/Analytics/Public/FIRAnalyticsInterop.h +example/ios/Pods/FirebaseABTesting/Interop/Analytics/Public/FIRAnalyticsInteropListener.h +example/ios/Pods/FirebaseABTesting/Interop/Analytics/Public/FIRInteropEventNames.h +example/ios/Pods/FirebaseABTesting/Interop/Analytics/Public/FIRInteropParameterNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/Info.plist +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/FirebaseAnalytics +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Info.plist +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+OnDevice.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FirebaseAnalytics-umbrella.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIREventNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Modules/module.modulemap +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+OnDevice.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics-umbrella.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/FirebaseAnalytics +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Info.plist +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+OnDevice.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FirebaseAnalytics-umbrella.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIREventNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Modules/module.modulemap +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/FirebaseAnalytics +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Info.plist +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+OnDevice.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics-umbrella.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIREventNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Modules/module.modulemap +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/FirebaseAnalytics +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Info.plist +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+OnDevice.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics-umbrella.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIREventNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Modules/module.modulemap +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+OnDevice.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics-umbrella.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +example/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +example/ios/Pods/FirebaseCore/LICENSE +example/ios/Pods/FirebaseCore/README.md +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebaseCore/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponent.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainer.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainerInternal.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfigurationInternal.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRDependency.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRHeartbeatLogger.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIROptions.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.m +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRApp.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FirebaseCore.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRLoggerLevel.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIROptions.h +example/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRVersion.h +example/ios/Pods/FirebaseCoreExtension/LICENSE +example/ios/Pods/FirebaseCoreExtension/README.md +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/dummy.m +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebaseCoreExtension/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebaseCoreInternal/LICENSE +example/ios/Pods/FirebaseCoreInternal/README.md +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/_ObjC_HeartbeatController.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/_ObjC_HeartbeatsPayload.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/Heartbeat.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatController.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatLoggingTestUtils.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatsBundle.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatsPayload.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatStorage.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/RingBuffer.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/Storage.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/StorageFactory.swift +example/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/WeakContainer.swift +example/ios/Pods/FirebaseCrashlytics/README.md +example/ios/Pods/FirebaseCrashlytics/run +example/ios/Pods/FirebaseCrashlytics/upload-symbols +example/ios/Pods/FirebaseCrashlytics/Crashlytics/LICENSE +example/ios/Pods/FirebaseCrashlytics/Crashlytics/README.md +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCrashlytics.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCrashlyticsReport.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRExceptionModel.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRStackFrame.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSApplication.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSApplication.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSBinaryImage.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSContext.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSCrashedMarkerFile.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSCrashedMarkerFile.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSGlobals.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSHost.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSHost.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSProcess.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSProcess.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSUserLogging.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Components/FIRCLSUserLogging.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSAnalyticsManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSAnalyticsManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSContextManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSContextManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSExistingReportManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSExistingReportManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSManagerData.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSManagerData.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSMetricKitManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSMetricKitManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSNotificationManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSNotificationManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportManager_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Controllers/FIRCLSReportUploader_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionArbiter.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionToken.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/DataCollection/FIRCLSDataCollectionToken.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/FIRCLSUserDefaults/FIRCLSUserDefaults_private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSException.mm +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSHandler.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSHandler.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSMachException.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSMachException.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSSignal.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Handlers/FIRCLSSignal.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSAllocate.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSAllocate.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSCallStackTree.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSCallStackTree.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSDefines.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFeatures.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFile.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSFile.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSInternalLogging.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSInternalLogging.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSLogger.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSLogger.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSProfiling.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSProfiling.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSThreadState.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSThreadState.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSUtility.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Helpers/FIRCLSUtility.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSExecutionIdentifierModel.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSExecutionIdentifierModel.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSFileManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInstallIdentifierModel.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSInternalReport.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSLaunchMarkerModel.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSLaunchMarkerModel.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSOnDemandModel.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSOnDemandModel.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSettings.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/FIRCLSSymbolResolver.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordApplication.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordBase.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordHost.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSRecordIdentity.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Models/Record/FIRCLSReportAdapter_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/FIRCLSAsyncOperation_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Reports/FIRCLSProcessReportOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSDemangleOperation.mm +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSerializeSymbolicatedFramesOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSSymbolicationOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Operations/Symbolication/FIRCLSThreadArrayOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRCLSExistingReportManager_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRCLSOnDemandModel_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRCrashlyticsReport_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRExceptionModel_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Private/FIRStackFrame_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FIRCrashlytics.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FIRCrashlyticsReport.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FirebaseCrashlytics.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FIRExceptionModel.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Public/FirebaseCrashlytics/FIRStackFrame.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsManager.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/FIRCLSSettingsManager.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Models/FIRCLSApplicationIdentifierModel.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSDownloadAndSaveSettingsOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSDownloadAndSaveSettingsOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSNetworkOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Settings/Operations/FIRCLSNetworkOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arch.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_arm.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_x86.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_x86.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Compact/FIRCLSCompactUnwind_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDataParsing.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfExpressionMachine.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfExpressionMachine.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwind.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfUnwindRegisters.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.c +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Protogen/nanopb/crashlytics.nanopb.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSByteUtility.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSByteUtility.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSConstants.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSConstants.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSFABHost.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSFABHost.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSUUID.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSUUID.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSCodeMapping.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSCodeMapping.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSdSYM.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSdSYM.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachO.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOBinary.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOBinary.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOSlice.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSMachO/FIRCLSMachOSlice.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSFABNetworkClient.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSFABNetworkClient.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSMultipartMimeStreamEncoder.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSMultipartMimeStreamEncoder.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSNetworkResponseHandler.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSNetworkResponseHandler.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSURLBuilder.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSNetworking/FIRCLSURLBuilder.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSOperation/FIRCLSCompoundOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSOperation/FIRCLSCompoundOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation.m +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSOperation/FIRCLSFABAsyncOperation_Private.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/Shared/FIRCLSOperation/FIRCLSOperation.h +example/ios/Pods/FirebaseCrashlytics/Crashlytics/third_party/libunwind/dwarf.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebaseCrashlytics/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebaseCrashlytics/FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h +example/ios/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRAnalyticsInterop.h +example/ios/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRAnalyticsInteropListener.h +example/ios/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRInteropEventNames.h +example/ios/Pods/FirebaseCrashlytics/Interop/Analytics/Public/FIRInteropParameterNames.h +example/ios/Pods/FirebaseDynamicLinks/LICENSE +example/ios/Pods/FirebaseDynamicLinks/README.md +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLDefaultRetrievalProcessV2.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLDefaultRetrievalProcessV2.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLJavaScriptExecutor.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLJavaScriptExecutor.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLRetrievalProcessFactory.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLRetrievalProcessFactory.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLRetrievalProcessProtocols.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLRetrievalProcessResult+Private.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLRetrievalProcessResult.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLRetrievalProcessResult.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLScionLogging.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLScionLogging.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLink+Private.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLink.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinkNetworking+Private.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinkNetworking.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinkNetworking.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinks+FirstParty.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinks+Private.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinks.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FDLURLComponents/FDLURLComponents+Private.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FDLURLComponents/FDLURLComponents.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FDLURLComponents/FIRDynamicLinkComponentsKeyProvider.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FDLURLComponents/FIRDynamicLinkComponentsKeyProvider.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/GINInvocation/GINArgument.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/GINInvocation/GINArgument.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/GINInvocation/GINInvocation.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/GINInvocation/GINInvocation.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Logging/FDLLogging.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Logging/FDLLogging.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Public/FirebaseDynamicLinks/FDLURLComponents.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Public/FirebaseDynamicLinks/FIRDynamicLink.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Public/FirebaseDynamicLinks/FIRDynamicLinks.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Public/FirebaseDynamicLinks/FIRDynamicLinksCommon.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Public/FirebaseDynamicLinks/FirebaseDynamicLinks.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Utilities/FDLDeviceHeuristicsHelper.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Utilities/FDLDeviceHeuristicsHelper.m +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Utilities/FDLUtilities.h +example/ios/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/Utilities/FDLUtilities.m +example/ios/Pods/FirebaseDynamicLinks/Interop/Analytics/Public/FIRAnalyticsInterop.h +example/ios/Pods/FirebaseDynamicLinks/Interop/Analytics/Public/FIRAnalyticsInteropListener.h +example/ios/Pods/FirebaseDynamicLinks/Interop/Analytics/Public/FIRInteropEventNames.h +example/ios/Pods/FirebaseDynamicLinks/Interop/Analytics/Public/FIRInteropParameterNames.h +example/ios/Pods/FirebaseInstallations/LICENSE +example/ios/Pods/FirebaseInstallations/README.md +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebaseInstallations/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FirebaseInstallations.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallations.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsAuthTokenResult.h +example/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsErrors.h +example/ios/Pods/FirebasePerformance/LICENSE +example/ios/Pods/FirebasePerformance/README.md +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebasePerformance/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebasePerformance/FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FIRPerformance+Internal.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FIRPerformance.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FIRPerformance_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRClient+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRClient.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRClient.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRConfiguration.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRConfiguration.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRConsoleLogger.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRConsoleLogger.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRDataUtils.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRDataUtils.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRNanoPbUtils.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRNanoPbUtils.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRURLFilter.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRURLFilter.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/FPRURLFilter_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRAppActivityTracker.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRAppActivityTracker.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRScreenTraceTracker+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRScreenTraceTracker.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRScreenTraceTracker.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRSessionDetails.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRSessionDetails.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRSessionManager+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRSessionManager.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRSessionManager.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRTraceBackgroundActivityTracker.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/AppActivity/FPRTraceBackgroundActivityTracker.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRConsoleURLGenerator.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRConsoleURLGenerator.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRConstants.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRConstants.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRDate.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRDiagnostics.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRDiagnostics.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRDiagnostics_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRPerfDate.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Common/FPRPerfDate.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Configurations/FPRConfigurations+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Configurations/FPRConfigurations.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Configurations/FPRConfigurations.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Configurations/FPRRemoteConfigFlags+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Configurations/FPRRemoteConfigFlags.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Configurations/FPRRemoteConfigFlags.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/FPRGaugeCollector.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/FPRGaugeManager+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/FPRGaugeManager.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/FPRGaugeManager.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/CPU/FPRCPUGaugeCollector+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/CPU/FPRCPUGaugeCollector.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/CPU/FPRCPUGaugeCollector.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/CPU/FPRCPUGaugeData.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/CPU/FPRCPUGaugeData.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/Memory/FPRMemoryGaugeCollector+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/Memory/FPRMemoryGaugeCollector.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/Memory/FPRMemoryGaugeCollector.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/Memory/FPRMemoryGaugeData.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Gauges/Memory/FPRMemoryGaugeData.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FIRHTTPMetric+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FIRHTTPMetric.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRClassInstrumentor.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRClassInstrumentor.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRClassInstrumentor_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRInstrument.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRInstrument.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRInstrument_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRInstrumentation.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRInstrumentation.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRNetworkTrace.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRObjectInstrumentor.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRObjectInstrumentor.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRProxyObjectHelper.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRProxyObjectHelper.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRSelectorInstrumentor.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/FPRSelectorInstrumentor.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNetworkInstrumentHelpers.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNetworkInstrumentHelpers.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNSURLConnectionInstrument.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNSURLConnectionInstrument.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNSURLConnectionInstrument_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNSURLSessionInstrument.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNSURLSessionInstrument.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/FPRNSURLSessionInstrument_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLConnectionDelegate.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLConnectionDelegate.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLConnectionDelegateInstrument.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLConnectionDelegateInstrument.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLSessionDelegate.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLSessionDelegate.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLSessionDelegateInstrument.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/Network/Delegates/FPRNSURLSessionDelegateInstrument.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/UIKit/FPRUIViewControllerInstrument.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Instrumentation/UIKit/FPRUIViewControllerInstrument.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTEvent.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTEvent.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTLogger.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTLogger.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTLogger_Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTLogSampler+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTLogSampler.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTLogSampler.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTRateLimiter+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTRateLimiter.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Loggers/FPRGDTRateLimiter.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Protogen/nanopb/perf_metric.nanopb.c +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Protogen/nanopb/perf_metric.nanopb.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Public/FirebasePerformance/FirebasePerformance.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Public/FirebasePerformance/FIRHTTPMetric.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Public/FirebasePerformance/FIRPerformance.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Public/FirebasePerformance/FIRPerformanceAttributable.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Public/FirebasePerformance/FIRTrace.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Timer/FIRTrace+Internal.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Timer/FIRTrace+Private.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Timer/FIRTrace.m +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Timer/FPRCounterList.h +example/ios/Pods/FirebasePerformance/FirebasePerformance/Sources/Timer/FPRCounterList.m +example/ios/Pods/FirebasePerformance/FirebaseRemoteConfig/Sources/Private/FIRRemoteConfig_Private.h +example/ios/Pods/FirebasePerformance/FirebaseRemoteConfig/Sources/Private/RCNConfigFetch.h +example/ios/Pods/FirebasePerformance/FirebaseRemoteConfig/Sources/Private/RCNConfigSettings.h +example/ios/Pods/FirebaseRemoteConfig/LICENSE +example/ios/Pods/FirebaseRemoteConfig/README.md +example/ios/Pods/FirebaseRemoteConfig/FirebaseABTesting/Sources/Private/ABTExperimentPayload.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseABTesting/Sources/Private/FirebaseABTestingInternal.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRAppInternal.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRComponent.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRComponentContainer.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRComponentType.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRDependency.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FirebaseCoreInternal.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRHeartbeatLogger.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRLibrary.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIRLogger.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseCore/Extension/FIROptionsInternal.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/FIRConfigValue.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/FIRRemoteConfig.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/FIRRemoteConfigComponent.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/FIRRemoteConfigComponent.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/FIRRemoteConfigUpdate.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigConstants.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigContent.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigContent.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigDBManager.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigDBManager.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigDefines.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigExperiment.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigExperiment.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigFetch.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigRealtime.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigRealtime.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigSettings.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConfigValue_Internal.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNConstants3P.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNDevice.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNDevice.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNPersonalization.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNPersonalization.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNUserDefaultsManager.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/RCNUserDefaultsManager.m +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/Private/FIRRemoteConfig_Private.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/Private/RCNConfigFetch.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/Private/RCNConfigSettings.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/Public/FirebaseRemoteConfig/FirebaseRemoteConfig.h +example/ios/Pods/FirebaseRemoteConfig/FirebaseRemoteConfig/Sources/Public/FirebaseRemoteConfig/FIRRemoteConfig.h +example/ios/Pods/FirebaseRemoteConfig/Interop/Analytics/Public/FIRAnalyticsInterop.h +example/ios/Pods/FirebaseRemoteConfig/Interop/Analytics/Public/FIRAnalyticsInteropListener.h +example/ios/Pods/FirebaseRemoteConfig/Interop/Analytics/Public/FIRInteropEventNames.h +example/ios/Pods/FirebaseRemoteConfig/Interop/Analytics/Public/FIRInteropParameterNames.h +example/ios/Pods/FirebaseSessions/LICENSE +example/ios/Pods/FirebaseSessions/README.md +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/ApplicationInfo.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/EventGDTLogger.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/FirebaseSessions.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/FirebaseSessionsError.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/GoogleDataTransport+GoogleDataTransportProtocol.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Installations+InstallationsProtocol.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Logger.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/NetworkInfo.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/SessionCoordinator.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/SessionGenerator.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/SessionInitiator.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/SessionStartEvent.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Time.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Development/DevEventConsoleLogger.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Development/NanoPB+CustomStringConvertible.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Public/SessionsDependencies.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Public/SessionsProvider.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Public/SessionsSubscriber.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/LocalOverrideSettings.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/RemoteSettings.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/SDKDefaultSettings.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/SessionsSettings.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/SettingsCacheClient.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/SettingsDownloadClient.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/SettingsProtocol.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/Sources/Settings/SettingsProvider.swift +example/ios/Pods/FirebaseSessions/FirebaseSessions/SourcesObjC/NanoPB/FIRSESNanoPBHelpers.h +example/ios/Pods/FirebaseSessions/FirebaseSessions/SourcesObjC/NanoPB/FIRSESNanoPBHelpers.m +example/ios/Pods/FirebaseSessions/FirebaseSessions/SourcesObjC/Protogen/nanopb/sessions.nanopb.c +example/ios/Pods/FirebaseSessions/FirebaseSessions/SourcesObjC/Protogen/nanopb/sessions.nanopb.h +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/GoogleAppMeasurement +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/GoogleAppMeasurement +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/GoogleAppMeasurement +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +example/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +example/ios/Pods/GoogleDataTransport/LICENSE +example/ios/Pods/GoogleDataTransport/README.md +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTCompressionHelper.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTNanopbHelpers.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploader.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploadOperation.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCOREvent+GDTMetricsSupport.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCORMetrics+GDTCCTSupport.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploader.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploadOperation.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCOREvent+GDTMetricsSupport.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCORMetrics+GDTCCTSupport.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/client_metrics.nanopb.c +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/client_metrics.nanopb.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORClock.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREndpoints.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage+Promises.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLogSourceMetrics.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORMetrics.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORMetricsController.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORMetricsMetadata.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorageEventSelector.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorageMetadata.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadBatch.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORAssert.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORDirectorySizeTracker.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCOREventDropReason.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORLifecycle.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORMetricsControllerProtocol.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORPlatform.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORReachability.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORRegistrar.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageEventSelector.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageProtocol.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageSizeBytes.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORUploader.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREndpoints_Private.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage+Promises.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORLogSourceMetrics.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORMetrics.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORMetricsController.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORMetricsMetadata.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorageMetadata.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadBatch.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORClock.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORConsoleLogger.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREndpoints.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREvent.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventDataObject.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventTransformer.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTargets.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTransport.h +example/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GoogleDataTransport.h +example/ios/Pods/GoogleUtilities/LICENSE +example/ios/Pods/GoogleUtilities/README.md +example/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULSceneDelegateSwizzler.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULAppDelegateSwizzler.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULApplication.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULSceneDelegateSwizzler.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorage.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorageUserDefaults.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/NetworkInfo/GULNetworkInfo.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorable.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorage.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorageUserDefaults.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainStorage.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainUtils.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULNetworkInfo.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULSecureCoding.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULURLSessionDataResponse.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/NSURLSession+GULPromises.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/GULURLSessionDataResponse.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/NSURLSession+GULPromises.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/ISASwizzler/GULObjectSwizzler+Internal.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/ISASwizzler/GULObjectSwizzler.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/ISASwizzler/GULSwizzledObject.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/ISASwizzler/Public/GoogleUtilities/GULObjectSwizzler.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/ISASwizzler/Public/GoogleUtilities/GULSwizzledObject.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLogger.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLoggerLevel.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULOriginalIMPConvenienceMacros.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULSwizzler.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkInternal.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULMutableDictionary.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetwork.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkConstants.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkLoggerProtocol.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkMessageCode.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkURLSession.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/Public/GoogleUtilities/GULNSData+zlib.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityMessageCode.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/Public/GoogleUtilities/GULReachabilityChecker.h +example/ios/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/GULUserDefaults.m +example/ios/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h +example/ios/Pods/Headers/Private/Firebase/Firebase.h +example/ios/Pods/Headers/Public/Firebase/Firebase.h +example/ios/Pods/HMSAnalyticsSDK/LICENSE +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/Info.plist +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/HMSAnalyticsSDK +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Info.plist +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsEvent.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsEventLevel.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsEventTransport.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsSDK-Swift.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsSDK.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsService.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Headers/HMSDefaultAnalyticsService.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64-apple-ios.swiftdoc +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64-apple-ios.swiftinterface +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64-apple-ios.swiftinterface-e +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/HMSAnalyticsSDK +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Info.plist +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsEvent.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsEventLevel.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsEventTransport.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsSDK-Swift.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsSDK.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Headers/HMSAnalyticsService.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Headers/HMSDefaultAnalyticsService.h +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/x86_64.swiftdoc +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/x86_64.swiftinterface +example/ios/Pods/HMSAnalyticsSDK/HMSAnalyticsSDK.xcframework/ios-arm64_x86_64-simulator/HMSAnalyticsSDK.framework/Modules/HMSAnalyticsSDK.swiftmodule/x86_64.swiftinterface-e +example/ios/Pods/HMSBroadcastExtensionSDK/LICENSE +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/Info.plist +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/HMSBroadcastExtensionSDK +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Info.plist +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Headers/HMSBroadcastExtensionSDK-Swift.h +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Headers/HMSBroadcastExtensionSDK.h +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Headers/HMSScreenRenderer.h +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64-apple-ios.swiftdoc +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64-apple-ios.swiftinterface +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64-apple-ios.swiftinterface-e +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/HMSBroadcastExtensionSDK +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Info.plist +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Headers/HMSBroadcastExtensionSDK-Swift.h +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Headers/HMSBroadcastExtensionSDK.h +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Headers/HMSScreenRenderer.h +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/x86_64.swiftdoc +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/x86_64.swiftinterface +example/ios/Pods/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.xcframework/ios-arm64_x86_64-simulator/HMSBroadcastExtensionSDK.framework/Modules/HMSBroadcastExtensionSDK.swiftmodule/x86_64.swiftinterface-e +example/ios/Pods/HMSHLSPlayerSDK/LICENSE +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/Info.plist +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/HMSHLSPlayerSDK +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Info.plist +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Headers/HMSHLSPlaybackError.h +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Headers/HMSHLSPlayerSDK-Swift.h +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Headers/HMSHLSPlayerSDK.h +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64-apple-ios.swiftdoc +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64-apple-ios.swiftinterface +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64-apple-ios.swiftinterface-e +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/HMSHLSPlayerSDK +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Info.plist +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Headers/HMSHLSPlaybackError.h +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Headers/HMSHLSPlayerSDK-Swift.h +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Headers/HMSHLSPlayerSDK.h +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/x86_64.swiftdoc +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/x86_64.swiftinterface +example/ios/Pods/HMSHLSPlayerSDK/HMSHLSPlayerSDK.xcframework/ios-arm64_x86_64-simulator/HMSHLSPlayerSDK.framework/Modules/HMSHLSPlayerSDK.swiftmodule/x86_64.swiftinterface-e +example/ios/Pods/HMSSDK/LICENSE +example/ios/Pods/HMSSDK/HMSSDK.xcframework/Info.plist +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/HMSSDK +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Info.plist +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSAudioTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSCommonDefs.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSErrorCode.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSLocalAudioStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSLocalAudioTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSLocalVideoStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSLocalVideoTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSQualityLimitationReasons.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSReceiverStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSRemoteAudioStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSRemoteAudioTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSRemoteVideoStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSRemoteVideoTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSRTCStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSRTCStatsReport.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSScreenAudioBufferReceiver.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSScreenVideoBufferReceiver.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSSDK-Swift.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSSDK.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSSenderStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSTrackEnums.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSTrackSettings.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSVideoPlugin.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSVideoTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Headers/HMSVideoView.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64-apple-ios.swiftdoc +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64-apple-ios.swiftinterface +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64-apple-ios.swiftinterface-e +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/HMSSDK +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Info.plist +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/_CodeSignature/CodeResources +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSAudioTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSCommonDefs.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSErrorCode.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSLocalAudioStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSLocalAudioTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSLocalVideoStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSLocalVideoTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSQualityLimitationReasons.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSReceiverStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSRemoteAudioStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSRemoteAudioTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSRemoteVideoStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSRemoteVideoTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSRTCStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSRTCStatsReport.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSScreenAudioBufferReceiver.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSScreenVideoBufferReceiver.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSSDK-Swift.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSSDK.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSSenderStats.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSTrackEnums.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSTrackSettings.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSVideoPlugin.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSVideoTrack.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Headers/HMSVideoView.h +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/module.modulemap +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64.swiftdoc +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64.swiftinterface +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/arm64.swiftinterface-e +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface-e +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/x86_64.swiftdoc +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/x86_64.swiftinterface +example/ios/Pods/HMSSDK/HMSSDK.xcframework/ios-arm64_x86_64-simulator/HMSSDK.framework/Modules/HMSSDK.swiftmodule/x86_64.swiftinterface-e +example/ios/Pods/HMSWebRTC/LICENSE.md +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/Info.plist +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Info.plist +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/WebRTC +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCAudioSession.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCAudioSource.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCAudioTrack.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCallbackLogger.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCameraPreviewView.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCameraVideoCapturer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCertificate.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCodecSpecificInfo.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCodecSpecificInfoH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCConfiguration.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCryptoOptions.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCCVPixelBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCDataChannel.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCDataChannelConfiguration.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCDefaultVideoDecoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCDefaultVideoEncoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCDispatcher.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCDtmfSender.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCEAGLVideoView.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCEncodedImage.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCFieldTrials.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCFileLogger.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCFileVideoCapturer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCH264ProfileLevelId.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCIceCandidate.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCIceCandidateErrorEvent.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCIceServer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCLegacyStatsReport.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCLogging.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMacros.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMediaConstraints.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMediaSource.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMediaStream.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMediaStreamTrack.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMetrics.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMetricsSampleInfo.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMTLVideoView.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMutableI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCMutableYUVPlanarBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCNativeI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCNativeMutableI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCNetworkMonitor.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCPeerConnection.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCPeerConnectionFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtcpParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtpCodecParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtpEncodingParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtpHeaderExtension.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtpParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtpReceiver.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtpSender.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCRtpTransceiver.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCSessionDescription.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCSSLAdapter.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCSSLCertificateVerifier.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCStatisticsReport.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCTracing.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoCapturer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoCodecConstants.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoCodecInfo.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoDecoder.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoDecoderAV1.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoDecoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoDecoderFactoryH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoDecoderH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoDecoderVP8.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoDecoderVP9.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoder.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderAV1.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderFactoryH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderFactorySimulcast.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderQpThresholds.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderSettings.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderSimulcast.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderVP8.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoEncoderVP9.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoFrame.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoFrameBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoRenderer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoSource.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoTrack.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCVideoViewShading.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/RTCYUVPlanarBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/UIDevice+RTCDevice.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Headers/WebRTC.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_armv7/WebRTC.framework/Modules/module.modulemap +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Info.plist +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSession.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioSource.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCAudioTrack.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCallbackLogger.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCameraPreviewView.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCameraVideoCapturer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCertificate.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCodecSpecificInfo.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCodecSpecificInfoH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCConfiguration.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCryptoOptions.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCCVPixelBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCDataChannel.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCDataChannelConfiguration.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCDefaultVideoDecoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCDefaultVideoEncoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCDispatcher.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCDtmfSender.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCEAGLVideoView.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCEncodedImage.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCFieldTrials.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCFileLogger.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCFileVideoCapturer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCH264ProfileLevelId.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCIceCandidate.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCIceCandidateErrorEvent.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCIceServer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCLegacyStatsReport.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCLogging.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMacros.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMediaConstraints.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMediaSource.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMediaStream.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMediaStreamTrack.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMetrics.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMetricsSampleInfo.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMTLVideoView.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMutableI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCMutableYUVPlanarBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCNativeI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCNativeMutableI420Buffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCNetworkMonitor.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCPeerConnection.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCPeerConnectionFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtcpParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpCodecParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpEncodingParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpHeaderExtension.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpParameters.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpReceiver.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpSender.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCRtpTransceiver.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCSessionDescription.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCSSLAdapter.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCSSLCertificateVerifier.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCStatisticsReport.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCTracing.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoCapturer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoCodecConstants.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoCodecInfo.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoder.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoderAV1.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoderFactoryH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoderH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoderVP8.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoDecoderVP9.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoder.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderAV1.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderFactory.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderFactoryH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderFactorySimulcast.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderH264.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderQpThresholds.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderSettings.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderSimulcast.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderVP8.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoEncoderVP9.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoFrame.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoFrameBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoRenderer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoSource.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoTrack.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCVideoViewShading.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/RTCYUVPlanarBuffer.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/UIDevice+RTCDevice.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/WebRTC.h +example/ios/Pods/HMSWebRTC/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Modules/module.modulemap +example/ios/Pods/Local Podspecs/file_picker.podspec.json +example/ios/Pods/Local Podspecs/firebase_analytics.podspec.json +example/ios/Pods/Local Podspecs/firebase_core.podspec.json +example/ios/Pods/Local Podspecs/firebase_crashlytics.podspec.json +example/ios/Pods/Local Podspecs/firebase_dynamic_links.podspec.json +example/ios/Pods/Local Podspecs/firebase_performance.podspec.json +example/ios/Pods/Local Podspecs/Flutter.podspec.json +example/ios/Pods/Local Podspecs/flutter_foreground_task.podspec.json +example/ios/Pods/Local Podspecs/hmssdk_flutter.podspec.json +example/ios/Pods/Local Podspecs/image_gallery_saver.podspec.json +example/ios/Pods/Local Podspecs/package_info_plus.podspec.json +example/ios/Pods/Local Podspecs/path_provider_foundation.podspec.json +example/ios/Pods/Local Podspecs/permission_handler_apple.podspec.json +example/ios/Pods/Local Podspecs/qr_code_scanner.podspec.json +example/ios/Pods/Local Podspecs/share_plus.podspec.json +example/ios/Pods/Local Podspecs/shared_preferences_foundation.podspec.json +example/ios/Pods/Local Podspecs/uni_links.podspec.json +example/ios/Pods/Local Podspecs/url_launcher_ios.podspec.json +example/ios/Pods/Local Podspecs/wakelock.podspec.json +example/ios/Pods/MTBBarcodeScanner/LICENSE +example/ios/Pods/MTBBarcodeScanner/README.md +example/ios/Pods/MTBBarcodeScanner/Classes/ios/Scanners/MTBBarcodeScanner.h +example/ios/Pods/MTBBarcodeScanner/Classes/ios/Scanners/MTBBarcodeScanner.m +example/ios/Pods/nanopb/LICENSE.txt +example/ios/Pods/nanopb/pb.h +example/ios/Pods/nanopb/pb_common.c +example/ios/Pods/nanopb/pb_common.h +example/ios/Pods/nanopb/pb_decode.c +example/ios/Pods/nanopb/pb_decode.h +example/ios/Pods/nanopb/pb_encode.c +example/ios/Pods/nanopb/pb_encode.h +example/ios/Pods/nanopb/README.md +example/ios/Pods/Pods.xcodeproj/project.pbxproj +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/DKImagePickerController-DKImagePickerController.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/DKImagePickerController.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/DKPhotoGallery-DKPhotoGallery.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/DKPhotoGallery.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/file_picker.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/Firebase.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/firebase_analytics.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/firebase_core.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/firebase_crashlytics.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/firebase_dynamic_links.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/firebase_performance.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseABTesting.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseAnalytics.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseCore.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseCoreExtension.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseCoreInternal.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseCrashlytics.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseDynamicLinks.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseInstallations.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebasePerformance.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseRemoteConfig.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/FirebaseSessions.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/Flutter.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/flutter_foreground_task.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/GoogleAppMeasurement.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/GoogleDataTransport.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/GoogleUtilities.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/HMSAnalyticsSDK.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/HMSBroadcastExtensionSDK.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/HMSHLSPlayerSDK.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/HMSSDK.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/hmssdk_flutter.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/HMSWebRTC.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/image_gallery_saver.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/MTBBarcodeScanner.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/nanopb.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/package_info_plus.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/path_provider_foundation.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/permission_handler_apple.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/Pods-FlutterBroadcastUploadExtension.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/Pods-Runner.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/PromisesObjC.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/PromisesSwift.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/qr_code_scanner.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/SDWebImage.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/share_plus.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/shared_preferences_foundation.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/SwiftyGif.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/uni_links.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/url_launcher_ios.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/wakelock.xcscheme +example/ios/Pods/Pods.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/xcschememanagement.plist +example/ios/Pods/PromisesObjC/LICENSE +example/ios/Pods/PromisesObjC/README.md +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+All.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Always.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Any.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Async.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Await.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Catch.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Delay.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Do.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Race.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Recover.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Reduce.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Retry.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Then.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Timeout.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Validate.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Wrap.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromiseError.m +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h +example/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h +example/ios/Pods/PromisesSwift/LICENSE +example/ios/Pods/PromisesSwift/README.md +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+All.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Always.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Any.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Async.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Await.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Catch.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Delay.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Do.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Race.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Recover.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Reduce.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Retry.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Testing.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Then.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Timeout.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Validate.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise+Wrap.swift +example/ios/Pods/PromisesSwift/Sources/Promises/Promise.swift +example/ios/Pods/PromisesSwift/Sources/Promises/PromiseError.swift +example/ios/Pods/SDWebImage/LICENSE +example/ios/Pods/SDWebImage/README.md +example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/NSButton+WebCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h +example/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h +example/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDCallbackQueue.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDCallbackQueue.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCachesManager.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDImageTransformer.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.m +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.h +example/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageTransition.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIButton+WebCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Metadata.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+HighlightedWebCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIImageView+WebCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h +example/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m +example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h +example/ios/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageFramePool.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageFramePool.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDmetamacros.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h +example/ios/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.m +example/ios/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h +example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h +example/ios/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m +example/ios/Pods/SDWebImage/WebImage/SDWebImage.h +example/ios/Pods/SwiftyGif/LICENSE +example/ios/Pods/SwiftyGif/README.md +example/ios/Pods/SwiftyGif/SwiftyGif/NSImage+SwiftyGif.swift +example/ios/Pods/SwiftyGif/SwiftyGif/NSImageView+SwiftyGif.swift +example/ios/Pods/SwiftyGif/SwiftyGif/ObjcAssociatedWeakObject.swift +example/ios/Pods/SwiftyGif/SwiftyGif/SwiftyGif.h +example/ios/Pods/SwiftyGif/SwiftyGif/SwiftyGifManager.swift +example/ios/Pods/SwiftyGif/SwiftyGif/UIImage+SwiftyGif.swift +example/ios/Pods/SwiftyGif/SwiftyGif/UIImageView+SwiftyGif.swift +example/ios/Pods/Target Support Files/DKImagePickerController/DKImagePickerController-dummy.m +example/ios/Pods/Target Support Files/DKImagePickerController/DKImagePickerController-Info.plist +example/ios/Pods/Target Support Files/DKImagePickerController/DKImagePickerController-prefix.pch +example/ios/Pods/Target Support Files/DKImagePickerController/DKImagePickerController-umbrella.h +example/ios/Pods/Target Support Files/DKImagePickerController/DKImagePickerController.debug.xcconfig +example/ios/Pods/Target Support Files/DKImagePickerController/DKImagePickerController.modulemap +example/ios/Pods/Target Support Files/DKImagePickerController/DKImagePickerController.release.xcconfig +example/ios/Pods/Target Support Files/DKImagePickerController/ResourceBundle-DKImagePickerController-DKImagePickerController-Info.plist +example/ios/Pods/Target Support Files/DKPhotoGallery/DKPhotoGallery-dummy.m +example/ios/Pods/Target Support Files/DKPhotoGallery/DKPhotoGallery-Info.plist +example/ios/Pods/Target Support Files/DKPhotoGallery/DKPhotoGallery-prefix.pch +example/ios/Pods/Target Support Files/DKPhotoGallery/DKPhotoGallery-umbrella.h +example/ios/Pods/Target Support Files/DKPhotoGallery/DKPhotoGallery.debug.xcconfig +example/ios/Pods/Target Support Files/DKPhotoGallery/DKPhotoGallery.modulemap +example/ios/Pods/Target Support Files/DKPhotoGallery/DKPhotoGallery.release.xcconfig +example/ios/Pods/Target Support Files/DKPhotoGallery/ResourceBundle-DKPhotoGallery-DKPhotoGallery-Info.plist +example/ios/Pods/Target Support Files/file_picker/file_picker-dummy.m +example/ios/Pods/Target Support Files/file_picker/file_picker-Info.plist +example/ios/Pods/Target Support Files/file_picker/file_picker-prefix.pch +example/ios/Pods/Target Support Files/file_picker/file_picker-umbrella.h +example/ios/Pods/Target Support Files/file_picker/file_picker.debug.xcconfig +example/ios/Pods/Target Support Files/file_picker/file_picker.modulemap +example/ios/Pods/Target Support Files/file_picker/file_picker.release.xcconfig +example/ios/Pods/Target Support Files/Firebase/Firebase.debug.xcconfig +example/ios/Pods/Target Support Files/Firebase/Firebase.release.xcconfig +example/ios/Pods/Target Support Files/firebase_analytics/firebase_analytics-dummy.m +example/ios/Pods/Target Support Files/firebase_analytics/firebase_analytics-Info.plist +example/ios/Pods/Target Support Files/firebase_analytics/firebase_analytics-prefix.pch +example/ios/Pods/Target Support Files/firebase_analytics/firebase_analytics-umbrella.h +example/ios/Pods/Target Support Files/firebase_analytics/firebase_analytics.debug.xcconfig +example/ios/Pods/Target Support Files/firebase_analytics/firebase_analytics.modulemap +example/ios/Pods/Target Support Files/firebase_analytics/firebase_analytics.release.xcconfig +example/ios/Pods/Target Support Files/firebase_core/firebase_core-dummy.m +example/ios/Pods/Target Support Files/firebase_core/firebase_core-Info.plist +example/ios/Pods/Target Support Files/firebase_core/firebase_core-prefix.pch +example/ios/Pods/Target Support Files/firebase_core/firebase_core-umbrella.h +example/ios/Pods/Target Support Files/firebase_core/firebase_core.debug.xcconfig +example/ios/Pods/Target Support Files/firebase_core/firebase_core.modulemap +example/ios/Pods/Target Support Files/firebase_core/firebase_core.release.xcconfig +example/ios/Pods/Target Support Files/firebase_crashlytics/firebase_crashlytics-dummy.m +example/ios/Pods/Target Support Files/firebase_crashlytics/firebase_crashlytics-Info.plist +example/ios/Pods/Target Support Files/firebase_crashlytics/firebase_crashlytics-prefix.pch +example/ios/Pods/Target Support Files/firebase_crashlytics/firebase_crashlytics-umbrella.h +example/ios/Pods/Target Support Files/firebase_crashlytics/firebase_crashlytics.debug.xcconfig +example/ios/Pods/Target Support Files/firebase_crashlytics/firebase_crashlytics.modulemap +example/ios/Pods/Target Support Files/firebase_crashlytics/firebase_crashlytics.release.xcconfig +example/ios/Pods/Target Support Files/firebase_dynamic_links/firebase_dynamic_links-dummy.m +example/ios/Pods/Target Support Files/firebase_dynamic_links/firebase_dynamic_links-Info.plist +example/ios/Pods/Target Support Files/firebase_dynamic_links/firebase_dynamic_links-prefix.pch +example/ios/Pods/Target Support Files/firebase_dynamic_links/firebase_dynamic_links-umbrella.h +example/ios/Pods/Target Support Files/firebase_dynamic_links/firebase_dynamic_links.debug.xcconfig +example/ios/Pods/Target Support Files/firebase_dynamic_links/firebase_dynamic_links.modulemap +example/ios/Pods/Target Support Files/firebase_dynamic_links/firebase_dynamic_links.release.xcconfig +example/ios/Pods/Target Support Files/firebase_performance/firebase_performance-dummy.m +example/ios/Pods/Target Support Files/firebase_performance/firebase_performance-Info.plist +example/ios/Pods/Target Support Files/firebase_performance/firebase_performance-prefix.pch +example/ios/Pods/Target Support Files/firebase_performance/firebase_performance-umbrella.h +example/ios/Pods/Target Support Files/firebase_performance/firebase_performance.debug.xcconfig +example/ios/Pods/Target Support Files/firebase_performance/firebase_performance.modulemap +example/ios/Pods/Target Support Files/firebase_performance/firebase_performance.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseABTesting/FirebaseABTesting-dummy.m +example/ios/Pods/Target Support Files/FirebaseABTesting/FirebaseABTesting-Info.plist +example/ios/Pods/Target Support Files/FirebaseABTesting/FirebaseABTesting-umbrella.h +example/ios/Pods/Target Support Files/FirebaseABTesting/FirebaseABTesting.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseABTesting/FirebaseABTesting.modulemap +example/ios/Pods/Target Support Files/FirebaseABTesting/FirebaseABTesting.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-input-files.xcfilelist +example/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-output-files.xcfilelist +example/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks.sh +example/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore-dummy.m +example/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist +example/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore-umbrella.h +example/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore.modulemap +example/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseCoreExtension/FirebaseCoreExtension-dummy.m +example/ios/Pods/Target Support Files/FirebaseCoreExtension/FirebaseCoreExtension-Info.plist +example/ios/Pods/Target Support Files/FirebaseCoreExtension/FirebaseCoreExtension-prefix.pch +example/ios/Pods/Target Support Files/FirebaseCoreExtension/FirebaseCoreExtension-umbrella.h +example/ios/Pods/Target Support Files/FirebaseCoreExtension/FirebaseCoreExtension.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseCoreExtension/FirebaseCoreExtension.modulemap +example/ios/Pods/Target Support Files/FirebaseCoreExtension/FirebaseCoreExtension.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseCoreInternal/FirebaseCoreInternal-dummy.m +example/ios/Pods/Target Support Files/FirebaseCoreInternal/FirebaseCoreInternal-Info.plist +example/ios/Pods/Target Support Files/FirebaseCoreInternal/FirebaseCoreInternal-prefix.pch +example/ios/Pods/Target Support Files/FirebaseCoreInternal/FirebaseCoreInternal-umbrella.h +example/ios/Pods/Target Support Files/FirebaseCoreInternal/FirebaseCoreInternal.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseCoreInternal/FirebaseCoreInternal.modulemap +example/ios/Pods/Target Support Files/FirebaseCoreInternal/FirebaseCoreInternal.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-dummy.m +example/ios/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-Info.plist +example/ios/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics-umbrella.h +example/ios/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.modulemap +example/ios/Pods/Target Support Files/FirebaseCrashlytics/FirebaseCrashlytics.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseDynamicLinks/FirebaseDynamicLinks-dummy.m +example/ios/Pods/Target Support Files/FirebaseDynamicLinks/FirebaseDynamicLinks-Info.plist +example/ios/Pods/Target Support Files/FirebaseDynamicLinks/FirebaseDynamicLinks-umbrella.h +example/ios/Pods/Target Support Files/FirebaseDynamicLinks/FirebaseDynamicLinks.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseDynamicLinks/FirebaseDynamicLinks.modulemap +example/ios/Pods/Target Support Files/FirebaseDynamicLinks/FirebaseDynamicLinks.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m +example/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist +example/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-umbrella.h +example/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap +example/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.release.xcconfig +example/ios/Pods/Target Support Files/FirebasePerformance/FirebasePerformance-dummy.m +example/ios/Pods/Target Support Files/FirebasePerformance/FirebasePerformance-Info.plist +example/ios/Pods/Target Support Files/FirebasePerformance/FirebasePerformance-umbrella.h +example/ios/Pods/Target Support Files/FirebasePerformance/FirebasePerformance.debug.xcconfig +example/ios/Pods/Target Support Files/FirebasePerformance/FirebasePerformance.modulemap +example/ios/Pods/Target Support Files/FirebasePerformance/FirebasePerformance.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseRemoteConfig/FirebaseRemoteConfig-dummy.m +example/ios/Pods/Target Support Files/FirebaseRemoteConfig/FirebaseRemoteConfig-Info.plist +example/ios/Pods/Target Support Files/FirebaseRemoteConfig/FirebaseRemoteConfig-umbrella.h +example/ios/Pods/Target Support Files/FirebaseRemoteConfig/FirebaseRemoteConfig.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseRemoteConfig/FirebaseRemoteConfig.modulemap +example/ios/Pods/Target Support Files/FirebaseRemoteConfig/FirebaseRemoteConfig.release.xcconfig +example/ios/Pods/Target Support Files/FirebaseSessions/FirebaseSessions-dummy.m +example/ios/Pods/Target Support Files/FirebaseSessions/FirebaseSessions-Info.plist +example/ios/Pods/Target Support Files/FirebaseSessions/FirebaseSessions-umbrella.h +example/ios/Pods/Target Support Files/FirebaseSessions/FirebaseSessions.debug.xcconfig +example/ios/Pods/Target Support Files/FirebaseSessions/FirebaseSessions.modulemap +example/ios/Pods/Target Support Files/FirebaseSessions/FirebaseSessions.release.xcconfig +example/ios/Pods/Target Support Files/Flutter/Flutter.debug.xcconfig +example/ios/Pods/Target Support Files/Flutter/Flutter.release.xcconfig +example/ios/Pods/Target Support Files/flutter_foreground_task/flutter_foreground_task-dummy.m +example/ios/Pods/Target Support Files/flutter_foreground_task/flutter_foreground_task-Info.plist +example/ios/Pods/Target Support Files/flutter_foreground_task/flutter_foreground_task-prefix.pch +example/ios/Pods/Target Support Files/flutter_foreground_task/flutter_foreground_task-umbrella.h +example/ios/Pods/Target Support Files/flutter_foreground_task/flutter_foreground_task.debug.xcconfig +example/ios/Pods/Target Support Files/flutter_foreground_task/flutter_foreground_task.modulemap +example/ios/Pods/Target Support Files/flutter_foreground_task/flutter_foreground_task.release.xcconfig +example/ios/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-input-files.xcfilelist +example/ios/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-output-files.xcfilelist +example/ios/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks.sh +example/ios/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.debug.xcconfig +example/ios/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.release.xcconfig +example/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-dummy.m +example/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist +example/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h +example/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.debug.xcconfig +example/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap +example/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.release.xcconfig +example/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-dummy.m +example/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist +example/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h +example/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.debug.xcconfig +example/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.modulemap +example/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.release.xcconfig +example/ios/Pods/Target Support Files/HMSAnalyticsSDK/HMSAnalyticsSDK-xcframeworks-input-files.xcfilelist +example/ios/Pods/Target Support Files/HMSAnalyticsSDK/HMSAnalyticsSDK-xcframeworks-output-files.xcfilelist +example/ios/Pods/Target Support Files/HMSAnalyticsSDK/HMSAnalyticsSDK-xcframeworks.sh +example/ios/Pods/Target Support Files/HMSAnalyticsSDK/HMSAnalyticsSDK.debug.xcconfig +example/ios/Pods/Target Support Files/HMSAnalyticsSDK/HMSAnalyticsSDK.release.xcconfig +example/ios/Pods/Target Support Files/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK-xcframeworks-input-files.xcfilelist +example/ios/Pods/Target Support Files/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK-xcframeworks-output-files.xcfilelist +example/ios/Pods/Target Support Files/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK-xcframeworks.sh +example/ios/Pods/Target Support Files/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.debug.xcconfig +example/ios/Pods/Target Support Files/HMSBroadcastExtensionSDK/HMSBroadcastExtensionSDK.release.xcconfig +example/ios/Pods/Target Support Files/HMSHLSPlayerSDK/HMSHLSPlayerSDK-xcframeworks-input-files.xcfilelist +example/ios/Pods/Target Support Files/HMSHLSPlayerSDK/HMSHLSPlayerSDK-xcframeworks-output-files.xcfilelist +example/ios/Pods/Target Support Files/HMSHLSPlayerSDK/HMSHLSPlayerSDK-xcframeworks.sh +example/ios/Pods/Target Support Files/HMSHLSPlayerSDK/HMSHLSPlayerSDK.debug.xcconfig +example/ios/Pods/Target Support Files/HMSHLSPlayerSDK/HMSHLSPlayerSDK.release.xcconfig +example/ios/Pods/Target Support Files/HMSSDK/HMSSDK-xcframeworks-input-files.xcfilelist +example/ios/Pods/Target Support Files/HMSSDK/HMSSDK-xcframeworks-output-files.xcfilelist +example/ios/Pods/Target Support Files/HMSSDK/HMSSDK-xcframeworks.sh +example/ios/Pods/Target Support Files/HMSSDK/HMSSDK.debug.xcconfig +example/ios/Pods/Target Support Files/HMSSDK/HMSSDK.release.xcconfig +example/ios/Pods/Target Support Files/hmssdk_flutter/hmssdk_flutter-dummy.m +example/ios/Pods/Target Support Files/hmssdk_flutter/hmssdk_flutter-Info.plist +example/ios/Pods/Target Support Files/hmssdk_flutter/hmssdk_flutter-prefix.pch +example/ios/Pods/Target Support Files/hmssdk_flutter/hmssdk_flutter-umbrella.h +example/ios/Pods/Target Support Files/hmssdk_flutter/hmssdk_flutter.debug.xcconfig +example/ios/Pods/Target Support Files/hmssdk_flutter/hmssdk_flutter.modulemap +example/ios/Pods/Target Support Files/hmssdk_flutter/hmssdk_flutter.release.xcconfig +example/ios/Pods/Target Support Files/HMSWebRTC/HMSWebRTC-xcframeworks-input-files.xcfilelist +example/ios/Pods/Target Support Files/HMSWebRTC/HMSWebRTC-xcframeworks-output-files.xcfilelist +example/ios/Pods/Target Support Files/HMSWebRTC/HMSWebRTC-xcframeworks.sh +example/ios/Pods/Target Support Files/HMSWebRTC/HMSWebRTC.debug.xcconfig +example/ios/Pods/Target Support Files/HMSWebRTC/HMSWebRTC.release.xcconfig +example/ios/Pods/Target Support Files/image_gallery_saver/image_gallery_saver-dummy.m +example/ios/Pods/Target Support Files/image_gallery_saver/image_gallery_saver-Info.plist +example/ios/Pods/Target Support Files/image_gallery_saver/image_gallery_saver-prefix.pch +example/ios/Pods/Target Support Files/image_gallery_saver/image_gallery_saver-umbrella.h +example/ios/Pods/Target Support Files/image_gallery_saver/image_gallery_saver.debug.xcconfig +example/ios/Pods/Target Support Files/image_gallery_saver/image_gallery_saver.modulemap +example/ios/Pods/Target Support Files/image_gallery_saver/image_gallery_saver.release.xcconfig +example/ios/Pods/Target Support Files/MTBBarcodeScanner/MTBBarcodeScanner-dummy.m +example/ios/Pods/Target Support Files/MTBBarcodeScanner/MTBBarcodeScanner-Info.plist +example/ios/Pods/Target Support Files/MTBBarcodeScanner/MTBBarcodeScanner-prefix.pch +example/ios/Pods/Target Support Files/MTBBarcodeScanner/MTBBarcodeScanner-umbrella.h +example/ios/Pods/Target Support Files/MTBBarcodeScanner/MTBBarcodeScanner.debug.xcconfig +example/ios/Pods/Target Support Files/MTBBarcodeScanner/MTBBarcodeScanner.modulemap +example/ios/Pods/Target Support Files/MTBBarcodeScanner/MTBBarcodeScanner.release.xcconfig +example/ios/Pods/Target Support Files/nanopb/nanopb-dummy.m +example/ios/Pods/Target Support Files/nanopb/nanopb-Info.plist +example/ios/Pods/Target Support Files/nanopb/nanopb-prefix.pch +example/ios/Pods/Target Support Files/nanopb/nanopb-umbrella.h +example/ios/Pods/Target Support Files/nanopb/nanopb.debug.xcconfig +example/ios/Pods/Target Support Files/nanopb/nanopb.modulemap +example/ios/Pods/Target Support Files/nanopb/nanopb.release.xcconfig +example/ios/Pods/Target Support Files/package_info_plus/package_info_plus-dummy.m +example/ios/Pods/Target Support Files/package_info_plus/package_info_plus-Info.plist +example/ios/Pods/Target Support Files/package_info_plus/package_info_plus-prefix.pch +example/ios/Pods/Target Support Files/package_info_plus/package_info_plus-umbrella.h +example/ios/Pods/Target Support Files/package_info_plus/package_info_plus.debug.xcconfig +example/ios/Pods/Target Support Files/package_info_plus/package_info_plus.modulemap +example/ios/Pods/Target Support Files/package_info_plus/package_info_plus.release.xcconfig +example/ios/Pods/Target Support Files/path_provider_foundation/path_provider_foundation-dummy.m +example/ios/Pods/Target Support Files/path_provider_foundation/path_provider_foundation-Info.plist +example/ios/Pods/Target Support Files/path_provider_foundation/path_provider_foundation-prefix.pch +example/ios/Pods/Target Support Files/path_provider_foundation/path_provider_foundation-umbrella.h +example/ios/Pods/Target Support Files/path_provider_foundation/path_provider_foundation.debug.xcconfig +example/ios/Pods/Target Support Files/path_provider_foundation/path_provider_foundation.modulemap +example/ios/Pods/Target Support Files/path_provider_foundation/path_provider_foundation.release.xcconfig +example/ios/Pods/Target Support Files/permission_handler_apple/permission_handler_apple-dummy.m +example/ios/Pods/Target Support Files/permission_handler_apple/permission_handler_apple-Info.plist +example/ios/Pods/Target Support Files/permission_handler_apple/permission_handler_apple-prefix.pch +example/ios/Pods/Target Support Files/permission_handler_apple/permission_handler_apple-umbrella.h +example/ios/Pods/Target Support Files/permission_handler_apple/permission_handler_apple.debug.xcconfig +example/ios/Pods/Target Support Files/permission_handler_apple/permission_handler_apple.modulemap +example/ios/Pods/Target Support Files/permission_handler_apple/permission_handler_apple.release.xcconfig +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension-acknowledgements.markdown +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension-acknowledgements.plist +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension-dummy.m +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension-Info.plist +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension-umbrella.h +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.debug.xcconfig +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.modulemap +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.profile.xcconfig +example/ios/Pods/Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.release.xcconfig +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.markdown +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-acknowledgements.plist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-dummy.m +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-output-files.xcfilelist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-input-files.xcfilelist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Profile-output-files.xcfilelist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-input-files.xcfilelist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Release-output-files.xcfilelist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-Info.plist +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-umbrella.h +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner.modulemap +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig +example/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig +example/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m +example/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist +example/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC-umbrella.h +example/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC.debug.xcconfig +example/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC.modulemap +example/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC.release.xcconfig +example/ios/Pods/Target Support Files/PromisesSwift/PromisesSwift-dummy.m +example/ios/Pods/Target Support Files/PromisesSwift/PromisesSwift-Info.plist +example/ios/Pods/Target Support Files/PromisesSwift/PromisesSwift-prefix.pch +example/ios/Pods/Target Support Files/PromisesSwift/PromisesSwift-umbrella.h +example/ios/Pods/Target Support Files/PromisesSwift/PromisesSwift.debug.xcconfig +example/ios/Pods/Target Support Files/PromisesSwift/PromisesSwift.modulemap +example/ios/Pods/Target Support Files/PromisesSwift/PromisesSwift.release.xcconfig +example/ios/Pods/Target Support Files/qr_code_scanner/qr_code_scanner-dummy.m +example/ios/Pods/Target Support Files/qr_code_scanner/qr_code_scanner-Info.plist +example/ios/Pods/Target Support Files/qr_code_scanner/qr_code_scanner-prefix.pch +example/ios/Pods/Target Support Files/qr_code_scanner/qr_code_scanner-umbrella.h +example/ios/Pods/Target Support Files/qr_code_scanner/qr_code_scanner.debug.xcconfig +example/ios/Pods/Target Support Files/qr_code_scanner/qr_code_scanner.modulemap +example/ios/Pods/Target Support Files/qr_code_scanner/qr_code_scanner.release.xcconfig +example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m +example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-Info.plist +example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch +example/ios/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h +example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig +example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap +example/ios/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig +example/ios/Pods/Target Support Files/share_plus/share_plus-dummy.m +example/ios/Pods/Target Support Files/share_plus/share_plus-Info.plist +example/ios/Pods/Target Support Files/share_plus/share_plus-prefix.pch +example/ios/Pods/Target Support Files/share_plus/share_plus-umbrella.h +example/ios/Pods/Target Support Files/share_plus/share_plus.debug.xcconfig +example/ios/Pods/Target Support Files/share_plus/share_plus.modulemap +example/ios/Pods/Target Support Files/share_plus/share_plus.release.xcconfig +example/ios/Pods/Target Support Files/shared_preferences_foundation/shared_preferences_foundation-dummy.m +example/ios/Pods/Target Support Files/shared_preferences_foundation/shared_preferences_foundation-Info.plist +example/ios/Pods/Target Support Files/shared_preferences_foundation/shared_preferences_foundation-prefix.pch +example/ios/Pods/Target Support Files/shared_preferences_foundation/shared_preferences_foundation-umbrella.h +example/ios/Pods/Target Support Files/shared_preferences_foundation/shared_preferences_foundation.debug.xcconfig +example/ios/Pods/Target Support Files/shared_preferences_foundation/shared_preferences_foundation.modulemap +example/ios/Pods/Target Support Files/shared_preferences_foundation/shared_preferences_foundation.release.xcconfig +example/ios/Pods/Target Support Files/SwiftyGif/SwiftyGif-dummy.m +example/ios/Pods/Target Support Files/SwiftyGif/SwiftyGif-Info.plist +example/ios/Pods/Target Support Files/SwiftyGif/SwiftyGif-prefix.pch +example/ios/Pods/Target Support Files/SwiftyGif/SwiftyGif-umbrella.h +example/ios/Pods/Target Support Files/SwiftyGif/SwiftyGif.debug.xcconfig +example/ios/Pods/Target Support Files/SwiftyGif/SwiftyGif.modulemap +example/ios/Pods/Target Support Files/SwiftyGif/SwiftyGif.release.xcconfig +example/ios/Pods/Target Support Files/uni_links/uni_links-dummy.m +example/ios/Pods/Target Support Files/uni_links/uni_links-Info.plist +example/ios/Pods/Target Support Files/uni_links/uni_links-prefix.pch +example/ios/Pods/Target Support Files/uni_links/uni_links-umbrella.h +example/ios/Pods/Target Support Files/uni_links/uni_links.debug.xcconfig +example/ios/Pods/Target Support Files/uni_links/uni_links.modulemap +example/ios/Pods/Target Support Files/uni_links/uni_links.release.xcconfig +example/ios/Pods/Target Support Files/url_launcher_ios/url_launcher_ios-dummy.m +example/ios/Pods/Target Support Files/url_launcher_ios/url_launcher_ios-Info.plist +example/ios/Pods/Target Support Files/url_launcher_ios/url_launcher_ios-prefix.pch +example/ios/Pods/Target Support Files/url_launcher_ios/url_launcher_ios-umbrella.h +example/ios/Pods/Target Support Files/url_launcher_ios/url_launcher_ios.debug.xcconfig +example/ios/Pods/Target Support Files/url_launcher_ios/url_launcher_ios.modulemap +example/ios/Pods/Target Support Files/url_launcher_ios/url_launcher_ios.release.xcconfig +example/ios/Pods/Target Support Files/wakelock/wakelock-dummy.m +example/ios/Pods/Target Support Files/wakelock/wakelock-Info.plist +example/ios/Pods/Target Support Files/wakelock/wakelock-prefix.pch +example/ios/Pods/Target Support Files/wakelock/wakelock-umbrella.h +example/ios/Pods/Target Support Files/wakelock/wakelock.debug.xcconfig +example/ios/Pods/Target Support Files/wakelock/wakelock.modulemap +example/ios/Pods/Target Support Files/wakelock/wakelock.release.xcconfig +example/ios/Runner/GeneratedPluginRegistrant.h +example/ios/Runner/GeneratedPluginRegistrant.m +sample apps/flutter-quickstart-app/.dart_tool/package_config.json +sample apps/flutter-quickstart-app/.dart_tool/package_config_subset +sample apps/flutter-quickstart-app/.dart_tool/version +sample apps/hms-callkit-app/.dart_tool/package_config.json +sample apps/hms-callkit-app/.dart_tool/package_config_subset +sample apps/hms-callkit-app/.dart_tool/version +sample apps/flutter-quickstart-app/build/ios/Pods.build/Release-iphonesimulator/Flutter.build/dgph +sample apps/flutter-quickstart-app/build/ios/Pods.build/Release-iphonesimulator/HMSAnalyticsSDK.build/dgph +sample apps/flutter-quickstart-app/build/ios/Pods.build/Release-iphonesimulator/HMSBroadcastExtensionSDK.build/dgph +sample apps/flutter-quickstart-app/build/ios/Pods.build/Release-iphonesimulator/HMSSDK.build/dgph +sample apps/flutter-quickstart-app/build/ios/Pods.build/Release-iphonesimulator/hmssdk_flutter.build/dgph +sample apps/flutter-quickstart-app/build/ios/Pods.build/Release-iphonesimulator/HMSWebRTC.build/dgph +sample apps/flutter-quickstart-app/build/ios/Pods.build/Release-iphonesimulator/Pods-Runner.build/dgph diff --git a/.trunk/.gitignore b/.trunk/.gitignore index 695b51906..1e2465290 100644 --- a/.trunk/.gitignore +++ b/.trunk/.gitignore @@ -2,7 +2,7 @@ *logs *actions *notifications +*tools plugins user_trunk.yaml user.yaml -tools diff --git a/.trunk/config/.markdownlint.yaml b/.trunk/configs/.markdownlint.yaml similarity index 100% rename from .trunk/config/.markdownlint.yaml rename to .trunk/configs/.markdownlint.yaml diff --git a/.trunk/config/.shellcheckrc b/.trunk/configs/.shellcheckrc similarity index 100% rename from .trunk/config/.shellcheckrc rename to .trunk/configs/.shellcheckrc diff --git a/.trunk/config/.yamllint.yaml b/.trunk/configs/.yamllint.yaml similarity index 100% rename from .trunk/config/.yamllint.yaml rename to .trunk/configs/.yamllint.yaml diff --git a/.trunk/config/svgo.config.js b/.trunk/configs/svgo.config.js similarity index 100% rename from .trunk/config/svgo.config.js rename to .trunk/configs/svgo.config.js diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index 67fe75990..0b4618719 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -1,36 +1,38 @@ version: 0.1 cli: - version: 1.13.0 + version: 1.14.2 plugins: sources: - id: trunk - ref: v1.1.0 + ref: v1.2.2 uri: https://github.com/trunk-io/plugins lint: enabled: - - checkov@2.3.356 + - actionlint@1.6.25 + - checkov@2.4.9 - osv-scanner@1.3.6 - - trivy@0.44.0 - - trufflehog@3.46.3 + - trivy@0.44.1 + - trufflehog@3.54.3 - oxipng@8.0.0 - yamllint@1.32.0 - - markdownlint@0.35.0 - - prettier@3.0.1 + - markdownlint@0.36.0 + - prettier@3.0.3 - git-diff-check - shfmt@3.6.0 - shellcheck@0.9.0 - - gitleaks@8.17.0 + - gitleaks@8.18.0 - svgo@3.0.2 - ktlint@0.50.0 runtimes: enabled: - python@3.10.8 - - go@1.19.5 + - go@1.21.0 - java@13.0.11 - node@18.12.1 actions: - enabled: - - trunk-announce + disabled: - trunk-check-pre-push - trunk-fmt-pre-commit + enabled: + - trunk-announce - trunk-upgrade-available diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..9b4564499 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,28 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "example", + "cwd": "packages/hmssdk_flutter/example", + "request": "launch", + "type": "dart" + }, + { + "name": "example (profile mode)", + "cwd": "packages/hmssdk_flutter/example", + "request": "launch", + "type": "dart", + "flutterMode": "profile" + }, + { + "name": "example (release mode)", + "cwd": "packages/hmssdk_flutter/example", + "request": "launch", + "type": "dart", + "flutterMode": "release" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index e180207d2..d8460e6df 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture ( 🤖 Download the Sample Android app here: - 100ms Flutter apps are also released on the App Stores, you can download them here: 📲 iOS app on Apple App Store: @@ -40,28 +39,28 @@ With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture ( 📖 Do refer the Complete [Installation Guide here](https://www.100ms.live/docs/flutter/v2/features/integration). -## 🏃‍♀ī¸ How to run the Example App +## 🏃♀ī¸ How to run the Example App The fully fledged Example app is [available here](https://github.com/100mslive/100ms-flutter/tree/main/example). 🚀 We have added explanations & recommended usage guide for different features, UI Layouts, Data Store, etc in [Example app ReadMe](https://github.com/100mslive/100ms-flutter/blob/main/example/README.md). To run the Example App on your system follow these steps - + 1. Clone the 100ms Flutter [Github Repo](https://github.com/100mslive/100ms-flutter.git) 2. In project root, run `flutter pub get` to build the Flutter package 3. Change directory to `example` folder 4. Now, to run the app, simply execute the `flutter run` command to run the app on a connected device, or iOS simulator, or Android Emulator. -5. For running on an iOS Device (iPhone or iPad), ensure you have set the Correct Development Team in Xcode Signing & Capabilities section. +5. For running on an iOS Device (iPhone or iPad), ensure you have set the Correct Development Team in Xcode Signing & Capabilities section. The default [Example app](https://github.com/100mslive/100ms-flutter/tree/main/example) uses Provider State Management library. For other implementations please check out - -* [Bloc](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/bloc) -* [Getx](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/getx) -* [Riverpod](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/riverpod) -* [Mobx](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/mobx) -* [Simple QuickStart](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/flutter-quickstart-app) - +- [Bloc](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/bloc) +- [Getx](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/getx) +- [Riverpod](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/riverpod) +- [Mobx](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/mobx) +- [Simple QuickStart](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/flutter-quickstart-app) ## ☝ī¸ Minimum Configuration @@ -141,7 +140,6 @@ Add following permissions in iOS Info.plist file - `Track` A track is a segment of media (audio/video) captured from the peer's camera and microphone. Peers in a session publish local tracks and subscribe to remote tracks from other peers. - `Role` A role defines who can a peer see/hear, the quality at which they publish their video, whether they have permissions to publish video/screenshare, mute someone, change someone's role. - ## â™ģī¸ [Setup Update Listeners](https://www.100ms.live/docs/flutter/v2/features/update-listeners) @@ -237,7 +235,7 @@ abstract class HMSUpdateListener { /// when someone kicks you out or when someone ends the room at that time it is triggered /// [hmsPeerRemovedFromPeer] it consists of info about who removed you and why. void onRemovedFromRoom({required HMSPeerRemovedFromPeer hmsPeerRemovedFromPeer}); - + /// whenever a new audio device is plugged in or audio output is changed we /// get the onAudioDeviceChanged update @@ -248,8 +246,8 @@ abstract class HMSUpdateListener { void onAudioDeviceChanged( {HMSAudioDevice? currentAudioDevice, List? availableAudioDevice}); - - + + /// Whenever a user joins a room [onSessionStoreAvailable] is fired to get an instance of [HMSSessionStore] /// which can be used to perform session metadata operations /// - Parameters: @@ -261,13 +259,13 @@ abstract class HMSUpdateListener { ## 🤔 [How to listen to Peer & Track updates?](https://www.100ms.live/docs/flutter/v2/features/update-listener-enums) - The 100ms SDK sends updates to the application about any change in HMSPeer, HMSTrack, HMSRoom, etc via the callbacks in `HMSUpdateListener`. +The 100ms SDK sends updates to the application about any change in HMSPeer, HMSTrack, HMSRoom, etc via the callbacks in `HMSUpdateListener`. - The methods of HMSUpdateListener are invoked to notify updates happening in the room like a peer join/leave, track mute/unmute etc. +The methods of HMSUpdateListener are invoked to notify updates happening in the room like a peer join/leave, track mute/unmute etc. - More information about Update Listeners is [available here](https://www.100ms.live/docs/flutter/v2/features/update-listeners). +More information about Update Listeners is [available here](https://www.100ms.live/docs/flutter/v2/features/update-listeners). - The following are the different types of updates that are emitted by the SDK - +The following are the different types of updates that are emitted by the SDK - ```txt HMSPeerUpdate @@ -296,7 +294,7 @@ HMSRoomUpdate .hlsStreamingStateUpdated: When HLS is started or stopped .hlsRecordingStateUpdated: When HLS recording state is updated ``` - + ## 🙏 [Join a Room](https://www.100ms.live/docs/flutter/v2/features/join) To join and interact with others in audio or video call, the user needs to `join` a `room`. @@ -310,14 +308,15 @@ To join a Room, your app should have - To join a room we need an authentication token as mentioned above. There are two methods to get the token: -#### Fetch token using room-code method (Recommended) +#### Fetch token using room-code method (Recommended) We can get the authentication token using room-code from meeting URL. Let's understand the subdomain and code from the sample URL In this URL: `http://100ms-rocks.app.100ms.live/meeting/abc-defg-hij` - - Subdomain is `100ms-rocks` - - Room code is `abc-defg-ghi` + +- Subdomain is `100ms-rocks` +- Room code is `abc-defg-ghi` Now to get the room-code from meeting URL we can write our own logic or use the `getCode` method from [here](https://github.com/100mslive/100ms-flutter/blob/main/example/lib/service/room_service.dart) @@ -355,7 +354,7 @@ To test audio/video functionality, you need to connect to a 100ms room; please c 1. Navigate to your [100ms dashboard](https://dashboard.100ms.live/dashboard) or [create an account](https://dashboard.100ms.live/register) if you don't have one. 2. Use the `Video Conferencing Starter Kit` to create a room with a default template assigned to it to test this app quickly. 3. Go to the [Rooms page](https://dashboard.100ms.live/rooms) in your dashboard, click on the `Room Id` of the room you created above, and click on the `Join Room` button on the top right. -4. In the Join with SDK section you can find the `Auth Token for role` ; you can click on the 'copy' icon to copy the authentication token. +4. In the Join with SDK section you can find the `Auth Token for role` ; you can click on the 'copy' icon to copy the authentication token. > Token from 100ms dashboard is for testing purposes only, For production applications you must generate tokens on your own server. > Refer to the [Management Token section](/flutter/v2/foundation/security-and-tokens#management-token) in Authentication and Tokens guide for more information. @@ -391,8 +390,6 @@ class Meeting implements HMSUpdateListener { } ``` - - ## 🎞 [Display a Track](https://www.100ms.live/docs/flutter/v2/features/render-video) It all comes down to this. All the setup so far has been done so that we can show live-streaming videos in our beautiful app. @@ -412,12 +409,12 @@ HMSVideoView( More information about displaying a Video is [available here](https://www.100ms.live/docs/react-native/v2/features/render-video). - ## 👋 [Leave Room](https://www.100ms.live/docs/flutter/v2/features/leave) Once you're done with the meeting and want to exit, call leave on the HMSSDK instance that you created to join the room. Before calling leave, remove the `HMSUpdateListener` instance as: + ```dart // updateListener is the instance of class in which HMSUpdateListener is implemented hmsSDK.removeUpdateListener(updateListener); @@ -426,7 +423,7 @@ hmsSDK.removeUpdateListener(updateListener); To leave the meeting, call the `leave` method of `HMSSDK` and pass the `hmsActionResultListener` parameter to get a success callback from SDK in the `onSuccess` override method as follow. > You will need to implement the `HMSActionResultListener` interface in a class to get `onSuccess` and `onException` callback. -> To know about how to implement `HMSActionResultListener` check the docs [here](https://www.100ms.live/docs/flutter/v2/features/action-result-listeners) +> To know about how to implement `HMSActionResultListener` check the docs [here](https://www.100ms.live/docs/flutter/v2/features/action-result-listeners) ```dart class Meeting implements HMSActionResultListener{ @@ -449,11 +446,10 @@ await hmsSDK.leave(hmsActionResultListener: this); More information about Leaving a Room is [available here](https://www.100ms.live/docs/flutter/v2/features/leave). - ## 🛤 HMSTracks Explained - + `HMSTrack` is the super-class of all the tracks that are used inside `HMSSDK`. Its hierarchy looks like this - - + ```dart HMSTrack - AudioTrack @@ -466,15 +462,15 @@ HMSTrack ## 🛤 How to know the type and source of Track? - HMSTrack contains a field called source which denotes the source of the Track. +HMSTrack contains a field called source which denotes the source of the Track. - `Source` can have the following values - - - `regular` For normal Audio or Video being published by peers - - `screen` For Screenshare track whenver a peer starts Broadcasting their Screen in a Room - - `plugin` For a custom Audio or Video plugin being used in Room +`Source` can have the following values - - To know the type of track, check the value of type which would be one of the enum values - `AUDIO` or `VIDEO` +- `regular` For normal Audio or Video being published by peers +- `screen` For Screenshare track whenver a peer starts Broadcasting their Screen in a Room +- `plugin` For a custom Audio or Video plugin being used in Room +To know the type of track, check the value of type which would be one of the enum values - `AUDIO` or `VIDEO` ## 📨 [Chat Messaging](https://www.100ms.live/docs/flutter/v2/features/chat) @@ -585,12 +581,10 @@ void onException( 📖 Do refer the Complete Documentation Guide [available here](https://www.100ms.live/docs/flutter/v2/guides/quickstart). - -🏃‍♀ī¸ Checkout the Example app implementation [available here](https://github.com/100mslive/100ms-flutter/tree/main/example). +🏃♀ī¸ Checkout the Example app implementation [available here](https://github.com/100mslive/100ms-flutter/tree/main/example). 🚀 We have added explanations & recommended usage guide for different features, UI Layouts, Data Store, etc in [Example app ReadMe](https://github.com/100mslive/100ms-flutter/blob/main/example/README.md). - 100ms Flutter apps are released on the App Stores, you can download them here: 📲 iOS app on Apple App Store: diff --git a/example/ExampleAppChangelog.txt b/example/ExampleAppChangelog.txt deleted file mode 100644 index 6284a7f5e..000000000 --- a/example/ExampleAppChangelog.txt +++ /dev/null @@ -1,9 +0,0 @@ -Board: https://github.com/100mslive/100ms-flutter/projects/20 - -- Added Hybrid composition videoview on Android to improve performance -https://github.com/100mslive/100ms-flutter/pull/1330 - - -Flutter SDK: 1.8.0 -Android SDK: 2.7.2 -iOS SDK: 0.9.6 diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 50198cb61..000000000 Binary files a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index c4fd5e2cf..000000000 Binary files a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 6c5b53a92..000000000 Binary files a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 9030a0c54..000000000 Binary files a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 6741e7bdb..000000000 Binary files a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/example/assets/icons/airplay.svg b/example/assets/icons/airplay.svg deleted file mode 100644 index 96e3451e1..000000000 --- a/example/assets/icons/airplay.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - diff --git a/example/assets/icons/arrow.svg b/example/assets/icons/arrow.svg deleted file mode 100644 index b15b94028..000000000 --- a/example/assets/icons/arrow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/aspect_ratio.svg b/example/assets/icons/aspect_ratio.svg deleted file mode 100644 index 32a1d1058..000000000 --- a/example/assets/icons/aspect_ratio.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/audio_mode.svg b/example/assets/icons/audio_mode.svg deleted file mode 100644 index 65f9bc606..000000000 --- a/example/assets/icons/audio_mode.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/brb.svg b/example/assets/icons/brb.svg deleted file mode 100644 index 2928fa682..000000000 --- a/example/assets/icons/brb.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/bug.svg b/example/assets/icons/bug.svg deleted file mode 100644 index a03213233..000000000 --- a/example/assets/icons/bug.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/cam_state_off.svg b/example/assets/icons/cam_state_off.svg deleted file mode 100644 index 805f3e17c..000000000 --- a/example/assets/icons/cam_state_off.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/cam_state_on.svg b/example/assets/icons/cam_state_on.svg deleted file mode 100644 index d638445de..000000000 --- a/example/assets/icons/cam_state_on.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/camera.svg b/example/assets/icons/camera.svg deleted file mode 100644 index e2df14b58..000000000 --- a/example/assets/icons/camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/clock.svg b/example/assets/icons/clock.svg deleted file mode 100644 index ae3b74637..000000000 --- a/example/assets/icons/clock.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/close.svg b/example/assets/icons/close.svg deleted file mode 100644 index 58a80fd11..000000000 --- a/example/assets/icons/close.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/close_button.svg b/example/assets/icons/close_button.svg deleted file mode 100644 index 439088a4d..000000000 --- a/example/assets/icons/close_button.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/example/assets/icons/dark_mode.svg b/example/assets/icons/dark_mode.svg deleted file mode 100644 index 3c0cefd9e..000000000 --- a/example/assets/icons/dark_mode.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/decoder.svg b/example/assets/icons/decoder.svg deleted file mode 100644 index 6cf2ebc41..000000000 --- a/example/assets/icons/decoder.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/degrade.svg b/example/assets/icons/degrade.svg deleted file mode 100644 index dc4616c1a..000000000 --- a/example/assets/icons/degrade.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/end.svg b/example/assets/icons/end.svg deleted file mode 100644 index cf3a5bbb4..000000000 --- a/example/assets/icons/end.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/example/assets/icons/end_room.svg b/example/assets/icons/end_room.svg deleted file mode 100644 index 439a85824..000000000 --- a/example/assets/icons/end_room.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/end_warning.svg b/example/assets/icons/end_warning.svg deleted file mode 100644 index bd0c04d0f..000000000 --- a/example/assets/icons/end_warning.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/event.svg b/example/assets/icons/event.svg deleted file mode 100644 index 8f7cdefc2..000000000 --- a/example/assets/icons/event.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/hand.svg b/example/assets/icons/hand.svg deleted file mode 100644 index 3f0b1182b..000000000 --- a/example/assets/icons/hand.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/hand_outline.svg b/example/assets/icons/hand_outline.svg deleted file mode 100644 index a7e8eca2d..000000000 --- a/example/assets/icons/hand_outline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/hls.svg b/example/assets/icons/hls.svg deleted file mode 100644 index 0141d4d38..000000000 --- a/example/assets/icons/hls.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/hms_icon_loading.png b/example/assets/icons/hms_icon_loading.png deleted file mode 100644 index 609da7862..000000000 Binary files a/example/assets/icons/hms_icon_loading.png and /dev/null differ diff --git a/example/assets/icons/info.svg b/example/assets/icons/info.svg deleted file mode 100644 index 8580cedbe..000000000 --- a/example/assets/icons/info.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/layers.svg b/example/assets/icons/layers.svg deleted file mode 100644 index 1120fc5c2..000000000 --- a/example/assets/icons/layers.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/leave.svg b/example/assets/icons/leave.svg deleted file mode 100644 index 0031ece37..000000000 --- a/example/assets/icons/leave.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/leave_hls.svg b/example/assets/icons/leave_hls.svg deleted file mode 100644 index 0602c5f88..000000000 --- a/example/assets/icons/leave_hls.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/light_mode.svg b/example/assets/icons/light_mode.svg deleted file mode 100644 index c0e478948..000000000 --- a/example/assets/icons/light_mode.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/live.svg b/example/assets/icons/live.svg deleted file mode 100644 index c075a2178..000000000 --- a/example/assets/icons/live.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/live_stream.svg b/example/assets/icons/live_stream.svg deleted file mode 100644 index 5a3065a6a..000000000 --- a/example/assets/icons/live_stream.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/local_capture.svg b/example/assets/icons/local_capture.svg deleted file mode 100644 index a2aade8cf..000000000 --- a/example/assets/icons/local_capture.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/example/assets/icons/message_badge_off.svg b/example/assets/icons/message_badge_off.svg deleted file mode 100644 index 851ce8496..000000000 --- a/example/assets/icons/message_badge_off.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/message_badge_on.svg b/example/assets/icons/message_badge_on.svg deleted file mode 100644 index 9dad89cfa..000000000 --- a/example/assets/icons/message_badge_on.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/example/assets/icons/mic.svg b/example/assets/icons/mic.svg deleted file mode 100644 index 233ea19d0..000000000 --- a/example/assets/icons/mic.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/example/assets/icons/mic_state_off.svg b/example/assets/icons/mic_state_off.svg deleted file mode 100644 index 78b10533c..000000000 --- a/example/assets/icons/mic_state_off.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/mic_state_on.svg b/example/assets/icons/mic_state_on.svg deleted file mode 100644 index 3c673b702..000000000 --- a/example/assets/icons/mic_state_on.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/more.svg b/example/assets/icons/more.svg deleted file mode 100644 index 5dcceb4dc..000000000 --- a/example/assets/icons/more.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/music_wave.svg b/example/assets/icons/music_wave.svg deleted file mode 100644 index 664131959..000000000 --- a/example/assets/icons/music_wave.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/example/assets/icons/network_0.svg b/example/assets/icons/network_0.svg deleted file mode 100644 index 4f4111c55..000000000 --- a/example/assets/icons/network_0.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/example/assets/icons/network_1.svg b/example/assets/icons/network_1.svg deleted file mode 100644 index 4ef41092d..000000000 --- a/example/assets/icons/network_1.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/network_2.svg b/example/assets/icons/network_2.svg deleted file mode 100644 index f8ba6b0ad..000000000 --- a/example/assets/icons/network_2.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/network_3.svg b/example/assets/icons/network_3.svg deleted file mode 100644 index ac03b95c8..000000000 --- a/example/assets/icons/network_3.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/network_4.svg b/example/assets/icons/network_4.svg deleted file mode 100644 index 78f778100..000000000 --- a/example/assets/icons/network_4.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/network_5.svg b/example/assets/icons/network_5.svg deleted file mode 100644 index 78f778100..000000000 --- a/example/assets/icons/network_5.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/no_network.png b/example/assets/icons/no_network.png deleted file mode 100644 index 7d79beaee..000000000 Binary files a/example/assets/icons/no_network.png and /dev/null differ diff --git a/example/assets/icons/notification.svg b/example/assets/icons/notification.svg deleted file mode 100644 index db125cf43..000000000 --- a/example/assets/icons/notification.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/participants.svg b/example/assets/icons/participants.svg deleted file mode 100644 index 978a9a77d..000000000 --- a/example/assets/icons/participants.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/peer_remove.svg b/example/assets/icons/peer_remove.svg deleted file mode 100644 index 7ac7ace50..000000000 --- a/example/assets/icons/peer_remove.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/pencil.svg b/example/assets/icons/pencil.svg deleted file mode 100644 index 769cb5366..000000000 --- a/example/assets/icons/pencil.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/person.svg b/example/assets/icons/person.svg deleted file mode 100644 index 2febef3c4..000000000 --- a/example/assets/icons/person.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/pin.svg b/example/assets/icons/pin.svg deleted file mode 100644 index 13025ca56..000000000 --- a/example/assets/icons/pin.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/preview_state_off.svg b/example/assets/icons/preview_state_off.svg deleted file mode 100644 index 87cd7d962..000000000 --- a/example/assets/icons/preview_state_off.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/preview_state_on.svg b/example/assets/icons/preview_state_on.svg deleted file mode 100644 index bd00a00d9..000000000 --- a/example/assets/icons/preview_state_on.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/record.svg b/example/assets/icons/record.svg deleted file mode 100644 index 44acbf4d0..000000000 --- a/example/assets/icons/record.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/role_change.svg b/example/assets/icons/role_change.svg deleted file mode 100644 index 6f9fbcf7e..000000000 --- a/example/assets/icons/role_change.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/rotate.svg b/example/assets/icons/rotate.svg deleted file mode 100644 index c65a3184d..000000000 --- a/example/assets/icons/rotate.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/example/assets/icons/screen_share.svg b/example/assets/icons/screen_share.svg deleted file mode 100644 index 4755f094e..000000000 --- a/example/assets/icons/screen_share.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/send.svg b/example/assets/icons/send.svg deleted file mode 100644 index 50688cc3d..000000000 --- a/example/assets/icons/send.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/send_message.svg b/example/assets/icons/send_message.svg deleted file mode 100644 index 3c8f4be20..000000000 --- a/example/assets/icons/send_message.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/settings.svg b/example/assets/icons/settings.svg deleted file mode 100644 index a659e9428..000000000 --- a/example/assets/icons/settings.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/share.svg b/example/assets/icons/share.svg deleted file mode 100644 index b72aa6ad5..000000000 --- a/example/assets/icons/share.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/simulcast.svg b/example/assets/icons/simulcast.svg deleted file mode 100644 index 1120fc5c2..000000000 --- a/example/assets/icons/simulcast.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/single_tile.svg b/example/assets/icons/single_tile.svg deleted file mode 100644 index 2febef3c4..000000000 --- a/example/assets/icons/single_tile.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/snapshot.svg b/example/assets/icons/snapshot.svg deleted file mode 100644 index fe7d2a230..000000000 --- a/example/assets/icons/snapshot.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/example/assets/icons/speaker_state_off.svg b/example/assets/icons/speaker_state_off.svg deleted file mode 100644 index f0498120a..000000000 --- a/example/assets/icons/speaker_state_off.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/speaker_state_on.svg b/example/assets/icons/speaker_state_on.svg deleted file mode 100644 index e285cc8d9..000000000 --- a/example/assets/icons/speaker_state_on.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/spotlight.svg b/example/assets/icons/spotlight.svg deleted file mode 100644 index 721b68792..000000000 --- a/example/assets/icons/spotlight.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/stats.svg b/example/assets/icons/stats.svg deleted file mode 100644 index 1eba77c40..000000000 --- a/example/assets/icons/stats.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/stream.svg b/example/assets/icons/stream.svg deleted file mode 100644 index ce942fc35..000000000 --- a/example/assets/icons/stream.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/icons/tile_mute.svg b/example/assets/icons/tile_mute.svg deleted file mode 100644 index ae916592c..000000000 --- a/example/assets/icons/tile_mute.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/example/assets/icons/user-music.svg b/example/assets/icons/user-music.svg deleted file mode 100644 index e6fda450b..000000000 --- a/example/assets/icons/user-music.svg +++ /dev/null @@ -1,620 +0,0 @@ - - - - diff --git a/example/assets/icons/warning.svg b/example/assets/icons/warning.svg deleted file mode 100644 index d92d35e36..000000000 --- a/example/assets/icons/warning.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/example/assets/icons/watching.svg b/example/assets/icons/watching.svg deleted file mode 100644 index ccff7ee60..000000000 --- a/example/assets/icons/watching.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/example/assets/welcome.svg b/example/assets/welcome.svg deleted file mode 100644 index 54d547624..000000000 --- a/example/assets/welcome.svg +++ /dev/null @@ -1,1437 +0,0 @@ - - - - diff --git a/example/flutter_launcher_icons.yaml b/example/flutter_launcher_icons.yaml deleted file mode 100644 index 7a0966c82..000000000 --- a/example/flutter_launcher_icons.yaml +++ /dev/null @@ -1,4 +0,0 @@ -flutter_icons: - android: true - ios: true - image_path: "assets/icons/hms_icon_1024.png" \ No newline at end of file diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab2..000000000 --- a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "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/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index 0b58ae253..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index d41e2f13d..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index e7adac1b2..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index cd115b632..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4181b35d2..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d9d102042..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index da95a5cb1..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index e7adac1b2..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index de8b110aa..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index 5a1e4e0c5..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index 5a1e4e0c5..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index f465f1124..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index 06a934583..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 691d0dcf9..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index 7559b0737..000000000 Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2fd..000000000 --- a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "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/example/lib/common/bottom_sheets/audio_settings_bottom_sheet.dart b/example/lib/common/bottom_sheets/audio_settings_bottom_sheet.dart deleted file mode 100644 index 1fba5ec83..000000000 --- a/example/lib/common/bottom_sheets/audio_settings_bottom_sheet.dart +++ /dev/null @@ -1,175 +0,0 @@ -import 'dart:io'; - -import 'package:dropdown_button2/dropdown_button2.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; -import 'package:collection/collection.dart'; - -class AudioSettingsBottomSheet extends StatefulWidget { - AudioSettingsBottomSheet({ - Key? key, - }) : super(key: key); - @override - State createState() => - _AudioSettingsBottomSheetState(); -} - -class _AudioSettingsBottomSheetState extends State { - GlobalKey? dropdownKey; - - void _updateDropDownValue(dynamic newValue) { - if (newValue != null) { - Navigator.pop(context); - context.read().switchAudioOutput(audioDevice: newValue); - dropdownKey = null; - } - } - - @override - void initState() { - super.initState(); - dropdownKey = GlobalKey(); - } - - @override - Widget build(BuildContext context) { - MeetingStore _meetingStore = context.read(); - return FractionallySizedBox( - heightFactor: 0.5, - child: Padding( - padding: const EdgeInsets.only(top: 20.0, left: 15, right: 15), - child: Selector, int, HMSAudioDevice?>>( - selector: (_, meetingStore) => Tuple3( - meetingStore.availableAudioOutputDevices, - meetingStore.availableAudioOutputDevices.length, - meetingStore.currentAudioOutputDevice), - builder: (context, data, _) { - if (dropdownKey != null && dropdownKey!.currentWidget != null) { - Navigator.pop(dropdownKey!.currentContext!); - } - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - CircleAvatar( - radius: 18, - backgroundColor: borderColor, - child: IconButton( - icon: Icon( - Icons.arrow_back_ios_new, - size: 16, - color: hmsWhiteColor, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ), - Expanded( - child: Text( - "Audio Settings", - textAlign: TextAlign.center, - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - ), - IconButton( - icon: SvgPicture.asset( - "assets/icons/close_button.svg", - width: 40, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ], - ), - Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), - child: Divider( - color: dividerColor, - height: 5, - ), - ), - Text("Speakers", - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 14, - fontWeight: FontWeight.w400, - letterSpacing: 0.25)), - SizedBox( - height: 10, - ), - Container( - padding: EdgeInsets.only(left: 10, right: 5), - decoration: BoxDecoration( - color: themeSurfaceColor, - borderRadius: BorderRadius.circular(10.0), - border: Border.all( - color: borderColor, - style: BorderStyle.solid, - width: 0.80), - ), - child: DropdownButtonHideUnderline( - child: HMSDropDown( - dropdownKey: dropdownKey, - buttonStyleData: ButtonStyleData( - height: 48, - ), - dropdownStyleData: DropdownStyleData( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: themeSurfaceColor), - offset: Offset(-10, -10), - ), - dropDownItems: [ - ...data.item1 - .sortedBy((element) => element.toString()) - .map((device) => DropdownMenuItem( - key: UniqueKey(), - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/music_wave.svg", - color: themeDefaultColor, - ), - SizedBox( - width: 10, - ), - Container( - child: SubtitleText( - text: device.name, - textColor: themeDefaultColor, - ), - ), - ], - ), - value: device, - )) - .toList(), - ], - selectedValue: Platform.isAndroid - ? data.item3 - : _meetingStore.currentAudioDeviceMode, - updateSelectedValue: _updateDropDownValue)), - ), - ], - ); - }), - ), - ); - } -} diff --git a/example/lib/common/bottom_sheets/logger_view_bottom_sheet.dart b/example/lib/common/bottom_sheets/logger_view_bottom_sheet.dart deleted file mode 100644 index aca77fe03..000000000 --- a/example/lib/common/bottom_sheets/logger_view_bottom_sheet.dart +++ /dev/null @@ -1,151 +0,0 @@ -//Package imports -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/service/constant.dart'; -import 'package:provider/provider.dart'; - -class HMSLoggerViewBottomSheet extends StatefulWidget { - @override - State createState() => - _HMSLoggerViewBottomSheetState(); -} - -class _HMSLoggerViewBottomSheetState extends State { - final ScrollController _scrollController = ScrollController(); - - @override - void initState() { - super.initState(); - } - - @override - void dispose() { - _scrollController.dispose(); - super.dispose(); - } - - void _scrollToEnd() { - WidgetsBinding.instance.addPostFrameCallback((_) => - _scrollController.animateTo(_scrollController.position.maxScrollExtent, - duration: Duration(milliseconds: 200), curve: Curves.easeInOut)); - } - - @override - Widget build(BuildContext context) { - return SafeArea( - child: FractionallySizedBox( - heightFactor: 0.81, - child: Material( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - color: themeBottomSheetColor, - child: Padding( - padding: const EdgeInsets.only(top: 20.0, left: 15, right: 15), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Text( - "Live Logs View", - textAlign: TextAlign.center, - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - SizedBox( - width: 20, - ), - Expanded( - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - IconButton( - icon: SvgPicture.asset( - "assets/icons/close_button.svg", - width: 40, - ), - onPressed: () { - context - .read() - .filteredPeers - .clear(); - Navigator.pop(context); - }, - ), - ], - ), - ), - ], - ), - SizedBox( - height: 5, - ), - Text( - "WebRTC log level: ${Constant.webRTCLogLevel.name}", - textAlign: TextAlign.center, - style: GoogleFonts.inter( - color: themeDefaultColor, - ), - ), - Text( - "SDK log level: ${Constant.sdkLogLevel.name}", - style: GoogleFonts.inter( - color: themeDefaultColor, - ), - ), - Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), - child: Divider( - color: dividerColor, - height: 5, - ), - ), - Selector( - selector: (_, meetingStore) => meetingStore.applicationLogs, - builder: (_, data, __) { - if (data != null && data.hmsLog.length > 0) { - _scrollToEnd(); - } - return Container( - height: MediaQuery.of(context).size.height * 0.60, - child: (data == null || data.hmsLog.length == 0) - ? Container( - child: Center( - child: SubtitleText( - text: "No logs found", - textColor: themeDefaultColor), - ), - ) - : ListView.builder( - controller: _scrollController, - shrinkWrap: true, - itemCount: data.hmsLog.length, - itemBuilder: (context, index) { - return Text(data.hmsLog[index], - softWrap: true, - style: GoogleFonts.inter( - height: 16 / 12, - fontSize: 12, - letterSpacing: 0.4, - color: themeDefaultColor, - fontWeight: FontWeight.w400)); - }), - ); - }) - ], - ), - ), - ), - ), - ); - } -} diff --git a/example/lib/common/bottom_sheets/more_settings_bottom_sheet.dart b/example/lib/common/bottom_sheets/more_settings_bottom_sheet.dart deleted file mode 100644 index cab045c2e..000000000 --- a/example/lib/common/bottom_sheets/more_settings_bottom_sheet.dart +++ /dev/null @@ -1,764 +0,0 @@ -import 'dart:io'; - -import 'package:badges/badges.dart' as badge; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/stats_for_nerds.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/logger_view_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/notification_settings_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/participants_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/widgets/share_link_option.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/audio_settings_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/start_hls_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/meeting_mode_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:provider/provider.dart'; - -class MoreSettingsBottomSheet extends StatefulWidget { - final bool isAudioMixerDisabled; - - const MoreSettingsBottomSheet({Key? key, this.isAudioMixerDisabled = true}) - : super(key: key); - @override - State createState() => - _MoreSettingsBottomSheetState(); -} - -class _MoreSettingsBottomSheetState extends State { - @override - Widget build(BuildContext context) { - MeetingStore _meetingStore = context.read(); - return FractionallySizedBox( - heightFactor: 0.6, - child: Padding( - padding: const EdgeInsets.only(top: 20.0, left: 15, right: 15), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Text( - "More Options", - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - IconButton( - icon: SvgPicture.asset( - "assets/icons/close_button.svg", - width: 40, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ], - ) - ], - ), - Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), - child: Divider( - color: dividerColor, - height: 5, - ), - ), - Expanded( - child: ListView( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - InkWell( - onTap: () async { - Navigator.pop(context); - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => ChangeNotifierProvider.value( - value: context.read(), - child: ParticipantsBottomSheet()), - ); - }, - child: Container( - decoration: BoxDecoration( - color: moreSettingsButtonColor, - borderRadius: BorderRadius.circular(10)), - height: 100, - width: 150, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - badge.Badge( - badgeStyle: badge.BadgeStyle( - badgeColor: hmsdefaultColor), - badgeContent: Text(context - .read() - .peers - .length - .toString()), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: SvgPicture.asset( - "assets/icons/participants.svg", - color: themeDefaultColor, - ), - ), - ), - SizedBox(height: 10), - Text( - "Participants", - semanticsLabel: "participants_button", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ) - ], - ), - ), - ), - InkWell( - onTap: () async { - Navigator.pop(context); - - if (Platform.isAndroid) { - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => ChangeNotifierProvider.value( - value: _meetingStore, - child: AudioSettingsBottomSheet()), - ); - } else { - context - .read() - .switchAudioOutputUsingiOSUI(); - } - }, - child: Container( - decoration: BoxDecoration( - color: moreSettingsButtonColor, - borderRadius: BorderRadius.circular(10)), - height: 100, - width: 150, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SvgPicture.asset( - "assets/icons/settings.svg", - color: themeDefaultColor, - ), - SizedBox( - height: 10, - ), - Text( - "Audio Settings", - semanticsLabel: "fl_audio_settings", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - ], - ), - ), - ) - ], - ), - SizedBox( - height: 10, - ), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => ChangeNotifierProvider.value( - value: _meetingStore, - child: MeetingModeBottomSheet()), - ); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/participants.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Meeting mode", - semanticsLabel: "fl_meeting_mode", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - ), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - FocusManager.instance.primaryFocus?.unfocus(); - String name = - await UtilityComponents.showNameChangeDialog( - context: context, - placeholder: "Enter Name", - prefilledValue: context - .read() - .localPeer - ?.name ?? - ""); - if (name.isNotEmpty) { - _meetingStore.changeName(name: name); - } - // Navigator.pop(context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/pencil.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Change Name", - semanticsLabel: "fl_change_name", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - ), - ListTile( - horizontalTitleGap: 2, - onTap: () { - _meetingStore.toggleSpeaker(); - Navigator.pop(context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - _meetingStore.isSpeakerOn - ? "assets/icons/speaker_state_on.svg" - : "assets/icons/speaker_state_off.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - _meetingStore.isSpeakerOn ? "Mute Room" : "Unmute Room", - semanticsLabel: "fl_mute_room", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - ), - ListTile( - horizontalTitleGap: 2, - onTap: () { - _meetingStore.switchCamera(); - Navigator.pop(context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/camera.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Switch Camera", - semanticsLabel: "fl_switch_camera", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - ), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - _meetingStore.changeMetadataBRB(); - Navigator.pop(context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/brb.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "BRB", - semanticsLabel: "fl_brb_list_tile", - style: GoogleFonts.inter( - fontSize: 14, - color: _meetingStore.isBRB - ? errorColor - : themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - ), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - showDialog( - barrierDismissible: false, - context: context, - builder: (_) => ListenableProvider.value( - value: _meetingStore, - child: StatsForNerds( - peerTrackNode: _meetingStore.peerTracks, - ))); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/stats.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Stats for nerds", - semanticsLabel: "fl_stats_list_tile", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - if ((_meetingStore.localPeer?.role.permissions.mute ?? - false) && - (_meetingStore.localPeer?.role.permissions.unMute ?? - false)) - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - List roles = await _meetingStore.getRoles(); - UtilityComponents.showRoleListForMute( - context, roles, _meetingStore); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/mic_state_off.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Mute Role", - semanticsLabel: "fl_mute_role", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - if (_meetingStore.localPeer?.role.permissions.changeRole ?? - false) - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - List roles = await _meetingStore.getRoles(); - UtilityComponents.showDialogForBulkRoleChange( - context, roles, _meetingStore); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/role_change.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Bulk Role Change", - semanticsLabel: "fl_bulk_roles_change", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - if (_meetingStore.localPeer?.role.permissions.rtmpStreaming ?? - false) - Selector( - selector: (_, meetingStore) => - meetingStore.streamingType["rtmp"] ?? false, - builder: (_, isRTMPRunning, __) { - return ListTile( - horizontalTitleGap: 2, - onTap: () async { - if (isRTMPRunning) { - _meetingStore.stopRtmpAndRecording(); - Navigator.pop(context); - } else { - Navigator.pop(context); - Map data = - await UtilityComponents.showRTMPInputDialog( - context: context, - placeholder: - "Enter Comma separated RTMP Urls", - isRecordingEnabled: _meetingStore - .recordingType["browser"] == - true); - List? urls; - if (data["url"]!.isNotEmpty) { - urls = data["url"]!.split(","); - } - if (urls != null) { - _meetingStore.startRtmpOrRecording( - toRecord: data["toRecord"] ?? false, - rtmpUrls: urls); - } else if (data["toRecord"] ?? false) { - _meetingStore.startRtmpOrRecording( - toRecord: data["toRecord"] ?? false, - rtmpUrls: null); - } - } - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/stream.svg", - fit: BoxFit.scaleDown, - color: isRTMPRunning - ? errorColor - : themeDefaultColor, - ), - title: Text( - isRTMPRunning ? "Stop RTMP" : "Start RTMP", - semanticsLabel: isRTMPRunning - ? "fl_stop_rtmp" - : "fl_start_rtmp", - style: GoogleFonts.inter( - fontSize: 14, - color: isRTMPRunning - ? errorColor - : themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )); - }), - if (_meetingStore - .localPeer?.role.permissions.browserRecording ?? - false) - Selector( - selector: (_, meetingStore) => - meetingStore.recordingType["browser"] ?? false, - builder: (_, isBrowserRecording, __) { - return ListTile( - horizontalTitleGap: 2, - onTap: () async { - if (isBrowserRecording) { - _meetingStore.stopRtmpAndRecording(); - } else { - _meetingStore.startRtmpOrRecording( - toRecord: true, rtmpUrls: []); - } - Navigator.pop(context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/record.svg", - fit: BoxFit.scaleDown, - color: isBrowserRecording - ? errorColor - : themeDefaultColor, - ), - title: Text( - isBrowserRecording - ? "Stop Recording" - : "Start Recording", - semanticsLabel: isBrowserRecording - ? "fl_stop_recording" - : "fl_start_recording", - style: GoogleFonts.inter( - fontSize: 14, - color: isBrowserRecording - ? errorColor - : themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )); - }), - if (_meetingStore.localPeer?.role.permissions.hlsStreaming ?? - false) - Selector( - selector: ((_, meetingStore) => - meetingStore.hasHlsStarted), - builder: (_, hasHLSStarted, __) { - return ListTile( - horizontalTitleGap: 2, - onTap: () async { - if (hasHLSStarted) { - _meetingStore.stopHLSStreaming(); - Navigator.pop(context); - return; - } - Navigator.pop(context); - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => - ChangeNotifierProvider.value( - value: _meetingStore, - child: StartHLSBottomSheet()), - ); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/hls.svg", - fit: BoxFit.scaleDown, - color: hasHLSStarted - ? errorColor - : themeDefaultColor, - ), - title: Text( - hasHLSStarted ? "Stop HLS" : "Start HLS", - semanticsLabel: hasHLSStarted - ? "fl_stop_hls" - : "fl_start_hls", - style: GoogleFonts.inter( - fontSize: 14, - color: hasHLSStarted - ? errorColor - : themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )); - }), - if (!(_meetingStore.localPeer?.role.name.contains("hls-") ?? - true) && - !(Platform.isIOS && widget.isAudioMixerDisabled)) - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - if (Platform.isAndroid) { - if (_meetingStore.isAudioShareStarted) { - _meetingStore.stopAudioShare(); - } else { - _meetingStore.startAudioShare(); - } - } else if (Platform.isIOS) { - bool isPlaying = - await _meetingStore.isPlayerRunningIos(); - String url = - await UtilityComponents.showAudioShareDialog( - context: context, - meetingStore: _meetingStore, - isPlaying: isPlaying); - if (url != "") { - _meetingStore.playAudioIos(url); - } - } - }, - contentPadding: EdgeInsets.zero, - leading: Icon( - Icons.music_note, - color: themeDefaultColor, - ), - title: Text( - _meetingStore.isAudioShareStarted - ? "Stop Audio Share" - : "Start Audio Share", - semanticsLabel: _meetingStore.isAudioShareStarted - ? "fl_stop_audio_share" - : "fl_start_audio_share", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - if (Platform.isAndroid && _meetingStore.isAudioShareStarted) - ListTile( - horizontalTitleGap: 2, - onTap: () async { - if (_meetingStore.isAudioShareStarted) - UtilityComponents.showChangeAudioMixingModeDialog( - context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/music_wave.svg", - fit: BoxFit.scaleDown, - ), - title: Text( - "Audio Mixing Mode", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - if (Platform.isAndroid) - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - context.read().enterPipModeOnAndroid(); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/screen_share.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Enter Pip Mode", - semanticsLabel: "fl_pip_mode", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - showDialog( - context: context, - builder: (_) => ShareLinkOptionDialog( - roles: _meetingStore.roles, - roomID: _meetingStore.hmsRoom!.id)); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/share.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Share Link", - semanticsLabel: "fl_share_link", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => - NotificationSettingsBottomSheet()); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/notification.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Modify Notifications", - semanticsLabel: "fl_notification_setting", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => ChangeNotifierProvider.value( - value: _meetingStore, - child: HMSLoggerViewBottomSheet())); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/stats.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Live logs view", - semanticsLabel: "fl_live_logs", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - if (_meetingStore.localPeer?.role.permissions.endRoom ?? - false) - ListTile( - horizontalTitleGap: 2, - onTap: () async { - UtilityComponents.onEndRoomPressed(context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/end_room.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "End Room", - semanticsLabel: "fl_end_room", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), - ], - ), - ) - ], - ), - ), - ); - } -} diff --git a/example/lib/common/bottom_sheets/participants_bottom_sheet.dart b/example/lib/common/bottom_sheets/participants_bottom_sheet.dart deleted file mode 100644 index e935bc1a1..000000000 --- a/example/lib/common/bottom_sheets/participants_bottom_sheet.dart +++ /dev/null @@ -1,521 +0,0 @@ -import 'package:dropdown_button2/dropdown_button2.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/change_role_option_dialog.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; -import 'package:collection/collection.dart'; - -class ParticipantsBottomSheet extends StatefulWidget { - @override - State createState() => - _ParticipantsBottomSheetState(); -} - -class _ParticipantsBottomSheetState extends State { - String valueChoose = "Everyone"; - - void _updateDropDownValue(dynamic newValue) { - context.read().getFilteredList(newValue); - context.read().selectedRoleFilter = newValue; - setState(() { - valueChoose = newValue; - }); - } - - Widget _kebabMenu(HMSPeer peer) { - final _meetingStore = context.read(); - PeerTrackNode? peerTrackNode; - try { - peerTrackNode = _meetingStore.peerTracks - .firstWhere((element) => element.uid == peer.peerId + "mainVideo"); - } catch (e) { - peerTrackNode = null; - } - - bool mutePermission = - _meetingStore.localPeer?.role.permissions.mute ?? false; - bool removePeerPermission = - _meetingStore.localPeer?.role.permissions.removeOthers ?? false; - bool changeRolePermission = - _meetingStore.localPeer?.role.permissions.changeRole ?? false; - - //For HLS-Viewer - if (peerTrackNode == null) { - return changeRolePermission - ? PopupMenuButton( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8)), - color: themeSurfaceColor, - icon: SvgPicture.asset( - "assets/icons/more.svg", - color: themeDefaultColor, - fit: BoxFit.scaleDown, - ), - onSelected: (int value) async { - switch (value) { - case 1: - Navigator.pop(context); - showDialog( - context: context, - builder: (_) => ChangeRoleOptionDialog( - peerName: peer.name, - roles: _meetingStore.roles, - peer: peer, - changeRole: (role, forceChange) { - _meetingStore.changeRoleOfPeer( - peer: peer, - roleName: role, - forceChange: forceChange); - }, - )); - break; - default: - break; - } - }, - itemBuilder: ((context) => [ - PopupMenuItem( - child: Row(children: [ - SvgPicture.asset("assets/icons/role_change.svg", - width: 15, color: themeDefaultColor), - SizedBox( - width: 12, - ), - TitleText( - text: "Change Role", - textColor: themeDefaultColor, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.25, - ), - ]), - value: 1, - ), - ])) - : SizedBox(); - } - - return (changeRolePermission || removePeerPermission || mutePermission) - ? PopupMenuButton( - shape: - RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), - color: themeSurfaceColor, - onSelected: (int value) async { - switch (value) { - case 1: - Navigator.pop(context); - showDialog( - context: context, - builder: (_) => ChangeRoleOptionDialog( - peerName: peerTrackNode!.peer.name, - roles: _meetingStore.roles, - peer: peerTrackNode.peer, - changeRole: (role, forceChange) { - _meetingStore.changeRoleOfPeer( - peer: peerTrackNode!.peer, - roleName: role, - forceChange: forceChange); - }, - )); - - break; - case 2: - if (peerTrackNode!.track == null) { - return; - } - _meetingStore.changeTrackState( - peerTrackNode.track!, !peerTrackNode.track!.isMute); - break; - case 3: - if (peerTrackNode!.audioTrack == null) { - return; - } - _meetingStore.changeTrackState(peerTrackNode.audioTrack!, - !peerTrackNode.audioTrack!.isMute); - break; - case 4: - var peer = await _meetingStore.getPeer( - peerId: peerTrackNode!.peer.peerId); - if (peer == null) { - return; - } - _meetingStore.removePeerFromRoom(peer); - break; - default: - break; - } - }, - icon: SvgPicture.asset( - "assets/icons/more.svg", - color: themeDefaultColor, - fit: BoxFit.scaleDown, - ), - itemBuilder: (context) => [ - if (changeRolePermission) - PopupMenuItem( - child: Row(children: [ - SvgPicture.asset("assets/icons/role_change.svg", - width: 15, color: themeDefaultColor), - SizedBox( - width: 12, - ), - TitleText( - text: "Change Role", - textColor: themeDefaultColor, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.25, - ), - ]), - value: 1, - ), - if (mutePermission && !peerTrackNode!.peer.isLocal) - PopupMenuItem( - child: Row(children: [ - SvgPicture.asset( - peerTrackNode.track?.isMute ?? false - ? "assets/icons/cam_state_on.svg" - : "assets/icons/cam_state_off.svg", - color: themeDefaultColor, - width: 15, - ), - SizedBox( - width: 12, - ), - TitleText( - text: - "${peerTrackNode.track?.isMute ?? false ? "Unmute" : "Mute"} Video", - textColor: themeDefaultColor, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.25, - ), - ]), - value: 2, - ), - if (mutePermission && !peerTrackNode!.peer.isLocal) - PopupMenuItem( - child: Row(children: [ - SvgPicture.asset( - peerTrackNode.audioTrack?.isMute ?? false - ? "assets/icons/mic_state_on.svg" - : "assets/icons/mic_state_off.svg", - color: themeDefaultColor, - width: 15, - ), - SizedBox( - width: 12, - ), - TitleText( - text: - "${peerTrackNode.audioTrack?.isMute ?? false ? "Unmute" : "Mute"} Audio", - textColor: themeDefaultColor, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.25, - ), - ]), - value: 3, - ), - if (removePeerPermission && !peerTrackNode!.peer.isLocal) - PopupMenuItem( - child: Row(children: [ - SvgPicture.asset("assets/icons/peer_remove.svg", - width: 15, color: themeDefaultColor), - SizedBox( - width: 12, - ), - TitleText( - text: "Remove Peer", - textColor: themeDefaultColor, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.25, - ), - ]), - value: 4, - ), - ]) - : SizedBox(); - } - - @override - void initState() { - super.initState(); - context.read().getFilteredList(valueChoose); - } - - @override - Widget build(BuildContext context) { - return SafeArea( - child: FractionallySizedBox( - heightFactor: 0.81, - child: Material( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - color: themeBottomSheetColor, - child: Padding( - padding: const EdgeInsets.only(top: 20.0, left: 15, right: 15), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Text( - "Participants(${context.read().peers.length})", - textAlign: TextAlign.center, - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - SizedBox( - width: 20, - ), - DropdownButtonHideUnderline( - child: Selector>( - selector: (_, meetingStore) => meetingStore.roles, - builder: (context, roles, _) { - return HMSDropDown( - dropDownItems: [ - DropdownMenuItem( - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/participants.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - height: 16, - ), - SizedBox( - width: 11, - ), - Text( - "Everyone", - style: GoogleFonts.inter( - fontWeight: FontWeight.w400, - fontSize: 12, - letterSpacing: 0.4, - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - ], - ), - value: "Everyone", - ), - DropdownMenuItem( - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/hand_outline.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - height: 16, - ), - SizedBox( - width: 11, - ), - Text( - "Raised Hand", - style: GoogleFonts.inter( - fontWeight: FontWeight.w400, - fontSize: 12, - letterSpacing: 0.4, - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - ], - ), - value: "Raised Hand", - ), - ...roles - .sortedBy((element) => - element.priority.toString()) - .map((role) => DropdownMenuItem( - child: Text( - "${role.name}", - overflow: TextOverflow.ellipsis, - maxLines: 1, - style: GoogleFonts.inter( - fontSize: 12, - color: iconColor), - ), - value: role.name, - )) - .toList(), - ], - dropdownButton: Container( - padding: EdgeInsets.only( - left: 10, right: 8, top: 4, bottom: 4), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - border: Border.all( - color: borderColor, - style: BorderStyle.solid, - width: 0.80)), - child: Row( - children: [ - Text( - valueChoose, - style: GoogleFonts.inter( - fontWeight: FontWeight.w400, - fontSize: 12, - letterSpacing: 0.4, - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - SizedBox( - width: 5, - ), - Icon(Icons.keyboard_arrow_down), - ], - ), - ), - dropdownStyleData: DropdownStyleData( - width: - MediaQuery.of(context).size.width * 0.4, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: themeSurfaceColor), - offset: Offset(-10, -10), - ), - buttonStyleData: - ButtonStyleData(width: 100, height: 35), - menuItemStyleData: MenuItemStyleData( - height: 45, - ), - selectedValue: valueChoose, - updateSelectedValue: _updateDropDownValue); - }), - ), - Expanded( - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - IconButton( - icon: SvgPicture.asset( - "assets/icons/close_button.svg", - width: 40, - ), - onPressed: () { - context - .read() - .filteredPeers - .clear(); - Navigator.pop(context); - }, - ), - ], - ), - ), - ], - ), - Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), - child: Divider( - color: dividerColor, - height: 5, - ), - ), - Selector, int>>( - selector: (_, meetingStore) => Tuple2( - meetingStore.filteredPeers, - meetingStore.filteredPeers.length), - builder: (_, data, __) { - return Container( - height: MediaQuery.of(context).size.height * 0.65, - child: ListView.builder( - shrinkWrap: true, - itemCount: data.item2, - itemBuilder: (context, index) { - return Selector>( - selector: (_, meetingStore) => Tuple4( - meetingStore.filteredPeers[index].name, - meetingStore.filteredPeers[index], - meetingStore - .filteredPeers[index].role.name, - meetingStore - .filteredPeers[index].metadata ?? - ""), - builder: (_, peer, __) { - return ListTile( - horizontalTitleGap: 5, - contentPadding: EdgeInsets.zero, - leading: CircleAvatar( - backgroundColor: - Utilities.getBackgroundColour( - peer.item1), - radius: 16, - child: Text( - Utilities.getAvatarTitle( - peer.item1), - style: GoogleFonts.inter( - fontSize: 12, - color: themeDefaultColor, - fontWeight: FontWeight.w600)), - ), - title: Text( - peer.item1 + - (peer.item2.isLocal - ? " (You)" - : ""), - maxLines: 1, - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - subtitle: Text( - peer.item3, - style: GoogleFonts.inter( - fontSize: 12, - color: themeSubHeadingColor, - letterSpacing: 0.40, - fontWeight: FontWeight.w400), - ), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - peer.item4.contains( - "\"isHandRaised\":true") - ? SvgPicture.asset( - "assets/icons/hand.svg", - color: Color.fromRGBO( - 250, 201, 25, 1), - height: 15, - ) - : SizedBox(), - SizedBox( - width: 5, - ), - _kebabMenu(peer.item2), - ], - )); - }); - }), - ); - }) - ], - ), - ), - ), - ), - ); - } -} diff --git a/example/lib/common/bottom_sheets/start_hls_bottom_sheet.dart b/example/lib/common/bottom_sheets/start_hls_bottom_sheet.dart deleted file mode 100644 index 13d414c84..000000000 --- a/example/lib/common/bottom_sheets/start_hls_bottom_sheet.dart +++ /dev/null @@ -1,220 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:provider/provider.dart'; - -class StartHLSBottomSheet extends StatefulWidget { - final Key? key; - StartHLSBottomSheet({this.key}) : super(key: key); - - @override - State createState() => _StartHLSBottomSheetState(); -} - -class _StartHLSBottomSheetState extends State { - bool _isRecordingOn = false; - @override - Widget build(BuildContext context) { - return FractionallySizedBox( - heightFactor: 0.75, - child: Container( - child: Padding( - padding: const EdgeInsets.only(top: 20.0, left: 20, right: 10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - CircleAvatar( - radius: 18, - backgroundColor: borderColor, - child: IconButton( - icon: Icon( - Icons.arrow_back_ios_new, - size: 16, - color: hmsWhiteColor, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ), - SizedBox( - width: 16, - ), - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TitleText( - text: "START STREAMING", - textColor: themeSubHeadingColor, - fontSize: 10, - lineHeight: 16, - ), - TitleText( - text: "HLS", - textColor: themeDefaultColor, - fontSize: 20, - letterSpacing: 0.15, - lineHeight: 24, - ) - ], - ) - ], - ), - Padding( - padding: EdgeInsets.symmetric(vertical: 20), - child: Divider( - height: 5, - color: dividerColor, - ), - ), - SvgPicture.asset( - "assets/icons/live.svg", - color: themeDefaultColor, - width: 33, - ), - SizedBox( - height: 20, - ), - TitleText( - text: "HLS Streaming", - textColor: themeDefaultColor, - fontSize: 20, - letterSpacing: 0.15, - lineHeight: 24, - ), - SizedBox( - height: 8, - ), - Text( - "Stream directly from the browser using any device with multiple hosts and real-time messaging, all within this platform.", - maxLines: 2, - style: GoogleFonts.inter( - color: themeSubHeadingColor, - fontSize: 14, - height: 20 / 14, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - SizedBox( - height: 20, - ), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: themeSurfaceColor), - height: 56, - child: Padding( - padding: EdgeInsets.symmetric(vertical: 7, horizontal: 10), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - SvgPicture.asset( - "assets/icons/record.svg", - color: themeDefaultColor, - ), - SizedBox( - width: 10, - ), - TitleText( - text: "Record the stream", - textColor: themeDefaultColor, - fontSize: 14, - letterSpacing: 0.25, - lineHeight: 20, - ) - ], - ), - Row( - children: [ - Transform.scale( - scale: 0.6, - transformHitTests: false, - child: CupertinoSwitch( - activeColor: hmsdefaultColor, - value: _isRecordingOn, - onChanged: (bool newValue) { - setState(() { - _isRecordingOn = newValue; - }); - })) - ], - ), - ], - ), - ), - ), - SizedBox( - height: 20, - ), - HMSButton( - width: MediaQuery.of(context).size.width - 30, - onPressed: () => { - context - .read() - .startHLSStreaming(_isRecordingOn, false), - Navigator.pop(context) - }, - childWidget: Padding( - padding: const EdgeInsets.symmetric(vertical: 16.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SvgPicture.asset( - "assets/icons/live.svg", - color: themeDefaultColor, - width: 24, - ), - SizedBox( - width: 11, - ), - TitleText(text: "Go Live", textColor: themeDefaultColor) - ], - ), - )), - SizedBox( - height: 20, - ), - Container( - width: MediaQuery.of(context).size.width - 30, - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SvgPicture.asset( - "assets/icons/info.svg", - color: themeSubHeadingColor, - width: 15, - ), - SizedBox( - width: 18.5, - ), - SizedBox( - width: MediaQuery.of(context).size.width - 65, - child: Text( - "If recording has to be enabled later, streaming has to be stopped first.", - style: GoogleFonts.inter( - fontSize: 12, - color: themeSubHeadingColor, - letterSpacing: 0.4, - fontWeight: FontWeight.w400), - ), - ) - ], - ), - ) - ], - ), - ), - ), - ); - } -} diff --git a/example/lib/common/peer_widgets/audio_level_avatar.dart b/example/lib/common/peer_widgets/audio_level_avatar.dart deleted file mode 100644 index 1c5f26335..000000000 --- a/example/lib/common/peer_widgets/audio_level_avatar.dart +++ /dev/null @@ -1,55 +0,0 @@ -import 'package:avatar_glow/avatar_glow.dart'; -import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:provider/provider.dart'; - -class AudioLevelAvatar extends StatefulWidget { - const AudioLevelAvatar({Key? key}) : super(key: key); - - @override - State createState() => _AudioLevelAvatarState(); -} - -class _AudioLevelAvatarState extends State { - @override - Widget build(BuildContext context) { - return Center( - child: Selector( - selector: (_, peerTrackNode) => peerTrackNode.audioLevel, - builder: (_, audioLevel, __) { - return audioLevel == -1 - ? CircleAvatar( - backgroundColor: Utilities.getBackgroundColour( - context.read().peer.name), - radius: 36, - child: Text( - Utilities.getAvatarTitle( - context.read().peer.name), - style: - GoogleFonts.inter(fontSize: 36, color: Colors.white), - )) - : AvatarGlow( - repeat: true, - showTwoGlows: true, - duration: Duration(seconds: 1), - endRadius: - (audioLevel != -1) ? 36 + (audioLevel).toDouble() : 36, - glowColor: Utilities.getBackgroundColour( - context.read().peer.name), - child: CircleAvatar( - backgroundColor: Utilities.getBackgroundColour( - context.read().peer.name), - radius: 36, - child: Text( - Utilities.getAvatarTitle( - context.read().peer.name), - style: GoogleFonts.inter( - fontSize: 36, color: Colors.white), - )), - ); - }), - ); - } -} diff --git a/example/lib/common/peer_widgets/audio_mute_status.dart b/example/lib/common/peer_widgets/audio_mute_status.dart deleted file mode 100644 index 33d1cc666..000000000 --- a/example/lib/common/peer_widgets/audio_mute_status.dart +++ /dev/null @@ -1,39 +0,0 @@ -//Package imports -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:provider/provider.dart'; -import 'package:flutter/material.dart'; - -//Project imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; - -class AudioMuteStatus extends StatefulWidget { - @override - State createState() => _AudioMuteStatusState(); -} - -class _AudioMuteStatusState extends State { - @override - Widget build(BuildContext context) { - return Selector( - selector: (_, peerTrackNode) => - peerTrackNode.audioTrack?.isMute ?? true, - builder: (_, data, __) { - return Positioned( - top: 5, - right: 5, - child: Semantics( - label: "fl_${context.read().peer.name}_audio_mute", - child: Padding( - padding: const EdgeInsets.fromLTRB(0, 5, 5, 0), - child: data - ? SvgPicture.asset( - 'assets/icons/tile_mute.svg', - width: 30, - semanticsLabel: "audio_mute_label", - ) - : Container()), - ), - ); - }); - } -} diff --git a/example/lib/common/peer_widgets/brb_tag.dart b/example/lib/common/peer_widgets/brb_tag.dart deleted file mode 100644 index 8a9e3eaa6..000000000 --- a/example/lib/common/peer_widgets/brb_tag.dart +++ /dev/null @@ -1,36 +0,0 @@ -//Package imports -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:provider/provider.dart'; - -//Project imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; - -class BRBTag extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Selector( - builder: (_, metadata, __) { - return metadata?.contains("\"isBRBOn\":true") ?? false - ? Positioned( - child: Semantics( - label: - "fl_${context.read().peer.name}_brb_tag", - child: Padding( - padding: const EdgeInsets.fromLTRB(5, 0, 5, 0), - child: SvgPicture.asset( - "assets/icons/brb.svg", - color: Colors.white, - width: 26, - semanticsLabel: "brb_label", - ), - ), - ), - top: 5.0, - left: 5, - ) - : Container(); - }, - selector: (_, peerTrackNode) => peerTrackNode.peer.metadata); - } -} diff --git a/example/lib/common/peer_widgets/hand_raise.dart b/example/lib/common/peer_widgets/hand_raise.dart deleted file mode 100644 index d48193fb0..000000000 --- a/example/lib/common/peer_widgets/hand_raise.dart +++ /dev/null @@ -1,36 +0,0 @@ -//Package imports -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:provider/provider.dart'; - -//Project imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; - -class HandRaise extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Selector( - builder: (_, metadata, __) { - return metadata?.contains("\"isHandRaised\":true") ?? false - ? Positioned( - child: Semantics( - label: - "fl_${context.read().peer.name}_hand_raise", - child: Padding( - padding: const EdgeInsets.fromLTRB(5, 0, 5, 0), - child: SvgPicture.asset( - "assets/icons/hand.svg", - color: Color.fromRGBO(250, 201, 25, 1), - height: 30, - semanticsLabel: "hand_raise_label", - ), - ), - ), - top: 5, - left: 5, - ) - : Container(); - }, - selector: (_, peerTrackNode) => peerTrackNode.peer.metadata); - } -} diff --git a/example/lib/common/peer_widgets/more_option.dart b/example/lib/common/peer_widgets/more_option.dart deleted file mode 100644 index 8a60f2a25..000000000 --- a/example/lib/common/peer_widgets/more_option.dart +++ /dev/null @@ -1,578 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/change_role_option_dialog.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/change_simulcast_layer_option_dialog.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/local_peer_tile_dialog.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/remote_peer_tile_dialog.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/session_store_key.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:image_gallery_saver/image_gallery_saver.dart'; -import 'package:provider/provider.dart'; -import 'package:share_plus/share_plus.dart'; - -class MoreOption extends StatelessWidget { - const MoreOption({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - MeetingStore _meetingStore = context.read(); - - bool mutePermission = - _meetingStore.localPeer?.role.permissions.mute ?? false; - bool unMutePermission = - _meetingStore.localPeer?.role.permissions.unMute ?? false; - bool removePeerPermission = - _meetingStore.localPeer?.role.permissions.removeOthers ?? false; - bool changeRolePermission = - _meetingStore.localPeer?.role.permissions.changeRole ?? false; - - return Positioned( - bottom: 5, - right: 1, - child: GestureDetector( - onTap: () { - var peerTrackNode = context.read(); - if (peerTrackNode.peer.peerId != _meetingStore.localPeer!.peerId) - showDialog( - context: context, - builder: (_) => RemotePeerTileDialog( - isAudioMuted: peerTrackNode.audioTrack?.isMute ?? true, - isVideoMuted: peerTrackNode.track == null - ? true - : peerTrackNode.track!.isMute, - peerName: peerTrackNode.peer.name, - changeVideoTrack: (mute, isVideoTrack) { - Navigator.pop(context); - _meetingStore.changeTrackState( - peerTrackNode.track!, mute); - }, - changeAudioTrack: (mute, isAudioTrack) { - Navigator.pop(context); - _meetingStore.changeTrackState( - peerTrackNode.audioTrack!, mute); - }, - isSpotlightedPeer: - context.read().spotLightPeer?.uid == - peerTrackNode.uid, - setOnSpotlight: () { - if (context.read().spotLightPeer?.uid == - peerTrackNode.uid) { - _meetingStore.setSessionMetadataForKey( - key: SessionStoreKeyValues.getNameFromMethod( - SessionStoreKey.SPOTLIGHT), - metadata: null); - return; - } - - ///Setting the metadata as audio trackId if it's not present - ///then setting it as video trackId - String? metadata = (peerTrackNode.audioTrack == null) - ? peerTrackNode.track?.trackId - : peerTrackNode.audioTrack?.trackId; - _meetingStore.setSessionMetadataForKey( - key: SessionStoreKeyValues.getNameFromMethod( - SessionStoreKey.SPOTLIGHT), - metadata: metadata); - }, - removePeer: () async { - Navigator.pop(context); - var peer = await _meetingStore.getPeer( - peerId: peerTrackNode.peer.peerId); - _meetingStore.removePeerFromRoom(peer!); - }, - changeRole: () { - Navigator.pop(context); - showDialog( - context: context, - builder: (_) => ChangeRoleOptionDialog( - peerName: peerTrackNode.peer.name, - roles: _meetingStore.roles, - peer: peerTrackNode.peer, - changeRole: (role, forceChange) { - _meetingStore.changeRoleOfPeer( - peer: peerTrackNode.peer, - roleName: role, - forceChange: forceChange); - }, - )); - }, - changeLayer: () async { - Navigator.pop(context); - HMSRemoteVideoTrack track = - peerTrackNode.track as HMSRemoteVideoTrack; - List layerDefinitions = - await track.getLayerDefinition(); - HMSSimulcastLayer selectedLayer = - await track.getLayer(); - if (layerDefinitions.isNotEmpty) { - showDialog( - context: context, - builder: (_) => ChangeSimulcastLayerOptionDialog( - layerDefinitions: layerDefinitions, - selectedLayer: selectedLayer, - track: track)); - } else { - Utilities.showToast( - "Simulcast not enabled for the role"); - } - }, - captureSnapshot: () async { - Uint8List? bytes = await context - .read() - .track - ?.captureSnapshot(); - if (bytes != null) { - Navigator.pop(context); - showDialog( - context: context, - builder: (_) { - return AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only( - left: 20, right: 20, bottom: 10), - backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric( - horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only( - top: 20, bottom: 15, left: 24, right: 24), - title: Text( - context.read().peer.name + - "'s Snapshot"), - content: Image.memory(bytes), - actions: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, - children: [ - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all( - themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all( - themeBottomSheetColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>( - RoundedRectangleBorder( - side: BorderSide( - width: 1, - color: Color.fromRGBO( - 107, 125, 153, 1)), - borderRadius: - BorderRadius.circular( - 8.0), - ))), - onPressed: () => - Navigator.pop(context), - child: Padding( - padding: - const EdgeInsets.symmetric( - vertical: 12, - horizontal: 10), - child: Text('Cancel', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: - FontWeight.w600, - letterSpacing: 0.50)), - )), - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all( - themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all( - hmsdefaultColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>( - RoundedRectangleBorder( - side: BorderSide( - width: 1, - color: hmsdefaultColor), - borderRadius: - BorderRadius.circular(8.0), - ))), - onPressed: () async { - Map result = await ImageGallerySaver - .saveImage(bytes, - quality: 100, - name: peerTrackNode - .peer.name + - DateTime.now() - .toIso8601String()); - if (result - .containsKey("isSuccess") && - result["isSuccess"]) { - Utilities.showToast( - "Snapshot save to Gallery"); - } - Navigator.pop(context); - }, - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 12, horizontal: 10), - child: Text( - 'Save', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: 0.50), - ), - ), - ), - ], - ) - ], - ); - }); - } - }, - isCaptureSnapshot: !(peerTrackNode.track?.isMute ?? true), - mute: mutePermission, - unMute: unMutePermission, - removeOthers: removePeerPermission, - roles: changeRolePermission, - simulcast: (peerTrackNode.track != null && - !(peerTrackNode.track as HMSRemoteVideoTrack).isMute), - pinTile: peerTrackNode.pinTile, - changePinTileStatus: () { - _meetingStore.changePinTileStatus(peerTrackNode); - Navigator.pop(context); - }, - )); - else - showDialog( - context: context, - builder: (_) => LocalPeerTileDialog( - isVideoOn: - !(context.read().track?.isMute ?? - true), - isAudioMode: false, - toggleCamera: () { - if (_meetingStore.isVideoOn) - _meetingStore.switchCamera(); - }, - peerName: peerTrackNode.peer.name, - toggleFlash: () { - context.read().toggleFlash(); - }, - isSpotlightedPeer: - context.read().spotLightPeer?.uid == - peerTrackNode.uid, - setOnSpotlight: () { - if (context.read().spotLightPeer?.uid == - peerTrackNode.uid) { - _meetingStore.setSessionMetadataForKey( - key: SessionStoreKeyValues.getNameFromMethod( - SessionStoreKey.SPOTLIGHT), - metadata: null); - return; - } - - ///Setting the metadata as audio trackId if it's not present - ///then setting it as video trackId - String? metadata = (peerTrackNode.audioTrack == null) - ? peerTrackNode.track?.trackId - : peerTrackNode.audioTrack?.trackId; - _meetingStore.setSessionMetadataForKey( - key: SessionStoreKeyValues.getNameFromMethod( - SessionStoreKey.SPOTLIGHT), - metadata: metadata); - }, - changeRole: () { - Navigator.pop(context); - showDialog( - context: context, - builder: (_) => ChangeRoleOptionDialog( - peerName: peerTrackNode.peer.name, - roles: _meetingStore.roles, - peer: peerTrackNode.peer, - changeRole: (role, forceChange) { - _meetingStore.changeRoleOfPeer( - peer: peerTrackNode.peer, - roleName: role, - forceChange: forceChange); - }, - )); - }, - roles: changeRolePermission, - changeName: () async { - FocusManager.instance.primaryFocus?.unfocus(); - String name = - await UtilityComponents.showNameChangeDialog( - context: context, - placeholder: "Enter Name", - prefilledValue: context - .read() - .localPeer - ?.name ?? - ""); - if (name.isNotEmpty) { - _meetingStore.changeName(name: name); - } - }, - localImageCapture: () async { - Navigator.pop(context); - HMSLocalVideoTrack? track = (context - .read() - .track as HMSLocalVideoTrack?); - if (track != null) { - if (track.isMute) { - Utilities.showToast( - "Please unmute the video to capture the image"); - return; - } - //Here we are sending [withFlash] as true - //So flash will turn ON while capturing - //image - dynamic res = await HMSCameraControls - .captureImageAtMaxSupportedResolution( - withFlash: true); - if (res is HMSException) { - Utilities.showToast( - "Error Occured: code: ${res.code?.errorCode}, description: ${res.description}, message: ${res.message}", - time: 5); - return; - } - File imageFile = File(res); - showDialog( - context: context, - builder: (_) { - return AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only( - left: 20, right: 20, bottom: 10), - backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric( - horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only( - top: 20, bottom: 15, left: 24, right: 24), - title: Text( - context.read().peer.name + - "'s Snapshot"), - content: Image.file(imageFile), - actions: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, - children: [ - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all( - themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all( - themeBottomSheetColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>( - RoundedRectangleBorder( - side: BorderSide( - width: 1, - color: Color.fromRGBO( - 107, 125, 153, 1)), - borderRadius: - BorderRadius.circular( - 8.0), - ))), - onPressed: () => - Navigator.pop(context), - child: Padding( - padding: - const EdgeInsets.symmetric( - vertical: 12, - horizontal: 10), - child: Text('Cancel', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: - FontWeight.w600, - letterSpacing: 0.50)), - )), - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all( - themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all( - hmsdefaultColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>( - RoundedRectangleBorder( - side: BorderSide( - width: 1, - color: hmsdefaultColor), - borderRadius: - BorderRadius.circular(8.0), - ))), - onPressed: () async { - Share.shareXFiles([XFile(res)], - text: "HMS Image"); - Navigator.pop(context); - }, - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 12, horizontal: 10), - child: Text( - 'Share', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: 0.50), - ), - ), - ), - ], - ) - ], - ); - }); - } - }, - isCaptureSnapshot: !(peerTrackNode.track?.isMute ?? true), - captureSnapshot: () async { - Uint8List? bytes = await context - .read() - .track - ?.captureSnapshot(); - if (bytes != null) { - Navigator.pop(context); - showDialog( - context: context, - builder: (_) { - return AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only( - left: 20, right: 20, bottom: 10), - backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric( - horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only( - top: 20, bottom: 15, left: 24, right: 24), - title: Text( - context.read().peer.name + - "'s Snapshot"), - content: Image.memory(bytes), - actions: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, - children: [ - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all( - themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all( - themeBottomSheetColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>( - RoundedRectangleBorder( - side: BorderSide( - width: 1, - color: Color.fromRGBO( - 107, 125, 153, 1)), - borderRadius: - BorderRadius.circular( - 8.0), - ))), - onPressed: () => - Navigator.pop(context), - child: Padding( - padding: - const EdgeInsets.symmetric( - vertical: 12, - horizontal: 10), - child: Text('Cancel', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: - FontWeight.w600, - letterSpacing: 0.50)), - )), - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all( - themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all( - hmsdefaultColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>( - RoundedRectangleBorder( - side: BorderSide( - width: 1, - color: hmsdefaultColor), - borderRadius: - BorderRadius.circular(8.0), - ))), - onPressed: () async { - Map result = await ImageGallerySaver - .saveImage(bytes, - quality: 100, - name: peerTrackNode - .peer.name + - DateTime.now() - .toIso8601String()); - if (result - .containsKey("isSuccess") && - result["isSuccess"]) { - Utilities.showToast( - "Snapshot save to Gallery"); - } - Navigator.pop(context); - }, - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 12, horizontal: 10), - child: Text( - 'Save', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: 0.50), - ), - ), - ), - ], - ) - ], - ); - }); - } - }, - )); - }, - child: Semantics( - label: "fl_${context.read().peer.name}more_option", - child: Padding( - padding: const EdgeInsets.fromLTRB(5, 0, 5, 0), - child: Icon(Icons.more_horiz), - ), - ), - ), - ); - } -} diff --git a/example/lib/common/peer_widgets/network_icon_widget.dart b/example/lib/common/peer_widgets/network_icon_widget.dart deleted file mode 100644 index 7b64f76b9..000000000 --- a/example/lib/common/peer_widgets/network_icon_widget.dart +++ /dev/null @@ -1,28 +0,0 @@ -//Package imports -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:provider/provider.dart'; - -//Project imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; - -class NetworkIconWidget extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Selector( - builder: (_, networkQuality, __) { - return (networkQuality != null && networkQuality != -1) - ? Row( - children: [ - SvgPicture.asset( - 'assets/icons/network_$networkQuality.svg', - height: 20, - semanticsLabel: "fl_network_icon_label", - ), - ], - ) - : Container(); - }, - selector: (_, peerTrackNode) => peerTrackNode.networkQuality); - } -} diff --git a/example/lib/common/peer_widgets/tile_border.dart b/example/lib/common/peer_widgets/tile_border.dart deleted file mode 100644 index 02090b7ae..000000000 --- a/example/lib/common/peer_widgets/tile_border.dart +++ /dev/null @@ -1,40 +0,0 @@ -//Package imports -import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:provider/provider.dart'; - -//Project imports - -class TileBorder extends StatelessWidget { - final double itemHeight; - final double itemWidth; - final String uid; - final String name; - - TileBorder( - {required this.itemHeight, - required this.itemWidth, - required this.uid, - required this.name}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (_, peerTrackNode) => peerTrackNode.audioLevel, - builder: (_, audioLevel, __) { - return Container( - height: itemHeight + 110, - width: itemWidth - 4, - decoration: BoxDecoration( - border: Border.all( - color: (audioLevel != -1) - ? hmsdefaultColor - : themeBottomSheetColor, - width: (audioLevel != -1) ? 4.0 : 0.0), - borderRadius: BorderRadius.all(Radius.circular(10)), - ), - ); - }); - } -} diff --git a/example/lib/common/util/app_color.dart b/example/lib/common/util/app_color.dart deleted file mode 100644 index bfc72da08..000000000 --- a/example/lib/common/util/app_color.dart +++ /dev/null @@ -1,61 +0,0 @@ -import 'package:flutter/material.dart'; - -Color iconColor = - // WidgetsBinding.instance?.window.platformBrightness == Brightness.dark - // ? - Colors.white; -// : Colors.black; - -void updateColor(ThemeMode mode) { - iconColor = mode == ThemeMode.dark ? Colors.white : Colors.black; - - themeDefaultColor = mode == ThemeMode.dark - ? Color.fromRGBO(245, 249, 255, 0.95) - : Color.fromRGBO(29, 34, 41, 1); - themeBottomSheetColor = mode == ThemeMode.dark - ? Color.fromRGBO(20, 23, 28, 1) - : Color.fromRGBO(245, 249, 255, 0.95); - themeSurfaceColor = mode == ThemeMode.dark - ? Color.fromRGBO(29, 34, 41, 1) - : Color.fromRGBO(245, 249, 255, 0.95); - themeSubHeadingColor = - mode == ThemeMode.dark ? Color.fromRGBO(224, 236, 255, 0.8) : borderColor; - - themeScreenBackgroundColor = - mode == ThemeMode.dark ? Color.fromRGBO(11, 13, 15, 1) : hmsWhiteColor; - - themeHintColor = mode == ThemeMode.dark - ? Color.fromRGBO(195, 208, 229, 0.5) - : hmsWhiteColor; - - themeHMSBorderColor = - mode == ThemeMode.dark ? Color.fromRGBO(45, 52, 64, 1) : hmsWhiteColor; - - themeTileNameColor = - mode == ThemeMode.dark ? Color.fromRGBO(0, 0, 0, 0.9) : hmsHintColor; - - themeDisabledTextColor = mode == ThemeMode.dark - ? Color.fromRGBO(255, 255, 255, 0.48) - : themeDefaultColor; -} - -Color themeTileNameColor = Color.fromRGBO(0, 0, 0, 0.9); -Color themeHMSBorderColor = Color.fromRGBO(45, 52, 64, 1); -Color hmsHintColor = Color.fromRGBO(195, 208, 229, 0.5); -Color hmsWhiteColor = Color.fromRGBO(245, 249, 255, 0.95); -Color themeDefaultColor = Color.fromRGBO(245, 249, 255, 0.95); -Color themeSubHeadingColor = Color.fromRGBO(224, 236, 255, 0.8); -Color themeHintColor = Color.fromRGBO(195, 208, 229, 0.5); -Color themeSurfaceColor = Color.fromRGBO(29, 34, 41, 1); -Color themeDisabledTextColor = Color.fromRGBO(255, 255, 255, 0.48); -Color enabledTextColor = Color.fromRGBO(255, 255, 255, 0.98); -Color borderColor = Color.fromRGBO(45, 52, 64, 1); -Color dividerColor = Color.fromRGBO(27, 31, 38, 1); -Color defaultAvatarColor = Color.fromRGBO(101, 85, 193, 1); -Color themeScreenBackgroundColor = Color.fromRGBO(11, 13, 15, 1); -Color errorColor = Color.fromRGBO(204, 82, 95, 1); -Color themeBottomSheetColor = Color.fromRGBO(20, 23, 28, 1); -Color hmsdefaultColor = Color.fromRGBO(36, 113, 237, 1); -Color popupButtonBorderColor = Color.fromRGBO(107, 125, 153, 1); -Color dialogcontentColor = Color.fromRGBO(145, 127, 129, 1); -Color moreSettingsButtonColor = Color.fromRGBO(30, 35, 42, 1); diff --git a/example/lib/common/util/log_writer.dart b/example/lib/common/util/log_writer.dart deleted file mode 100644 index d0c2f7d44..000000000 --- a/example/lib/common/util/log_writer.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'dart:io'; - -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:path_provider/path_provider.dart'; - -File? _logFile; -Future get _localPath async { - final directory = Platform.isAndroid - ? await getExternalStorageDirectory() - : await getApplicationSupportDirectory(); - return directory?.path; -} - -Future get getLogFile async { - if (_logFile == null) { - final path = await _localPath; - if (path == null) { - return null; - } - _logFile = File('$path/hms_log.txt'); - } - return _logFile; -} - -Future deleteFile() async { - if (await _logFile?.exists() ?? false) { - _logFile?.delete(); - } -} - -Future writeLogs(HMSLogList? logsList) async { - final file = await getLogFile; - // Write the file - if (file != null) { - logsList?.hmsLog.forEach((element) { - file.writeAsString(element + "\n", mode: FileMode.append); - }); - } -} diff --git a/example/lib/common/widgets/audio_tile.dart b/example/lib/common/widgets/audio_tile.dart deleted file mode 100644 index ecd8068ed..000000000 --- a/example/lib/common/widgets/audio_tile.dart +++ /dev/null @@ -1,80 +0,0 @@ -// Package imports -import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/audio_level_avatar.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/audio_mute_status.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/brb_tag.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/hand_raise.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/more_option.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/network_icon_widget.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/rtc_stats_view.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/tile_border.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:provider/provider.dart'; - -// Project imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; - -import '../peer_widgets/peer_name.dart'; - -class AudioTile extends StatelessWidget { - final double itemHeight; - final double itemWidth; - AudioTile({this.itemHeight = 200.0, this.itemWidth = 200.0, Key? key}) - : super(key: key); - - @override - Widget build(BuildContext context) { - return Container( - key: key, - padding: EdgeInsets.all(2), - margin: EdgeInsets.all(2), - height: itemHeight + 110, - width: itemWidth - 5.0, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: themeBottomSheetColor, - ), - child: Semantics( - label: "${context.read().peer.name}_audio", - child: Stack( - children: [ - Center(child: AudioLevelAvatar()), - Positioned( - //Bottom left - bottom: 5, - left: 5, - child: Container( - decoration: BoxDecoration( - color: Color.fromRGBO(0, 0, 0, 0.9), - borderRadius: BorderRadius.circular(8)), - child: Center( - child: Padding( - padding: const EdgeInsets.all(4), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - NetworkIconWidget(), - PeerName(), - ], - ), - ), - ), - ), - ), - HandRaise(), //bottom left - BRBTag(), //top right - AudioMuteStatus(), - TileBorder( - name: context.read().peer.name, - itemHeight: itemHeight, - itemWidth: itemWidth, - uid: context.read().uid), - RTCStatsView(isLocal: context.read().peer.isLocal), - MoreOption(), //bottom center - ], - ), - ), - ); - } -} diff --git a/example/lib/common/widgets/degrade_tile.dart b/example/lib/common/widgets/degrade_tile.dart deleted file mode 100644 index 1bda9333e..000000000 --- a/example/lib/common/widgets/degrade_tile.dart +++ /dev/null @@ -1,71 +0,0 @@ -//package imports -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/audio_level_avatar.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:provider/provider.dart'; - -//Package imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; - -class DegradeTile extends StatefulWidget { - final double itemHeight; - final double itemWidth; - final bool isOneToOne; - DegradeTile( - {Key? key, - this.itemHeight = 200, - this.itemWidth = 200, - this.isOneToOne = false}) - : super(key: key); - - @override - State createState() => _DegradeTileState(); -} - -class _DegradeTileState extends State { - @override - Widget build(BuildContext context) { - return Selector( - builder: (_, data, __) { - return Visibility( - visible: data, - child: Container( - height: widget.itemHeight + 110, - width: widget.itemWidth - 4, - decoration: BoxDecoration( - color: themeBottomSheetColor, - borderRadius: BorderRadius.all(Radius.circular(10))), - child: Stack( - children: [ - Padding( - padding: EdgeInsets.only( - bottom: widget.isOneToOne ? 18 : 45.0), - child: Align( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (!widget.isOneToOne) - Padding( - padding: const EdgeInsets.only(right: 5), - child: SvgPicture.asset( - 'assets/icons/degrade.svg', - ), - ), - SubtitleText( - text: "DEGRADED", textColor: Colors.white), - ], - ), - alignment: Alignment.bottomCenter, - ), - ), - AudioLevelAvatar() - ], - ), - )); - }, - selector: (_, peerTrackNode) => - peerTrackNode.track?.isDegraded ?? false); - } -} diff --git a/example/lib/common/widgets/hms_embedded_button.dart b/example/lib/common/widgets/hms_embedded_button.dart deleted file mode 100644 index 12ef39cf9..000000000 --- a/example/lib/common/widgets/hms_embedded_button.dart +++ /dev/null @@ -1,49 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; - -class HMSEmbeddedButton extends StatelessWidget { - final Function() onTap; - final Color offColor; - final Color onColor; - final bool isActive; - final Widget child; - final double? height; - final double? width; - final Color? enabledBorderColor; - final Color? disabledBorderColor; - - HMSEmbeddedButton( - {required this.onTap, - required this.offColor, - required this.onColor, - required this.isActive, - required this.child, - this.height = 48, - this.width = 48, - this.enabledBorderColor, - this.disabledBorderColor}); - @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: onTap, - child: Container( - width: width, - height: height, - decoration: BoxDecoration( - border: isActive - ? Border.all( - color: (enabledBorderColor == null) - ? borderColor - : enabledBorderColor!, - width: 1) - : Border.all( - color: (disabledBorderColor == null) - ? themeDefaultColor - : disabledBorderColor!, - width: 1), - borderRadius: BorderRadius.all(Radius.circular(12)), - color: isActive ? onColor : offColor), - child: child), - ); - } -} diff --git a/example/lib/common/widgets/hms_listenable_button.dart b/example/lib/common/widgets/hms_listenable_button.dart deleted file mode 100644 index 1030963bf..000000000 --- a/example/lib/common/widgets/hms_listenable_button.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; - -class HMSListenableButton extends StatelessWidget { - final double width; - final Color? shadowColor; - final Function() onPressed; - final Widget childWidget; - final TextEditingController textController; - final String errorMessage; - - HMSListenableButton( - {required this.width, - this.shadowColor, - required this.onPressed, - required this.childWidget, - required this.textController, - required this.errorMessage}); - - @override - Widget build(BuildContext context) { - return SizedBox( - width: width, - child: ValueListenableBuilder( - valueListenable: textController, - builder: (context, value, child) { - return ElevatedButton( - style: ButtonStyle( - shadowColor: MaterialStateProperty.all( - shadowColor == null ? themeSurfaceColor : shadowColor), - backgroundColor: textController.text.isEmpty - ? MaterialStateProperty.all(themeSurfaceColor) - : MaterialStateProperty.all(hmsdefaultColor), - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8.0), - ))), - onPressed: onPressed, - child: childWidget); - }), - ); - } -} diff --git a/example/lib/common/widgets/message_container.dart b/example/lib/common/widgets/message_container.dart deleted file mode 100644 index 7875d4e64..000000000 --- a/example/lib/common/widgets/message_container.dart +++ /dev/null @@ -1,209 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_linkify/flutter_linkify.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/enum/session_store_key.dart'; -import 'package:provider/provider.dart'; -import 'package:url_launcher/url_launcher.dart'; -import '../../meeting/meeting_store.dart'; - -class MessageContainer extends StatelessWidget { - final String message; - final bool isLocalMessage; - final String? senderName; - final String date; - final String role; - const MessageContainer({ - Key? key, - required this.isLocalMessage, - required this.message, - required this.senderName, - required this.date, - required this.role, - }) : super(key: key); - - @override - Widget build(BuildContext context) { - double width = MediaQuery.of(context).size.width; - return Align( - alignment: isLocalMessage ? Alignment.centerRight : Alignment.centerLeft, - child: Container( - width: width - (role == "" ? 80 : 60), - padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), color: themeSurfaceColor), - child: Stack( - children: [ - Padding( - padding: EdgeInsets.only(right: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Container( - constraints: BoxConstraints( - maxWidth: - role != "" ? width * 0.25 : width * 0.5), - child: TitleText( - text: senderName ?? "Anonymous", - fontSize: 14, - letterSpacing: 0.1, - lineHeight: 20, - textColor: themeDefaultColor, - ), - ), - SizedBox( - width: 5, - ), - SubtitleText( - text: date, textColor: themeSubHeadingColor), - ], - ), - (role != "" || isLocalMessage) - ? Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - SizedBox( - width: 5, - ), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(4), - border: role != "" - ? Border.all( - color: borderColor, width: 1) - : Border.symmetric()), - child: Padding( - padding: const EdgeInsets.all(4.0), - child: Row( - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - if (role != "PRIVATE") - Text( - (isLocalMessage ? "" : "TO"), - style: GoogleFonts.inter( - fontSize: 10.0, - color: themeSubHeadingColor, - letterSpacing: 1.5, - fontWeight: FontWeight.w600), - ), - (isLocalMessage || (role == "PRIVATE")) - ? SizedBox() - : Padding( - padding: - const EdgeInsets.symmetric( - horizontal: 2), - child: Text( - "|", - style: GoogleFonts.inter( - fontSize: 10.0, - color: borderColor, - letterSpacing: 1.5, - fontWeight: - FontWeight.w600), - )), - role != "" - ? Row( - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Container( - constraints: BoxConstraints( - maxWidth: isLocalMessage - ? width * 0.25 - : width * 0.15), - child: Text( - "${role.toUpperCase()} ", - overflow: - TextOverflow.ellipsis, - style: GoogleFonts.inter( - fontSize: 10.0, - color: - themeDefaultColor, - letterSpacing: 1.5, - fontWeight: - FontWeight.w400), - ), - ), - ], - ) - : SizedBox(), - ], - ), - ), - ), - ], - ) - : SizedBox() - ], - ), - SizedBox( - height: 8, - ), - SelectableLinkify( - text: message, - onOpen: (link) async { - Uri url = Uri.parse(link.url); - if (await canLaunchUrl(url)) { - await launchUrl(url, - mode: LaunchMode.externalApplication); - } - }, - options: LinkifyOptions(humanize: false), - style: GoogleFonts.inter( - fontSize: 14.0, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w400), - linkStyle: GoogleFonts.inter( - fontSize: 14.0, - color: hmsdefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w400), - ), - ], - ), - ), - if (role == "") - Positioned( - top: 0, - right: 0, - bottom: 0, - child: PopupMenuButton( - color: themeSurfaceColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10)), - itemBuilder: (context) { - return List.generate(1, (index) { - return PopupMenuItem( - child: Text('Pin Message'), - onTap: () => context - .read() - .setSessionMetadataForKey( - key: SessionStoreKeyValues.getNameFromMethod( - SessionStoreKey.PINNED_MESSAGE_SESSION_KEY), - metadata: senderName! + ": " + message), - ); - }); - }, - child: SvgPicture.asset( - "assets/icons/more.svg", - fit: BoxFit.scaleDown, - ), - ), - ) - ], - ), - ), - ); - } -} diff --git a/example/lib/common/widgets/peer_tile.dart b/example/lib/common/widgets/peer_tile.dart deleted file mode 100644 index 35fa6e39b..000000000 --- a/example/lib/common/widgets/peer_tile.dart +++ /dev/null @@ -1,189 +0,0 @@ -// Package imports -import 'package:flutter/material.dart'; -import 'package:focus_detector/focus_detector.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/degrade_tile.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/more_option.dart'; -import 'package:hmssdk_flutter_example/common/widgets/video_view.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/audio_mute_status.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/brb_tag.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/hand_raise.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/network_icon_widget.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/rtc_stats_view.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/peer_name.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/tile_border.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:provider/provider.dart'; - -// Project imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; - -class PeerTile extends StatefulWidget { - final double itemHeight; - final double itemWidth; - final ScaleType scaleType; - final bool islongPressEnabled; - final bool isOneToOne; - PeerTile( - {Key? key, - this.itemHeight = 200.0, - this.itemWidth = 200.0, - this.scaleType = ScaleType.SCALE_ASPECT_FILL, - this.islongPressEnabled = true, - this.isOneToOne = false}) - : super(key: key); - - @override - State createState() => _PeerTileState(); -} - -class _PeerTileState extends State { - String name = ""; - GlobalKey key = GlobalKey(); - - @override - Widget build(BuildContext context) { - return Semantics( - label: "fl_${context.read().peer.name}_video_tile", - child: FocusDetector( - onFocusLost: () { - if (mounted) { - Provider.of(context, listen: false) - .setOffScreenStatus(true); - } - }, - onFocusGained: () { - Provider.of(context, listen: false) - .setOffScreenStatus(false); - }, - key: Key(context.read().uid), - child: context.read().uid.contains("mainVideo") - ? Container( - key: key, - padding: EdgeInsets.all(2), - margin: EdgeInsets.all(2), - height: widget.itemHeight + 110, - width: widget.itemWidth - 5.0, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: themeBottomSheetColor, - ), - child: Semantics( - label: - "fl_${context.read().peer.name}_video_on", - child: Stack( - children: [ - VideoView( - uid: context.read().uid, - scaleType: widget.scaleType, - itemHeight: widget.itemHeight, - itemWidth: widget.itemWidth, - ), - TileBorder( - itemHeight: widget.itemHeight, - itemWidth: widget.itemWidth, - name: context.read().peer.name, - uid: context.read().uid), - Semantics( - label: - "fl_${context.read().peer.name}_degraded_tile", - child: DegradeTile( - isOneToOne: widget.isOneToOne, - itemHeight: widget.itemHeight, - itemWidth: widget.itemWidth, - ), - ), - if (!widget.isOneToOne) - Positioned( - //Bottom left - bottom: 5, - left: 5, - child: Container( - decoration: BoxDecoration( - color: themeTileNameColor, - borderRadius: BorderRadius.circular(8)), - child: Center( - child: Padding( - padding: const EdgeInsets.only( - left: 8.0, right: 4, top: 4, bottom: 4), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - NetworkIconWidget(), - PeerName(), - ], - ), - ), - ), - ), - ), - HandRaise(), //top left - BRBTag(), //top left - AudioMuteStatus(), //top right - MoreOption(), //bottom right - if (!widget.isOneToOne) - Semantics( - label: "fl_stats_on_tile", - child: RTCStatsView( - isLocal: - context.read().peer.isLocal), - ) - ], - ), - ), - ) - : Semantics( - label: - "fl_${context.read().peer.name}_screen_share_tile", - child: Container( - decoration: BoxDecoration( - border: Border.all(color: Colors.grey, width: 1.0), - color: Colors.transparent, - borderRadius: BorderRadius.all(Radius.circular(10))), - key: key, - padding: EdgeInsets.all(2), - margin: EdgeInsets.all(2), - height: widget.itemHeight + 110, - width: widget.itemWidth - 5.0, - child: Stack( - children: [ - VideoView( - uid: context.read().uid, - scaleType: widget.scaleType, - ), - Positioned( - //Bottom left - bottom: 5, - left: 5, - child: Container( - key: Key( - "fl_${context.read().peer.name}_name"), - decoration: BoxDecoration( - color: themeTileNameColor, - borderRadius: BorderRadius.circular(8)), - child: Center( - child: Padding( - padding: const EdgeInsets.only( - left: 8.0, right: 4, top: 4, bottom: 4), - child: PeerName(), - ), - ), - ), - ), - RTCStatsView(isLocal: false), - Align( - alignment: Alignment.topRight, - child: widget.islongPressEnabled - ? UtilityComponents.rotateScreen(context) - : SizedBox(), - ) - ], - ), - ), - ), - ), - ); - } -} diff --git a/example/lib/common/widgets/stream_timer.dart b/example/lib/common/widgets/stream_timer.dart deleted file mode 100644 index 4e81fe841..000000000 --- a/example/lib/common/widgets/stream_timer.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; - -class HMSStreamTimer extends StatefulWidget { - final DateTime startedAt; - - HMSStreamTimer({required this.startedAt}); - @override - State createState() => _HMSStreamTimerState(); -} - -class _HMSStreamTimerState extends State { - format(Duration d) { - String time = d.toString().split('.').first.padLeft(8, "0"); - if (time.substring(0, 2) == "00") { - time = time.substring(3, time.length); - } - return time; - } - - @override - Widget build(BuildContext context) { - return StreamBuilder( - stream: Stream.periodic(const Duration(seconds: 1)), - builder: (context, snapshot) { - return SubtitleText( - text: format(DateTime.now().difference(widget.startedAt)), - textColor: themeSubHeadingColor); - }, - ); - } -} diff --git a/example/lib/common/widgets/subtitle_text.dart b/example/lib/common/widgets/subtitle_text.dart deleted file mode 100644 index c69a7c6bb..000000000 --- a/example/lib/common/widgets/subtitle_text.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:google_fonts/google_fonts.dart'; - -class SubtitleText extends StatelessWidget { - final String text; - final Color textColor; - final double? letterSpacing; - final double? lineHeight; - final double? fontSize; - final FontWeight? fontWeight; - final TextOverflow? textOverflow; - - const SubtitleText( - {Key? key, - required this.text, - required this.textColor, - this.letterSpacing = 0.4, - this.lineHeight = 16, - this.fontSize = 12, - this.fontWeight = FontWeight.w400, - this.textOverflow = TextOverflow.ellipsis}) - : super(key: key); - - @override - Widget build(BuildContext context) { - return Text(text, - overflow: textOverflow, - style: GoogleFonts.inter( - height: lineHeight! / fontSize!, - fontSize: fontSize, - letterSpacing: letterSpacing, - color: textColor, - fontWeight: fontWeight)); - } -} diff --git a/example/lib/enum/meeting_flow.dart b/example/lib/enum/meeting_flow.dart deleted file mode 100644 index d8781d5b8..000000000 --- a/example/lib/enum/meeting_flow.dart +++ /dev/null @@ -1,28 +0,0 @@ -//enum to set the meeting flow -enum MeetingFlow { meeting, hlsStreaming, none } - -extension MeetingFlowValues on MeetingFlow { - static MeetingFlow getMeetingFlowfromName(String name) { - switch (name) { - case 'meeting': - return MeetingFlow.meeting; - case 'preview': - return MeetingFlow.meeting; - case 'streaming': - return MeetingFlow.hlsStreaming; - default: - return MeetingFlow.none; - } - } - - static String getNameFromMeetingFlow(MeetingFlow flow) { - switch (flow) { - case MeetingFlow.meeting: - return 'meeting'; - case MeetingFlow.hlsStreaming: - return 'streaming'; - case MeetingFlow.none: - return 'none'; - } - } -} diff --git a/example/lib/enum/meeting_mode.dart b/example/lib/enum/meeting_mode.dart deleted file mode 100644 index 0b053b58a..000000000 --- a/example/lib/enum/meeting_mode.dart +++ /dev/null @@ -1,2 +0,0 @@ -//enum to set the meeting flow -enum MeetingMode { Single, Hero, Grid, Audio, ActiveSpeaker, OneToOne } diff --git a/example/lib/hls_viewer/hls_player.dart b/example/lib/hls_viewer/hls_player.dart deleted file mode 100644 index 58ac37543..000000000 --- a/example/lib/hls_viewer/hls_player.dart +++ /dev/null @@ -1,114 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/hls_viewer/hls_stats_view.dart'; -import 'package:provider/provider.dart'; - -//Project imports -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; - -class HLSPlayer extends StatefulWidget { - final double? ratio; - HLSPlayer({Key? key, this.ratio}) : super(key: key); - @override - _HLSPlayerState createState() => _HLSPlayerState(); -} - -class _HLSPlayerState extends State with TickerProviderStateMixin { - late AnimationController animation; - late Animation fadeInFadeOut; - - @override - Widget build(BuildContext context) { - return Scaffold( - key: GlobalKey(), - body: Stack( - children: [ - Center( - child: Selector( - selector: (_, meetingStore) => meetingStore.hlsAspectRatio, - builder: (_, ratio, __) { - return AspectRatio( - aspectRatio: ratio, - child: HMSHLSPlayer( - showPlayerControls: true, - isHLSStatsRequired: - context.read().isHLSStatsEnabled, - ), - ); - })), - Selector( - selector: (_, meetingStore) => meetingStore.isHLSStatsEnabled, - builder: (_, isHLSStatsEnabled, __) { - return isHLSStatsEnabled - ? Align( - alignment: Alignment.topLeft, - child: ChangeNotifierProvider.value( - value: context.read(), - child: HLSStatsView(), - ), - ) - : Container(); - }), - if (!context.read().isPipActive) - Positioned( - bottom: 10, - right: 20, - child: GestureDetector( - onTap: () { - HMSHLSPlayerController.seekToLivePosition(); - }, - child: Container( - padding: EdgeInsets.all(5), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Icon( - Icons.circle, - color: Colors.red, - size: 15, - ), - SizedBox( - width: 5, - ), - Text( - "Go Live", - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold), - ) - ]), - ), - ), - ), - Align( - alignment: Alignment.topRight, - child: GestureDetector( - onTap: () { - var _meetingStore = context.read(); - if (_meetingStore.isLandscapeLocked) { - _meetingStore.setLandscapeLock(false); - if (_meetingStore.isDefaultAspectRatioSelected) { - _meetingStore.setAspectRatio(9 / 16); - } - } else { - _meetingStore.setLandscapeLock(true); - if (_meetingStore.isDefaultAspectRatioSelected) { - _meetingStore.setAspectRatio(16 / 9); - } - } - }, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: SvgPicture.asset( - "assets/icons/rotate.svg", - color: iconColor, - ), - ), - ), - ) - ], - )); - } -} diff --git a/example/lib/hls_viewer/hls_viewer_page.dart b/example/lib/hls_viewer/hls_viewer_page.dart deleted file mode 100644 index f56ce5db4..000000000 --- a/example/lib/hls_viewer/hls_viewer_page.dart +++ /dev/null @@ -1,530 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/audio_device_change_dialog.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_embedded_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/stream_timer.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/chat_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/viewer_settings_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/hls_viewer/hls_player.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; - -class HLSViewerPage extends StatefulWidget { - HLSViewerPage({ - Key? key, - }) : super(key: key); - @override - State createState() => _HLSViewerPageState(); -} - -class _HLSViewerPageState extends State { - String recordingState() { - String _message = ""; - - Map _recordingType = - context.read().recordingType; - - if (_recordingType["hls"] ?? false) { - _message += "HLS "; - } - if (_recordingType["server"] ?? false) { - _message += "Server "; - } - if (_recordingType["browser"] ?? false) { - _message += "Beam "; - } - _message += "Recording"; - return _message; - } - - String streamingState() { - String _message = "Live"; - Map _streamingType = - context.read().streamingType; - if (_streamingType["hls"] ?? false) { - _message += " with HLS"; - } else if (_streamingType["rtmp"] ?? false) { - _message += " with RTMP"; - } - return _message; - } - - @override - Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async { - bool ans = await UtilityComponents.onBackPressed(context) ?? false; - return ans; - }, - child: Selector>( - selector: (_, meetingStore) => - Tuple2(meetingStore.isRoomEnded, meetingStore.hmsException), - builder: (_, data, __) { - if (data.item2 != null && - (data.item2?.code?.errorCode == 1003 || - data.item2?.code?.errorCode == 2000 || - data.item2?.code?.errorCode == 4005)) { - WidgetsBinding.instance.addPostFrameCallback((_) { - UtilityComponents.showErrorDialog( - context: context, - errorMessage: - "Error Code: ${data.item2!.code?.errorCode ?? ""} ${data.item2!.description}", - errorTitle: data.item2!.message ?? "", - actionMessage: "Leave Room", - action: () { - Navigator.of(context).popUntil((route) => route.isFirst); - }); - }); - } - if (data.item1) { - WidgetsBinding.instance.addPostFrameCallback((_) { - Utilities.showToast(context.read().description); - Navigator.of(context).popUntil((route) => route.isFirst); - }); - } - return Selector( - selector: (_, meetingStore) => meetingStore.isPipActive, - builder: (_, isPipActive, __) { - return isPipActive - ? HMSHLSPlayer() - : Scaffold( - resizeToAvoidBottomInset: false, - body: SafeArea( - child: Stack( - children: [ - Selector( - selector: (_, meetingStore) => - meetingStore.hasHlsStarted, - builder: (_, hasHlsStarted, __) { - return (hasHlsStarted) - ? Padding( - padding: const EdgeInsets.only( - top: 50.0), - child: Container( - height: MediaQuery.of(context) - .size - .height, - child: Center( - child: HLSPlayer( - ratio: Utilities - .getHLSPlayerDefaultRatio( - MediaQuery.of( - context) - .size), - ), - )), - ) - : Center( - child: Padding( - padding: - const EdgeInsets.only( - bottom: 8.0), - child: TitleText( - text: - "Waiting for HLS to start...", - textColor: - themeDefaultColor)), - ); - }), - isPipActive - ? Container() - : Column( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only( - left: 15, - right: 15, - top: 5, - bottom: 2), - child: Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Row( - children: [ - HMSEmbeddedButton( - onTap: () async => { - await UtilityComponents - .onBackPressed( - context) - }, - disabledBorderColor: - Color(0xffCC525F), - width: 40, - height: 40, - offColor: - Color(0xffCC525F), - onColor: - Color(0xffCC525F), - isActive: false, - child: SvgPicture.asset( - "assets/icons/leave_hls.svg", - color: Colors.white, - fit: BoxFit.scaleDown, - semanticsLabel: - "leave_button", - ), - ), - SizedBox( - width: 10, - ), - Selector< - MeetingStore, - Tuple4< - bool, - bool, - Map, - Map>>( - selector: (_, meetingStore) => Tuple4( - ((meetingStore.streamingType["rtmp"] ?? - false) || - (meetingStore.streamingType[ - "hls"] ?? - false)), - ((meetingStore.recordingType[ - "browser"] ?? - false) || - (meetingStore.recordingType[ - "server"] ?? - false) || - ((meetingStore - .recordingType[ - "hls"] ?? - false))), - meetingStore - .streamingType, - meetingStore - .recordingType), - builder: - (_, roomState, __) { - if (roomState.item1 || - roomState.item2) - return Column( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - crossAxisAlignment: - CrossAxisAlignment - .start, - children: [ - Row( - children: [ - Padding( - padding: const EdgeInsets - .only( - right: - 5.0), - child: SvgPicture - .asset( - "assets/icons/live_stream.svg", - color: - errorColor, - fit: BoxFit - .scaleDown, - ), - ), - GestureDetector( - onTap: - () { - if (!roomState.item1 && - roomState.item2) - Utilities.showToast( - recordingState()); - }, - child: - Text( - (roomState.item1 && - roomState.item2) - ? "Live & Recording" - : (roomState.item1) - ? streamingState() - : (roomState.item2) - ? "Recording" - : "", - semanticsLabel: - "fl_live_stream_running", - style: GoogleFonts.inter( - fontSize: - 16, - color: - themeDefaultColor, - letterSpacing: - 0.5, - fontWeight: - FontWeight.w600), - ), - ), - ], - ), - roomState.item1 - ? Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - (roomState.item3["hls"] ?? false) - ? Row( - children: [ - SvgPicture.asset( - "assets/icons/clock.svg", - color: themeSubHeadingColor, - fit: BoxFit.scaleDown, - ), - SizedBox( - width: 6, - ), - Selector( - selector: (_, meetingStore) => meetingStore.hmsRoom, - builder: (_, hmsRoom, __) { - if (hmsRoom != null && hmsRoom.hmshlsStreamingState != null && hmsRoom.hmshlsStreamingState!.variants.length != 0 && hmsRoom.hmshlsStreamingState!.variants[0]!.startedAt != null) { - return HMSStreamTimer(startedAt: hmsRoom.hmshlsStreamingState!.variants[0]!.startedAt!); - } - return SubtitleText( - text: "00:00", - textColor: themeSubHeadingColor, - ); - }), - ], - ) - : Container(), - SubtitleText( - text: - " | ", - textColor: - dividerColor, - ), - Row( - children: [ - SvgPicture.asset( - "assets/icons/watching.svg", - color: themeSubHeadingColor, - fit: BoxFit.scaleDown, - ), - SizedBox( - width: 6, - ), - Selector( - selector: (_, meetingStore) => meetingStore.peers.length, - builder: (_, length, __) { - return SubtitleText(text: length.toString(), textColor: themeSubHeadingColor); - }) - ], - ) - ], - ) - : Container() - ], - ); - return SizedBox(); - }) - ], - ), - Row( - children: [ - Selector( - selector: (_, - meetingStore) => - meetingStore - .isNewMessageReceived, - builder: (_, - isNewMessageReceived, - __) { - return HMSEmbeddedButton( - onTap: () => { - context - .read< - MeetingStore>() - .setNewMessageFalse(), - showModalBottomSheet( - isScrollControlled: - true, - backgroundColor: - themeBottomSheetColor, - shape: - RoundedRectangleBorder( - borderRadius: - BorderRadius - .circular( - 20), - ), - context: - context, - builder: (ctx) => ChangeNotifierProvider.value( - value: context - .read< - MeetingStore>(), - child: - ChatBottomSheet()), - ) - }, - width: 40, - height: 40, - offColor: - themeHintColor, - onColor: - themeScreenBackgroundColor, - isActive: true, - child: SvgPicture - .asset( - isNewMessageReceived - ? "assets/icons/message_badge_on.svg" - : "assets/icons/message_badge_off.svg", - fit: BoxFit - .scaleDown, - semanticsLabel: - "chat_button", - ), - ); - }), - SizedBox( - width: 10, - ), - HMSEmbeddedButton( - onTap: () => { - showModalBottomSheet( - isScrollControlled: - true, - backgroundColor: - themeBottomSheetColor, - shape: - RoundedRectangleBorder( - borderRadius: - BorderRadius - .circular( - 20), - ), - context: context, - builder: (ctx) => - ChangeNotifierProvider.value( - value: context - .read< - MeetingStore>(), - child: - ViewerSettingsBottomSheet())) - }, - width: 40, - height: 40, - offColor: themeHintColor, - onColor: - themeScreenBackgroundColor, - isActive: true, - child: SvgPicture.asset( - "assets/icons/more.svg", - color: - themeDefaultColor, - fit: BoxFit.scaleDown, - semanticsLabel: - "more_button", - ), - ), - ], - ) - ], - ), - ), - ], - ), - Selector( - selector: (_, meetingStore) => - meetingStore.currentRoleChangeRequest, - builder: (_, roleChangeRequest, __) { - if (roleChangeRequest != null) { - HMSRoleChangeRequest currentRequest = - roleChangeRequest; - context - .read() - .currentRoleChangeRequest = null; - WidgetsBinding.instance - .addPostFrameCallback((_) { - UtilityComponents - .showRoleChangeDialog( - currentRequest, context); - }); - } - return SizedBox(); - }), - Selector( - selector: (_, meetingStore) => - meetingStore.hmsTrackChangeRequest, - builder: (_, hmsTrackChangeRequest, __) { - if (hmsTrackChangeRequest != null) { - HMSTrackChangeRequest currentRequest = - hmsTrackChangeRequest; - context - .read() - .hmsTrackChangeRequest = null; - WidgetsBinding.instance - .addPostFrameCallback((_) { - UtilityComponents - .showTrackChangeDialog( - context, currentRequest); - }); - } - return SizedBox(); - }), - Selector( - selector: (_, meetingStore) => - meetingStore.showAudioDeviceChangePopup, - builder: - (_, showAudioDeviceChangePopup, __) { - if (showAudioDeviceChangePopup) { - context - .read() - .showAudioDeviceChangePopup = false; - WidgetsBinding.instance - .addPostFrameCallback((_) { - showDialog( - context: context, - builder: (_) => - AudioDeviceChangeDialog( - currentAudioDevice: context - .read() - .currentAudioOutputDevice!, - audioDevicesList: context - .read() - .availableAudioOutputDevices, - changeAudioDevice: - (audioDevice) { - context - .read() - .switchAudioOutput( - audioDevice: - audioDevice); - }, - )); - }); - } - return SizedBox(); - }), - Selector( - selector: (_, meetingStore) => - meetingStore.reconnecting, - builder: (_, reconnecting, __) { - if (reconnecting) { - return UtilityComponents - .showReconnectingDialog(context); - } - return SizedBox(); - }), - ], - ), - ), - ); - }); - }), - ); - } -} diff --git a/example/lib/home_screen/screen_controller.dart b/example/lib/home_screen/screen_controller.dart deleted file mode 100644 index 2330734dd..000000000 --- a/example/lib/home_screen/screen_controller.dart +++ /dev/null @@ -1,81 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/hls_viewer/hls_viewer_page.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_page.dart'; -import 'package:provider/provider.dart'; - -class ScreenController extends StatefulWidget { - final String meetingLink; - final String user; - final int? localPeerNetworkQuality; - final bool isStreamingLink; - final bool isRoomMute; - final bool showStats; - final bool mirrorCamera; - final HMSRole? role; - final HMSConfig? config; - const ScreenController( - {Key? key, - required this.meetingLink, - required this.user, - required this.localPeerNetworkQuality, - this.isStreamingLink = false, - this.isRoomMute = false, - this.showStats = false, - this.mirrorCamera = true, - this.role, - this.config}) - : super(key: key); - - @override - State createState() => _ScreenControllerState(); -} - -class _ScreenControllerState extends State { - @override - void initState() { - super.initState(); - initMeeting(); - setInitValues(); - Utilities.initForegroundTask(); - } - - void initMeeting() async { - HMSException? ans = await context - .read() - .join(widget.user, widget.meetingLink, roomConfig: widget.config); - if (ans != null) { - UtilityComponents.showErrorDialog( - context: context, - errorMessage: "ACTION: ${ans.action} DESCRIPTION: ${ans.description}", - errorTitle: ans.message ?? "Join Error", - actionMessage: "OK", - action: () { - Navigator.of(context).popUntil((route) => route.isFirst); - }); - } - } - - void setInitValues() async { - context.read().setSettings(); - } - - @override - Widget build(BuildContext context) { - return Selector( - builder: (_, data, __) { - if (data?.contains("hls-") ?? false) { - return HLSViewerPage(); - } - return MeetingPage( - isStreamingLink: widget.isStreamingLink, - meetingLink: widget.meetingLink, - isRoomMute: widget.isRoomMute, - ); - }, - selector: (_, meetingStore) => meetingStore.localPeer?.role.name); - } -} diff --git a/example/lib/home_screen/user_detail_screen.dart b/example/lib/home_screen/user_detail_screen.dart deleted file mode 100644 index 25b39cea1..000000000 --- a/example/lib/home_screen/user_detail_screen.dart +++ /dev/null @@ -1,257 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_listenable_button.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_flow.dart'; -import 'package:hmssdk_flutter_example/hms_sdk_interactor.dart'; -import 'package:hmssdk_flutter_example/home_screen/screen_controller.dart'; -import 'package:hmssdk_flutter_example/preview/preview_page.dart'; -import 'package:hmssdk_flutter_example/preview/preview_store.dart'; -import 'package:provider/provider.dart'; - -class UserDetailScreen extends StatefulWidget { - final String meetingLink; - final MeetingFlow meetingFlow; - final bool autofocusField; - UserDetailScreen( - {required this.meetingLink, - required this.meetingFlow, - this.autofocusField = false}); - @override - State createState() => _UserDetailScreenState(); -} - -class _UserDetailScreenState extends State { - TextEditingController nameController = TextEditingController(); - late PreviewStore _previewStore; - late MeetingStore _meetingStore; - late HMSSDKInteractor _hmsSDKInteractor; - - @override - void initState() { - super.initState(); - loadData(); - } - - Future setHMSSDKInteractor( - {required bool joinWithMutedAudio, - required bool joinWithMutedVideo, - required bool isSoftwareDecoderDisabled, - required bool isAudioMixerDisabled, - required HMSAudioMode audioMode}) async { - /// [iOSScreenshareConfig] of [HMSSDKInteractor] are optional values only required for implementing Screen & Audio Share on iOS. They are not required for Android. - /// Remove [appGroup] & [preferredExtension] if your app does not implements Screen or Audio Share on iOS. - /// [joinWithMutedAudio] & [joinWithMutedVideo] are required to set the initial audio/video state i.e what should be camera and mic - /// state while room is joined.By default both audio and video are kept as mute. - - HMSIOSScreenshareConfig iOSScreenshareConfig = HMSIOSScreenshareConfig( - appGroup: "group.flutterhms", - preferredExtension: - "live.100ms.flutter.FlutterBroadcastUploadExtension"); - - _hmsSDKInteractor = HMSSDKInteractor( - iOSScreenshareConfig: iOSScreenshareConfig, - joinWithMutedAudio: joinWithMutedAudio, - joinWithMutedVideo: joinWithMutedVideo, - isSoftwareDecoderDisabled: isSoftwareDecoderDisabled, - isAudioMixerDisabled: isAudioMixerDisabled, - audioMode: audioMode); - //build call should be a blocking call - await _hmsSDKInteractor.build(); - _hmsSDKInteractor.toggleAlwaysScreenOn(); - } - - void loadData() async { - nameController.text = await Utilities.getStringData(key: "name"); - nameController.selection = TextSelection.fromPosition( - TextPosition(offset: nameController.text.length)); - setState(() {}); - } - - void showPreview(bool res) async { - if (nameController.text.isEmpty) { - Utilities.showToast("Please enter you name"); - } else { - Utilities.saveStringData(key: "name", value: nameController.text.trim()); - res = await Utilities.getPermissions(); - bool skipPreview = - await Utilities.getBoolData(key: 'skip-preview') ?? false; - bool joinWithMutedAudio = - await Utilities.getBoolData(key: 'join-with-muted-audio') ?? true; - bool joinWithMutedVideo = - await Utilities.getBoolData(key: 'join-with-muted-video') ?? true; - bool isSoftwareDecoderDisabled = - await Utilities.getBoolData(key: 'software-decoder-disabled') ?? true; - bool isAudioMixerDisabled = - await Utilities.getBoolData(key: 'audio-mixer-disabled') ?? true; - int audioModeIndex = await Utilities.getIntData(key: 'audio-mode'); - if (res) { - await setHMSSDKInteractor( - joinWithMutedAudio: joinWithMutedAudio, - joinWithMutedVideo: joinWithMutedVideo, - isSoftwareDecoderDisabled: isSoftwareDecoderDisabled, - isAudioMixerDisabled: isAudioMixerDisabled, - audioMode: HMSAudioMode.values[audioModeIndex]); - - if (!skipPreview) { - _previewStore = PreviewStore(hmsSDKInteractor: _hmsSDKInteractor); - Navigator.of(context).pushReplacement(MaterialPageRoute( - builder: (_) => ListenableProvider.value( - value: _previewStore, - child: PreviewPage( - meetingFlow: widget.meetingFlow, - name: nameController.text, - meetingLink: widget.meetingLink), - ))); - } else { - bool showStats = - await Utilities.getBoolData(key: 'show-stats') ?? false; - bool mirrorCamera = - await Utilities.getBoolData(key: 'mirror-camera') ?? false; - _meetingStore = MeetingStore(hmsSDKInteractor: _hmsSDKInteractor); - Navigator.of(context).pushReplacement(MaterialPageRoute( - builder: (_) => ListenableProvider.value( - value: _meetingStore, - child: ScreenController( - isRoomMute: false, - isStreamingLink: widget.meetingFlow == MeetingFlow.meeting - ? false - : true, - meetingLink: widget.meetingLink, - localPeerNetworkQuality: -1, - user: nameController.text.trim(), - mirrorCamera: mirrorCamera, - showStats: showStats, - ), - ))); - } - } - } - } - - @override - Widget build(BuildContext context) { - double width = MediaQuery.of(context).size.width; - bool res = false; - return Scaffold( - body: Center( - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SvgPicture.asset( - 'assets/icons/user-music.svg', - width: width / 4, - ), - SizedBox( - height: 40, - ), - Text("Go live in five!", - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 34, - fontWeight: FontWeight.w600)), - SizedBox( - height: 4, - ), - Text("Let's get started with your name", - style: GoogleFonts.inter( - color: themeSubHeadingColor, - height: 1.5, - fontSize: 16, - fontWeight: FontWeight.w400)), - SizedBox( - height: 40, - ), - SizedBox( - width: width * 0.95, - child: TextField( - textInputAction: TextInputAction.done, - onSubmitted: (value) { - showPreview(res); - }, - autofocus: widget.autofocusField, - textCapitalization: TextCapitalization.words, - style: GoogleFonts.inter(), - controller: nameController, - keyboardType: TextInputType.name, - onChanged: (value) { - setState(() {}); - }, - decoration: InputDecoration( - suffixIcon: nameController.text.isEmpty - ? null - : IconButton( - onPressed: () { - nameController.text = ""; - setState(() {}); - }, - icon: Icon(Icons.clear), - ), - contentPadding: - EdgeInsets.symmetric(vertical: 14, horizontal: 16), - fillColor: themeSurfaceColor, - filled: true, - hintText: 'Enter your name here', - hintStyle: GoogleFonts.inter( - color: themeHintColor, - height: 1.5, - fontSize: 16, - fontWeight: FontWeight.w400), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide(color: borderColor, width: 1), - borderRadius: BorderRadius.all(Radius.circular(8))), - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(8)))), - ), - ), - SizedBox( - height: 30, - ), - HMSListenableButton( - width: width * 0.5, - onPressed: () async => { - FocusManager.instance.primaryFocus?.unfocus(), - showPreview(res), - }, - childWidget: Container( - padding: const EdgeInsets.fromLTRB(8, 16, 8, 16), - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(8))), - child: Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text('Get Started', - style: GoogleFonts.inter( - color: nameController.text.isEmpty - ? themeDisabledTextColor - : enabledTextColor, - height: 1, - fontSize: 16, - fontWeight: FontWeight.w600)), - SizedBox( - width: 4, - ), - Icon( - Icons.arrow_forward, - color: nameController.text.isEmpty - ? themeDisabledTextColor - : enabledTextColor, - size: 16, - ) - ], - ), - ), - textController: nameController, - errorMessage: "Please enter you name") - ], - ), - )), - ); - } -} diff --git a/example/lib/meeting/meeting_page.dart b/example/lib/meeting/meeting_page.dart deleted file mode 100644 index dcadc10e0..000000000 --- a/example/lib/meeting/meeting_page.dart +++ /dev/null @@ -1,1304 +0,0 @@ -import 'dart:io'; -import 'dart:math'; - -import 'package:flutter/material.dart'; -import 'package:flutter_foreground_task/flutter_foreground_task.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/audio_device_change_dialog.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_embedded_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/stream_timer.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/enum/session_store_key.dart'; -import 'package:hmssdk_flutter_example/meeting_modes/full_screen_mode.dart'; -import 'package:hmssdk_flutter_example/meeting_modes/audio_mode.dart'; -import 'package:hmssdk_flutter_example/meeting_modes/hero_mode.dart'; -import 'package:hmssdk_flutter_example/meeting_modes/one_to_one_mode.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_mode.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/start_hls_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/chat_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/more_settings_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/meeting_modes/basic_grid_view.dart'; -import 'package:hmssdk_flutter_example/common/widgets/pip_view.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; - -class MeetingPage extends StatefulWidget { - final String meetingLink; - final bool isStreamingLink; - final bool isRoomMute; - const MeetingPage( - {Key? key, - required this.meetingLink, - this.isStreamingLink = false, - this.isRoomMute = true}) - : super(key: key); - - @override - State createState() => _MeetingPageState(); -} - -class _MeetingPageState extends State { - bool isAudioMixerDisabled = true; - @override - void initState() { - super.initState(); - checkAudioState(); - } - - void checkAudioState() async { - if (widget.isRoomMute) { - WidgetsBinding.instance.addPostFrameCallback((_) { - context.read().toggleSpeaker(); - }); - } - } - - String recordingState() { - String _message = ""; - - Map _recordingType = - context.read().recordingType; - - if (_recordingType["hls"] ?? false) { - _message += "HLS "; - } - if (_recordingType["server"] ?? false) { - _message += "Server "; - } - if (_recordingType["browser"] ?? false) { - _message += "Beam "; - } - _message += "Recording"; - return _message; - } - - String streamingState() { - String _message = "Live"; - Map _streamingType = - context.read().streamingType; - if (_streamingType["hls"] ?? false) { - _message += " with HLS"; - } else if (_streamingType["rtmp"] ?? false) { - _message += " with RTMP"; - } - return _message; - } - - Widget _showPopupMenuButton({required bool isHLSRunning}) { - return PopupMenuButton( - tooltip: "leave_end_stream", - offset: Offset(0, 45), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), - icon: SvgPicture.asset( - "assets/icons/leave_hls.svg", - color: Colors.white, - fit: BoxFit.scaleDown, - ), - color: themeBottomSheetColor, - onSelected: (int value) async { - switch (value) { - case 1: - await UtilityComponents.onLeaveStudio(context); - break; - case 2: - await UtilityComponents.onEndStream( - leaveRoom: true, - context: context, - title: 'End Session', - content: - "The session will end for everyone and all the activities will stop. You can’t undo this action.", - ignoreText: "Don't End ", - actionText: 'End Session'); - break; - default: - break; - } - }, - itemBuilder: (context) => [ - PopupMenuItem( - child: Row(children: [ - SvgPicture.asset("assets/icons/leave_hls.svg", - width: 17, color: themeDefaultColor), - SizedBox( - width: 12, - ), - TitleText( - text: "Leave Studio", - textColor: themeDefaultColor, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.25, - ), - Divider( - height: 5, - color: dividerColor, - ), - ]), - value: 1, - ), - PopupMenuItem( - child: Row(children: [ - SvgPicture.asset("assets/icons/end_warning.svg", - width: 17, color: errorColor), - SizedBox( - width: 12, - ), - TitleText( - text: "End Session", - textColor: errorColor, - fontSize: 14, - lineHeight: 20, - letterSpacing: 0.25, - ), - Divider( - height: 1, - color: dividerColor, - ), - ]), - value: 2, - ), - ]); - } - - @override - Widget build(BuildContext context) { - bool isPortraitMode = - MediaQuery.of(context).orientation == Orientation.portrait; - return WillPopScope( - onWillPop: () async { - bool ans = await UtilityComponents.onBackPressed(context) ?? false; - return ans; - }, - child: WithForegroundTask( - child: Selector>( - selector: (_, meetingStore) => - Tuple2(meetingStore.isRoomEnded, meetingStore.hmsException), - builder: (_, data, __) { - if (data.item2 != null) { - if (data.item2?.code?.errorCode == 1003 || - data.item2?.code?.errorCode == 2000 || - data.item2?.code?.errorCode == 4005 || - data.item2?.code?.errorCode == 424) { - WidgetsBinding.instance.addPostFrameCallback((_) { - UtilityComponents.showErrorDialog( - context: context, - errorMessage: - "Error Code: ${data.item2!.code?.errorCode ?? ""} ${data.item2!.description}", - errorTitle: data.item2!.message ?? "", - actionMessage: "Leave Room", - action: () { - Navigator.of(context) - .popUntil((route) => route.isFirst); - }); - }); - } else { - Utilities.showToast( - "Error : ${data.item2!.code?.errorCode ?? ""} ${data.item2!.description} ${data.item2!.message}", - time: 5); - } - context.read().hmsException = null; - } - if (data.item1) { - WidgetsBinding.instance.addPostFrameCallback((_) { - Utilities.showToast( - context.read().description); - Navigator.of(context).popUntil((route) => route.isFirst); - }); - } - return Selector( - selector: (_, meetingStore) => meetingStore.isPipActive, - builder: (_, isPipActive, __) { - return isPipActive && Platform.isAndroid - ? PipView() - : Scaffold( - resizeToAvoidBottomInset: false, - body: SafeArea( - child: Stack( - children: [ - Selector< - MeetingStore, - Tuple6< - List, - bool, - int, - int, - MeetingMode, - PeerTrackNode?>>( - selector: (_, meetingStore) => Tuple6( - meetingStore.peerTracks, - meetingStore.isHLSLink, - meetingStore.peerTracks.length, - meetingStore.screenShareCount, - meetingStore.meetingMode, - meetingStore.peerTracks.length > 0 - ? meetingStore.peerTracks[ - meetingStore - .screenShareCount] - : null), - builder: (_, data, __) { - if (data.item3 == 0) { - return Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - CircularProgressIndicator( - strokeWidth: 2, - ), - SizedBox( - height: 10, - ), - if (context - .read() - .peers - .length > - 0) - Text( - "Please wait for broadcaster to join") - ], - )); - } - return Selector< - MeetingStore, - Tuple2>( - selector: (_, meetingStore) => - Tuple2( - meetingStore.meetingMode, - meetingStore.localPeer), - builder: (_, modeData, __) { - Size size = Size( - MediaQuery.of(context) - .size - .width, - MediaQuery.of(context) - .size - .height - - ((widget.isStreamingLink && - (modeData - .item2 - ?.role - .permissions - .hlsStreaming == - true)) - ? 163 - : 122) - - MediaQuery.of(context) - .padding - .bottom - - MediaQuery.of(context) - .padding - .top); - return Positioned( - top: 55, - left: 0, - right: 0, - bottom: (widget.isStreamingLink && (modeData.item2?.role.permissions.hlsStreaming == true)) - ? 108 - : 68, - /*** - * The logic for gridview is as follows: - * - Default mode is Active Speaker mode which displays only 4 tiles on screen without scroll and updates the tile according to who is currently speaking - * - If there are only 2 peers in the room in which one is local peer then automatically the mode is switched to oneToOne mode - * - As the peer count increases the mode is switched back to active speaker view in case of default mode - * - Remaining as the mode from bottom sheet is selected corresponding grid layout is rendered - */ - child: Container( - child: (((modeData.item1 == MeetingMode.OneToOne) || ((data.item3 == 2) && context.read().peers.length == 2)) && - (modeData.item2 != - null)) - ? OneToOneMode( - bottomMargin: - (widget.isStreamingLink && (modeData.item2?.role.permissions.hlsStreaming == true)) - ? 272 - : 235, - peerTracks: - data.item1, - screenShareCount: - data.item4, - context: - context, - size: size) - : (modeData.item1 == - MeetingMode - .ActiveSpeaker) - ? basicGridView( - peerTracks: - data.item1.sublist(0, min(data.item1.length, data.item4 + 4)), - itemCount: min(data.item3, data.item4 + 4), - screenShareCount: data.item4, - context: context, - isPortrait: true, - size: size) - : (modeData.item1 == MeetingMode.Hero) - ? heroMode(peerTracks: data.item1, itemCount: data.item3, screenShareCount: data.item4, context: context, isPortrait: isPortraitMode, size: size) - : (modeData.item1 == MeetingMode.Audio) - ? audioMode(peerTracks: data.item1.sublist(data.item4), itemCount: data.item1.sublist(data.item4).length, context: context, isPortrait: isPortraitMode, size: size) - : (data.item5 == MeetingMode.Single) - ? fullScreenMode(peerTracks: data.item1, itemCount: data.item3, screenShareCount: data.item4, context: context, isPortrait: isPortraitMode, size: size) - : basicGridView(peerTracks: data.item1, itemCount: data.item3, screenShareCount: data.item4, context: context, isPortrait: true, size: size))); - }); - }), - Column( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only( - left: 15, - right: 15, - top: 5, - bottom: 2), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Selector( - selector: (_, - meetingStore) => - meetingStore - .hasHlsStarted, - builder: (_, - hasHlsStarted, __) { - return hasHlsStarted - ? HMSEmbeddedButton( - onTap: - () async => - {}, - width: 40, - height: 40, - offColor: Color( - 0xffCC525F), - onColor: Color( - 0xffCC525F), - disabledBorderColor: - Color( - 0xffCC525F), - isActive: false, - child: _showPopupMenuButton( - isHLSRunning: - hasHlsStarted)) - : HMSEmbeddedButton( - onTap: - () async => - { - await UtilityComponents - .onBackPressed( - context) - }, - width: 40, - height: 40, - offColor: Color( - 0xffCC525F), - onColor: Color( - 0xffCC525F), - disabledBorderColor: - Color( - 0xffCC525F), - isActive: false, - child: - SvgPicture - .asset( - "assets/icons/leave_hls.svg", - color: Colors - .white, - fit: BoxFit - .scaleDown, - semanticsLabel: - "leave_button", - ), - ); - }), - SizedBox( - width: 10, - ), - Selector< - MeetingStore, - Tuple4< - bool, - bool, - Map, - Map>>( - selector: (_, meetingStore) => Tuple4( - ((meetingStore.streamingType[ - "rtmp"] ?? - false) || - (meetingStore - .streamingType[ - "hls"] ?? - false)), - ((meetingStore.recordingType[ - "browser"] ?? - false) || - (meetingStore - .recordingType[ - "server"] ?? - false) || - ((meetingStore - .recordingType[ - "hls"] ?? - false))), - meetingStore - .streamingType, - meetingStore - .recordingType), - builder: - (_, roomState, __) { - if (roomState.item1 || - roomState.item2) - return Column( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - crossAxisAlignment: - CrossAxisAlignment - .start, - children: [ - Row( - children: [ - Padding( - padding: const EdgeInsets - .only( - right: - 5.0), - child: SvgPicture - .asset( - "assets/icons/live_stream.svg", - color: - errorColor, - fit: BoxFit - .scaleDown, - ), - ), - GestureDetector( - onTap: () { - if (!roomState - .item1 && - roomState - .item2) - Utilities.showToast( - recordingState()); - }, - child: Text( - (roomState.item1 && - roomState.item2) - ? "Live & Recording" - : (roomState.item1) - ? streamingState() - : (roomState.item2) - ? "Recording" - : "", - semanticsLabel: - "fl_live_stream_running", - style: GoogleFonts.inter( - fontSize: - 16, - color: - themeDefaultColor, - letterSpacing: - 0.5, - fontWeight: - FontWeight.w600), - ), - ), - ], - ), - roomState.item1 - ? Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - (roomState.item3["hls"] ?? - false) - ? Row( - children: [ - SvgPicture.asset( - "assets/icons/clock.svg", - color: themeSubHeadingColor, - fit: BoxFit.scaleDown, - ), - SizedBox( - width: 6, - ), - Selector( - selector: (_, meetingStore) => meetingStore.hmsRoom, - builder: (_, hmsRoom, __) { - if (hmsRoom != null && hmsRoom.hmshlsStreamingState != null && hmsRoom.hmshlsStreamingState!.variants.length != 0 && hmsRoom.hmshlsStreamingState!.variants[0]!.startedAt != null) { - return HMSStreamTimer(startedAt: hmsRoom.hmshlsStreamingState!.variants[0]!.startedAt!); - } - return SubtitleText( - text: "00:00", - textColor: themeSubHeadingColor, - ); - }), - ], - ) - : Container(), - SubtitleText( - text: - " | ", - textColor: - dividerColor, - ), - Row( - children: [ - SvgPicture.asset( - "assets/icons/watching.svg", - color: themeSubHeadingColor, - fit: BoxFit.scaleDown, - ), - SizedBox( - width: 6, - ), - Selector( - selector: (_, meetingStore) => meetingStore.peers.length, - builder: (_, length, __) { - return SubtitleText(text: length.toString(), textColor: themeSubHeadingColor); - }) - ], - ) - ], - ) - : Container() - ], - ); - return SizedBox(); - }) - ], - ), - Row( - children: [ - Selector( - selector: (_, - meetingStore) => - meetingStore - .isRaisedHand, - builder: - (_, handRaised, __) { - return HMSEmbeddedButton( - onTap: () => { - context - .read< - MeetingStore>() - .changeMetadata() - }, - width: 40, - height: 40, - disabledBorderColor: - borderColor, - offColor: - themeScreenBackgroundColor, - onColor: - themeHintColor, - isActive: handRaised, - child: - SvgPicture.asset( - "assets/icons/hand_outline.svg", - color: - themeDefaultColor, - fit: BoxFit - .scaleDown, - semanticsLabel: - "hand_raise_button", - ), - ); - }), - SizedBox( - width: 10, - ), - Selector( - selector: (_, - meetingStore) => - meetingStore - .isNewMessageReceived, - builder: (_, - isNewMessageReceived, - __) { - return HMSEmbeddedButton( - onTap: () => { - context - .read< - MeetingStore>() - .getSessionMetadata( - SessionStoreKeyValues.getNameFromMethod( - SessionStoreKey - .PINNED_MESSAGE_SESSION_KEY)), - context - .read< - MeetingStore>() - .setNewMessageFalse(), - showModalBottomSheet( - isScrollControlled: - true, - backgroundColor: - themeBottomSheetColor, - shape: - RoundedRectangleBorder( - borderRadius: - BorderRadius - .circular( - 20), - ), - context: context, - builder: (ctx) => - ChangeNotifierProvider.value( - value: context - .read< - MeetingStore>(), - child: - ChatBottomSheet()), - ) - }, - width: 40, - height: 40, - offColor: - themeHintColor, - onColor: - themeScreenBackgroundColor, - isActive: true, - child: - SvgPicture.asset( - isNewMessageReceived - ? "assets/icons/message_badge_on.svg" - : "assets/icons/message_badge_off.svg", - fit: BoxFit - .scaleDown, - semanticsLabel: - "chat_button", - ), - ); - }) - ], - ) - ], - ), - ), - Padding( - padding: const EdgeInsets.only( - bottom: 8.0), - child: Column( - children: [ - if (Provider.of( - context) - .localPeer != - null && - !Provider.of( - context) - .localPeer! - .role - .name - .contains("hls-")) - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceEvenly, - children: [ - if (Provider.of(context) - .localPeer != - null) - (Provider.of(context) - .localPeer - ?.role - .publishSettings - ?.allowed - .contains( - "audio") ?? - false) - ? Selector< - MeetingStore, - bool>( - selector: (_, meetingStore) => - meetingStore - .isMicOn, - builder: (_, - isMicOn, __) { - return HMSEmbeddedButton( - onTap: () => { - context - .read< - MeetingStore>() - .toggleMicMuteState() - }, - width: 40, - height: 40, - disabledBorderColor: - borderColor, - offColor: - themeHMSBorderColor, - onColor: - themeScreenBackgroundColor, - isActive: - isMicOn, - child: - SvgPicture - .asset( - isMicOn - ? "assets/icons/mic_state_on.svg" - : "assets/icons/mic_state_off.svg", - color: - themeDefaultColor, - fit: BoxFit - .scaleDown, - semanticsLabel: - "audio_mute_button", - ), - ); - }) - : Selector< - MeetingStore, - bool>( - selector: (_, meetingStore) => - meetingStore - .isSpeakerOn, - builder: (_, isSpeakerOn, __) { - return HMSEmbeddedButton( - onTap: () => { - context - .read< - MeetingStore>() - .toggleSpeaker(), - }, - width: 40, - height: 40, - disabledBorderColor: - borderColor, - offColor: - themeHMSBorderColor, - onColor: - themeScreenBackgroundColor, - isActive: - isSpeakerOn, - child: SvgPicture.asset( - isSpeakerOn - ? "assets/icons/speaker_state_on.svg" - : "assets/icons/speaker_state_off.svg", - color: - themeDefaultColor, - fit: BoxFit - .scaleDown, - semanticsLabel: - "speaker_mute_button"), - ); - }), - if (Provider.of(context) - .localPeer != - null) - (Provider.of(context) - .localPeer - ?.role - .publishSettings - ?.allowed - .contains( - "video") ?? - false) - ? Selector< - MeetingStore, - Tuple2>( - selector: (_, meetingStore) => Tuple2( - meetingStore - .isVideoOn, - meetingStore.meetingMode == - MeetingMode - .Audio), - builder: (_, data, __) { - return HMSEmbeddedButton( - onTap: () => { - (data.item2) - ? null - : context - .read() - .toggleCameraMuteState(), - }, - width: 40, - height: 40, - disabledBorderColor: - borderColor, - offColor: - themeHMSBorderColor, - onColor: - themeScreenBackgroundColor, - isActive: data - .item1, - child: SvgPicture.asset( - data.item1 - ? "assets/icons/cam_state_on.svg" - : "assets/icons/cam_state_off.svg", - color: - themeDefaultColor, - fit: BoxFit - .scaleDown, - semanticsLabel: - "video_mute_button"), - ); - }) - : Selector< - MeetingStore, - bool>( - selector: (_, meetingStore) => - meetingStore.isStatsVisible, - builder: (_, isStatsVisible, __) { - return HMSEmbeddedButton( - width: 40, - height: 40, - onTap: () => context - .read< - MeetingStore>() - .changeStatsVisible(), - disabledBorderColor: - borderColor, - offColor: - themeScreenBackgroundColor, - onColor: - themeHMSBorderColor, - isActive: - isStatsVisible, - child: SvgPicture.asset( - "assets/icons/stats.svg", - fit: BoxFit - .scaleDown, - semanticsLabel: - "stats_button"), - ); - }), - if ((Provider.of( - context) - .localPeer != - null) && - (context - .read< - MeetingStore>() - .localPeer - ?.role - .permissions - .hlsStreaming == - true) && - widget.isStreamingLink) - Selector< - MeetingStore, - Tuple2>( - selector: (_, - meetingStore) => - Tuple2( - meetingStore - .hasHlsStarted, - meetingStore - .isHLSLoading), - builder: - (_, data, __) { - if (data.item1) { - return Column( - children: [ - SizedBox( - height: 10, - ), - InkWell( - onTap: () { - UtilityComponents.onEndStream( - context: - context, - title: - 'End live stream for all?', - content: - "Your live stream will end and stream viewers will go offline immediately in this room. You can’t undo this action.", - ignoreText: - "Don't End ", - actionText: - 'End Stream'); - }, - child: - CircleAvatar( - radius: - 40, - backgroundColor: - errorColor, - child: SvgPicture.asset( - "assets/icons/end.svg", - color: - themeDefaultColor, - height: - 36, - semanticsLabel: - "hls_end_button"), - ), - ), - SizedBox( - height: 5, - ), - Text( - "END STREAM", - style: GoogleFonts.inter( - letterSpacing: - 1.5, - fontSize: - 10, - height: - 1.6, - fontWeight: - FontWeight.w600), - ) - ], - ); - } else if (data - .item2) { - return Column( - children: [ - SizedBox( - height: 10, - ), - InkWell( - onTap: - () {}, - child: CircleAvatar( - radius: 40, - backgroundColor: themeScreenBackgroundColor, - child: CircularProgressIndicator( - semanticsLabel: - "hls_loader", - strokeWidth: - 2, - color: - hmsdefaultColor, - )), - ), - SizedBox( - height: 5, - ), - Text( - "STARTING HLS", - style: GoogleFonts.inter( - letterSpacing: - 1.5, - fontSize: - 10, - height: - 1.6, - fontWeight: - FontWeight.w600), - ) - ], - ); - } - return Column( - children: [ - SizedBox( - height: 10, - ), - InkWell( - onTap: () { - showModalBottomSheet( - isScrollControlled: - true, - backgroundColor: - themeBottomSheetColor, - shape: - RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(20), - ), - context: - context, - builder: (ctx) => ChangeNotifierProvider.value( - value: context.read< - MeetingStore>(), - child: - StartHLSBottomSheet()), - ); - }, - child: - CircleAvatar( - radius: 40, - backgroundColor: - hmsdefaultColor, - child: SvgPicture.asset( - "assets/icons/live.svg", - color: - themeDefaultColor, - fit: BoxFit - .scaleDown, - semanticsLabel: - "start_hls_button"), - ), - ), - SizedBox( - height: 5, - ), - Text( - "GO LIVE", - style: GoogleFonts.inter( - letterSpacing: - 1.5, - fontSize: - 10, - height: - 1.6, - fontWeight: - FontWeight - .w600), - ) - ], - ); - }), - if (Provider.of(context) - .localPeer != - null) - (Provider.of(context) - .localPeer - ?.role - .publishSettings - ?.allowed - .contains( - "screen") ?? - false) - ? Selector< - MeetingStore, - bool>( - selector: (_, - meetingStore) => - meetingStore - .isScreenShareOn, - builder: (_, data, - __) { - return HMSEmbeddedButton( - onTap: () { - MeetingStore - meetingStore = - Provider.of( - context, - listen: - false); - if (meetingStore - .isScreenShareOn) { - meetingStore - .stopScreenShare(); - } else { - meetingStore - .startScreenShare(); - } - }, - width: 40, - height: 40, - disabledBorderColor: - borderColor, - offColor: - themeScreenBackgroundColor, - onColor: - borderColor, - isActive: - data, - child: SvgPicture.asset( - "assets/icons/screen_share.svg", - color: - themeDefaultColor, - fit: BoxFit - .scaleDown, - semanticsLabel: - "screen_share_button"), - ); - }) - : Selector< - MeetingStore, - bool>( - selector: (_, - meetingStore) => - (meetingStore.isBRB), - builder: (_, isBRB, __) { - return HMSEmbeddedButton( - width: 40, - height: 40, - onTap: () => context - .read< - MeetingStore>() - .changeMetadataBRB(), - disabledBorderColor: - borderColor, - offColor: - themeScreenBackgroundColor, - onColor: - borderColor, - isActive: - isBRB, - child: SvgPicture.asset( - "assets/icons/brb.svg", - fit: BoxFit - .scaleDown, - semanticsLabel: - "brb_button"), - ); - }), - if (Provider.of( - context) - .localPeer != - null) - HMSEmbeddedButton( - onTap: () async => { - isAudioMixerDisabled = - await Utilities - .getBoolData( - key: - "audio-mixer-disabled") ?? - true, - showModalBottomSheet( - isScrollControlled: - true, - backgroundColor: - themeBottomSheetColor, - shape: - RoundedRectangleBorder( - borderRadius: - BorderRadius - .circular( - 20), - ), - context: context, - builder: (ctx) => - ChangeNotifierProvider - .value( - value: context.read< - MeetingStore>(), - child: - MoreSettingsBottomSheet( - isAudioMixerDisabled: - isAudioMixerDisabled, - )), - ) - }, - width: 40, - height: 40, - offColor: - themeHintColor, - onColor: - themeScreenBackgroundColor, - isActive: true, - child: SvgPicture.asset( - "assets/icons/more.svg", - color: - themeDefaultColor, - fit: BoxFit - .scaleDown, - semanticsLabel: - "more_button"), - ), - ], - ), - ], - ), - ) - ], - ), - Selector( - selector: (_, meetingStore) => - meetingStore - .currentRoleChangeRequest, - builder: (_, roleChangeRequest, __) { - if (roleChangeRequest != null) { - HMSRoleChangeRequest - currentRequest = - roleChangeRequest; - context - .read() - .currentRoleChangeRequest = - null; - WidgetsBinding.instance - .addPostFrameCallback((_) { - UtilityComponents - .showRoleChangeDialog( - currentRequest, context); - }); - } - return SizedBox(); - }), - Selector( - selector: (_, meetingStore) => - meetingStore.hmsTrackChangeRequest, - builder: - (_, hmsTrackChangeRequest, __) { - if (hmsTrackChangeRequest != null) { - HMSTrackChangeRequest - currentRequest = - hmsTrackChangeRequest; - context - .read() - .hmsTrackChangeRequest = null; - WidgetsBinding.instance - .addPostFrameCallback((_) { - UtilityComponents - .showTrackChangeDialog( - context, currentRequest); - }); - } - return SizedBox(); - }), - Selector( - selector: (_, meetingStore) => - meetingStore - .showAudioDeviceChangePopup, - builder: (_, showAudioDeviceChangePopup, - __) { - if (showAudioDeviceChangePopup) { - context - .read() - .showAudioDeviceChangePopup = - false; - WidgetsBinding.instance - .addPostFrameCallback((_) { - showDialog( - context: context, - builder: (_) => - AudioDeviceChangeDialog( - currentAudioDevice: context - .read< - MeetingStore>() - .currentAudioOutputDevice!, - audioDevicesList: context - .read< - MeetingStore>() - .availableAudioOutputDevices, - changeAudioDevice: - (audioDevice) { - context - .read< - MeetingStore>() - .switchAudioOutput( - audioDevice: - audioDevice); - }, - )); - }); - } - return SizedBox(); - }), - Selector( - selector: (_, meetingStore) => - meetingStore.reconnecting, - builder: (_, reconnecting, __) { - if (reconnecting) { - return UtilityComponents - .showReconnectingDialog( - context); - } - return SizedBox(); - }), - ], - ), - ), - ); - }); - }), - )); - } -} diff --git a/example/lib/meeting_modes/one_to_one_mode.dart b/example/lib/meeting_modes/one_to_one_mode.dart deleted file mode 100644 index bd8ca0fba..000000000 --- a/example/lib/meeting_modes/one_to_one_mode.dart +++ /dev/null @@ -1,92 +0,0 @@ -import 'package:draggable_widget/draggable_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/widgets/peer_tile.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:provider/provider.dart'; - -class OneToOneMode extends StatefulWidget { - final List peerTracks; - final BuildContext context; - final Size size; - final int screenShareCount; - final double bottomMargin; - const OneToOneMode( - {Key? key, - required this.peerTracks, - required this.context, - required this.size, - required this.screenShareCount, - this.bottomMargin = 272}) - : super(key: key); - - @override - State createState() => _OneToOneModeState(); -} - -class _OneToOneModeState extends State { - PeerTrackNode? oneToOnePeer; - PeerTrackNode? screenPeer; - @override - void initState() { - super.initState(); - if (widget.peerTracks.isNotEmpty) { - oneToOnePeer = - widget.peerTracks.firstWhere((element) => element.peer.isLocal); - oneToOnePeer?.setOffScreenStatus(false); - screenPeer = - widget.peerTracks.firstWhere((element) => !element.peer.isLocal); - } - } - - void switchView() { - PeerTrackNode? tempPeer = oneToOnePeer; - oneToOnePeer = screenPeer; - screenPeer = tempPeer; - setState(() {}); - } - - @override - Widget build(BuildContext context) { - // EdgeInsets viewPadding = MediaQuery.of(context).viewPadding; - return Scaffold( - body: SafeArea( - child: Stack( - children: [ - ChangeNotifierProvider.value( - key: ValueKey(screenPeer?.uid ?? "" + "video_view"), - value: screenPeer, - child: PeerTile( - itemHeight: widget.size.height, - itemWidth: widget.size.width, - ), - ), - DraggableWidget( - topMargin: 10, - bottomMargin: widget.bottomMargin, - horizontalSpace: 10, - child: GestureDetector( - onDoubleTap: (() => switchView()), - child: ClipRRect( - borderRadius: BorderRadius.circular(8.0), - child: SizedBox( - width: 100, - height: 150, - child: ChangeNotifierProvider.value( - key: ValueKey(oneToOnePeer?.uid ?? "" + "video_view"), - value: oneToOnePeer, - child: PeerTile( - isOneToOne: true, - itemHeight: 150, - itemWidth: 100, - ), - ), - ), - ), - ), - ) - ], - ), - ), - ); - } -} diff --git a/example/lib/preview/preview_device_settings.dart b/example/lib/preview/preview_device_settings.dart deleted file mode 100644 index 587ee4f74..000000000 --- a/example/lib/preview/preview_device_settings.dart +++ /dev/null @@ -1,197 +0,0 @@ -import 'dart:io'; - -import 'package:dropdown_button2/dropdown_button2.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/preview/preview_store.dart'; -import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; -import 'package:collection/collection.dart'; - -class PreviewDeviceSettings extends StatefulWidget { - PreviewDeviceSettings({ - Key? key, - }) : super(key: key); - @override - State createState() => _PreviewDeviceSettingsState(); -} - -class _PreviewDeviceSettingsState extends State { - GlobalKey? dropdownKey; - - void _updateDropDownValue(dynamic newValue) { - if (newValue != null) - context.read().switchAudioOutput(audioDevice: newValue); - dropdownKey = null; - } - - @override - void initState() { - super.initState(); - dropdownKey = GlobalKey(); - } - - @override - Widget build(BuildContext context) { - return FractionallySizedBox( - heightFactor: 0.5, - child: Padding( - padding: const EdgeInsets.only(top: 20.0, left: 15, right: 15), - child: Selector, int, HMSAudioDevice?>>( - selector: (_, previewStore) => Tuple3( - previewStore.availableAudioOutputDevices, - previewStore.availableAudioOutputDevices.length, - previewStore.currentAudioOutputDevice), - builder: (context, data, _) { - if (dropdownKey != null && dropdownKey!.currentWidget != null) { - Navigator.pop(dropdownKey!.currentContext!); - } - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - CircleAvatar( - radius: 18, - backgroundColor: borderColor, - child: IconButton( - icon: Icon( - Icons.arrow_back_ios_new, - size: 16, - color: hmsWhiteColor, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ), - Expanded( - child: Text( - "Device Settings", - textAlign: TextAlign.center, - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - ), - IconButton( - icon: SvgPicture.asset( - "assets/icons/close_button.svg", - width: 40, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ], - ), - Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), - child: Divider( - color: dividerColor, - height: 5, - ), - ), - Text("Speakers", - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 14, - fontWeight: FontWeight.w400, - letterSpacing: 0.25)), - SizedBox( - height: 10, - ), - Container( - padding: EdgeInsets.only(left: 10, right: 5), - decoration: BoxDecoration( - color: themeSurfaceColor, - borderRadius: BorderRadius.circular(10.0), - border: Border.all( - color: borderColor, - style: BorderStyle.solid, - width: 0.80), - ), - child: DropdownButtonHideUnderline( - child: HMSDropDown( - dropDownItems: [ - ...data.item1 - .sortedBy((element) => element.toString()) - .map((device) => DropdownMenuItem( - key: UniqueKey(), - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/music_wave.svg", - color: themeDefaultColor, - ), - SizedBox( - width: 10, - ), - Container( - child: SubtitleText( - text: device.name, - textColor: themeDefaultColor, - ), - ), - ], - ), - value: device, - )) - .toList(), - ], - buttonStyleData: ButtonStyleData(height: 48), - menuItemStyleData: MenuItemStyleData( - height: 45, - ), - iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), - iconEnabledColor: iconColor), - dropdownStyleData: DropdownStyleData( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: themeSurfaceColor), - offset: Offset(-10, -10), - ), - selectedValue: - Platform.isAndroid ? data.item3 : data.item1[0], - updateSelectedValue: _updateDropDownValue)), - ), - SizedBox( - height: 10, - ), - ListTile( - horizontalTitleGap: 2, - onTap: () { - Navigator.pop(context); - context.read().toggleSpeaker(); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - context.read().isRoomMute - ? "assets/icons/speaker_state_off.svg" - : "assets/icons/speaker_state_on.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: SubtitleText( - text: (context.read().isRoomMute - ? "Unmute Room" - : "Mute Room"), - textColor: themeDefaultColor, - ), - ) - ], - ); - }), - ), - ); - } -} diff --git a/example/lib/preview/preview_page.dart b/example/lib/preview/preview_page.dart deleted file mode 100644 index c8eb3e25e..000000000 --- a/example/lib/preview/preview_page.dart +++ /dev/null @@ -1,498 +0,0 @@ -import 'dart:io'; - -import 'package:badges/badges.dart' as badge; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_embedded_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_flow.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/home_screen/screen_controller.dart'; -import 'package:hmssdk_flutter_example/preview/preview_device_settings.dart'; -import 'package:hmssdk_flutter_example/preview/preview_participant_sheet.dart'; -import 'package:hmssdk_flutter_example/preview/preview_store.dart'; -import 'package:provider/provider.dart'; - -class PreviewPage extends StatefulWidget { - final String name; - final String meetingLink; - final MeetingFlow meetingFlow; - - PreviewPage( - {required this.name, - required this.meetingLink, - required this.meetingFlow}); - @override - State createState() => _PreviewPageState(); -} - -class _PreviewPageState extends State { - late MeetingStore _meetingStore; - @override - void initState() { - super.initState(); - initPreview(); - } - - void setMeetingStore(PreviewStore _previewStore) { - _meetingStore = MeetingStore( - hmsSDKInteractor: _previewStore.hmsSDKInteractor, - ); - } - - void initPreview() async { - HMSException? ans = await context - .read() - .startPreview(userName: widget.name, meetingLink: widget.meetingLink); - if (ans != null) { - UtilityComponents.showErrorDialog( - context: context, - errorMessage: "ACTION: ${ans.action} DESCRIPTION: ${ans.description}", - errorTitle: ans.message ?? "Join Error", - actionMessage: "OK", - action: () { - Navigator.of(context).popUntil((route) => route.isFirst); - }); - } - } - - @override - Widget build(BuildContext context) { - var size = MediaQuery.of(context).size; - final double height = size.height; - final double width = size.width; - final Orientation orientation = MediaQuery.of(context).orientation; - final _previewStore = context.watch(); - return WillPopScope( - onWillPop: () async { - _previewStore.leave(); - return true; - }, - child: Selector( - selector: (_, previewStore) => previewStore.error, - builder: (_, error, __) { - if (error != null) { - if ((error.code?.errorCode == 1003) || - (error.code?.errorCode == 2000) || - (error.code?.errorCode == 4005)) { - WidgetsBinding.instance.addPostFrameCallback((_) { - UtilityComponents.showErrorDialog( - context: context, - errorMessage: - "Error Code: ${error.code?.errorCode ?? ""} ${error.description}", - errorTitle: error.message ?? "", - actionMessage: "Leave Room", - action: () { - Navigator.of(context) - .popUntil((route) => route.isFirst); - }); - }); - } else { - Utilities.showToast( - "Error : ${error.code?.errorCode ?? ""} ${error.description} ${error.message}", - time: 5); - } - } - return Scaffold( - body: Stack( - children: [ - (_previewStore.peer == null) - ? Center( - child: CircularProgressIndicator( - strokeWidth: 2, - ), - ) - : (_previewStore.peer!.role.name.contains("hls-")) - ? Container( - child: Center( - child: CircleAvatar( - backgroundColor: defaultAvatarColor, - radius: 40, - child: Text( - Utilities.getAvatarTitle( - _previewStore.peer!.name), - style: GoogleFonts.inter( - fontSize: 40, - color: Colors.white, - ), - )), - ), - ) - : (_previewStore.localTracks.isEmpty && - _previewStore.isVideoOn) - ? Center( - child: CircularProgressIndicator( - strokeWidth: 2, - ), - ) - : Container( - height: height, - width: width, - child: (_previewStore.isVideoOn) - ? HMSVideoView( - scaleType: - ScaleType.SCALE_ASPECT_FILL, - track: _previewStore.localTracks[0], - setMirror: true, - ) - : Container( - child: Center( - child: CircleAvatar( - backgroundColor: - defaultAvatarColor, - radius: 40, - child: Text( - Utilities.getAvatarTitle( - _previewStore.peer!.name), - style: GoogleFonts.inter( - fontSize: 40, - color: Colors.white, - ), - )), - ), - ), - ), - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), - child: Center( - child: Column( - children: [ - SizedBox( - height: orientation == Orientation.portrait - ? width * 0.1 - : width * 0.05, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - IconButton( - onPressed: () { - context - .read() - .leave(); - Navigator.of(context).popUntil( - (route) => route.isFirst); - }, - icon: Icon(Icons.arrow_back_ios)), - TitleText( - text: "Configure", - textColor: themeDefaultColor), - ], - ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - HMSEmbeddedButton( - height: 40, - width: 40, - onTap: () async => Platform.isAndroid - ? showModalBottomSheet( - isScrollControlled: true, - backgroundColor: - themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => - ChangeNotifierProvider.value( - value: _previewStore, - child: - PreviewDeviceSettings()), - ) - : _previewStore.toggleSpeaker(), - offColor: themeHintColor, - onColor: themeScreenBackgroundColor, - isActive: true, - child: SvgPicture.asset( - !_previewStore.isRoomMute - ? "assets/icons/speaker_state_on.svg" - : "assets/icons/speaker_state_off.svg", - color: themeDefaultColor, - fit: BoxFit.scaleDown, - semanticsLabel: "fl_mute_room_btn", - ), - ), - SizedBox( - width: 10, - ), - badge.Badge( - badgeAnimation: - badge.BadgeAnimation.fade(), - badgeStyle: badge.BadgeStyle( - badgeColor: hmsdefaultColor), - badgeContent: Text( - "${_previewStore.peerCount.toString()}"), - child: HMSEmbeddedButton( - height: 40, - width: 40, - onTap: () async => - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: - themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => - ChangeNotifierProvider.value( - value: context - .read(), - child: - PreviewParticipantSheet()), - ), - offColor: themeHintColor, - onColor: themeScreenBackgroundColor, - isActive: true, - child: SvgPicture.asset( - "assets/icons/participants.svg", - color: themeDefaultColor, - fit: BoxFit.scaleDown, - semanticsLabel: - "fl_participants_btn", - ), - ), - ), - SizedBox( - width: 5, - ), - ], - ) - ], - ), - ], - ), - ), - ), - Padding( - padding: const EdgeInsets.only( - bottom: 15.0, left: 8, right: 8), - child: (_previewStore.peer != null) - ? Column( - children: [ - if (_previewStore.peer != null && - !_previewStore.peer!.role.name - .contains("hls-")) - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - if (_previewStore.peer != null && - context - .read() - .peer! - .role - .publishSettings! - .allowed - .contains("audio")) - HMSEmbeddedButton( - height: 40, - width: 40, - onTap: () async => - _previewStore - .toggleMicMuteState(), - offColor: hmsWhiteColor, - onColor: themeHMSBorderColor, - isActive: - _previewStore.isAudioOn, - child: SvgPicture.asset( - _previewStore.isAudioOn - ? "assets/icons/mic_state_on.svg" - : "assets/icons/mic_state_off.svg", - color: - _previewStore.isAudioOn - ? themeDefaultColor - : Colors.black, - fit: BoxFit.scaleDown, - semanticsLabel: - "audio_mute_button", - ), - ), - SizedBox( - width: 10, - ), - if (_previewStore.peer != null && - _previewStore.peer!.role - .publishSettings!.allowed - .contains("video")) - HMSEmbeddedButton( - height: 40, - width: 40, - onTap: () async => (_previewStore - .localTracks.isEmpty) - ? null - : _previewStore - .toggleCameraMuteState(), - offColor: hmsWhiteColor, - onColor: themeHMSBorderColor, - isActive: - _previewStore.isVideoOn, - child: SvgPicture.asset( - _previewStore.isVideoOn - ? "assets/icons/cam_state_on.svg" - : "assets/icons/cam_state_off.svg", - color: - _previewStore.isVideoOn - ? themeDefaultColor - : Colors.black, - fit: BoxFit.scaleDown, - semanticsLabel: - "video_mute_button", - ), - ), - ], - ), - Row( - children: [ - if (_previewStore - .networkQuality != - null && - _previewStore - .networkQuality != - -1) - HMSEmbeddedButton( - height: 40, - width: 40, - onTap: () { - switch (_previewStore - .networkQuality) { - case 0: - Utilities.showToast( - "Very Bad network"); - break; - case 1: - Utilities.showToast( - "Poor network"); - break; - case 2: - Utilities.showToast( - "Bad network"); - break; - case 3: - Utilities.showToast( - "Average network"); - break; - case 4: - Utilities.showToast( - "Good network"); - break; - case 5: - Utilities.showToast( - "Best network"); - break; - default: - break; - } - }, - offColor: dividerColor, - onColor: dividerColor, - isActive: true, - child: SvgPicture.asset( - 'assets/icons/network_${_previewStore.networkQuality}.svg', - fit: BoxFit.scaleDown, - semanticsLabel: - "network_button", - )), - ], - ) - ], - ), - SizedBox( - height: 30, - ), - HMSButton( - width: width * 0.5, - onPressed: () async => { - context - .read() - .removePreviewListener(), - setMeetingStore(_previewStore), - Navigator.of(context).pushReplacement( - MaterialPageRoute( - builder: (_) => - ListenableProvider.value( - value: _meetingStore, - child: ScreenController( - isRoomMute: - _previewStore - .isRoomMute, - isStreamingLink: - widget.meetingFlow == - MeetingFlow - .meeting - ? false - : true, - meetingLink: - widget.meetingLink, - localPeerNetworkQuality: - _previewStore - .networkQuality, - user: widget.name, - role: _previewStore - .peer?.role, - config: _previewStore - .roomConfig, - ), - ))) - // } - }, - childWidget: Container( - padding: const EdgeInsets.fromLTRB( - 8, 16, 8, 16), - decoration: BoxDecoration( - borderRadius: BorderRadius.all( - Radius.circular(8))), - child: Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Text('Enter Studio', - style: GoogleFonts.inter( - color: enabledTextColor, - height: 1, - fontSize: 16, - fontWeight: - FontWeight.w600)), - SizedBox( - width: 4, - ), - Icon( - Icons.arrow_forward, - color: enabledTextColor, - size: 16, - ) - ], - ), - ), - ), - ], - ) - : SizedBox()) - ], - ), - ], - ), - ); - }), - ); - } -} diff --git a/example/lib/preview/preview_participant_sheet.dart b/example/lib/preview/preview_participant_sheet.dart deleted file mode 100644 index e26b9d4d9..000000000 --- a/example/lib/preview/preview_participant_sheet.dart +++ /dev/null @@ -1,273 +0,0 @@ -import 'package:dropdown_button2/dropdown_button2.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/preview/preview_store.dart'; -import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; -import 'package:collection/collection.dart'; - -class PreviewParticipantSheet extends StatefulWidget { - @override - State createState() => - _PreviewParticipantSheetState(); -} - -class _PreviewParticipantSheetState extends State { - String valueChoose = "Everyone"; - - void _updateDropDownValue(dynamic newValue) { - setState(() { - valueChoose = newValue; - }); - } - - @override - void initState() { - super.initState(); - } - - Tuple2, int> getFilteredPeers( - String valueChoose, List peers) { - if (valueChoose == "Everyone") { - return Tuple2(peers, peers.length); - } - List filteredPeers = - peers.where((element) => element.role.name == valueChoose).toList(); - return Tuple2(filteredPeers, filteredPeers.length); - } - - @override - Widget build(BuildContext context) { - return SafeArea( - child: FractionallySizedBox( - heightFactor: 0.81, - child: Material( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - color: themeBottomSheetColor, - child: Padding( - padding: const EdgeInsets.only(top: 20.0, left: 15, right: 15), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Text( - "Participants", - textAlign: TextAlign.center, - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - SizedBox( - width: 20, - ), - DropdownButtonHideUnderline( - child: Selector>( - selector: (_, previewStore) => previewStore.roles, - builder: (context, roles, _) { - return HMSDropDown( - dropDownItems: [ - DropdownMenuItem( - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/participants.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - height: 16, - ), - SizedBox( - width: 11, - ), - Text( - "Everyone", - style: GoogleFonts.inter( - fontWeight: FontWeight.w400, - fontSize: 12, - letterSpacing: 0.4, - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - ], - ), - value: "Everyone", - ), - DropdownMenuItem( - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/hand_outline.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - height: 16, - ), - SizedBox( - width: 11, - ), - Text( - "Raised Hand", - style: GoogleFonts.inter( - fontWeight: FontWeight.w400, - fontSize: 12, - letterSpacing: 0.4, - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - ], - ), - value: "Raised Hand", - ), - ...roles - .sortedBy((element) => - element.priority.toString()) - .map((role) => DropdownMenuItem( - child: Text( - "${role.name}", - overflow: TextOverflow.ellipsis, - maxLines: 1, - style: GoogleFonts.inter( - fontSize: 12, - color: iconColor), - ), - value: role.name, - )) - .toList(), - ], - dropdownButton: Container( - padding: EdgeInsets.only( - left: 10, right: 8, top: 4, bottom: 4), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - border: Border.all( - color: borderColor, - style: BorderStyle.solid, - width: 0.80)), - child: Row( - children: [ - Text( - valueChoose, - style: GoogleFonts.inter( - fontWeight: FontWeight.w400, - fontSize: 12, - letterSpacing: 0.4, - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - SizedBox( - width: 5, - ), - Icon(Icons.keyboard_arrow_down), - ], - ), - ), - buttonStyleData: - ButtonStyleData(width: 100, height: 35), - dropdownStyleData: DropdownStyleData( - width: - MediaQuery.of(context).size.width * 0.4, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: themeSurfaceColor), - offset: Offset(-10, -10)), - iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), - iconEnabledColor: iconColor, - ), - menuItemStyleData: MenuItemStyleData( - height: 45, - ), - selectedValue: valueChoose, - updateSelectedValue: _updateDropDownValue); - }), - ), - Expanded( - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - IconButton( - icon: SvgPicture.asset( - "assets/icons/close_button.svg", - width: 40, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ], - ), - ), - ], - ), - Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), - child: Divider( - color: dividerColor, - height: 5, - ), - ), - Selector, int>>( - selector: (_, previewStore) => - getFilteredPeers(valueChoose, previewStore.peers), - builder: (_, data, __) { - return Container( - height: MediaQuery.of(context).size.height * 0.65, - child: ListView.builder( - shrinkWrap: true, - itemCount: data.item2, - itemBuilder: (context, index) { - return ListTile( - horizontalTitleGap: 5, - contentPadding: EdgeInsets.zero, - leading: CircleAvatar( - backgroundColor: - Utilities.getBackgroundColour( - data.item1[index].name), - radius: 16, - child: Text( - Utilities.getAvatarTitle( - data.item1[index].name), - style: GoogleFonts.inter( - fontSize: 12, - color: themeDefaultColor, - fontWeight: FontWeight.w600)), - ), - title: Text( - data.item1[index].name, - maxLines: 1, - style: GoogleFonts.inter( - fontSize: 16, - color: themeDefaultColor, - letterSpacing: 0.15, - fontWeight: FontWeight.w600), - ), - subtitle: Text( - data.item1[index].role.name, - style: GoogleFonts.inter( - fontSize: 12, - color: themeSubHeadingColor, - letterSpacing: 0.40, - fontWeight: FontWeight.w400), - )); - }), - ); - }) - ], - ), - ), - ), - ), - ); - } -} diff --git a/example/lib/service/constant.dart b/example/lib/service/constant.dart deleted file mode 100644 index cd10a7c69..000000000 --- a/example/lib/service/constant.dart +++ /dev/null @@ -1,14 +0,0 @@ -//Class contains the constants used throughout the application -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; - -class Constant { - static String defaultMeetingLink = - "https://yogi.app.100ms.live/meeting/ssz-eqr-eaa"; - - static String meetingUrl = defaultMeetingLink; - static String meetingCode = ""; - static String streamingUrl = ""; - - static HMSLogLevel webRTCLogLevel = HMSLogLevel.ERROR; - static HMSLogLevel sdkLogLevel = HMSLogLevel.VERBOSE; -} diff --git a/packages/hms_room_kit/.gitignore b/packages/hms_room_kit/.gitignore new file mode 100644 index 000000000..88e9a8420 --- /dev/null +++ b/packages/hms_room_kit/.gitignore @@ -0,0 +1,37 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ + + +.flutter-plugins +.flutter-plugins-dependencies + + +android/local.properties \ No newline at end of file diff --git a/packages/hms_room_kit/.metadata b/packages/hms_room_kit/.metadata new file mode 100644 index 000000000..788b91db9 --- /dev/null +++ b/packages/hms_room_kit/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + channel: stable + +project_type: package diff --git a/packages/hms_room_kit/CHANGELOG.md b/packages/hms_room_kit/CHANGELOG.md new file mode 100644 index 000000000..2e6953633 --- /dev/null +++ b/packages/hms_room_kit/CHANGELOG.md @@ -0,0 +1,17 @@ +## 0.0.4 - 2023-08-01 + +- Fixed theming issues +- Fixed issues for flutter versions below 3.10.x +- Updated preview flow + +## 0.0.3 - 2023-07-20 + +- Updated asset path in prebuilt UI + +## 0.0.2 - 2023-07-19 + +- Updated Package's public headers + +## 0.0.1 - 2023-07-19 + +- Presenting 100ms Room Kit which provides simple & easy to use widgets to create immersive Live Streaming & Video Conferencing experiences in your apps. Take it for a spin! diff --git a/LICENSE b/packages/hms_room_kit/LICENSE similarity index 100% rename from LICENSE rename to packages/hms_room_kit/LICENSE diff --git a/packages/hms_room_kit/README.md b/packages/hms_room_kit/README.md new file mode 100644 index 000000000..a34bad82a --- /dev/null +++ b/packages/hms_room_kit/README.md @@ -0,0 +1,253 @@ +[![100ms-svg](https://user-images.githubusercontent.com/93931528/205858417-8c0a0d1b-2d46-4710-9316-7418092fd3d6.svg)](https://100ms.live/) + +[![HMSLive](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) +[![HMSLive Room Kit](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) +[![License](https://img.shields.io/github/license/100mslive/100ms-flutter)](https://www.100ms.live/) +[![Documentation](https://img.shields.io/badge/Read-Documentation-blue)](https://docs.100ms.live/flutter/v2/foundation/basics) +[![Discord](https://img.shields.io/discord/843749923060711464?label=Join%20on%20Discord)](https://100ms.live/discord) +[![Firebase](https://img.shields.io/badge/Download%20Android-Firebase-green)](https://appdistribution.firebase.dev/i/b623e5310929ab70) +[![TestFlight](https://img.shields.io/badge/Download%20iOS-TestFlight-blue)](https://testflight.apple.com/join/Uhzebmut) +[![Activity](https://img.shields.io/github/commit-activity/m/100mslive/100ms-flutter.svg)](https://github.com/100mslive/100ms-flutter/projects/1) +[![Register](https://img.shields.io/badge/Contact-Know%20More-blue)](https://dashboard.100ms.live/register) + +# 100ms Room Kit 🎉 + +A powerful prebuilt UI library for audio/video conferencing, live streaming, and one-to-one calls. +This package provides developers with a comprehensive set of tools and components to quickly integrate high-quality audio and video communication features into their Flutter applications. + +📖 Read the Complete Documentation here: https://www.100ms.live/docs/flutter/v2/guides/quickstart + +📲 Download the Sample iOS app here: + +🤖 Download the Sample Android app here: + +100ms Flutter apps are also released on the App Stores, you can download them here: + +📲 iOS app on Apple App Store: + +🤖 Android app on Google Play Store: + +## 🚂 Setup Guide + +1. Sign up on & visit the Developer tab to access your credentials. + +2. Get familiarized with [Tokens & Security here](https://www.100ms.live/docs/flutter/v2/foundation/security-and-tokens) + +3. Complete the steps in [Auth Token Quick Start Guide](https://www.100ms.live/docs/flutter/v2/guides/token) + +4. Get the HMSSDK via [pub.dev](https://pub.dev/packages/hms_room_kit). Add the `hms_room_kit` to your pubspec.yaml. + +``` +flutter pub add hms_room_kit +``` + +5. Import the `hms_room_kit` package wherever you wish to use it: + +```dart +import 'package:hms_room_kit/hmssdk_uikit.dart'; +``` + +6. Add the `HMSPrebuilt` widget in your widget tree to use the prebuilt ui with correct `roomCode` and desired prebuilt options. + +```dart +HMSPrebuilt( + roomCode: "abc-lmno-xyz", + hmsConfig: HMSPrebuiltOptions(userName: "John Appleseed"), +); +``` + +## Overview + +This guide will walk you through simple instructions to create a video conferencing app using 100ms Prebuilt and and test it using an emulator or your mobile phone. + +## Create a sample app + +This section contains instructions to create a simple Flutter video conferencing app. We will help you with instructions to understand the project setup and complete code sample to implement this quickly. + +### Prerequisites + +To complete this implementation for the Android platform, you must have the following: + +- A [100ms account](https://dashboard.100ms.live/register) if you don't have one already. +- [Flutter](https://docs.flutter.dev/get-started/install) `3.3.0` or higher +- Dart `2.12.0` or above +- Use [VS code](https://code.visualstudio.com/), [Android Studio](https://developer.android.com/studio), or any other IDE that supports Flutter. For more information on setting up an IDE, check [Flutter's official guide](https://docs.flutter.dev/get-started/editor). + +### Create a Flutter app + +Once you have the prerequisites, follow the steps below to create a Flutter app. This guide will use VS code, but you can use any IDE that supports Flutter. + +- Create a Flutter app using the terminal; you can get the [Flutter SDK](https://docs.flutter.dev/get-started/install/macos#get-sdk) and use the below command: + + ```bash section=createFlutterApp + flutter create my_app + ``` + +- Once the app is created, open it in VS code. + +### Add 100ms room kit to your project + +Once you have created a Flutter app, you must add the `hms_room_kit` package to your project. + +In project's `pubspec.yaml` file, under dependencies section add the following: + +```yaml section=InstallingTheDependencies +hms_room_kit: +``` + +- Run `flutter pub get` to download these dependencies to your app. + +### Application Setup + +#### For Android + +Please follow the below instructions to test the app for the Android Platform: + +1. Add minimum SDK version (`minSdkVersion 21`) in `android/app/build.gradle` file (inside `defaultConfig`). + +```json +... +defaultConfig { + ... + minSdkVersion 21 + ... +} +... +``` + +2. To add PIP support in your app manifest files, add: + +```xml + +``` + +3. For Auto Enter PIP support(below android 12) in your `MainActivity.kt` file add: + +```kotlin +override fun onUserLeaveHint() { + super.onUserLeaveHint() + // This should only work for android version above 8 since PIP is only supported after + // android 8 and will not be called after android 12 since it automatically gets handled by android. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + HMSPipAction.autoEnterPipMode(this) + } +} +``` + +4. For screenshare in your `MainActivity.kt` add: + +```kotlin +override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { +super.onActivityResult(requestCode, resultCode, data) + + if (requestCode == Constants.SCREEN_SHARE_INTENT_REQUEST_CODE && resultCode == Activity.RESULT_OK) { + data?.action = Constants.HMSSDK_RECEIVER + activity.sendBroadcast(data?.putExtra(Constants.METHOD_CALL, Constants.SCREEN_SHARE_REQUEST)) + } +} +``` + +5. Add the `FOREGROUND_SERVICE` permission in `AndroidManifest.xml`: + +```xml + +``` + +#### For iOS + +Please follow the below instructions to test the app for iOS Platform + +1. Add the target platform version as (`platform :ios, '12.0'`) in `ios/Podfile` + +```json +platform :ios, '12.0' +``` + +2. To add PIP support in your iOS app: + +- Minimum Requirements: + - Minimum iOS version required to support PiP is iOS 15 + - Minimum `hmssdk_flutter` SDK version required is 1.3.0 + - Your app should have [com.apple.developer.avfoundation.multitasking-camera-access)(https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_avfoundation_multitasking-camera-access) Entitlement to use PiP Mode. + +Your app needs to run on iOS 13.5 or later to use the entitlement. Without the entitlement, the system disables the camera access for your app. When your app enters PIP mode, it needs this entitlement to continue using the camera. + +After you receive permission from Apple, add the Entitlement to your app by opening the Entitlements file in Xcode. Add the key and set the corresponding value to `YES`. + +![Entitlements](https://www.100ms.live/docs/docs/v2/flutter-multitasking-camera-entitlement.png) + +3. To add screen share support in iOS app, checkout the docs [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/set-up-video-conferencing/screen-share#ios-setup) + +4. Pass the `iOSScreenshareConfig` in `HMSPrebuiltOptions` parameter of `HMSPrebuilt` widget to enable screen share in your app. + +```dart +// Pass the correct App Group & Preferred Extension parameters in HMSIOSScreenshareConfig class. +HMSPrebuilt( + roomCode: meetingLinkController.text.trim(), + options: HMSPrebuiltOptions( + iOSScreenshareConfig: HMSIOSScreenshareConfig( + appGroup: "appGroup", // App Group value linked to your Apple Developer Account + preferredExtension: "preferredExtension" // Name of the Broadcast Upload Extension Target created in Xcode +))); +``` + +### Add the 100ms Room Kit to your App + +We will be adding a join button to the app, on the button click we will route the user to the 100ms room kit. To do this, follow the steps below: + +1. Add the below code for `Join` button in `lib/main.dart` file: + +```dart +Scaffold( + body: Center( + child: ElevatedButton( + style: ButtonStyle( + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ))), + onPressed: () async => { + ///Here will route the user to the 100ms room kit + }, + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 20, horizontal: 20), + child: Text( + 'Join', + style: TextStyle(fontSize: 20), + ), + ), + ), + ), +); +``` + +2. Update the code in the `onPressed` method of the `Join` button by following code: + +```dart +onPressed: () async => { + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const HMSPrebuilt(roomCode: "abc-lmno-xyz") + ), + ), +} +``` + +That's it. You can now use the amazing Prebuilt UI in your application. + +📖 Do refer the Complete Documentation Guide [available here](https://www.100ms.live/docs/flutter/v2/guides/quickstart). + +🏃‍♀ī¸ Checkout the Example app implementation [available here](https://github.com/100mslive/100ms-flutter/tree/main/packages/hmssdk_flutter/example). + +🚀 We have added explanations & recommended usage guide for different features, UI Layouts, Data Store, etc in [Example app ReadMe](https://github.com/100mslive/100ms-flutter/blob/main/packages/hmssdk_flutter/example/README.md). + +100ms Flutter apps are released on the App Stores, you can download them here: + +📲 iOS app on Apple App Store: + +🤖 Android app on Google Play Store: diff --git a/packages/hms_room_kit/analysis_options.yaml b/packages/hms_room_kit/analysis_options.yaml new file mode 100644 index 000000000..5bcd91a2b --- /dev/null +++ b/packages/hms_room_kit/analysis_options.yaml @@ -0,0 +1,3 @@ +include: package:flutter_lints/flutter.yaml +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/hms_room_kit/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/packages/hms_room_kit/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java new file mode 100644 index 000000000..d007606a4 --- /dev/null +++ b/packages/hms_room_kit/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java @@ -0,0 +1,23 @@ +package io.flutter.plugins; + +import io.flutter.plugin.common.PluginRegistry; + +/** + * Generated file. Do not edit. + */ +public final class GeneratedPluginRegistrant { + public static void registerWith(PluginRegistry registry) { + if (alreadyRegisteredWith(registry)) { + return; + } + } + + private static boolean alreadyRegisteredWith(PluginRegistry registry) { + final String key = GeneratedPluginRegistrant.class.getCanonicalName(); + if (registry.hasPlugin(key)) { + return true; + } + registry.registrarFor(key); + return false; + } +} diff --git a/packages/hms_room_kit/example/.gitignore b/packages/hms_room_kit/example/.gitignore new file mode 100644 index 000000000..24476c5d1 --- /dev/null +++ b/packages/hms_room_kit/example/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/packages/hms_room_kit/example/.metadata b/packages/hms_room_kit/example/.metadata new file mode 100644 index 000000000..f25b3d475 --- /dev/null +++ b/packages/hms_room_kit/example/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + - platform: android + create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + - platform: ios + create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + - platform: linux + create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + - platform: macos + create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + - platform: web + create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + - platform: windows + create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf + + # 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/packages/hms_room_kit/example/README.md b/packages/hms_room_kit/example/README.md new file mode 100644 index 000000000..213e4166a --- /dev/null +++ b/packages/hms_room_kit/example/README.md @@ -0,0 +1 @@ +This contains a sample application built using `hms_room_kit` diff --git a/packages/hms_room_kit/example/analysis_options.yaml b/packages/hms_room_kit/example/analysis_options.yaml new file mode 100644 index 000000000..fd16f9219 --- /dev/null +++ b/packages/hms_room_kit/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-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/example/android/.gitignore b/packages/hms_room_kit/example/android/.gitignore similarity index 91% rename from example/android/.gitignore rename to packages/hms_room_kit/example/android/.gitignore index 0a741cb43..6f568019d 100644 --- a/example/android/.gitignore +++ b/packages/hms_room_kit/example/android/.gitignore @@ -9,3 +9,5 @@ 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/packages/hms_room_kit/example/android/app/build.gradle b/packages/hms_room_kit/example/android/app/build.gradle new file mode 100644 index 000000000..b330c745b --- /dev/null +++ b/packages/hms_room_kit/example/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.example.sample_application" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-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/packages/hms_room_kit/example/android/app/src/debug/AndroidManifest.xml b/packages/hms_room_kit/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..a5abc3ca3 --- /dev/null +++ b/packages/hms_room_kit/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/packages/hms_room_kit/example/android/app/src/main/AndroidManifest.xml b/packages/hms_room_kit/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..9d6f73398 --- /dev/null +++ b/packages/hms_room_kit/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + diff --git a/example/android/app/src/main/kotlin/live/hms/flutter/MainActivity.kt b/packages/hms_room_kit/example/android/app/src/main/kotlin/com/example/sample_application/MainActivity.kt similarity index 84% rename from example/android/app/src/main/kotlin/live/hms/flutter/MainActivity.kt rename to packages/hms_room_kit/example/android/app/src/main/kotlin/com/example/sample_application/MainActivity.kt index 83a6af844..43bb20aee 100644 --- a/example/android/app/src/main/kotlin/live/hms/flutter/MainActivity.kt +++ b/packages/hms_room_kit/example/android/app/src/main/kotlin/com/example/sample_application/MainActivity.kt @@ -1,4 +1,4 @@ -package live.hms.flutter +package com.example.sample_application import android.app.Activity import android.content.Intent @@ -10,19 +10,12 @@ import live.hms.hmssdk_flutter.Constants import live.hms.hmssdk_flutter.methods.HMSPipAction class MainActivity : FlutterActivity() { - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) - if (requestCode == Constants.SCREEN_SHARE_INTENT_REQUEST_CODE && resultCode == Activity.RESULT_OK) { data?.action = Constants.HMSSDK_RECEIVER activity.sendBroadcast(data?.putExtra(Constants.METHOD_CALL, Constants.SCREEN_SHARE_REQUEST)) } - - if (requestCode == Constants.AUDIO_SHARE_INTENT_REQUEST_CODE && resultCode == Activity.RESULT_OK) { - data?.action = Constants.HMSSDK_RECEIVER - activity.sendBroadcast(data?.putExtra(Constants.METHOD_CALL, Constants.AUDIO_SHARE_REQUEST)) - } } override fun onPictureInPictureModeChanged( diff --git a/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/hms_room_kit/example/android/app/src/main/res/drawable-v21/launch_background.xml similarity index 100% rename from example/android/app/src/main/res/drawable-v21/launch_background.xml rename to packages/hms_room_kit/example/android/app/src/main/res/drawable-v21/launch_background.xml diff --git a/example/android/app/src/main/res/drawable/launch_background.xml b/packages/hms_room_kit/example/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from example/android/app/src/main/res/drawable/launch_background.xml rename to packages/hms_room_kit/example/android/app/src/main/res/drawable/launch_background.xml diff --git a/packages/hms_room_kit/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..64f764c13 Binary files /dev/null and b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/hms_room_kit/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..5aa38115a Binary files /dev/null and b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..c7142758e Binary files /dev/null and b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..5f6c23978 Binary files /dev/null and b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..d65690717 Binary files /dev/null and b/packages/hms_room_kit/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/hms_room_kit/example/android/app/src/main/res/values-night/styles.xml b/packages/hms_room_kit/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/packages/hms_room_kit/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/hms_room_kit/example/android/app/src/main/res/values/styles.xml b/packages/hms_room_kit/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/packages/hms_room_kit/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/hms_room_kit/example/android/app/src/profile/AndroidManifest.xml b/packages/hms_room_kit/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..a5abc3ca3 --- /dev/null +++ b/packages/hms_room_kit/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/packages/hms_room_kit/example/android/build.gradle b/packages/hms_room_kit/example/android/build.gradle new file mode 100644 index 000000000..b9cf07ce5 --- /dev/null +++ b/packages/hms_room_kit/example/android/build.gradle @@ -0,0 +1,29 @@ +buildscript { + ext.kotlin_version = '+' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.2.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/packages/hms_room_kit/example/android/gradle.properties similarity index 100% rename from android/gradle.properties rename to packages/hms_room_kit/example/android/gradle.properties diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/hms_room_kit/example/android/gradle/wrapper/gradle-wrapper.properties old mode 100755 new mode 100644 similarity index 79% rename from example/android/gradle/wrapper/gradle-wrapper.properties rename to packages/hms_room_kit/example/android/gradle/wrapper/gradle-wrapper.properties index 562c5e444..8049c684f --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/hms_room_kit/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip diff --git a/example/android/settings.gradle b/packages/hms_room_kit/example/android/settings.gradle similarity index 100% rename from example/android/settings.gradle rename to packages/hms_room_kit/example/android/settings.gradle diff --git a/packages/hms_room_kit/example/assets/welcome.svg b/packages/hms_room_kit/example/assets/welcome.svg new file mode 100644 index 000000000..9ea7b3f3c --- /dev/null +++ b/packages/hms_room_kit/example/assets/welcome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/example/ios/.gitignore b/packages/hms_room_kit/example/ios/.gitignore new file mode 100644 index 000000000..7a7f9873a --- /dev/null +++ b/packages/hms_room_kit/example/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/example/ios/Flutter/AppFrameworkInfo.plist b/packages/hms_room_kit/example/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from example/ios/Flutter/AppFrameworkInfo.plist rename to packages/hms_room_kit/example/ios/Flutter/AppFrameworkInfo.plist diff --git a/example/ios/Flutter/Debug.xcconfig b/packages/hms_room_kit/example/ios/Flutter/Debug.xcconfig similarity index 100% rename from example/ios/Flutter/Debug.xcconfig rename to packages/hms_room_kit/example/ios/Flutter/Debug.xcconfig diff --git a/example/ios/Flutter/Release.xcconfig b/packages/hms_room_kit/example/ios/Flutter/Release.xcconfig similarity index 100% rename from example/ios/Flutter/Release.xcconfig rename to packages/hms_room_kit/example/ios/Flutter/Release.xcconfig diff --git a/packages/hms_room_kit/example/ios/Podfile b/packages/hms_room_kit/example/ios/Podfile new file mode 100644 index 000000000..10f3c9b47 --- /dev/null +++ b/packages/hms_room_kit/example/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '13.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/packages/hms_room_kit/example/ios/Podfile.lock b/packages/hms_room_kit/example/ios/Podfile.lock new file mode 100644 index 000000000..5fc050f68 --- /dev/null +++ b/packages/hms_room_kit/example/ios/Podfile.lock @@ -0,0 +1,84 @@ +PODS: + - Flutter (1.0.0) + - flutter_foreground_task (0.0.1): + - Flutter + - HMSAnalyticsSDK (0.0.2) + - HMSBroadcastExtensionSDK (0.0.9) + - HMSHLSPlayerSDK (0.0.2): + - HMSAnalyticsSDK (= 0.0.2) + - HMSSDK (0.9.11): + - HMSAnalyticsSDK (= 0.0.2) + - HMSWebRTC (= 1.0.5116) + - hmssdk_flutter (1.7.5): + - Flutter + - HMSBroadcastExtensionSDK (= 0.0.9) + - HMSHLSPlayerSDK (= 0.0.2) + - HMSSDK (= 0.9.11) + - HMSWebRTC (1.0.5116) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - permission_handler_apple (9.1.1): + - Flutter + - share_plus (0.0.1): + - Flutter + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + - url_launcher_ios (0.0.1): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - flutter_foreground_task (from `.symlinks/plugins/flutter_foreground_task/ios`) + - hmssdk_flutter (from `.symlinks/plugins/hmssdk_flutter/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - share_plus (from `.symlinks/plugins/share_plus/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + +SPEC REPOS: + trunk: + - HMSAnalyticsSDK + - HMSBroadcastExtensionSDK + - HMSHLSPlayerSDK + - HMSSDK + - HMSWebRTC + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + flutter_foreground_task: + :path: ".symlinks/plugins/flutter_foreground_task/ios" + hmssdk_flutter: + :path: ".symlinks/plugins/hmssdk_flutter/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + share_plus: + :path: ".symlinks/plugins/share_plus/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + url_launcher_ios: + :path: ".symlinks/plugins/url_launcher_ios/ios" + +SPEC CHECKSUMS: + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_foreground_task: 21ef182ab0a29a3005cc72cd70e5f45cb7f7f817 + HMSAnalyticsSDK: 4d2a88a729b1eb42f3d25f217c28937ec318a5b7 + HMSBroadcastExtensionSDK: d80fe325f6c928bd8e5176290b5a4b7ae15d6fbb + HMSHLSPlayerSDK: 6a54ad4d12f3dc2270d1ecd24019d71282a4f6a3 + HMSSDK: 77720372c9d6378f1b721cb0fb3553b3d1401a9b + hmssdk_flutter: 01116f8d3da3a0ebde0976151b37f9628b26d494 + HMSWebRTC: ae54e9dd91b869051b283b43b14f57d43b7bf8e1 + path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 + permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 + share_plus: 599aa54e4ea31d4b4c0e9c911bcc26c55e791028 + shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 + url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 + +PODFILE CHECKSUM: cc1f88378b4bfcf93a6ce00d2c587857c6008d3b + +COCOAPODS: 1.12.1 diff --git a/packages/hms_room_kit/example/ios/Runner.xcodeproj/project.pbxproj b/packages/hms_room_kit/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..00abbc8b9 --- /dev/null +++ b/packages/hms_room_kit/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,560 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 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 */; }; + D22612B28535B3185B61B2D3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E3B440A38A4705AD74A74573 /* Pods_Runner.framework */; }; +/* 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 = ""; }; + 19FC502AB340E89B1CF88ABA /* 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 = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; 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 = ""; }; + 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 = ""; }; + DC96ADBF3417A15D362FF5C7 /* 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 = ""; }; + E3B440A38A4705AD74A74573 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FEFB76AFAB2E0005E3A1E48C /* 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 = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D22612B28535B3185B61B2D3 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 006E2DB19725F690986C25DC /* Frameworks */ = { + isa = PBXGroup; + children = ( + E3B440A38A4705AD74A74573 /* 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 */, + 9FB4F395DB3A70D8818F423B /* Pods */, + 006E2DB19725F690986C25DC /* 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 = ""; + }; + 9FB4F395DB3A70D8818F423B /* Pods */ = { + isa = PBXGroup; + children = ( + FEFB76AFAB2E0005E3A1E48C /* Pods-Runner.debug.xcconfig */, + 19FC502AB340E89B1CF88ABA /* Pods-Runner.release.xcconfig */, + DC96ADBF3417A15D362FF5C7 /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + D90A52CC2080A0DFD57BD154 /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + CCB37AEAA67AD93B2A555906 /* [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 */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + 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"; + }; + CCB37AEAA67AD93B2A555906 /* [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; + }; + D90A52CC2080A0DFD57BD154 /* [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; + }; +/* 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)"; + DEVELOPMENT_TEAM = 5N85PP82A9; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = live.100ms.flutter; + 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)"; + DEVELOPMENT_TEAM = 5N85PP82A9; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = live.100ms.flutter; + 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)"; + DEVELOPMENT_TEAM = 5N85PP82A9; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = live.100ms.flutter; + 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/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/hms_room_kit/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to packages/hms_room_kit/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/hms_room_kit/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to packages/hms_room_kit/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/hms_room_kit/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to packages/hms_room_kit/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/hms_room_kit/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to packages/hms_room_kit/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/hms_room_kit/example/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from example/ios/Runner.xcworkspace/contents.xcworkspacedata rename to packages/hms_room_kit/example/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/hms_room_kit/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to packages/hms_room_kit/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/hms_room_kit/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to packages/hms_room_kit/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/example/ios/Runner/AppDelegate.swift b/packages/hms_room_kit/example/ios/Runner/AppDelegate.swift similarity index 100% rename from example/ios/Runner/AppDelegate.swift rename to packages/hms_room_kit/example/ios/Runner/AppDelegate.swift diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..e882ab988 --- /dev/null +++ b/packages/hms_room_kit/example/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/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 000000000..6b3f08fb3 Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 000000000..7353c41ec Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 000000000..96b3bb0ee Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 000000000..6ed2d933e Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 000000000..4a1a34e1e Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 000000000..fe730945a Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 000000000..abc1056df Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 000000000..96b3bb0ee Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 000000000..3a337733a Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 000000000..0ec303439 Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 000000000..c010541e1 Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 000000000..cda9be009 Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 000000000..1148cc633 Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 000000000..0467bf12a Binary files /dev/null and b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..781d7cdca --- /dev/null +++ b/packages/hms_room_kit/example/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/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 97% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md index 89c2725b7..b5b843ad3 100644 --- a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ b/packages/hms_room_kit/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -2,4 +2,4 @@ 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 +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. diff --git a/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/hms_room_kit/example/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from example/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to packages/hms_room_kit/example/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/example/ios/Runner/Base.lproj/Main.storyboard b/packages/hms_room_kit/example/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from example/ios/Runner/Base.lproj/Main.storyboard rename to packages/hms_room_kit/example/ios/Runner/Base.lproj/Main.storyboard diff --git a/packages/hms_room_kit/example/ios/Runner/Info.plist b/packages/hms_room_kit/example/ios/Runner/Info.plist new file mode 100644 index 000000000..192617682 --- /dev/null +++ b/packages/hms_room_kit/example/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Sample Application + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + sample_application + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/packages/hms_room_kit/example/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from example/ios/Runner/Runner-Bridging-Header.h rename to packages/hms_room_kit/example/ios/Runner/Runner-Bridging-Header.h diff --git a/packages/hms_room_kit/example/lib/main.dart b/packages/hms_room_kit/example/lib/main.dart new file mode 100644 index 000000000..ff64e6c74 --- /dev/null +++ b/packages/hms_room_kit/example/lib/main.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: const MyHomePage(), + themeMode: ThemeMode.dark, + darkTheme: ThemeData( + bottomSheetTheme: BottomSheetThemeData( + backgroundColor: themeBottomSheetColor, elevation: 5), + brightness: Brightness.dark, + primaryColor: const Color.fromARGB(255, 13, 107, 184), + scaffoldBackgroundColor: Colors.black), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({super.key}); + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + TextEditingController meetingLinkController = TextEditingController(); + TextEditingController nameController = TextEditingController(); + + @override + Widget build(BuildContext context) { + double width = MediaQuery.of(context).size.width; + return SafeArea( + child: Scaffold( + body: Center( + child: SingleChildScrollView( + child: Column( + children: [ + SvgPicture.asset( + 'assets/welcome.svg', + width: width * 0.95, + ), + const SizedBox( + height: 20, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 18), + child: Text('Experience the power of 100ms', + textAlign: TextAlign.center, + style: GoogleFonts.inter( + letterSpacing: 0.25, + color: themeDefaultColor, + height: 1.17, + fontSize: 34, + fontWeight: FontWeight.w600)), + ), + const SizedBox( + height: 8, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 27), + child: Text('Try out the HMS Prebuilt SDK', + textAlign: TextAlign.center, + style: GoogleFonts.inter( + letterSpacing: 0.5, + color: themeSubHeadingColor, + height: 1.5, + fontSize: 16, + fontWeight: FontWeight.w400)), + ), + ], + ), + ), + )), + ); + } +} diff --git a/packages/hms_room_kit/example/pubspec.lock b/packages/hms_room_kit/example/pubspec.lock new file mode 100644 index 000000000..d1883cd5c --- /dev/null +++ b/packages/hms_room_kit/example/pubspec.lock @@ -0,0 +1,768 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + sha256: "49b1fad315e57ab0bbc15bcbb874e83116a1d78f77ebd500a4af6c9407d6b28e" + url: "https://pub.dev" + source: hosted + version: "3.3.8" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + badges: + dependency: transitive + description: + name: badges + sha256: "6e7f3ec561ec08f47f912cfe349d4a1707afdc8dda271e17b046aa6d42c89e77" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + bot_toast: + dependency: transitive + description: + name: bot_toast + sha256: db6950851aab00ef04b386eb3c76c83739eaffcb6b80d0dc42a675ef7584623b + url: "https://pub.dev" + source: hosted + version: "4.0.4" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.dev" + source: hosted + version: "1.17.2" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb + url: "https://pub.dev" + source: hosted + version: "0.3.3+5" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + url: "https://pub.dev" + source: hosted + version: "1.0.6" + dots_indicator: + dependency: transitive + description: + name: dots_indicator + sha256: "58b6a365744aa62aa1b70c4ea29e5106fbe064f5edaf7e9652e9b856edbfd9bb" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + draggable_widget: + dependency: transitive + description: + name: draggable_widget + sha256: d7f6b1eb9cb79b724b02dc2ac699f82d1ab20b99920b8b1f25812054d72ca803 + url: "https://pub.dev" + source: hosted + version: "2.0.0" + dropdown_button2: + dependency: transitive + description: + name: dropdown_button2 + sha256: "107444581478342c6511040c2eb52850748400df4f3295df3da8be75693180a5" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + url: "https://pub.dev" + source: hosted + version: "2.0.2" + file: + dependency: transitive + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_foreground_task: + dependency: transitive + description: + name: flutter_foreground_task + sha256: "501d34957ade7c159b3d44832428a4ed9b2b6ffcff17817f0522a7b7229fcb6c" + url: "https://pub.dev" + source: hosted + version: "6.1.1" + flutter_linkify: + dependency: transitive + description: + name: flutter_linkify + sha256: "74669e06a8f358fee4512b4320c0b80e51cffc496607931de68d28f099254073" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + url: "https://pub.dev" + source: hosted + version: "2.0.3" + flutter_staggered_grid_view: + dependency: transitive + description: + name: flutter_staggered_grid_view + sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07" + url: "https://pub.dev" + source: hosted + version: "0.6.2" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: f991fdb1533c3caeee0cdc14b04f50f0c3916f0dbcbc05237ccbe4e3c6b93f3f + url: "https://pub.dev" + source: hosted + version: "2.0.5" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + focus_detector: + dependency: transitive + description: + name: focus_detector + sha256: "05e32d9dd378cd54f1a3f9ce813c05156f28eb83f8e68f5bf1a37e9cdb21af1c" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6" + url: "https://pub.dev" + source: hosted + version: "4.0.4" + hms_room_kit: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "0.2.0" + hmssdk_flutter: + dependency: transitive + description: + path: "../../hmssdk_flutter" + relative: true + source: path + version: "1.7.6" + http: + dependency: transitive + description: + name: http + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + url: "https://pub.dev" + source: hosted + version: "0.13.6" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + intl: + dependency: transitive + description: + name: intl + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + url: "https://pub.dev" + source: hosted + version: "0.18.1" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" + linkify: + dependency: transitive + description: + name: linkify + sha256: "4139ea77f4651ab9c315b577da2dd108d9aa0bd84b5d03d33323f1970c645832" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + lints: + dependency: transitive + description: + name: lints + sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + lottie: + dependency: transitive + description: + name: lottie + sha256: "23522951540d20a57a60202ed7022e6376bed206a4eee1c347a91f58bd57eb9f" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + meta: + dependency: transitive + description: + name: meta + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + mime: + dependency: transitive + description: + name: mime + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" + source: hosted + version: "1.0.4" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + path: + dependency: transitive + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" + source: hosted + version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa + url: "https://pub.dev" + source: hosted + version: "2.1.1" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" + url: "https://pub.dev" + source: hosted + version: "2.3.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + url: "https://pub.dev" + source: hosted + version: "2.2.1" + permission_handler: + dependency: transitive + description: + name: permission_handler + sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" + url: "https://pub.dev" + source: hosted + version: "10.4.3" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: d74e77a5ecd38649905db0a7d05ef16bed42ff263b9efb73ed794317c5764ec3 + url: "https://pub.dev" + source: hosted + version: "10.3.4" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" + url: "https://pub.dev" + source: hosted + version: "9.1.4" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" + url: "https://pub.dev" + source: hosted + version: "3.11.3" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 + url: "https://pub.dev" + source: hosted + version: "0.1.3" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.dev" + source: hosted + version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d + url: "https://pub.dev" + source: hosted + version: "2.1.6" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" + source: hosted + version: "3.7.3" + provider: + dependency: transitive + description: + name: provider + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.dev" + source: hosted + version: "6.0.5" + share_plus: + dependency: transitive + description: + name: share_plus + sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" + url: "https://pub.dev" + source: hosted + version: "7.1.0" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7" + url: "https://pub.dev" + source: hosted + version: "3.3.0" + shared_preferences: + dependency: transitive + description: + name: shared_preferences + sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac + url: "https://pub.dev" + source: hosted + version: "2.2.1" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" + url: "https://pub.dev" + source: hosted + version: "2.2.1" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" + url: "https://pub.dev" + source: hosted + version: "2.3.4" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a + url: "https://pub.dev" + source: hosted + version: "2.3.1" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a + url: "https://pub.dev" + source: hosted + version: "2.3.1" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf + url: "https://pub.dev" + source: hosted + version: "2.2.1" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f + url: "https://pub.dev" + source: hosted + version: "2.3.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" + source: hosted + version: "1.11.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + url: "https://pub.dev" + source: hosted + version: "0.6.0" + tuple: + dependency: transitive + description: + name: tuple + sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 + url: "https://pub.dev" + source: hosted + version: "2.0.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + url_launcher: + dependency: transitive + description: + name: url_launcher + sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + url: "https://pub.dev" + source: hosted + version: "6.1.11" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330 + url: "https://pub.dev" + source: hosted + version: "6.1.0" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f" + url: "https://pub.dev" + source: hosted + version: "6.1.5" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e + url: "https://pub.dev" + source: hosted + version: "3.0.6" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88 + url: "https://pub.dev" + source: hosted + version: "3.0.7" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: ba140138558fcc3eead51a1c42e92a9fb074a1b1149ed3c73e66035b2ccd94f2 + url: "https://pub.dev" + source: hosted + version: "2.0.19" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069" + url: "https://pub.dev" + source: hosted + version: "3.0.8" + uuid: + dependency: transitive + description: + name: uuid + sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + url: "https://pub.dev" + source: hosted + version: "3.0.7" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: ea8d3fc7b2e0f35de38a7465063ecfcf03d8217f7962aa2a6717132cb5d43a79 + url: "https://pub.dev" + source: hosted + version: "1.1.5" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: a5eaa5d19e123ad4f61c3718ca1ed921c4e6254238d9145f82aa214955d9aced + url: "https://pub.dev" + source: hosted + version: "1.1.5" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "15edc42f7eaa478ce854eaf1fbb9062a899c0e4e56e775dd73b7f4709c97c4ca" + url: "https://pub.dev" + source: hosted + version: "1.1.5" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + visibility_detector: + dependency: transitive + description: + name: visibility_detector + sha256: ec932527913f32f65aa01d3a393504240b9e9021ecc77123f017755605e48832 + url: "https://pub.dev" + source: hosted + version: "0.2.2" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" + win32: + dependency: transitive + description: + name: win32 + sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" + url: "https://pub.dev" + source: hosted + version: "4.1.4" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + xml: + dependency: transitive + description: + name: xml + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + url: "https://pub.dev" + source: hosted + version: "6.2.2" +sdks: + dart: ">=3.1.0-185.0.dev <4.0.0" + flutter: ">=3.7.0" diff --git a/packages/hms_room_kit/example/pubspec.yaml b/packages/hms_room_kit/example/pubspec.yaml new file mode 100644 index 000000000..601617bdc --- /dev/null +++ b/packages/hms_room_kit/example/pubspec.yaml @@ -0,0 +1,94 @@ +name: sample_application +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: 0.2.0 + +environment: + sdk: ">=2.19.6 <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 + + flutter_svg: + google_fonts: + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 + hms_room_kit: + path: ../ +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^2.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + assets: + - assets/ + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # 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: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/packages/hms_room_kit/example/test/widget_test.dart b/packages/hms_room_kit/example/test/widget_test.dart new file mode 100644 index 000000000..2ab15c9b3 --- /dev/null +++ b/packages/hms_room_kit/example/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:sample_application/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/packages/hms_room_kit/ios/Runner/GeneratedPluginRegistrant.h b/packages/hms_room_kit/ios/Runner/GeneratedPluginRegistrant.h new file mode 100644 index 000000000..7a8909271 --- /dev/null +++ b/packages/hms_room_kit/ios/Runner/GeneratedPluginRegistrant.h @@ -0,0 +1,19 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GeneratedPluginRegistrant_h +#define GeneratedPluginRegistrant_h + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GeneratedPluginRegistrant : NSObject ++ (void)registerWithRegistry:(NSObject*)registry; +@end + +NS_ASSUME_NONNULL_END +#endif /* GeneratedPluginRegistrant_h */ diff --git a/packages/hms_room_kit/ios/Runner/GeneratedPluginRegistrant.m b/packages/hms_room_kit/ios/Runner/GeneratedPluginRegistrant.m new file mode 100644 index 000000000..efe65eccc --- /dev/null +++ b/packages/hms_room_kit/ios/Runner/GeneratedPluginRegistrant.m @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#import "GeneratedPluginRegistrant.h" + +@implementation GeneratedPluginRegistrant + ++ (void)registerWithRegistry:(NSObject*)registry { +} + +@end diff --git a/packages/hms_room_kit/lib/hms_room_kit.dart b/packages/hms_room_kit/lib/hms_room_kit.dart new file mode 100644 index 000000000..3a1341a7f --- /dev/null +++ b/packages/hms_room_kit/lib/hms_room_kit.dart @@ -0,0 +1,26 @@ +///This file contains the exports for the hms_room_kit package + +library hmssdk_uikit; + +/// Prebuilt exports +export 'package:hms_room_kit/hms_room_kit.dart'; +export 'package:hms_room_kit/src/hms_prebuilt.dart'; +export 'package:hms_room_kit/src/hms_prebuilt_options.dart'; + +// Prebuilt Utility exports +export 'package:hms_room_kit/src/common/app_color.dart'; +export 'package:hms_room_kit/src/common/constants.dart'; +export 'package:hms_room_kit/src/common/utility_functions.dart'; +export 'package:hms_room_kit/src/service/app_debug_config.dart'; +export 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; + +/// HMSSDK exports +export 'package:hmssdk_flutter/src/model/hms_ios_screenshare_config.dart'; +export 'package:hmssdk_flutter/src/enum/hms_audio_mode.dart'; + +/// UI Component exports +export 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +export 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; + +// UI Dialog exports +export 'package:hms_room_kit/src/widgets/app_dialogs/audio_mode_select_dialog.dart'; diff --git a/packages/hms_room_kit/lib/src/assets/icons/airplay.svg b/packages/hms_room_kit/lib/src/assets/icons/airplay.svg new file mode 100644 index 000000000..5bb9ee8f8 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/airplay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/alert.svg b/packages/hms_room_kit/lib/src/assets/icons/alert.svg new file mode 100644 index 000000000..0c6f71753 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/alert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/arrow.svg b/packages/hms_room_kit/lib/src/assets/icons/arrow.svg new file mode 100644 index 000000000..40cd50ff7 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/aspect_ratio.svg b/packages/hms_room_kit/lib/src/assets/icons/aspect_ratio.svg new file mode 100644 index 000000000..5ab9d934d --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/aspect_ratio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/audio-level.json b/packages/hms_room_kit/lib/src/assets/icons/audio-level.json new file mode 100644 index 000000000..0d350c2c6 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/audio-level.json @@ -0,0 +1,1271 @@ +{ + "v": "5.7.5", + "fr": 100, + "ip": 0, + "op": 220.00000000000003, + "w": 80, + "h": 80, + "nm": "Comp 1", + "ddd": 0, + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "Group 1", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 2 }, + "r": { "a": 0, "k": 0, "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 2 }, + "s": { "a": 0, "k": [100, 100], "ix": 2 } + }, + "ao": 0, + "hd": false, + "shapes": [ + { + "ty": "gr", + "hd": false, + "it": [ + { + "ty": "sh", + "hd": false, + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "t": 32, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.885], + [16.25, 23.948] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 48, + "s": [ + { + "c": false, + "v": [ + [16.25, 11.729], + [16.25, 36.729] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 64, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.885], + [16.25, 23.948] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 76, + "s": [ + { + "c": false, + "v": [ + [16.25, 11.729], + [16.25, 36.729] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 84, + "s": [ + { + "c": false, + "v": [ + [16.25, 14.768], + [16.25, 33.534] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 92, + "s": [ + { + "c": false, + "v": [ + [16.25, 11.729], + [16.25, 36.729] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 100, + "s": [ + { + "c": false, + "v": [ + [16.25, 14.768], + [16.25, 33.534] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 120, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.885], + [16.25, 23.948] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 124, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.885], + [16.25, 23.948] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 132, + "s": [ + { + "c": false, + "v": [ + [16.25, 11.729], + [16.25, 36.729] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 148, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.885], + [16.25, 23.948] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 160, + "s": [ + { + "c": false, + "v": [ + [16.25, 11.729], + [16.25, 36.729] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 168, + "s": [ + { + "c": false, + "v": [ + [16.25, 14.768], + [16.25, 33.534] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 176, + "s": [ + { + "c": false, + "v": [ + [16.25, 11.729], + [16.25, 36.729] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 184, + "s": [ + { + "c": false, + "v": [ + [16.25, 14.768], + [16.25, 33.534] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 200, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.885], + [16.25, 23.948] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + } + ], + "ix": 2 + } + }, + { + "ty": "st", + "c": { "a": 0, "k": [1, 1, 1], "ix": 2 }, + "o": { "a": 0, "k": 100, "ix": 2 }, + "w": { "a": 0, "k": 6.5, "ix": 2 }, + "hd": false, + "lc": 2, + "lj": 2 + }, + { + "ty": "tm", + "s": { "a": 0, "k": 0, "ix": 2 }, + "e": { "a": 0, "k": 100, "ix": 2 }, + "o": { "a": 0, "k": 0, "ix": 2 }, + "m": 1, + "hd": false + }, + { + "ty": "tr", + "hd": false, + "p": { "a": 0, "k": [36.75, 15.8489990234375], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 2 }, + "s": { "a": 0, "k": [100, 100], "ix": 2 }, + "r": { "a": 0, "k": 0, "ix": 2 }, + "o": { "a": 0, "k": 100, "ix": 2 }, + "sk": { "a": 0, "k": 0, "ix": 2 }, + "sa": { "a": 0, "k": 0, "ix": 2 } + } + ] + } + ], + "ip": 0, + "op": 220.00000000000003, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "Group 1", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 2 }, + "r": { "a": 0, "k": 0, "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 2 }, + "s": { "a": 0, "k": [100, 100], "ix": 2 } + }, + "ao": 0, + "hd": false, + "shapes": [ + { + "ty": "gr", + "hd": false, + "it": [ + { + "ty": "sh", + "hd": false, + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "t": 28, + "s": [ + { + "c": false, + "v": [ + [16.25, 20.783], + [16.25, 20.814] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 52, + "s": [ + { + "c": false, + "v": [ + [16.25, 13.396], + [16.25, 29.521] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 60, + "s": [ + { + "c": false, + "v": [ + [16.25, 20.783], + [16.25, 20.814] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 80, + "s": [ + { + "c": false, + "v": [ + [16.25, 13.396], + [16.25, 29.521] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 88, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.242], + [16.25, 27.344] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 96, + "s": [ + { + "c": false, + "v": [ + [16.25, 13.396], + [16.25, 29.521] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 104, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.242], + [16.25, 27.344] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 116, + "s": [ + { + "c": false, + "v": [ + [16.25, 20.783], + [16.25, 20.814] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 124, + "s": [ + { + "c": false, + "v": [ + [16.25, 20.783], + [16.25, 20.814] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 136, + "s": [ + { + "c": false, + "v": [ + [16.25, 13.396], + [16.25, 29.521] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 144, + "s": [ + { + "c": false, + "v": [ + [16.25, 20.783], + [16.25, 20.814] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 164, + "s": [ + { + "c": false, + "v": [ + [16.25, 13.396], + [16.25, 29.521] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 172, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.242], + [16.25, 27.344] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 180, + "s": [ + { + "c": false, + "v": [ + [16.25, 13.396], + [16.25, 29.521] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 188, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.242], + [16.25, 27.344] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 196, + "s": [ + { + "c": false, + "v": [ + [16.25, 20.783], + [16.25, 20.814] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + } + ], + "ix": 2 + } + }, + { + "ty": "st", + "c": { "a": 0, "k": [1, 1, 1], "ix": 2 }, + "o": { "a": 0, "k": 100, "ix": 2 }, + "w": { "a": 0, "k": 6.5, "ix": 2 }, + "hd": false, + "lc": 2, + "lj": 2 + }, + { + "ty": "tm", + "s": { "a": 0, "k": 0, "ix": 2 }, + "e": { "a": 0, "k": 100, "ix": 2 }, + "o": { "a": 0, "k": 0, "ix": 2 }, + "m": 1, + "hd": false + }, + { + "ty": "tr", + "hd": false, + "p": { "a": 0, "k": [23.75, 18.932998657226562], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 2 }, + "s": { "a": 0, "k": [100, 100], "ix": 2 }, + "r": { "a": 0, "k": 0, "ix": 2 }, + "o": { "a": 0, "k": 100, "ix": 2 }, + "sk": { "a": 0, "k": 0, "ix": 2 }, + "sa": { "a": 0, "k": 0, "ix": 2 } + } + ] + } + ], + "ip": 0, + "op": 220.00000000000003, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "Group 1", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 2 }, + "r": { "a": 0, "k": 0, "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 2 }, + "s": { "a": 0, "k": [100, 100], "ix": 2 } + }, + "ao": 0, + "hd": false, + "shapes": [ + { + "ty": "gr", + "hd": false, + "it": [ + { + "ty": "sh", + "hd": false, + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "t": 20, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.091], + [16.25, 23.052] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 40, + "s": [ + { + "c": false, + "v": [ + [16.25, 12.771], + [16.25, 33.708] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 56, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.091], + [16.25, 23.052] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 68, + "s": [ + { + "c": false, + "v": [ + [16.25, 12.771], + [16.25, 33.708] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 76, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.351], + [16.25, 31.044] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 84, + "s": [ + { + "c": false, + "v": [ + [16.25, 12.771], + [16.25, 33.708] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 92, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.351], + [16.25, 31.044] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 120, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.091], + [16.25, 23.052] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 124, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.091], + [16.25, 23.052] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 128, + "s": [ + { + "c": false, + "v": [ + [16.25, 12.771], + [16.25, 33.708] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 144, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.091], + [16.25, 23.052] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 156, + "s": [ + { + "c": false, + "v": [ + [16.25, 12.771], + [16.25, 33.708] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 164, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.351], + [16.25, 31.044] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 172, + "s": [ + { + "c": false, + "v": [ + [16.25, 12.771], + [16.25, 33.708] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 180, + "s": [ + { + "c": false, + "v": [ + [16.25, 15.351], + [16.25, 31.044] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + }, + { + "t": 200, + "s": [ + { + "c": false, + "v": [ + [16.25, 23.091], + [16.25, 23.052] + ], + "i": [ + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0] + ] + } + ], + "i": { "x": [1], "y": [1] }, + "o": { "x": [0], "y": [0] } + } + ], + "ix": 2 + } + }, + { + "ty": "st", + "c": { "a": 0, "k": [1, 1, 1], "ix": 2 }, + "o": { "a": 0, "k": 100, "ix": 2 }, + "w": { "a": 0, "k": 6.5, "ix": 2 }, + "hd": false, + "lc": 2, + "lj": 2 + }, + { + "ty": "tm", + "s": { "a": 0, "k": 0, "ix": 2 }, + "e": { "a": 0, "k": 100, "ix": 2 }, + "o": { "a": 0, "k": 0, "ix": 2 }, + "m": 1, + "hd": false + }, + { + "ty": "tr", + "hd": false, + "p": { "a": 0, "k": [10.75, 16.682998657226562], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 2 }, + "s": { "a": 0, "k": [100, 100], "ix": 2 }, + "r": { "a": 0, "k": 0, "ix": 2 }, + "o": { "a": 0, "k": 100, "ix": 2 }, + "sk": { "a": 0, "k": 0, "ix": 2 }, + "sa": { "a": 0, "k": 0, "ix": 2 } + } + ] + } + ], + "ip": 0, + "op": 220.00000000000003, + "st": 0, + "bm": 0 + } + ], + "markers": [] +} diff --git a/packages/hms_room_kit/lib/src/assets/icons/audio_mode.svg b/packages/hms_room_kit/lib/src/assets/icons/audio_mode.svg new file mode 100644 index 000000000..52e94c02c --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/audio_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/bluetooth.svg b/packages/hms_room_kit/lib/src/assets/icons/bluetooth.svg new file mode 100644 index 000000000..b13bf3634 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/bluetooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/brb.svg b/packages/hms_room_kit/lib/src/assets/icons/brb.svg new file mode 100644 index 000000000..41bf0bf15 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/brb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/bug.svg b/packages/hms_room_kit/lib/src/assets/icons/bug.svg new file mode 100644 index 000000000..f75263197 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg b/packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg new file mode 100644 index 000000000..6bd5b31c2 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg b/packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg new file mode 100644 index 000000000..56598b538 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/camera.svg b/packages/hms_room_kit/lib/src/assets/icons/camera.svg new file mode 100644 index 000000000..9c3e819b6 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/change_role.svg b/packages/hms_room_kit/lib/src/assets/icons/change_role.svg new file mode 100644 index 000000000..53a62b22c --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/change_role.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/clock.svg b/packages/hms_room_kit/lib/src/assets/icons/clock.svg new file mode 100644 index 000000000..9dc1c7fc7 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/close.svg b/packages/hms_room_kit/lib/src/assets/icons/close.svg new file mode 100644 index 000000000..e25802976 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/close_button.svg b/packages/hms_room_kit/lib/src/assets/icons/close_button.svg new file mode 100644 index 000000000..851e78ecf --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/close_button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/dark_mode.svg b/packages/hms_room_kit/lib/src/assets/icons/dark_mode.svg new file mode 100644 index 000000000..013e30526 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/dark_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/decoder.svg b/packages/hms_room_kit/lib/src/assets/icons/decoder.svg new file mode 100644 index 000000000..f84aa8878 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/decoder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/degrade.svg b/packages/hms_room_kit/lib/src/assets/icons/degrade.svg new file mode 100644 index 000000000..78f24a832 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/degrade.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/degraded_network.svg b/packages/hms_room_kit/lib/src/assets/icons/degraded_network.svg new file mode 100644 index 000000000..416b9ba66 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/degraded_network.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/earpiece.svg b/packages/hms_room_kit/lib/src/assets/icons/earpiece.svg new file mode 100644 index 000000000..01f8c8eed --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/earpiece.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/emoji.svg b/packages/hms_room_kit/lib/src/assets/icons/emoji.svg new file mode 100644 index 000000000..3c0d750b6 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/emoji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/empty_chat.svg b/packages/hms_room_kit/lib/src/assets/icons/empty_chat.svg new file mode 100644 index 000000000..6b331e31a --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/empty_chat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/end.svg b/packages/hms_room_kit/lib/src/assets/icons/end.svg new file mode 100644 index 000000000..ef49975c0 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/end.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/end_room.svg b/packages/hms_room_kit/lib/src/assets/icons/end_room.svg new file mode 100644 index 000000000..8ff587c9d --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/end_room.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/end_warning.svg b/packages/hms_room_kit/lib/src/assets/icons/end_warning.svg new file mode 100644 index 000000000..49e4b421b --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/end_warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/event.svg b/packages/hms_room_kit/lib/src/assets/icons/event.svg new file mode 100644 index 000000000..76ed2a908 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/event.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/exit_room.svg b/packages/hms_room_kit/lib/src/assets/icons/exit_room.svg new file mode 100644 index 000000000..9b3203702 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/exit_room.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packages/hms_room_kit/lib/src/assets/icons/generic.svg b/packages/hms_room_kit/lib/src/assets/icons/generic.svg new file mode 100644 index 000000000..53ecaa3f9 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/generic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/hand.svg b/packages/hms_room_kit/lib/src/assets/icons/hand.svg new file mode 100644 index 000000000..fb2f9db78 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg b/packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg new file mode 100644 index 000000000..98020b298 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/hls.svg b/packages/hms_room_kit/lib/src/assets/icons/hls.svg new file mode 100644 index 000000000..280fd5d2c --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/hls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/assets/icons/hms_icon_1024.png b/packages/hms_room_kit/lib/src/assets/icons/hms_icon_1024.png similarity index 100% rename from example/assets/icons/hms_icon_1024.png rename to packages/hms_room_kit/lib/src/assets/icons/hms_icon_1024.png diff --git a/packages/hms_room_kit/lib/src/assets/icons/hms_icon_loading.png b/packages/hms_room_kit/lib/src/assets/icons/hms_icon_loading.png new file mode 100644 index 000000000..d0ab37557 Binary files /dev/null and b/packages/hms_room_kit/lib/src/assets/icons/hms_icon_loading.png differ diff --git a/packages/hms_room_kit/lib/src/assets/icons/info.svg b/packages/hms_room_kit/lib/src/assets/icons/info.svg new file mode 100644 index 000000000..42bd1d150 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/layers.svg b/packages/hms_room_kit/lib/src/assets/icons/layers.svg new file mode 100644 index 000000000..edb3a94ab --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/layers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/leave.svg b/packages/hms_room_kit/lib/src/assets/icons/leave.svg new file mode 100644 index 000000000..b709c24be --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/leave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/leave_hls.svg b/packages/hms_room_kit/lib/src/assets/icons/leave_hls.svg new file mode 100644 index 000000000..a626a427d --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/leave_hls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/light_mode.svg b/packages/hms_room_kit/lib/src/assets/icons/light_mode.svg new file mode 100644 index 000000000..51a3d9789 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/light_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/live.svg b/packages/hms_room_kit/lib/src/assets/icons/live.svg new file mode 100644 index 000000000..3e8f5b3d3 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/live.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/live_stream.svg b/packages/hms_room_kit/lib/src/assets/icons/live_stream.svg new file mode 100644 index 000000000..4682e6716 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/live_stream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/local_capture.svg b/packages/hms_room_kit/lib/src/assets/icons/local_capture.svg new file mode 100644 index 000000000..451113631 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/local_capture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/login.svg b/packages/hms_room_kit/lib/src/assets/icons/login.svg new file mode 100644 index 000000000..7670d1f52 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/login.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/hms_room_kit/lib/src/assets/icons/maximize.svg b/packages/hms_room_kit/lib/src/assets/icons/maximize.svg new file mode 100644 index 000000000..9ab1e508d --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/menu.svg b/packages/hms_room_kit/lib/src/assets/icons/menu.svg new file mode 100644 index 000000000..f893ec860 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg b/packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg new file mode 100644 index 000000000..8c635ce61 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/message_badge_on.svg b/packages/hms_room_kit/lib/src/assets/icons/message_badge_on.svg new file mode 100644 index 000000000..429f973d2 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/message_badge_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/mic.svg b/packages/hms_room_kit/lib/src/assets/icons/mic.svg new file mode 100644 index 000000000..b76aff7ff --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/mic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg b/packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg new file mode 100644 index 000000000..893b5871e --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg b/packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg new file mode 100644 index 000000000..5d16484ba --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/minimize.svg b/packages/hms_room_kit/lib/src/assets/icons/minimize.svg new file mode 100644 index 000000000..3cee55267 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/more.svg b/packages/hms_room_kit/lib/src/assets/icons/more.svg new file mode 100644 index 000000000..a57732952 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/music_wave.svg b/packages/hms_room_kit/lib/src/assets/icons/music_wave.svg new file mode 100644 index 000000000..baef9782e --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/music_wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/network_0.svg b/packages/hms_room_kit/lib/src/assets/icons/network_0.svg new file mode 100644 index 000000000..447dd2be8 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/network_0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/network_1.svg b/packages/hms_room_kit/lib/src/assets/icons/network_1.svg new file mode 100644 index 000000000..410cdad4f --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/network_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/network_2.svg b/packages/hms_room_kit/lib/src/assets/icons/network_2.svg new file mode 100644 index 000000000..57fbf7c5a --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/network_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/network_3.svg b/packages/hms_room_kit/lib/src/assets/icons/network_3.svg new file mode 100644 index 000000000..2612ba62f --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/network_3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/network_4.svg b/packages/hms_room_kit/lib/src/assets/icons/network_4.svg new file mode 100644 index 000000000..9ac316f61 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/network_4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/network_5.svg b/packages/hms_room_kit/lib/src/assets/icons/network_5.svg new file mode 100644 index 000000000..9ac316f61 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/network_5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/no_network.png b/packages/hms_room_kit/lib/src/assets/icons/no_network.png new file mode 100644 index 000000000..3199decb9 Binary files /dev/null and b/packages/hms_room_kit/lib/src/assets/icons/no_network.png differ diff --git a/packages/hms_room_kit/lib/src/assets/icons/notification.svg b/packages/hms_room_kit/lib/src/assets/icons/notification.svg new file mode 100644 index 000000000..f46b78953 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/notification.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/participants.svg b/packages/hms_room_kit/lib/src/assets/icons/participants.svg new file mode 100644 index 000000000..267e5f25e --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/participants.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/peer_remove.svg b/packages/hms_room_kit/lib/src/assets/icons/peer_remove.svg new file mode 100644 index 000000000..b0362007e --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/peer_remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/pencil.svg b/packages/hms_room_kit/lib/src/assets/icons/pencil.svg new file mode 100644 index 000000000..2129ed2b4 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/permission_lock.svg b/packages/hms_room_kit/lib/src/assets/icons/permission_lock.svg new file mode 100644 index 000000000..9aebdc264 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/permission_lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/person.svg b/packages/hms_room_kit/lib/src/assets/icons/person.svg new file mode 100644 index 000000000..424939ff1 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/phone_hangup.svg b/packages/hms_room_kit/lib/src/assets/icons/phone_hangup.svg new file mode 100644 index 000000000..fa53a2971 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/phone_hangup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/pin.svg b/packages/hms_room_kit/lib/src/assets/icons/pin.svg new file mode 100644 index 000000000..a665c3a8a --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/preview_state_off.svg b/packages/hms_room_kit/lib/src/assets/icons/preview_state_off.svg new file mode 100644 index 000000000..ccdbff26c --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/preview_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/preview_state_on.svg b/packages/hms_room_kit/lib/src/assets/icons/preview_state_on.svg new file mode 100644 index 000000000..20c5af76b --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/preview_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/record.svg b/packages/hms_room_kit/lib/src/assets/icons/record.svg new file mode 100644 index 000000000..0d23a3e6e --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/record.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/recording_error.svg b/packages/hms_room_kit/lib/src/assets/icons/recording_error.svg new file mode 100644 index 000000000..4270039ad --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/recording_error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/red_dot.svg b/packages/hms_room_kit/lib/src/assets/icons/red_dot.svg new file mode 100644 index 000000000..75a25fad0 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/red_dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/role_change.svg b/packages/hms_room_kit/lib/src/assets/icons/role_change.svg new file mode 100644 index 000000000..100ba2a04 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/role_change.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/role_change_decline.svg b/packages/hms_room_kit/lib/src/assets/icons/role_change_decline.svg new file mode 100644 index 000000000..b71241524 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/role_change_decline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/rotate.svg b/packages/hms_room_kit/lib/src/assets/icons/rotate.svg new file mode 100644 index 000000000..01325d3a6 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/screen_share.svg b/packages/hms_room_kit/lib/src/assets/icons/screen_share.svg new file mode 100644 index 000000000..1e0c81e9b --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/screen_share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/send.svg b/packages/hms_room_kit/lib/src/assets/icons/send.svg new file mode 100644 index 000000000..f30f6b924 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/send_message.svg b/packages/hms_room_kit/lib/src/assets/icons/send_message.svg new file mode 100644 index 000000000..a849c0cc1 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/send_message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/settings.svg b/packages/hms_room_kit/lib/src/assets/icons/settings.svg new file mode 100644 index 000000000..6b2540f8f --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/share.svg b/packages/hms_room_kit/lib/src/assets/icons/share.svg new file mode 100644 index 000000000..abe619b50 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/simulcast.svg b/packages/hms_room_kit/lib/src/assets/icons/simulcast.svg new file mode 100644 index 000000000..edb3a94ab --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/simulcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/single_tile.svg b/packages/hms_room_kit/lib/src/assets/icons/single_tile.svg new file mode 100644 index 000000000..424939ff1 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/single_tile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/snapshot.svg b/packages/hms_room_kit/lib/src/assets/icons/snapshot.svg new file mode 100644 index 000000000..603371984 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/snapshot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/speaker_state_off.svg b/packages/hms_room_kit/lib/src/assets/icons/speaker_state_off.svg new file mode 100644 index 000000000..1076daee2 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/speaker_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/speaker_state_on.svg b/packages/hms_room_kit/lib/src/assets/icons/speaker_state_on.svg new file mode 100644 index 000000000..a4e75fa9c --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/speaker_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/spotlight.svg b/packages/hms_room_kit/lib/src/assets/icons/spotlight.svg new file mode 100644 index 000000000..97289c1c5 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/spotlight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/stats.svg b/packages/hms_room_kit/lib/src/assets/icons/stats.svg new file mode 100644 index 000000000..71b3569d4 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/stats.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/stream.svg b/packages/hms_room_kit/lib/src/assets/icons/stream.svg new file mode 100644 index 000000000..57a1adde1 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/stream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/tick.svg b/packages/hms_room_kit/lib/src/assets/icons/tick.svg new file mode 100644 index 000000000..1377a4651 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/tick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/time.svg b/packages/hms_room_kit/lib/src/assets/icons/time.svg new file mode 100644 index 000000000..a8275a72f --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/user-music.svg b/packages/hms_room_kit/lib/src/assets/icons/user-music.svg new file mode 100644 index 000000000..76f167312 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/user-music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/user.svg b/packages/hms_room_kit/lib/src/assets/icons/user.svg new file mode 100644 index 000000000..4c1038034 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/warning.svg b/packages/hms_room_kit/lib/src/assets/icons/warning.svg new file mode 100644 index 000000000..5e6c7eaa5 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/watching.svg b/packages/hms_room_kit/lib/src/assets/icons/watching.svg new file mode 100644 index 000000000..e87b7dffa --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/watching.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/wave_hand.svg b/packages/hms_room_kit/lib/src/assets/icons/wave_hand.svg new file mode 100644 index 000000000..2e1195b76 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/wave_hand.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/packages/hms_room_kit/lib/src/assets/icons/white_dot.svg b/packages/hms_room_kit/lib/src/assets/icons/white_dot.svg new file mode 100644 index 000000000..f1e7f04d5 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/white_dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/wired_headset.svg b/packages/hms_room_kit/lib/src/assets/icons/wired_headset.svg new file mode 100644 index 000000000..0ce740d7a --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/wired_headset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hms_room_kit/lib/src/assets/icons/zero_audio_level.svg b/packages/hms_room_kit/lib/src/assets/icons/zero_audio_level.svg new file mode 100644 index 000000000..6f9bf7714 --- /dev/null +++ b/packages/hms_room_kit/lib/src/assets/icons/zero_audio_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/lib/common/util/animated_text.dart b/packages/hms_room_kit/lib/src/common/animated_text.dart similarity index 69% rename from example/lib/common/util/animated_text.dart rename to packages/hms_room_kit/lib/src/common/animated_text.dart index bd7226942..55537124e 100644 --- a/example/lib/common/util/animated_text.dart +++ b/packages/hms_room_kit/lib/src/common/animated_text.dart @@ -4,13 +4,14 @@ class AnimatedTextWidget extends StatefulWidget { final String text; final Duration duration; - AnimatedTextWidget({required this.text, required this.duration}); + const AnimatedTextWidget( + {super.key, required this.text, required this.duration}); @override - _AnimatedTextWidgetState createState() => _AnimatedTextWidgetState(); + AnimatedTextWidgetState createState() => AnimatedTextWidgetState(); } -class _AnimatedTextWidgetState extends State +class AnimatedTextWidgetState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; late Animation _animation; @@ -27,8 +28,8 @@ class _AnimatedTextWidgetState extends State // Create a tween animation for vertical offset _animation = Tween( - begin: Offset(0.0, 1.0), // Start from the bottom of the screen - end: Offset(0.0, 0.0), // Fly to the top of the screen + begin: const Offset(0.0, 1.0), // Start from the bottom of the screen + end: const Offset(0.0, 0.0), // Fly to the top of the screen ).animate(CurvedAnimation( parent: _controller, curve: Curves.easeInOut, @@ -50,7 +51,7 @@ class _AnimatedTextWidgetState extends State position: _animation, child: Text( widget.text, - style: TextStyle(fontSize: 24), + style: const TextStyle(fontSize: 24), ), ); } diff --git a/packages/hms_room_kit/lib/src/common/app_color.dart b/packages/hms_room_kit/lib/src/common/app_color.dart new file mode 100644 index 000000000..4506f5a59 --- /dev/null +++ b/packages/hms_room_kit/lib/src/common/app_color.dart @@ -0,0 +1,129 @@ +import 'package:flutter/material.dart'; + +/// [updateColor] is used to update the colors of the app based on the theme +/// [mode] is the current theme mode +void updateColor(ThemeMode mode) { + iconColor = mode == ThemeMode.dark ? Colors.white : Colors.black; + + /// [themeDefaultColor] is the default color of the app + themeDefaultColor = mode == ThemeMode.dark + ? const Color.fromRGBO(245, 249, 255, 0.95) + : const Color.fromRGBO(29, 34, 41, 1); + + /// [themeBottomSheetColor] is the color of the bottom sheet + themeBottomSheetColor = mode == ThemeMode.dark + ? const Color.fromRGBO(20, 23, 28, 1) + : const Color.fromRGBO(245, 249, 255, 0.95); + + /// [themeSurfaceColor] is the color of the surface of the app + themeSurfaceColor = mode == ThemeMode.dark + ? const Color.fromRGBO(29, 34, 41, 1) + : const Color.fromRGBO(245, 249, 255, 0.95); + + /// [themeSubHeadingColor] is the color of the subheading + themeSubHeadingColor = mode == ThemeMode.dark + ? const Color.fromRGBO(224, 236, 255, 0.8) + : borderColor; + + /// [themeScreenBackgroundColor] is the color of the background of the app + themeScreenBackgroundColor = mode == ThemeMode.dark + ? const Color.fromRGBO(11, 13, 15, 1) + : hmsWhiteColor; + + /// [themeHintColor] is the color of the hint text + themeHintColor = mode == ThemeMode.dark + ? const Color.fromRGBO(195, 208, 229, 0.5) + : hmsWhiteColor; + + /// [themeHMSBorderColor] is the color of the border of the app + themeHMSBorderColor = mode == ThemeMode.dark + ? const Color.fromRGBO(45, 52, 64, 1) + : hmsWhiteColor; + + /// [themeTileNameColor] is the color of the name of the tile + themeTileNameColor = mode == ThemeMode.dark + ? const Color.fromRGBO(0, 0, 0, 0.9) + : hmsHintColor; + + /// [themeDisabledTextColor] is the color of the disabled text + themeDisabledTextColor = mode == ThemeMode.dark + ? const Color.fromRGBO(255, 255, 255, 0.48) + : themeDefaultColor; +} + +/// [iconColor] should be set to white when the theme is dark and black when the theme is light +/// By default it is set to white since the default theme is dark. +Color iconColor = Colors.white; + +/// [themeTileNameColor] is the color of the name of the tile +Color themeTileNameColor = const Color.fromRGBO(0, 0, 0, 0.9); + +/// [themeHMSBorderColor] is the color of the border of the app +Color themeHMSBorderColor = const Color.fromRGBO(45, 52, 64, 1); + +/// [hmsHintColor] is the color of the hint text +Color hmsHintColor = const Color.fromRGBO(195, 208, 229, 0.5); + +/// [hmsWhiteColor] is the color of the white text +Color hmsWhiteColor = const Color.fromRGBO(245, 249, 255, 0.95); + +/// [themeDefaultColor] is the default color of the app +Color themeDefaultColor = const Color.fromRGBO(245, 249, 255, 0.95); + +/// [themeSubHeadingColor] is the color of the subheading +Color themeSubHeadingColor = const Color.fromRGBO(224, 236, 255, 0.8); + +/// [themeHintColor] is the color of the hint text +Color themeHintColor = const Color.fromRGBO(195, 208, 229, 0.5); + +/// [themeSurfaceColor] is the color of the surface of the app +Color themeSurfaceColor = const Color.fromRGBO(29, 34, 41, 1); + +/// [themeDisabledTextColor] is the color of the disabled text +Color themeDisabledTextColor = const Color.fromRGBO(255, 255, 255, 0.48); + +/// [enabledTextColor] is the color of the enabled text +Color enabledTextColor = const Color.fromRGBO(255, 255, 255, 0.98); + +/// [borderColor] is the color of the border of the app +Color borderColor = const Color.fromRGBO(45, 52, 64, 1); + +/// [dividerColor] is the color of the divider +Color dividerColor = const Color.fromRGBO(27, 31, 38, 1); + +/// [defaultAvatarColor] is the color of the default avatar +Color defaultAvatarColor = const Color.fromRGBO(101, 85, 193, 1); + +/// [themeScreenBackgroundColor] is the color of the background of the app +Color themeScreenBackgroundColor = const Color.fromRGBO(11, 13, 15, 1); + +/// [themeButtonColor] is the color of the button +Color errorColor = const Color.fromRGBO(204, 82, 95, 1); + +/// [themeBottomSheetColor] is the color of the bottom sheet +Color themeBottomSheetColor = const Color.fromRGBO(20, 23, 28, 1); + +/// [hmsdefaultColor] is the default color of the app +Color hmsdefaultColor = const Color.fromRGBO(36, 113, 237, 1); + +/// [popupButtonBorderColor] is the color of the border of the popup button +Color popupButtonBorderColor = const Color.fromRGBO(107, 125, 153, 1); + +/// [dialogcontentColor] is the color of the content of the dialog +Color dialogcontentColor = const Color.fromRGBO(145, 127, 129, 1); + +/// [moreSettingsButtonColor] is the color of the more settings button +Color moreSettingsButtonColor = const Color.fromRGBO(30, 35, 42, 1); + +///This list contains colors for the avatar +///A random color gets picked based on the first alphabet of the name +List avatarColors = [ + Colors.purple, + Colors.orange, + Colors.teal, + Colors.pink, + Colors.blue, + Colors.blueGrey, + Colors.brown, + Colors.indigo, +]; diff --git a/packages/hms_room_kit/lib/src/common/app_font_style.dart b/packages/hms_room_kit/lib/src/common/app_font_style.dart new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/packages/hms_room_kit/lib/src/common/app_font_style.dart @@ -0,0 +1 @@ + diff --git a/packages/hms_room_kit/lib/src/common/constants.dart b/packages/hms_room_kit/lib/src/common/constants.dart new file mode 100644 index 000000000..ecc42fa5b --- /dev/null +++ b/packages/hms_room_kit/lib/src/common/constants.dart @@ -0,0 +1,32 @@ +//Class contains the constants used throughout the application +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +/// This class contains the constants used throughout the application +class Constant { + /// [Constant.defaultMeetingLink] is the default meeting link that will be used + static String defaultMeetingLink = + "https://public.app.100ms.live/meeting/xvm-wxwo-gbl"; + + /// [Constant.meetingUrl] is the meeting link that will be used + static String meetingUrl = defaultMeetingLink; + + /// [Constant.meetingCode] is the meeting code that will be used + static String meetingCode = ""; + + /// [Constant.streamingUrl] is the streaming url that will be used + static String streamingUrl = ""; + + /// [Constant.webRTCLogLevel] is the log level for the WebRTC SDK + static HMSLogLevel webRTCLogLevel = HMSLogLevel.ERROR; + + /// [Constant.sdkLogLevel] is the log level for the HMS SDK + static HMSLogLevel sdkLogLevel = HMSLogLevel.VERBOSE; + + /// [Constant.debugMode] is the debug mode for the application + static bool debugMode = false; + + /// [Constant.options] is the prebuilt options for the application + /// This is saved for later usages in the application + static HMSPrebuiltOptions? prebuiltOptions; +} diff --git a/example/lib/common/util/utility_components.dart b/packages/hms_room_kit/lib/src/common/utility_components.dart similarity index 65% rename from example/lib/common/util/utility_components.dart rename to packages/hms_room_kit/lib/src/common/utility_components.dart index 23b4cf12f..1112ec47c 100644 --- a/example/lib/common/util/utility_components.dart +++ b/packages/hms_room_kit/lib/src/common/utility_components.dart @@ -1,154 +1,173 @@ //Package imports import 'package:dropdown_button2/dropdown_button2.dart'; -import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/leave_session_bottom_sheet.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:collection/collection.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/role_change_request_dialog.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/track_change_request_dialog.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/service/constant.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_mode.dart'; import 'package:provider/provider.dart'; //Project imports -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:collection/collection.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/constants.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/enums/meeting_mode.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/app_dialogs/role_change_request_dialog.dart'; +import 'package:hms_room_kit/src/widgets/app_dialogs/track_change_request_dialog.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_disconnected_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_reconnection_toast.dart'; +///[UtilityComponents] contains the common components used in the app class UtilityComponents { static Future onBackPressed(BuildContext context) { - MeetingStore _meetingStore = context.read(); - return showDialog( - context: context, - builder: (ctx) => AlertDialog( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - actionsPadding: EdgeInsets.only(right: 10, left: 10, bottom: 10), - backgroundColor: Color.fromRGBO(32, 22, 23, 1), - title: Container( - width: 300, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - SvgPicture.asset( - "assets/icons/end.svg", - width: 24, - ), - SizedBox( - width: 5, - ), - Text( - 'Do you wish to leave?', - style: GoogleFonts.inter( - color: errorColor, - fontSize: 20, - fontWeight: FontWeight.w600, - letterSpacing: 0.25), - ), - ], - ), - ), - content: Text( - "You will leave the room immediately. You can’t undo this action.", - style: GoogleFonts.inter( - color: themeHintColor, - fontSize: 14, - fontWeight: FontWeight.w400, - letterSpacing: 0.25)), - actions: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Expanded( - child: ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all(themeSurfaceColor), - backgroundColor: MaterialStateProperty.all( - Color.fromRGBO(32, 22, 23, 1), - ), - shape: - MaterialStateProperty.all( - RoundedRectangleBorder( - side: BorderSide( - width: 1, color: popupButtonBorderColor), - borderRadius: BorderRadius.circular(8.0), - ))), - onPressed: () => Navigator.pop(context, false), - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8.0, vertical: 12), - child: Text('Nevermind', - style: GoogleFonts.inter( - color: hmsWhiteColor, - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: 0.50)), - )), - ), - SizedBox( - width: 10, - ), - Expanded( - child: ElevatedButton( - style: ButtonStyle( - shadowColor: MaterialStateProperty.all(themeSurfaceColor), - backgroundColor: MaterialStateProperty.all(errorColor), - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - side: BorderSide(width: 1, color: errorColor), - borderRadius: BorderRadius.circular(8.0), - ))), - onPressed: () => { - _meetingStore.leave(), - Navigator.popUntil(context, (route) => route.isFirst) - }, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8.0, vertical: 12), - child: Text( - 'Leave Room', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: 0.50), - ), - ), - ), - ), - ], - ) - ], + MeetingStore meetingStore = context.read(); + return showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), topRight: Radius.circular(16)), ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: LeaveSessionBottomSheet( + meetingStore: meetingStore, + )), ); + + // showDialog( + // context: context, + // builder: (ctx) => AlertDialog( + // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + // insetPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + // actionsPadding: const EdgeInsets.only(right: 10, left: 10, bottom: 10), + // backgroundColor: const Color.fromRGBO(32, 22, 23, 1), + // title: SizedBox( + // width: 300, + // child: Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/end.svg", + // width: 24, + // ), + // const SizedBox( + // width: 5, + // ), + // Text( + // 'Do you wish to leave?', + // style: GoogleFonts.inter( + // color: errorColor, + // fontSize: 20, + // fontWeight: FontWeight.w600, + // letterSpacing: 0.25), + // ), + // ], + // ), + // ), + // content: Text( + // "You will leave the room immediately. You can’t undo this action.", + // style: GoogleFonts.inter( + // color: themeHintColor, + // fontSize: 14, + // fontWeight: FontWeight.w400, + // letterSpacing: 0.25)), + // actions: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceEvenly, + // children: [ + // Expanded( + // child: ElevatedButton( + // style: ButtonStyle( + // shadowColor: + // MaterialStateProperty.all(themeSurfaceColor), + // backgroundColor: MaterialStateProperty.all( + // const Color.fromRGBO(32, 22, 23, 1), + // ), + // shape: + // MaterialStateProperty.all( + // RoundedRectangleBorder( + // side: BorderSide( + // width: 1, color: popupButtonBorderColor), + // borderRadius: BorderRadius.circular(8.0), + // ))), + // onPressed: () => Navigator.pop(context, false), + // child: Padding( + // padding: const EdgeInsets.symmetric( + // horizontal: 8.0, vertical: 12), + // child: Text('Nevermind', + // style: GoogleFonts.inter( + // color: hmsWhiteColor, + // fontSize: 16, + // fontWeight: FontWeight.w600, + // letterSpacing: 0.50)), + // )), + // ), + // const SizedBox( + // width: 10, + // ), + // Expanded( + // child: ElevatedButton( + // style: ButtonStyle( + // shadowColor: MaterialStateProperty.all(themeSurfaceColor), + // backgroundColor: MaterialStateProperty.all(errorColor), + // shape: MaterialStateProperty.all( + // RoundedRectangleBorder( + // side: BorderSide(width: 1, color: errorColor), + // borderRadius: BorderRadius.circular(8.0), + // ))), + // onPressed: () => { + // meetingStore.leave(), + // Navigator.popUntil(context, (route) => route.isFirst) + // }, + // child: Padding( + // padding: const EdgeInsets.symmetric( + // horizontal: 8.0, vertical: 12), + // child: Text( + // 'Leave Room', + // style: GoogleFonts.inter( + // color: themeDefaultColor, + // fontSize: 16, + // fontWeight: FontWeight.w600, + // letterSpacing: 0.50), + // ), + // ), + // ), + // ), + // ], + // ) + // ], + // ), + // ); } static Future onLeaveStudio(BuildContext context) { - MeetingStore _meetingStore = context.read(); + MeetingStore meetingStore = context.read(); return showDialog( context: context, builder: (ctx) => AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - actionsPadding: EdgeInsets.only(left: 10, right: 10, bottom: 10), + insetPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + actionsPadding: const EdgeInsets.only(left: 10, right: 10, bottom: 10), backgroundColor: themeBottomSheetColor, - title: Container( + title: SizedBox( width: 300, child: Row( mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( - "assets/icons/leave_hls.svg", + "packages/hms_room_kit/lib/src/assets/icons/leave_hls.svg", height: 24, ), - SizedBox( + const SizedBox( width: 5, ), Text( @@ -193,11 +212,11 @@ class UtilityComponents { child: Padding( padding: const EdgeInsets.symmetric( horizontal: 8.0, vertical: 12), - child: TitleText( + child: HMSTitleText( text: 'Don’t Leave', textColor: themeDefaultColor), )), ), - SizedBox( + const SizedBox( width: 10, ), Expanded( @@ -211,13 +230,13 @@ class UtilityComponents { borderRadius: BorderRadius.circular(8.0), ))), onPressed: () => { - _meetingStore.leave(), + meetingStore.leave(), Navigator.popUntil(context, (route) => route.isFirst) }, child: Padding( padding: const EdgeInsets.symmetric( horizontal: 25.0, vertical: 12), - child: TitleText( + child: HMSTitleText( text: 'Leave', textColor: hmsWhiteColor, ), @@ -243,14 +262,14 @@ class UtilityComponents { static showTrackChangeDialog( BuildContext context, HMSTrackChangeRequest trackChangeRequest) async { - MeetingStore _meetingStore = context.read(); + MeetingStore meetingStore = context.read(); await showDialog( barrierDismissible: false, context: context, builder: (ctx) => TrackChangeRequestDialog( trackChangeRequest: trackChangeRequest, meetingStore: context.read(), - isAudioModeOn: _meetingStore.meetingMode == MeetingMode.Audio, + isAudioModeOn: meetingStore.meetingMode == MeetingMode.audio, )); } @@ -298,21 +317,19 @@ class UtilityComponents { shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), backgroundColor: themeBottomSheetColor, - content: Container( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - autofocus: true, - controller: textController, - decoration: InputDecoration( - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(16)), - ), - hintText: placeholder), - ), - ], - ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + autofocus: true, + controller: textController, + decoration: InputDecoration( + border: const OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(16)), + ), + hintText: placeholder), + ), + ], ), actions: [ ElevatedButton( @@ -346,7 +363,7 @@ class UtilityComponents { TextEditingController textController = TextEditingController(); textController.text = Constant.streamingUrl; bool isSingleFileChecked = false, isVODChecked = false; - MeetingStore _meetingStore = context.read(); + MeetingStore meetingStore = context.read(); await showDialog( context: context, builder: (context) => StatefulBuilder(builder: (context, setState) { @@ -354,53 +371,51 @@ class UtilityComponents { shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), backgroundColor: themeBottomSheetColor, - content: Container( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text("Recording"), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Single file per layer", - style: GoogleFonts.inter( - color: iconColor, - ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Text("Recording"), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "Single file per layer", + style: GoogleFonts.inter( + color: iconColor, ), - Checkbox( - value: isSingleFileChecked, - activeColor: Colors.blue, - onChanged: (bool? value) { - if (value != null) { - isSingleFileChecked = value; - setState(() {}); - } - }), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Video on Demand", - style: GoogleFonts.inter( - color: iconColor, - ), + ), + Checkbox( + value: isSingleFileChecked, + activeColor: Colors.blue, + onChanged: (bool? value) { + if (value != null) { + isSingleFileChecked = value; + setState(() {}); + } + }), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "Video on Demand", + style: GoogleFonts.inter( + color: iconColor, ), - Checkbox( - value: isVODChecked, - activeColor: Colors.blue, - onChanged: (bool? value) { - if (value != null) { - isVODChecked = value; - setState(() {}); - } - }), - ], - ) - ], - ), + ), + Checkbox( + value: isVODChecked, + activeColor: Colors.blue, + onChanged: (bool? value) { + if (value != null) { + isVODChecked = value; + setState(() {}); + } + }), + ], + ) + ], ), actions: [ ElevatedButton( @@ -420,7 +435,7 @@ class UtilityComponents { onPressed: () { if (textController.text == "") { } else { - _meetingStore.startHLSStreaming( + meetingStore.startHLSStreaming( isSingleFileChecked, isVODChecked); Navigator.pop(context); } @@ -432,8 +447,8 @@ class UtilityComponents { } static showRoleListForMute(BuildContext context, List roles, - MeetingStore _meetingStore) async { - List _selectedRoles = []; + MeetingStore meetingStore) async { + List selectedRoles = []; bool muteAll = false; showDialog( context: context, @@ -448,7 +463,7 @@ class UtilityComponents { color: iconColor, ), ), - content: Container( + content: SizedBox( width: 300, child: SingleChildScrollView( child: Column( @@ -469,15 +484,15 @@ class UtilityComponents { ), ), Checkbox( - value: _selectedRoles + value: selectedRoles .contains(roles[index]), activeColor: Colors.blue, onChanged: (bool? value) { if (value != null && value) { - _selectedRoles.add(roles[index]); - } else if (_selectedRoles + selectedRoles.add(roles[index]); + } else if (selectedRoles .contains(roles[index])) { - _selectedRoles.remove(roles[index]); + selectedRoles.remove(roles[index]); } setState(() {}); }), @@ -543,11 +558,11 @@ class UtilityComponents { ))), onPressed: () { if (muteAll) { - _meetingStore.changeTrackStateForRole( + meetingStore.changeTrackStateForRole( true, null); - } else if (_selectedRoles.isNotEmpty) { - _meetingStore.changeTrackStateForRole( - true, _selectedRoles); + } else if (selectedRoles.isNotEmpty) { + meetingStore.changeTrackStateForRole( + true, selectedRoles); } Navigator.pop(context); }, @@ -565,11 +580,11 @@ class UtilityComponents { } static showDialogForBulkRoleChange(BuildContext context, List roles, - MeetingStore _meetingStore) async { - List _selectedRoles = []; + MeetingStore meetingStore) async { + List selectedRoles = []; HMSRole toRole = roles[0]; - void _updateDropDownValue(dynamic newValue) { + void updateDropDownValue(dynamic newValue) { toRole = newValue; } @@ -586,7 +601,7 @@ class UtilityComponents { color: iconColor, ), ), - content: Container( + content: SizedBox( width: 300, child: SingleChildScrollView( child: Column( @@ -607,15 +622,15 @@ class UtilityComponents { ), ), Checkbox( - value: _selectedRoles + value: selectedRoles .contains(roles[index]), activeColor: hmsdefaultColor, onChanged: (bool? value) { if (value != null && value) { - _selectedRoles.add(roles[index]); - } else if (_selectedRoles + selectedRoles.add(roles[index]); + } else if (selectedRoles .contains(roles[index])) { - _selectedRoles.remove(roles[index]); + selectedRoles.remove(roles[index]); } setState(() {}); }), @@ -628,11 +643,11 @@ class UtilityComponents { color: iconColor, ), ), - SizedBox( + const SizedBox( height: 8, ), Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -647,22 +662,23 @@ class UtilityComponents { .sortedBy((element) => element.priority.toString()) .map((role) => DropdownMenuItem( - child: TitleText( + value: role, + child: HMSTitleText( text: role.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: role, )) .toList(), iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: + const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: toRole, - updateSelectedValue: _updateDropDownValue)), + updateSelectedValue: updateDropDownValue)), ), - SizedBox( + const SizedBox( height: 8, ), Row( @@ -706,12 +722,12 @@ class UtilityComponents { BorderRadius.circular(8.0), ))), onPressed: () { - if (_selectedRoles.isEmpty) { + if (selectedRoles.isEmpty) { Utilities.showToast( "Please select a role"); } else { - _meetingStore.changeRoleOfPeersWithRoles( - toRole, _selectedRoles); + meetingStore.changeRoleOfPeersWithRoles( + toRole, selectedRoles); Navigator.pop(context); } }, @@ -745,40 +761,37 @@ class UtilityComponents { shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), backgroundColor: themeBottomSheetColor, - contentPadding: - EdgeInsets.only(left: 14, right: 10, top: 15, bottom: 15), - content: Container( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - autofocus: true, - controller: textController, - decoration: InputDecoration( - border: OutlineInputBorder( - borderRadius: - BorderRadius.all(Radius.circular(16)), - ), - hintText: placeholder), - ), - CheckboxListTile( - contentPadding: EdgeInsets.zero, - title: Text( - "Recording", - style: GoogleFonts.inter( - color: iconColor, - ), + contentPadding: const EdgeInsets.only( + left: 14, right: 10, top: 15, bottom: 15), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + autofocus: true, + controller: textController, + decoration: InputDecoration( + border: const OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(16)), ), - activeColor: Colors.blue, - controlAffinity: ListTileControlAffinity.trailing, - value: isRecordingEnabled, - onChanged: (bool? value) { - setState(() { - isRecordingEnabled = value ?? false; - }); - }) - ], - ), + hintText: placeholder), + ), + CheckboxListTile( + contentPadding: EdgeInsets.zero, + title: Text( + "Recording", + style: GoogleFonts.inter( + color: iconColor, + ), + ), + activeColor: Colors.blue, + controlAffinity: ListTileControlAffinity.trailing, + value: isRecordingEnabled, + onChanged: (bool? value) { + setState(() { + isRecordingEnabled = value ?? false; + }); + }) + ], ), actions: [ Row( @@ -793,7 +806,7 @@ class UtilityComponents { shape: MaterialStateProperty.all< RoundedRectangleBorder>( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), @@ -864,24 +877,24 @@ class UtilityComponents { } static Future onEndRoomPressed(BuildContext context) { - MeetingStore _meetingStore = context.read(); + MeetingStore meetingStore = context.read(); return showDialog( context: context, builder: (ctx) => AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - actionsPadding: EdgeInsets.only(right: 10, left: 10, bottom: 10), - backgroundColor: Color.fromRGBO(32, 22, 23, 1), - title: Container( + insetPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + actionsPadding: const EdgeInsets.only(right: 10, left: 10, bottom: 10), + backgroundColor: const Color.fromRGBO(32, 22, 23, 1), + title: SizedBox( width: 300, child: Row( mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( - "assets/icons/end_warning.svg", + "packages/hms_room_kit/lib/src/assets/icons/end_warning.svg", width: 24, ), - SizedBox( + const SizedBox( width: 5, ), Text( @@ -914,7 +927,7 @@ class UtilityComponents { shadowColor: MaterialStateProperty.all(themeSurfaceColor), backgroundColor: MaterialStateProperty.all( - Color.fromRGBO(32, 22, 23, 1), + const Color.fromRGBO(32, 22, 23, 1), ), shape: MaterialStateProperty.all( @@ -935,7 +948,7 @@ class UtilityComponents { letterSpacing: 0.50)), )), ), - SizedBox( + const SizedBox( width: 5, ), Expanded( @@ -949,8 +962,8 @@ class UtilityComponents { borderRadius: BorderRadius.circular(8.0), ))), onPressed: () => { - _meetingStore.endRoom(false, "Room Ended From Flutter"), - if (_meetingStore.isRoomEnded) + meetingStore.endRoom(false, "Room Ended From Flutter"), + if (meetingStore.isRoomEnded) {Navigator.popUntil(context, (route) => route.isFirst)} }, child: Padding( @@ -975,152 +988,107 @@ class UtilityComponents { } static Widget rotateScreen(BuildContext context) { - MeetingStore _meetingStore = Provider.of(context); + MeetingStore meetingStore = Provider.of(context); return GestureDetector( onTap: () { - if (_meetingStore.isLandscapeLocked) - _meetingStore.setLandscapeLock(false); - else { - _meetingStore.setLandscapeLock(true); + if (meetingStore.isLandscapeLocked) { + meetingStore.setLandscapeLock(false); + } else { + meetingStore.setLandscapeLock(true); } }, child: Padding( padding: const EdgeInsets.all(8.0), child: SvgPicture.asset( - "assets/icons/rotate.svg", - color: _meetingStore.isLandscapeLocked ? Colors.blue : iconColor, - ), + "packages/hms_room_kit/lib/src/assets/icons/rotate.svg", + colorFilter: ColorFilter.mode( + meetingStore.isLandscapeLocked ? Colors.blue : iconColor, + BlendMode.srcIn)), ), ); } - static Future showErrorDialog( - {required BuildContext context, - required String errorMessage, - required String errorTitle, - required String actionMessage, - required Function() action}) async { - bool? res = await showDialog( - barrierDismissible: false, - context: context, - builder: (BuildContext context) { - return WillPopScope( - onWillPop: () async => false, - child: AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - backgroundColor: themeBottomSheetColor, - title: Center( - child: Text( - errorTitle, - style: GoogleFonts.inter( - color: Colors.red.shade300, - fontSize: 16, - fontWeight: FontWeight.w600), - ), - ), - content: Text(errorMessage, - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 14, - fontWeight: FontWeight.w400)), - actions: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all(themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all(hmsdefaultColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>(RoundedRectangleBorder( - side: - BorderSide(width: 1, color: hmsdefaultColor), - borderRadius: BorderRadius.circular(8.0), - ))), - child: Text( - actionMessage, - style: GoogleFonts.inter(), - ), - onPressed: action), - ], - ) - ], - ), - ); - }); - return res ?? false; + // static Future showErrorDialog( + // {required BuildContext context, + // required String errorMessage, + // required String errorTitle, + // required String actionMessage, + // required Function() action}) async { + // bool? res = await showDialog( + // barrierDismissible: false, + // context: context, + // builder: (BuildContext context) { + // return WillPopScope( + // onWillPop: () async => false, + // child: AlertDialog( + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadius.circular(12)), + // insetPadding: + // const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + // backgroundColor: HMSThemeColors.backgroundDefault, + // title: Center( + // child: Text( + // errorTitle, + // style: GoogleFonts.inter( + // color: HMSThemeColors.alertErrorDefault, + // fontSize: 16, + // fontWeight: FontWeight.w600), + // ), + // ), + // content: Text(errorMessage, + // style: GoogleFonts.inter( + // color: HMSThemeColors.onSurfaceHighEmphasis, + // fontSize: 14, + // fontWeight: FontWeight.w400)), + // actions: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // ElevatedButton( + // style: ButtonStyle( + // shadowColor: MaterialStateProperty.all( + // HMSThemeColors.backgroundDefault), + // backgroundColor: MaterialStateProperty.all( + // HMSThemeColors.primaryDefault), + // shape: MaterialStateProperty.all< + // RoundedRectangleBorder>(RoundedRectangleBorder( + // side: BorderSide( + // width: 1, + // color: HMSThemeColors.primaryDefault), + // borderRadius: BorderRadius.circular(8.0), + // ))), + // onPressed: action, + // child: Text( + // actionMessage, + // style: GoogleFonts.inter(), + // )), + // ], + // ) + // ], + // ), + // ); + // }); + // return res ?? false; + // } + + static Widget showReconnectingDialog(BuildContext context) { + return Container( + height: MediaQuery.of(context).size.height, + color: HMSThemeColors.backgroundDefault.withOpacity(0.5), + child: const HMSReconnectionToast()); } - static Widget showReconnectingDialog(BuildContext context, - {String alertMessage = "Leave Room"}) { + ///This returns the error toasts whenever the error is terminal + static Widget showFailureError( + HMSException exception, BuildContext context, Function onLeavePressed) { return Container( - height: MediaQuery.of(context).size.height, - color: Colors.black.withOpacity(0.5), - child: Center( - child: Container( - margin: EdgeInsets.symmetric(horizontal: 10), - padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(12)), - color: themeBottomSheetColor, - boxShadow: [ - BoxShadow( - color: Colors.black, - offset: Offset(0.0, 1.0), - blurRadius: 6.0, - ), - ], - ), - child: Column(mainAxisSize: MainAxisSize.min, children: [ - Text( - "Reconnecting...", - style: GoogleFonts.inter( - color: Colors.red.shade300, - fontSize: 16, - fontWeight: FontWeight.w600), - ), - SizedBox( - height: 15, - ), - LinearProgressIndicator( - color: hmsdefaultColor, - ), - SizedBox( - height: 15, - ), - Text('Oops, No internet Connection.\nReconnecting...', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 14, - fontWeight: FontWeight.w400)), - SizedBox( - height: 15, - ), - ElevatedButton( - style: ButtonStyle( - shadowColor: MaterialStateProperty.all(themeSurfaceColor), - backgroundColor: MaterialStateProperty.all(hmsdefaultColor), - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - side: BorderSide(width: 1, color: hmsdefaultColor), - borderRadius: BorderRadius.circular(8.0), - ))), - child: Text( - alertMessage, - style: GoogleFonts.inter(), - ), - onPressed: () { - context.read().leave(); - Navigator.of(context).popUntil((route) => route.isFirst); - }) - ]), - ), - ), - ); + height: MediaQuery.of(context).size.height, + color: HMSThemeColors.backgroundDefault.withOpacity(0.5), + child: HMSDisconnectedToast( + errorDescription: + "CODE: ${exception.code?.errorCode}, ${exception.message}", + onLeavePressed: onLeavePressed, + )); } static onEndStream( @@ -1130,24 +1098,24 @@ class UtilityComponents { required String actionText, required String ignoreText, bool leaveRoom = false}) { - MeetingStore _meetingStore = context.read(); + MeetingStore meetingStore = context.read(); return showDialog( context: context, builder: (ctx) => AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - actionsPadding: EdgeInsets.only(right: 10, left: 10, bottom: 10), - backgroundColor: Color.fromRGBO(32, 22, 23, 1), - title: Container( + insetPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + actionsPadding: const EdgeInsets.only(right: 10, left: 10, bottom: 10), + backgroundColor: const Color.fromRGBO(32, 22, 23, 1), + title: SizedBox( width: 300, child: Row( mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( - "assets/icons/end_warning.svg", + "packages/hms_room_kit/lib/src/assets/icons/end_warning.svg", width: 24, ), - SizedBox( + const SizedBox( width: 5, ), Text( @@ -1179,7 +1147,7 @@ class UtilityComponents { shadowColor: MaterialStateProperty.all(themeSurfaceColor), backgroundColor: MaterialStateProperty.all( - Color.fromRGBO(32, 22, 23, 1), + const Color.fromRGBO(32, 22, 23, 1), ), shape: MaterialStateProperty.all( @@ -1200,7 +1168,7 @@ class UtilityComponents { letterSpacing: 0.50)), )), ), - SizedBox( + const SizedBox( width: 5, ), Expanded( @@ -1214,10 +1182,10 @@ class UtilityComponents { borderRadius: BorderRadius.circular(8.0), ))), onPressed: () => { - _meetingStore.stopHLSStreaming(), + meetingStore.stopHLSStreaming(), if (leaveRoom) { - _meetingStore.leave(), + meetingStore.leave(), }, Navigator.pop(context) }, @@ -1254,7 +1222,8 @@ class UtilityComponents { builder: (context) => AlertDialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), + insetPadding: + const EdgeInsets.symmetric(horizontal: 10, vertical: 10), backgroundColor: themeBottomSheetColor, title: Text("Change Name", style: GoogleFonts.inter( @@ -1262,34 +1231,35 @@ class UtilityComponents { fontWeight: FontWeight.w600, letterSpacing: 0.15, fontSize: 20)), - content: Container( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - textCapitalization: TextCapitalization.words, - textInputAction: TextInputAction.done, - onSubmitted: (value) => (textController.text == "") - ? Utilities.showToast("Name can't be empty") - : Navigator.pop(context, textController.text.trim()), - autofocus: true, - controller: textController, - decoration: InputDecoration( - fillColor: themeSurfaceColor, - filled: true, - hintText: "Enter Name", - contentPadding: EdgeInsets.only(left: 10, right: 10), - enabledBorder: OutlineInputBorder( - borderSide: - BorderSide(color: borderColor, width: 1), - borderRadius: BorderRadius.all(Radius.circular(8))), - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(8)), - ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + style: + TextStyle(color: HMSThemeColors.onSurfaceHighEmphasis), + textCapitalization: TextCapitalization.words, + textInputAction: TextInputAction.done, + onSubmitted: (value) => (textController.text == "") + ? Utilities.showToast("Name can't be empty") + : Navigator.pop(context, textController.text.trim()), + autofocus: true, + controller: textController, + decoration: InputDecoration( + fillColor: themeSurfaceColor, + filled: true, + hintText: "Enter Name", + contentPadding: + const EdgeInsets.only(left: 10, right: 10), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: borderColor, width: 1), + borderRadius: + const BorderRadius.all(Radius.circular(8))), + border: const OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(8)), ), ), - ], - ), + ), + ], ), actions: [ Row( @@ -1303,7 +1273,7 @@ class UtilityComponents { themeBottomSheetColor), shape: MaterialStateProperty.all< RoundedRectangleBorder>(RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), @@ -1362,9 +1332,9 @@ class UtilityComponents { static void showChangeAudioMixingModeDialog(BuildContext context) { HMSAudioMixingMode valueChoose = HMSAudioMixingMode.TALK_AND_MUSIC; - MeetingStore _meetingStore = context.read(); + MeetingStore meetingStore = context.read(); - void _updateDropDownValue(dynamic newValue) { + void updateDropDownValue(dynamic newValue) { valueChoose = newValue; } @@ -1376,30 +1346,31 @@ class UtilityComponents { shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12)), actionsPadding: - EdgeInsets.only(left: 20, right: 20, bottom: 10), + const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: - EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: const EdgeInsets.only( + top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Change Audio Mixing Mode", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText( + HMSSubtitleText( text: "Select Audio Mixing mode", textColor: themeSubHeadingColor), ], ), content: Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -1412,36 +1383,36 @@ class UtilityComponents { child: HMSDropDown( dropDownItems: [ DropdownMenuItem( - child: TitleText( + value: HMSAudioMixingMode.TALK_AND_MUSIC, + child: HMSTitleText( text: HMSAudioMixingMode.TALK_AND_MUSIC.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: HMSAudioMixingMode.TALK_AND_MUSIC, ), DropdownMenuItem( - child: TitleText( + value: HMSAudioMixingMode.TALK_ONLY, + child: HMSTitleText( text: HMSAudioMixingMode.TALK_ONLY.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: HMSAudioMixingMode.TALK_ONLY, ), DropdownMenuItem( - child: TitleText( + value: HMSAudioMixingMode.MUSIC_ONLY, + child: HMSTitleText( text: HMSAudioMixingMode.MUSIC_ONLY.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: HMSAudioMixingMode.MUSIC_ONLY, ) ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, - updateSelectedValue: _updateDropDownValue)), + updateSelectedValue: updateDropDownValue)), ), actions: [ Row( @@ -1456,7 +1427,7 @@ class UtilityComponents { shape: MaterialStateProperty.all< RoundedRectangleBorder>( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), @@ -1485,8 +1456,8 @@ class UtilityComponents { borderRadius: BorderRadius.circular(8.0), ))), onPressed: () => { - if (_meetingStore.isAudioShareStarted) - _meetingStore.setAudioMixingMode(valueChoose) + if (meetingStore.isAudioShareStarted) + meetingStore.setAudioMixingMode(valueChoose) else Utilities.showToast("Audio Share not enabled"), Navigator.pop(context), @@ -1511,120 +1482,4 @@ class UtilityComponents { ); })); } - - static Future showAudioShareDialog( - {required BuildContext context, - required MeetingStore meetingStore, - required bool isPlaying}) async { - double volume = meetingStore.audioPlayerVolume; - String answer = await showDialog( - context: context, - builder: (context) => StatefulBuilder(builder: (context, setState) { - return AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12)), - backgroundColor: themeBottomSheetColor, - contentPadding: - EdgeInsets.only(left: 14, right: 10, top: 15, bottom: 15), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text(isPlaying ? "Stop playing" : "Pick song from files"), - SizedBox(height: 10), - if (isPlaying) - Column( - children: [ - Text("Volume: ${(volume * 100).truncate()}"), - Slider( - min: 0.0, - max: 1.0, - value: volume, - onChanged: (value) { - setState(() { - volume = value; - meetingStore.setAudioPlayerVolume(volume); - }); - }, - ), - ], - ) - ], - ), - actions: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all(themeSurfaceColor), - backgroundColor: MaterialStateProperty.all( - themeBottomSheetColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>( - RoundedRectangleBorder( - side: BorderSide( - width: 1, - color: Color.fromRGBO(107, 125, 153, 1)), - borderRadius: BorderRadius.circular(8.0), - ))), - onPressed: () => Navigator.pop(context, ""), - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 6, vertical: 12), - child: Text('Cancel', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: 0.50)), - )), - ElevatedButton( - style: ButtonStyle( - shadowColor: - MaterialStateProperty.all(themeSurfaceColor), - backgroundColor: - MaterialStateProperty.all(hmsdefaultColor), - shape: MaterialStateProperty.all< - RoundedRectangleBorder>(RoundedRectangleBorder( - side: - BorderSide(width: 1, color: hmsdefaultColor), - borderRadius: BorderRadius.circular(8.0), - ))), - onPressed: () async { - if (isPlaying) { - meetingStore.stopAudioIos(); - Navigator.pop(context, ""); - } else { - FilePickerResult? result = - await FilePicker.platform.pickFiles(); - if (result != null) { - String? path = - "file://" + result.files.single.path!; - - Navigator.pop(context, path); - } - } - }, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 6, vertical: 12), - child: Text( - isPlaying ? 'Stop' : 'Select', - style: GoogleFonts.inter( - color: themeDefaultColor, - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: 0.50), - ), - ), - ), - ], - ) - ], - ); - })); - - return answer; - } } diff --git a/example/lib/common/util/utility_function.dart b/packages/hms_room_kit/lib/src/common/utility_functions.dart similarity index 58% rename from example/lib/common/util/utility_function.dart rename to packages/hms_room_kit/lib/src/common/utility_functions.dart index 6f7f03ced..0657f3b68 100644 --- a/example/lib/common/util/utility_function.dart +++ b/packages/hms_room_kit/lib/src/common/utility_functions.dart @@ -1,23 +1,27 @@ //Package imports import 'dart:io'; +import 'dart:math' as math; import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:flutter_foreground_task/flutter_foreground_task.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/animated_text.dart'; -import 'package:hmssdk_flutter_example/service/constant.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_flow.dart'; +import 'package:hms_room_kit/src/common/animated_text.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; +///This class contains the utility functions used in the app class Utilities { static RegExp regexEmoji = RegExp( r'(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])'); + ///This function is used to get the avatar title static String getAvatarTitle(String name) { + if (name.isEmpty) { + return "👤"; + } if (name.contains(regexEmoji)) { name = name.replaceAll(regexEmoji, ''); if (name.trim().isEmpty) { @@ -26,7 +30,7 @@ class Utilities { } List? parts = name.trim().split(" "); if (parts.length == 1) { - name = parts[0][0]; + name = parts[0].substring(0, math.min(2, parts[0].length)); } else if (parts.length >= 2) { name = parts[0][0]; if (parts[1] == "" || parts[1] == " ") { @@ -38,34 +42,30 @@ class Utilities { return name.toUpperCase(); } + ///This function is used to get the avatar background colour static Color getBackgroundColour(String name) { + if (name.isEmpty) { + return avatarColors[0]; + } if (name.contains(regexEmoji)) { name = name.replaceAll(regexEmoji, ''); if (name.trim().isEmpty) { - return Color(0xFF6554C0); + return avatarColors[0]; } } - return Utilities - .colors[name.toUpperCase().codeUnitAt(0) % Utilities.colors.length]; + return avatarColors[name.toUpperCase().codeUnitAt(0) % avatarColors.length]; } - static List colors = [ - Colors.amber, - hmsdefaultColor, - Colors.purple, - Colors.lightGreen, - Colors.redAccent - ]; - /// List of alignments for timed metadata toasts static List timedMetadataAlignment = [ - Alignment(-0.9, 0.4), - Alignment(-0.4, 0.2), - Alignment(0, 0.8), - Alignment(0.4, 0.9), - Alignment(0.8, 0.5) + const Alignment(-0.9, 0.4), + const Alignment(-0.4, 0.2), + const Alignment(0, 0.8), + const Alignment(0.4, 0.9), + const Alignment(0.8, 0.5) ]; + ///This function is used to get Aspect Ratio of the screen static double getRatio(Size size, BuildContext context) { EdgeInsets viewPadding = MediaQuery.of(context).viewPadding; return (size.height - @@ -77,10 +77,12 @@ class Utilities { (size.width); } + ///This function is used to get HLS Player's Aspect Ratio for the screen static double getHLSRatio(Size size, BuildContext context) { return (size.height - 1) / (size.width); } + ///This function is used to get HLS Player's Default Aspect Ratio for the screen static double getHLSPlayerDefaultRatio(Size size) { if (Platform.isAndroid) { return size.width / (size.height - 100); @@ -89,6 +91,7 @@ class Utilities { } } + ///This function is used to get the RTMP URL from the room link static void setRTMPUrl(String roomUrl) { if (roomUrl.contains("flutterhms.page.link") && roomUrl.contains("meetingUrl")) { @@ -99,32 +102,150 @@ class Utilities { if (index != -1) { urlSplit[index] = "preview"; } - Constant.streamingUrl = urlSplit.join('/') + "?skip_preview=true"; + Constant.streamingUrl = "${urlSplit.join('/')}?skip_preview=true"; + } + + ///This function formats the number of peers + ///If the number of peers is greater than 1 million, we render the number in millions + ///If the number of peers is greater than 1 thousand, we render the number in thousands + ///else we render the number as it is + static String formatNumber(int number) { + if (number >= 1000000) { + double num = number / 1000000; + return '${num.toStringAsFixed(num.truncateToDouble() == num ? 0 : 1)}M'; + } else if (number >= 1000) { + double num = number / 1000; + return '${num.toStringAsFixed(num.truncateToDouble() == num ? 0 : 1)}K'; + } else { + return number.toString(); + } } + ///This contains the list of toasts possible colors + static final List _toastColors = [ + HMSThemeColors.surfaceDim, + HMSThemeColors.surfaceDim.withOpacity(0.8), + HMSThemeColors.surfaceDim.withOpacity(0.6), + ]; + + ///This method returns the toast color based on the index and the number of toasts + static Color getToastColor(int index, int toastsCount) { + if (toastsCount == 1) return _toastColors[0]; + if (toastsCount == 2) return _toastColors[1 - index]; + return _toastColors[2 - index]; + } + + ///This function gets permissions for the camera,microphone and bluetooth headphones static Future getPermissions() async { - if (Platform.isIOS) return true; + ///We request the permissions for the camera,microphone and bluetooth await Permission.camera.request(); await Permission.microphone.request(); - await Permission.bluetoothConnect.request(); + if (Platform.isIOS) { + await Permission.bluetooth.request(); + } else if (Platform.isAndroid) { + await Permission.bluetoothConnect.request(); + } + await Permission.phone.request(); - // storage permission is required to save Snapshot to device gallery. - await Permission.storage.request(); + ///We check if the permissions are granted + ///If they are granted we return true + ///Else we return false + if (Platform.isIOS) { + if (await Permission.camera.isGranted && + await Permission.microphone.isGranted && + await Permission.bluetooth.isGranted) { + return true; + } + } else if (Platform.isAndroid) { + if (await Permission.camera.isGranted && + await Permission.microphone.isGranted && + await Permission.phone.isGranted && + await Permission.bluetoothConnect.isGranted) { + return true; + } + } - while ((await Permission.camera.isDenied)) { - await Permission.camera.request(); + ///We open the app settings if the user has permanently denied the permissions + ///This is done because the user can't grant the permissions from the app now + bool isCameraPermissionsDenied = (await Permission.camera.isDenied && + !await Permission.camera.shouldShowRequestRationale); + bool isMicrophonePermissionsDenied = + (await Permission.microphone.isDenied && + !await Permission.microphone.shouldShowRequestRationale); + bool isBluetoothPermissionsDenied = false; + bool isPhonePermissionDenied = Platform.isAndroid + ? (await Permission.phone.isDenied && + !await Permission.phone.shouldShowRequestRationale) + : false; + if (Platform.isIOS) { + isBluetoothPermissionsDenied = + await Permission.bluetooth.isPermanentlyDenied; + } else if (Platform.isAndroid) { + isBluetoothPermissionsDenied = + (await Permission.bluetoothConnect.isDenied && + !await Permission.bluetoothConnect.shouldShowRequestRationale); } - while ((await Permission.microphone.isDenied)) { - await Permission.microphone.request(); + + ///We open the app settings if the user has permanently denied the permissions + ///based on the platform + if (isCameraPermissionsDenied || + isMicrophonePermissionsDenied || + isBluetoothPermissionsDenied || + isPhonePermissionDenied) { + await openAppSettings(); + return false; } - while ((await Permission.bluetoothConnect.isDenied)) { - await Permission.bluetoothConnect.request(); + + return false; + } + + ///This method checks for the permissions for the camera,microphone and bluetooth + ///Based on this we route the screens. + static Future checkPermissions() async { + if (await Permission.camera.isGranted && + await Permission.microphone.isGranted && + (await Permission.bluetoothConnect.isGranted || + await Permission.bluetooth.isGranted)) { + return true; } + return false; + } - return true; + ///This method is used to get names for the audio devices + ///It is used to set the icon based on the audio device + static String getAudioDeviceIconName(HMSAudioDevice? hmsAudioDevice) { + switch (hmsAudioDevice) { + case HMSAudioDevice.SPEAKER_PHONE: + return "speaker_state_on"; + case HMSAudioDevice.WIRED_HEADSET: + return "wired_headset"; + case HMSAudioDevice.EARPIECE: + return "earpiece"; + case HMSAudioDevice.BLUETOOTH: + return "bluetooth"; + default: + return "speaker_state_on"; + } + } + + ///This method is used to get names for the audio devices + static String getAudioDeviceName(HMSAudioDevice? hmsAudioDevice) { + switch (hmsAudioDevice) { + case HMSAudioDevice.SPEAKER_PHONE: + return "Speaker"; + case HMSAudioDevice.WIRED_HEADSET: + return "Earphone"; + case HMSAudioDevice.EARPIECE: + return "Phone"; + case HMSAudioDevice.BLUETOOTH: + return "Bluetooth Device"; + default: + return "Auto"; + } } + ///This method is used to get camera permissions static Future getCameraPermissions() async { if (Platform.isIOS) return true; await Permission.camera.request(); @@ -136,25 +257,12 @@ class Utilities { return true; } - static MeetingFlow deriveFlow(String roomUrl) { - final joinFlowRegex = RegExp("\.100ms\.live\/(preview|meeting)\/"); - final hlsFlowRegex = RegExp("\.100ms\.live\/streaming\/"); - - if (joinFlowRegex.hasMatch(roomUrl)) { - return MeetingFlow.meeting; - } else if (hlsFlowRegex.hasMatch(roomUrl)) { - return MeetingFlow.hlsStreaming; - } else { - return MeetingFlow.none; - } - } - static void showToast(String message, {int time = 1}) { - BotToast.showText( - textStyle: GoogleFonts.inter(fontSize: 14), - text: message, - contentColor: Colors.black87, - duration: Duration(seconds: time)); + // BotToast.showText( + // textStyle: GoogleFonts.inter(fontSize: 14), + // text: message, + // contentColor: Colors.black87, + // duration: Duration(seconds: time)); } static void showTimedMetadata(String message, @@ -199,7 +307,7 @@ class Utilities { static Future getBoolData({required String key}) async { final prefs = await SharedPreferences.getInstance(); - return prefs.getBool(key) ?? null; + return prefs.getBool(key); } static Future saveBoolData( diff --git a/packages/hms_room_kit/lib/src/enums/meeting_mode.dart b/packages/hms_room_kit/lib/src/enums/meeting_mode.dart new file mode 100644 index 000000000..569297bd7 --- /dev/null +++ b/packages/hms_room_kit/lib/src/enums/meeting_mode.dart @@ -0,0 +1,10 @@ +//enum to set the meeting flow +enum MeetingMode { + single, + hero, + equalProminenceWithInset, + equalProminenceWithoutInset, + audio, + activeSpeakerWithInset, + activeSpeakerWithoutInset +} diff --git a/example/lib/enum/session_store_key.dart b/packages/hms_room_kit/lib/src/enums/session_store_keys.dart similarity index 62% rename from example/lib/enum/session_store_key.dart rename to packages/hms_room_kit/lib/src/enums/session_store_keys.dart index a6d3de343..1cdd7b8af 100644 --- a/example/lib/enum/session_store_key.dart +++ b/packages/hms_room_kit/lib/src/enums/session_store_keys.dart @@ -1,14 +1,14 @@ //Enum to store the session metadata keys // PINNED_MESSAGE_SESSION_KEY: for pinning messages // SPOTLIGHT: for adding spotlight feature in application -enum SessionStoreKey { PINNED_MESSAGE_SESSION_KEY, SPOTLIGHT, unknown } +enum SessionStoreKey { pinnedMessageSessionKey, spotlight, unknown } extension SessionStoreKeyValues on SessionStoreKey { static String getNameFromMethod(SessionStoreKey method) { switch (method) { - case SessionStoreKey.PINNED_MESSAGE_SESSION_KEY: + case SessionStoreKey.pinnedMessageSessionKey: return "pinnedMessage"; - case SessionStoreKey.SPOTLIGHT: + case SessionStoreKey.spotlight: return "spotlight"; default: return ""; @@ -18,21 +18,21 @@ extension SessionStoreKeyValues on SessionStoreKey { static SessionStoreKey getMethodFromName(String key) { switch (key) { case "pinnedMessage": - return SessionStoreKey.PINNED_MESSAGE_SESSION_KEY; + return SessionStoreKey.pinnedMessageSessionKey; case "spotlight": - return SessionStoreKey.SPOTLIGHT; + return SessionStoreKey.spotlight; default: return SessionStoreKey.unknown; } } static List getSessionStoreKeys() { - List _keys = []; - SessionStoreKey.values.forEach((key) { + List keys = []; + for (var key in SessionStoreKey.values) { if (key != SessionStoreKey.unknown) { - _keys.add(getNameFromMethod(key)); + keys.add(getNameFromMethod(key)); } - }); - return _keys; + } + return keys; } } diff --git a/example/lib/common/bottom_sheets/chat_bottom_sheet.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_chat.dart similarity index 53% rename from example/lib/common/bottom_sheets/chat_bottom_sheet.dart rename to packages/hms_room_kit/lib/src/hls_viewer/hls_chat.dart index 338e0f1f3..792ba6412 100644 --- a/example/lib/common/bottom_sheets/chat_bottom_sheet.dart +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_chat.dart @@ -1,35 +1,38 @@ //Package imports -import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; -import 'package:collection/collection.dart'; import 'package:flutter_linkify/flutter_linkify.dart'; import 'package:flutter_svg/svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/message_container.dart'; -import 'package:hmssdk_flutter_example/enum/session_store_key.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; - -//Project imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; import 'package:url_launcher/url_launcher.dart'; -class ChatBottomSheet extends StatefulWidget { +//Project imports +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/enums/session_store_keys.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/message_container.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///[HLSChat] is a widget that is used to display the chat screen +///It is used to send messages to everyone, to a specific role or to a specific peer +class HLSChat extends StatefulWidget { + const HLSChat({super.key}); + @override - State createState() => _ChatBottomSheetState(); + State createState() => _HLSChatState(); } -class _ChatBottomSheetState extends State { +class _HLSChatState extends State { late double widthOfScreen; TextEditingController messageTextController = TextEditingController(); String valueChoose = "Everyone"; final ScrollController _scrollController = ScrollController(); final DateFormat formatter = DateFormat('hh:mm a'); + @override void dispose() { messageTextController.dispose(); @@ -37,16 +40,19 @@ class _ChatBottomSheetState extends State { super.dispose(); } - void _updateDropDownValue(dynamic newValue) { + void updateDropDownValue(dynamic newValue) { valueChoose = newValue; } + ///This function is used to scroll to the end of the chat void _scrollToEnd() { WidgetsBinding.instance.addPostFrameCallback((_) => _scrollController.animateTo(_scrollController.position.maxScrollExtent, - duration: Duration(milliseconds: 200), curve: Curves.easeInOut)); + duration: const Duration(milliseconds: 200), + curve: Curves.easeInOut)); } + ///This function is used to get the sender of the message String sender(HMSMessageRecipient hmsMessageRecipient) { if ((hmsMessageRecipient.recipientPeer != null) && (hmsMessageRecipient.recipientRoles == null)) { @@ -58,6 +64,7 @@ class _ChatBottomSheetState extends State { return ""; } + ///This function is used to send the message void sendMessage() async { MeetingStore meetingStore = context.read(); List hmsRoles = meetingStore.roles; @@ -65,17 +72,19 @@ class _ChatBottomSheetState extends State { if (message.isEmpty) return; List rolesName = []; - for (int i = 0; i < hmsRoles.length; i++) rolesName.add(hmsRoles[i].name); + for (int i = 0; i < hmsRoles.length; i++) { + rolesName.add(hmsRoles[i].name); + } - if (this.valueChoose == "Everyone") { + if (valueChoose == "Everyone") { meetingStore.sendBroadcastMessage(message); - } else if (rolesName.contains(this.valueChoose)) { + } else if (rolesName.contains(valueChoose)) { List selectedRoles = []; selectedRoles - .add(hmsRoles.firstWhere((role) => role.name == this.valueChoose)); + .add(hmsRoles.firstWhere((role) => role.name == valueChoose)); meetingStore.sendGroupMessage(message, selectedRoles); - } else if (meetingStore.localPeer!.peerId != this.valueChoose) { - var peer = await meetingStore.getPeer(peerId: this.valueChoose); + } else if (meetingStore.localPeer!.peerId != valueChoose) { + var peer = await meetingStore.getPeer(peerId: valueChoose); meetingStore.sendDirectMessage(message, peer!); } messageTextController.clear(); @@ -93,8 +102,8 @@ class _ChatBottomSheetState extends State { child: SafeArea( child: Padding( padding: MediaQuery.of(context).viewInsets, - child: FractionallySizedBox( - heightFactor: 0.81, + child: Container( + color: HMSThemeColors.surfaceDefault, child: Padding( padding: const EdgeInsets.only( top: 20.0, left: 10, right: 10, bottom: 10), @@ -112,6 +121,7 @@ class _ChatBottomSheetState extends State { Padding( padding: const EdgeInsets.only(left: 14.0), child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( "Chat", @@ -121,139 +131,18 @@ class _ChatBottomSheetState extends State { letterSpacing: 0.15, fontWeight: FontWeight.w600), ), - SizedBox( + const SizedBox( width: 15, ), - Container( - padding: EdgeInsets.only(left: 10, right: 5), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10.0), - border: Border.all( - color: borderColor, - style: BorderStyle.solid, - width: 0.80), - ), - child: DropdownButtonHideUnderline( - child: Selector< - MeetingStore, - Tuple2, - List>>( - selector: (_, meetingStore) => Tuple2( - meetingStore.roles, - meetingStore.peers), - builder: (context, data, _) { - List roles = data.item1; - - return HMSDropDown( - selectedValue: valueChoose, - buttonStyleData: ButtonStyleData( - width: 100, height: 35), - menuItemStyleData: - MenuItemStyleData( - height: 45, - ), - dropdownStyleData: - DropdownStyleData( - width: MediaQuery.of(context) - .size - .width * - 0.4, - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular( - 8), - color: themeSurfaceColor), - offset: Offset(-10, -10), - ), - dropDownItems: [ - DropdownMenuItem( - child: Text( - "Everyone", - style: GoogleFonts.inter( - fontWeight: - FontWeight.w400, - fontSize: 12, - letterSpacing: 0.4, - ), - overflow: - TextOverflow.ellipsis, - maxLines: 1, - ), - value: "Everyone", - ), - ...roles - .sortedBy((element) => - element.priority - .toString()) - .map((role) => - DropdownMenuItem( - child: Text( - "${role.name}", - overflow: - TextOverflow - .ellipsis, - maxLines: 1, - style: GoogleFonts - .inter( - fontSize: - 12, - color: - iconColor), - ), - value: role.name, - )) - .toList(), - ...data.item2 - .sortedBy((element) => - element.name) - .map((peer) { - return !peer.isLocal - ? DropdownMenuItem( - child: Text( - "${peer.name} ${peer.isLocal ? "(You)" : ""}", - style: GoogleFonts - .inter( - fontSize: - 12, - color: - iconColor), - overflow: - TextOverflow - .ellipsis, - maxLines: 1, - ), - value: - peer.peerId, - ) - : null; - }) - .whereNotNull() - .toList(), - ], - updateSelectedValue: - _updateDropDownValue); - }), - ), - ) ], ), ), ], ), - IconButton( - icon: SvgPicture.asset( - "assets/icons/close_button.svg", - width: 40, - ), - onPressed: () { - context.read().setNewMessageFalse(); - Navigator.pop(context); - }, - ), ], ), Padding( - padding: EdgeInsets.only(top: 20, bottom: 15), + padding: const EdgeInsets.only(top: 20, bottom: 15), child: Divider( height: 5, color: dividerColor, @@ -264,11 +153,12 @@ class _ChatBottomSheetState extends State { meetingStore.isMessageInfoShown, meetingStore.sessionMetadata), builder: (context, displayFlags, _) { - if (displayFlags.item1 && (displayFlags.item2 == null)) + if (displayFlags.item1 && + (displayFlags.item2 == null)) { return Column( children: [ Container( - padding: EdgeInsets.all(16), + padding: const EdgeInsets.all(16), decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), color: themeSurfaceColor), @@ -279,15 +169,15 @@ class _ChatBottomSheetState extends State { Row( children: [ SvgPicture.asset( - "assets/icons/info.svg"), - SizedBox(width: 18.5), + "packages/hms_room_kit/lib/src/assets/icons/info.svg"), + const SizedBox(width: 18.5), SizedBox( width: MediaQuery.of(context) .size .width * 0.66, child: Text( - "Messages can only be seen by people in the call and are deleted when the call ends.\nLong Press the send button to send timed metadata", + "Messages can only be seen by people in the call and are deleted when the call ends.", style: GoogleFonts.inter( fontWeight: FontWeight.w400, color: themeSubHeadingColor, @@ -305,25 +195,26 @@ class _ChatBottomSheetState extends State { .setMessageInfoFalse(); }, child: SvgPicture.asset( - "assets/icons/close.svg")) + "packages/hms_room_kit/lib/src/assets/icons/close.svg")) ], ), ), - SizedBox( + const SizedBox( height: 15, ), ], ); - else - return SizedBox(); + } else { + return const SizedBox(); + } }), Selector( selector: (_, meetingStore) => meetingStore.sessionMetadata, builder: (context, sessionMetadata, _) { - if (sessionMetadata != null && sessionMetadata != "") + if (sessionMetadata != null && sessionMetadata != "") { return Container( - padding: EdgeInsets.all(16), + padding: const EdgeInsets.all(16), decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), color: themeSurfaceColor), @@ -332,8 +223,9 @@ class _ChatBottomSheetState extends State { children: [ Row( children: [ - SvgPicture.asset("assets/icons/pin.svg"), - SizedBox(width: 18.5), + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/pin.svg"), + const SizedBox(width: 18.5), SizedBox( width: MediaQuery.of(context).size.width * 0.66, @@ -347,8 +239,8 @@ class _ChatBottomSheetState extends State { .externalApplication); } }, - options: - LinkifyOptions(humanize: false), + options: const LinkifyOptions( + humanize: false), style: GoogleFonts.inter( fontSize: 12.0, color: themeSubHeadingColor, @@ -372,18 +264,19 @@ class _ChatBottomSheetState extends State { .setSessionMetadataForKey( key: SessionStoreKeyValues .getNameFromMethod(SessionStoreKey - .PINNED_MESSAGE_SESSION_KEY), + .pinnedMessageSessionKey), metadata: null); }, child: SvgPicture.asset( - "assets/icons/close.svg")) + "packages/hms_room_kit/lib/src/assets/icons/close.svg")) ], ), ); - else - return SizedBox(); + } else { + return const SizedBox(); + } }), - SizedBox( + const SizedBox( height: 15, ), Expanded( @@ -392,12 +285,13 @@ class _ChatBottomSheetState extends State { selector: (_, meetingStore) => Tuple2( meetingStore.messages, meetingStore.messages.length), builder: (context, data, _) { - if (data.item2 == 0) + if (data.item2 == 0) { return Center( child: Text( 'No messages', style: GoogleFonts.inter(color: iconColor), )); + } _scrollToEnd(); return ListView.builder( controller: _scrollController, @@ -415,15 +309,12 @@ class _ChatBottomSheetState extends State { : 20.0, 10, ), - margin: EdgeInsets.symmetric(vertical: 2), + margin: + const EdgeInsets.symmetric(vertical: 2), child: MessageContainer( - isLocalMessage: - data.item1[index].sender?.isLocal ?? - false - ? true - : false, - message: - "${data.item1[index].message.trim().toString()}", + message: data.item1[index].message + .trim() + .toString(), senderName: data.item1[index].sender?.name ?? "Anonymous", @@ -447,7 +338,8 @@ class _ChatBottomSheetState extends State { child: Row( children: [ Container( - margin: EdgeInsets.only(bottom: 5.0, left: 5.0), + margin: const EdgeInsets.only(bottom: 5.0, left: 5.0), + width: widthOfScreen - 70, child: TextField( textCapitalization: TextCapitalization.sentences, textInputAction: TextInputAction.done, @@ -456,7 +348,7 @@ class _ChatBottomSheetState extends State { }, style: GoogleFonts.inter(color: iconColor), controller: messageTextController, - decoration: new InputDecoration( + decoration: InputDecoration( border: InputBorder.none, focusedBorder: InputBorder.none, enabledBorder: InputBorder.none, @@ -467,11 +359,10 @@ class _ChatBottomSheetState extends State { fontSize: 14, letterSpacing: 0.25, fontWeight: FontWeight.w400), - contentPadding: EdgeInsets.only( + contentPadding: const EdgeInsets.only( left: 15, bottom: 11, top: 11, right: 15), hintText: "Send a message to everyone"), ), - width: widthOfScreen - 70, ), InkWell( onTap: () { @@ -480,36 +371,13 @@ class _ChatBottomSheetState extends State { } sendMessage(); }, - onLongPress: () { - if (!(context - .read() - .localPeer - ?.role - .name - .contains("hls-") ?? - false)) { - if (messageTextController.text.isEmpty) { - Utilities.showToast("Message can't be empty"); - return; - } - context - .read() - .sendHLSTimedMetadata([ - HMSHLSTimedMetadata( - metadata: messageTextController.text) - ]); - messageTextController.clear(); - } else { - Utilities.showToast( - "Role doesn't have permission"); - } - }, - child: Container( + child: SizedBox( width: 40, height: 40, child: SvgPicture.asset( - "assets/icons/send_message.svg", - color: themeDefaultColor, + "packages/hms_room_kit/lib/src/assets/icons/send_message.svg", + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), fit: BoxFit.scaleDown, ), )) diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_chat_component.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_chat_component.dart new file mode 100644 index 000000000..ccfe7404f --- /dev/null +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_chat_component.dart @@ -0,0 +1,185 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; +import 'package:url_launcher/url_launcher.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///[HLSChatComponent] is a component that is used to show the chat +class HLSChatComponent extends StatefulWidget { + final double? height; + const HLSChatComponent({super.key, this.height}); + + @override + State createState() => _HLSChatComponentState(); +} + +class _HLSChatComponentState extends State { + TextEditingController messageTextController = TextEditingController(); + final ScrollController _scrollController = ScrollController(); + + @override + void dispose() { + messageTextController.dispose(); + _scrollController.dispose(); + super.dispose(); + } + + ///This function scrolls to the end of the list + void _scrollToEnd() { + WidgetsBinding.instance.addPostFrameCallback((_) => + _scrollController.animateTo(_scrollController.position.maxScrollExtent, + duration: const Duration(milliseconds: 200), + curve: Curves.easeInOut)); + } + + ///This function sends the message + void _sendMessage() async { + MeetingStore meetingStore = context.read(); + String message = messageTextController.text.trim(); + if (message.isEmpty) return; + meetingStore.sendBroadcastMessage(message); + messageTextController.clear(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: SizedBox( + height: widget.height ?? MediaQuery.of(context).size.height * 0.2, + child: Column( + children: [ + ///Chat Header + Expanded( + child: Selector, int>>( + selector: (_, meetingStore) => Tuple2( + meetingStore.messages, meetingStore.messages.length), + builder: (context, data, _) { + _scrollToEnd(); + return ListView.builder( + controller: _scrollController, + shrinkWrap: true, + itemCount: data.item1.length, + itemBuilder: (_, index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HMSTitleText( + text: data.item1[index].sender?.name ?? + "Anonymous", + textColor: Colors.white, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + ), + const SizedBox( + height: 2, + ), + SelectableLinkify( + text: data.item1[index].message, + onOpen: (link) async { + Uri url = Uri.parse(link.url); + if (await canLaunchUrl(url)) { + await launchUrl(url, + mode: LaunchMode.externalApplication); + } + }, + options: const LinkifyOptions(humanize: false), + style: GoogleFonts.inter( + color: Colors.white, + fontSize: 14, + height: 20 / 14, + letterSpacing: 0.25, + ), + ), + const SizedBox( + height: 8, + ) + ], + ); + }); + }), + ), + const SizedBox( + height: 8, + ), + Container( + height: 48, + width: MediaQuery.of(context).size.width - 16, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: HMSThemeColors.surfaceDim), + child: TextField( + textAlignVertical: TextAlignVertical.center, + keyboardType: TextInputType.text, + cursorColor: HMSThemeColors.onSurfaceHighEmphasis, + onTapOutside: (event) => + FocusManager.instance.primaryFocus?.unfocus(), + onChanged: (value) { + setState(() {}); + }, + onSubmitted: (value) { + if (messageTextController.text.trim().isEmpty) { + Utilities.showToast("Message can't be empty"); + return; + } + _sendMessage(); + }, + textCapitalization: TextCapitalization.sentences, + textInputAction: TextInputAction.send, + style: GoogleFonts.inter( + color: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w400, + height: 20 / 14, + fontSize: 14, + letterSpacing: 0.25), + controller: messageTextController, + decoration: InputDecoration( + suffixIcon: IconButton( + onPressed: () { + if (messageTextController.text.trim().isEmpty) { + Utilities.showToast("Message can't be empty"); + } + _sendMessage(); + }, + icon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/send_message.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + messageTextController.text.isEmpty + ? HMSThemeColors.onSurfaceLowEmphasis + : HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + )), + border: InputBorder.none, + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + width: 2, color: HMSThemeColors.primaryDefault), + borderRadius: + const BorderRadius.all(Radius.circular(8))), + hintStyle: GoogleFonts.inter( + color: HMSThemeColors.onSurfaceLowEmphasis, + fontSize: 14, + height: 0.6, + letterSpacing: 0.25, + fontWeight: FontWeight.w400), + contentPadding: const EdgeInsets.only( + left: 16, right: 8, top: 0, bottom: 0), + hintText: "Send a message..."), + ), + ), + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_player.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_player.dart new file mode 100644 index 000000000..3354866d5 --- /dev/null +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_player.dart @@ -0,0 +1,42 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/src/hls_viewer/hls_player_store.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:provider/provider.dart'; + +///[HLSPlayer] is a component that is used to show the HLS Player +class HLSPlayer extends StatelessWidget { + final double? ratio; + const HLSPlayer({Key? key, this.ratio}) : super(key: key); + + @override + Widget build(BuildContext context) { + ///We use the hlsAspectRatio from the [MeetingStore] to set the aspect ratio of the player + ///By default the aspect ratio is 9:16 + return Selector( + selector: (_, meetingStore) => meetingStore.hlsAspectRatio, + builder: (_, ratio, __) { + return GestureDetector( + child: AspectRatio( + aspectRatio: ratio, + child: InkWell( + onTap: () => + context.read().toggleButtonsVisibility(), + splashFactory: NoSplash.splashFactory, + child: IgnorePointer( + child: HMSHLSPlayer( + key: key, + showPlayerControls: false, + isHLSStatsRequired: + context.read().isHLSStatsEnabled, + ), + ), + ), + ), + ); + }); + } +} diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_player_store.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_player_store.dart new file mode 100644 index 000000000..3137dc1fc --- /dev/null +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_player_store.dart @@ -0,0 +1,79 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; + +class HLSPlayerStore extends ChangeNotifier { + ///This variable stores whether the application is in full screen or not + bool isFullScreen = false; + + ///This variable stores whether the video is playing or not + bool isStreamPlaying = false; + + ///This variable stores whether the buttons are visible or not + bool areStreamControlsVisible = true; + + ///This variable stores whether the chat is opened or not + ///The initial value is taken from the [HMSRoomLayout.chatData] + bool isChatOpened = (HMSRoomLayout.chatData?.isOpenInitially??false) && (HMSRoomLayout.chatData?.isOverlay??false); + + ///This variable stores whether the timer is active or not + /// + ///This is done to avoid multiple timers running at the same time + bool _isTimerActive = false; + + ///This method starts a timer for 5 seconds and then hides the buttons + /// + ///[isStreamPlaying] is used to check if the video is playing or not + ///If video is paused we don't hide the buttons + ///In other case we hide th buttons after 5 seconds + void startTimerToHideButtons() { + _isTimerActive = true; + Timer(const Duration(seconds: 3), () { + if (isStreamPlaying) { + areStreamControlsVisible = false; + notifyListeners(); + } + _isTimerActive = false; + }); + } + + void setStreamPlaying(bool isStreamPlaying) { + this.isStreamPlaying = isStreamPlaying; + if (isStreamPlaying) { + if (!_isTimerActive) { + startTimerToHideButtons(); + } + return; + } else { + areStreamControlsVisible = true; + } + notifyListeners(); + } + + void toggleIsChatOpened() { + isChatOpened = !isChatOpened; + notifyListeners(); + } + + ///This method toggles the visibility of the buttons + /// + ///If the buttons are not visible we set the [areStreamControlsVisible] to true + ///and start a timer to hide the buttons if the video is playing and another timer is not active already + /// + ///If the buttons are visible we set the [areStreamControlsVisible] to false + ///and notify the listeners + void toggleButtonsVisibility() { + if (isStreamPlaying) { + if (!areStreamControlsVisible) { + areStreamControlsVisible = true; + notifyListeners(); + if (!_isTimerActive) { + startTimerToHideButtons(); + } + } else { + areStreamControlsVisible = false; + notifyListeners(); + } + } + } +} diff --git a/example/lib/hls_viewer/hls_stats_view.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_stats_view.dart similarity index 79% rename from example/lib/hls_viewer/hls_stats_view.dart rename to packages/hms_room_kit/lib/src/hls_viewer/hls_stats_view.dart index 4aa417f86..086e10e2f 100644 --- a/example/lib/hls_viewer/hls_stats_view.dart +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_stats_view.dart @@ -1,18 +1,20 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; class HLSStatsView extends StatelessWidget { + const HLSStatsView({super.key}); + @override Widget build(BuildContext context) { return Container( - padding: EdgeInsets.all(5), - margin: EdgeInsets.all(2), + padding: const EdgeInsets.all(5), + margin: const EdgeInsets.all(2), decoration: BoxDecoration( color: Colors.black38.withOpacity(0.3), - borderRadius: BorderRadius.all(Radius.circular(10))), + borderRadius: const BorderRadius.all(Radius.circular(10))), child: ListView( shrinkWrap: true, children: [ @@ -24,7 +26,7 @@ class HLSStatsView extends StatelessWidget { }, selector: (_, meetingStore) => meetingStore.hlsPlayerStats?.averageBitrate), - SizedBox( + const SizedBox( height: 10, ), Selector( @@ -35,40 +37,37 @@ class HLSStatsView extends StatelessWidget { }, selector: (_, meetingStore) => meetingStore.hlsPlayerStats?.bufferedDuration), - SizedBox( + const SizedBox( height: 10, ), Selector( builder: (_, videoWidth, __) { - return Text( - "Video Width : ${videoWidth == null ? "-" : videoWidth} px", + return Text("Video Width : ${videoWidth ?? "-"} px", style: GoogleFonts.inter(color: iconColor, fontSize: 12)); }, selector: (_, meetingStore) => meetingStore.hlsPlayerStats?.videoWidth), - SizedBox( + const SizedBox( height: 10, ), Selector( builder: (_, videoHeight, __) { - return Text( - "Video Height : ${videoHeight == null ? "-" : videoHeight} px", + return Text("Video Height : ${videoHeight ?? "-"} px", style: GoogleFonts.inter(color: iconColor, fontSize: 12)); }, selector: (_, meetingStore) => meetingStore.hlsPlayerStats?.videoHeight), - SizedBox( + const SizedBox( height: 10, ), Selector( builder: (_, droppedFrameCount, __) { - return Text( - "Dropped Frames : ${droppedFrameCount == null ? "-" : droppedFrameCount} ", + return Text("Dropped Frames : ${droppedFrameCount ?? "-"} ", style: GoogleFonts.inter(color: iconColor, fontSize: 12)); }, selector: (_, meetingStore) => meetingStore.hlsPlayerStats?.droppedFrameCount), - SizedBox( + const SizedBox( height: 10, ), Selector( diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart new file mode 100644 index 000000000..5919507b9 --- /dev/null +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart @@ -0,0 +1,258 @@ +///Dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/chat_only_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/tab_widgets/chat_participants_tab_bar.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_chat_component.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/hls_more_options.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_player_store.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_embedded_button.dart'; + +///[HLSViewerBottomNavigationBar] is the bottom navigation bar for the HLS Viewer +class HLSViewerBottomNavigationBar extends StatelessWidget { + const HLSViewerBottomNavigationBar({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [Colors.black.withAlpha(0), Colors.black.withAlpha(64)])), + child: Padding( + padding: EdgeInsets.only(bottom: Platform.isIOS ? 32.0 : 8), + + ///Here we render the chat component if the chat is opened + ///We also render the leave button, hand raise button, chat button and the menu button + child: Column( + children: [ + ///Chat Component only visible when the chat is opened + if (HMSRoomLayout.chatData != null) + Selector( + selector: (_, hlsPlayerStore) => hlsPlayerStore.isChatOpened, + builder: (_, isChatOpened, __) { + if (isChatOpened) { + Provider.of(context, listen: true) + .isNewMessageReceived = false; + } + return isChatOpened + ? const HLSChatComponent() + : Container(); + }), + + ///Bottom Navigation Bar + ///We render the leave button, hand raise button, chat button and the menu button + ///We only render the bottom navigation bar when the stream controls are visible + Selector( + selector: (_, hlsPlayerStore) => + hlsPlayerStore.areStreamControlsVisible, + builder: (_, areStreamControlsVisible, __) { + return areStreamControlsVisible + ? Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ///Leave Button + HMSEmbeddedButton( + onTap: () async => { + await UtilityComponents.onBackPressed(context) + }, + offColor: HMSThemeColors.alertErrorDefault, + disabledBorderColor: + HMSThemeColors.alertErrorDefault, + isActive: false, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/exit_room.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorBrighter, + BlendMode.srcIn), + semanticsLabel: "leave_room_button", + ), + ), + ), + const SizedBox( + width: 24, + ), + + ///Hand Raise Button + Selector( + selector: (_, meetingStore) => + meetingStore.isRaisedHand, + builder: (_, isRaisedHand, __) { + return HMSEmbeddedButton( + onTap: () => { + context + .read() + .changeMetadata(), + }, + enabledBorderColor: HMSThemeColors + .backgroundDim + .withAlpha(64), + onColor: HMSThemeColors.backgroundDim + .withAlpha(64), + isActive: !isRaisedHand, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "hand_raise_button", + ), + ), + ); + }), + const SizedBox( + width: 24, + ), + + ///Chat Button + if (HMSRoomLayout.chatData != null) + Selector( + selector: (_, hlsPlayerStore) => + hlsPlayerStore.isChatOpened, + builder: (_, isChatOpened, __) { + return HMSEmbeddedButton( + onTap: () => { + if (HMSRoomLayout.chatData?.isOverlay ?? + false) + { + context + .read() + .toggleIsChatOpened() + } + else + { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: + HMSThemeColors.surfaceDim, + shape: + const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: + Radius.circular(16), + topRight: + Radius.circular(16)), + ), + context: context, + builder: (ctx) => + ChangeNotifierProvider.value( + value: context + .read(), + child: HMSRoomLayout + .isParticipantsListEnabled + ? const ChatParticipantsTabBar( + tabIndex: 0, + ) + : const ChatOnlyBottomSheet()), + ) + } + }, + enabledBorderColor: HMSThemeColors + .backgroundDim + .withAlpha(64), + onColor: HMSThemeColors.backgroundDim + .withAlpha(64), + isActive: !isChatOpened, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Selector( + selector: (_, meetingStore) => + meetingStore + .isNewMessageReceived, + builder: (_, isNewMessageReceived, + __) { + return isNewMessageReceived + ? Badge( + backgroundColor: + HMSThemeColors + .primaryDefault, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg", + semanticsLabel: + "chat_button", + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode + .srcIn), + ), + ) + : SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg", + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode + .srcIn), + semanticsLabel: + "chat_button", + ); + })), + ); + }), + + if (HMSRoomLayout.chatData != null) + const SizedBox( + width: 24, + ), + + ///Menu Button + HMSEmbeddedButton( + onTap: () async => { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: const HLSMoreOptionsBottomSheet()), + ) + }, + enabledBorderColor: + HMSThemeColors.backgroundDim.withAlpha(64), + onColor: + HMSThemeColors.backgroundDim.withAlpha(64), + isActive: true, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/menu.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "more_button"), + ), + ), + ], + ) + : Container(); + }), + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_header.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_header.dart new file mode 100644 index 000000000..e2d2e6295 --- /dev/null +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_header.dart @@ -0,0 +1,163 @@ +///Dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/cupertino.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///[HLSViewerHeader] is the header of the HLS Viewer screen +class HLSViewerHeader extends StatelessWidget { + const HLSViewerHeader({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + HMSThemeColors.backgroundDim.withAlpha(64), + HMSThemeColors.backgroundDim.withAlpha(0) + ])), + child: Padding( + padding: + EdgeInsets.only(left: 15, right: 15, top: Platform.isIOS ? 55 : 45), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + ///We render the logo as set in the dashboard + HMSRoomLayout.roleLayoutData?.logo?.url == null + ? Container() + : HMSRoomLayout.roleLayoutData!.logo!.url!.contains("svg") + ? SvgPicture.network( + HMSRoomLayout.roleLayoutData!.logo!.url!) + : Image.network( + HMSRoomLayout.roleLayoutData!.logo!.url!, + height: 30, + width: 30, + ), + const SizedBox( + width: 12, + ), + + ///We render the LIVE icon based on the HLS streaming status + ///If the HLS streaming is started we show the LIVE icon + ///If the HLS streaming is not started we show nothing + Selector( + selector: (_, meetingStore) => + meetingStore.streamingType['hls'] ?? false, + builder: (_, isHLSStarted, __) { + return isHLSStarted + ? Container( + height: 24, + width: 43, + decoration: BoxDecoration( + color: HMSThemeColors.alertErrorDefault, + borderRadius: BorderRadius.circular(4)), + child: Center( + child: HMSTitleText( + text: "LIVE", + fontSize: 10, + lineHeight: 16, + letterSpacing: 1.5, + textColor: + HMSThemeColors.alertErrorBrighter), + ), + ) + : Container(); + }), + const SizedBox( + width: 8, + ), + + ///We render the recording icon based on the recording status + ///If the recording is started we show the recording icon + ///If the recording is not started we show nothing + Selector>( + selector: (_, meetingStore) => Tuple3( + meetingStore.recordingType["browser"] ?? false, + meetingStore.recordingType["server"] ?? false, + meetingStore.recordingType["hls"] ?? false, + ), + builder: (_, data, __) { + return (data.item1 || data.item2 || data.item3) + ? SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/record.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, + BlendMode.srcIn), + ) + : Container(); + }), + const SizedBox( + width: 8, + ), + + ///This renders the number of peers + ///If the HLS streaming is started, we render the number of peers + ///else we render an empty Container + Selector>( + selector: (_, meetingStore) => Tuple2( + meetingStore.streamingType['hls'] ?? false, + meetingStore.peers.length), + builder: (_, data, __) { + return data.item1 + ? Container( + width: 59, + height: 24, + decoration: BoxDecoration( + border: Border.all( + color: HMSThemeColors.borderBright, + width: 1), + borderRadius: const BorderRadius.all( + Radius.circular(4)), + color: HMSThemeColors.backgroundDim + .withOpacity(0.64)), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/watching.svg", + width: 16, + height: 16, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "fl_watching", + ), + const SizedBox( + width: 4, + ), + HMSTitleText( + text: Utilities.formatNumber(data.item2), + fontSize: 10, + lineHeight: 10, + letterSpacing: 1.5, + textColor: + HMSThemeColors.onSurfaceHighEmphasis) + ], + )) + : Container(); + }) + ], + ), + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_page.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_page.dart new file mode 100644 index 000000000..d22c27066 --- /dev/null +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_page.dart @@ -0,0 +1,303 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_left_room_screen.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_viewer_header.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/preview_for_role/preview_for_role_bottom_sheet.dart'; +import 'package:hms_room_kit/src/preview_for_role/preview_for_role_header.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_circular_avatar.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_player.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_player_store.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_waiting_ui.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///[HLSViewerPage] is the page that is used to render the HLS Viewer +class HLSViewerPage extends StatefulWidget { + const HLSViewerPage({ + Key? key, + }) : super(key: key); + @override + State createState() => _HLSViewerPageState(); +} + +class _HLSViewerPageState extends State { + @override + void initState() { + super.initState(); + if (mounted) { + ///We start the timer to hide the controls + WidgetsBinding.instance.addPostFrameCallback((_) { + context.read().startTimerToHideButtons(); + }); + } + } + + ///This function is used to set the stream status + void _setStreamStatus(bool hasHlsStarted) { + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + context.read().setStreamPlaying(hasHlsStarted); + }); + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + bool ans = await UtilityComponents.onBackPressed(context) ?? false; + return ans; + }, + child: Selector>( + selector: (_, meetingStore) => Tuple4( + meetingStore.isRoomEnded, + meetingStore.hmsException, + meetingStore.isEndRoomCalled, + meetingStore.localPeer?.role.permissions.hlsStreaming??false), + builder: (_, failureData, __) { + if (failureData.item1) { + WidgetsBinding.instance.addPostFrameCallback((_) { + Navigator.of(context).pushReplacement(MaterialPageRoute( + builder: (context) => HMSLeftRoomScreen( + isEndRoomCalled: failureData.item3, + doesRoleHasStreamPermission: failureData.item4, + ))); + }); + } + return Selector( + selector: (_, meetingStore) => meetingStore.isPipActive, + builder: (_, isPipActive, __) { + return isPipActive + ? HMSHLSPlayer() + : Scaffold( + backgroundColor: HMSThemeColors.backgroundDim, + body: Theme( + data: ThemeData( + brightness: Brightness.dark, + primaryColor: HMSThemeColors.primaryDefault, + scaffoldBackgroundColor: + HMSThemeColors.backgroundDim), + child: SingleChildScrollView( + child: Stack( + children: [ + Selector( + selector: (_, meetingStore) => + meetingStore.hasHlsStarted, + builder: (_, hasHlsStarted, __) { + _setStreamStatus(hasHlsStarted); + return (hasHlsStarted) + ? Selector( + selector: (_, hlsPlayerStore) => + hlsPlayerStore + .areStreamControlsVisible, + builder: (_, + areStreamControlsVisible, + __) { + return SizedBox( + width: + MediaQuery.of(context) + .size + .width, + height: + MediaQuery.of(context) + .size + .height, + child: HLSPlayer( + key: Key(context + .read< + MeetingStore>() + .localPeer + ?.peerId ?? + "HLS_PLAYER"), + ratio: Utilities + .getHLSPlayerDefaultRatio( + MediaQuery.of( + context) + .size), + ), + ); + }) + : SizedBox( + width: MediaQuery.of(context) + .size + .width, + height: MediaQuery.of(context) + .size + .height, + child: const HLSWaitingUI()); + }), + + ///Will only be displayed when the controls are visible + SizedBox( + height: MediaQuery.of(context).size.height, + child: Column( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Selector( + selector: (_, hlsPlayerStore) => + hlsPlayerStore + .areStreamControlsVisible, + builder: (_, + areStreamControlsVisible, __) { + return areStreamControlsVisible + ? const HLSViewerHeader() + : Container(); + }), + const HLSViewerBottomNavigationBar() + ], + ), + ), + + ///This renders the preview for role component + Selector< + MeetingStore, + Tuple3< + HMSLocalVideoTrack?, + HMSLocalAudioTrack?, + HMSRoleChangeRequest?>>( + selector: (_, meetingStore) => Tuple3( + meetingStore.previewForRoleVideoTrack, + meetingStore.previewForRoleAudioTrack, + meetingStore + .currentRoleChangeRequest), + builder: (_, previewForRoleTracks, __) { + ///If the preview for role tracks are not null + ///we show the preview for role component + ///else we show and empty Container + if (previewForRoleTracks.item1 != null || + previewForRoleTracks.item2 != + null || + previewForRoleTracks.item3 != + null) { + WidgetsBinding.instance + .addPostFrameCallback( + (timeStamp) { + ///For preview for role component we use the [showGeneralDialog] + showGeneralDialog( + context: context, + pageBuilder: (ctx, _, __) { + return ListenableProvider + .value( + value: context + .read(), + child: Scaffold( + body: SafeArea( + child: Container( + color: HMSThemeColors + .backgroundDim, + height: MediaQuery.of( + context) + .size + .height, + width: MediaQuery.of( + context) + .size + .width, + + ///We render the preview for role component + child: Stack( + children: [ + ///This renders the video component + ///[HMSVideoView] is only rendered if video is ON + /// + ///else we render the [HMSCircularAvatar] + Selector< + MeetingStore, + bool>( + selector: (_, + meetingStore) => + meetingStore + .isVideoOn, + builder: (_, + isVideoOn, + __) { + return Container( + height: MediaQuery.of( + context) + .size + .height, + width: MediaQuery.of( + context) + .size + .width, + color: HMSThemeColors + .backgroundDim, + child: (isVideoOn && + previewForRoleTracks.item1 != null) + ? Center( + child: HMSVideoView( + scaleType: ScaleType.SCALE_ASPECT_FILL, + track: previewForRoleTracks.item1!, + setMirror: true, + ), + ) + : Center( + child: HMSCircularAvatar(name: context.read().localPeer?.name ?? ""), + ), + ); + }), + + ///This renders the preview for role header + const PreviewForRoleHeader(), + + ///This renders the preview for role bottom sheet + PreviewForRoleBottomSheet( + meetingStore: + context.read< + MeetingStore>(), + roleChangeRequest: context + .read< + MeetingStore>() + .currentRoleChangeRequest, + ) + ], + ), + ), + ), + ), + ); + }); + }); + } + return Container(); + }), + Selector( + selector: (_, meetingStore) => + meetingStore.reconnecting, + builder: (_, reconnecting, __) { + if (reconnecting) { + return UtilityComponents + .showReconnectingDialog(context); + } + return const SizedBox(); + }), + if (failureData.item2 != null && + (failureData.item2?.code?.errorCode == + 1003 || + failureData.item2?.code?.errorCode == + 2000 || + failureData.item2?.code?.errorCode == + 4005)) + UtilityComponents.showFailureError( + failureData.item2!, + context, + () => context + .read() + .leave()) + ], + ), + ), + ), + ); + }); + }), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_waiting_ui.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_waiting_ui.dart new file mode 100644 index 000000000..e0ccd9d8a --- /dev/null +++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_waiting_ui.dart @@ -0,0 +1,52 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///[HLSWaitingUI] is the UI that is shown when the HLS stream is not started +class HLSWaitingUI extends StatelessWidget { + const HLSWaitingUI({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircleAvatar( + radius: 50, + backgroundColor: HMSThemeColors.surfaceDefault, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/live.svg", + height: 56, + width: 56, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + ), + const SizedBox( + height: 24, + ), + HMSTitleText( + text: "Stream yet to start", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 24, + lineHeight: 32, + letterSpacing: 0.25, + ), + const SizedBox( + height: 8, + ), + HMSSubheadingText( + text: "Sit back and relax", + fontSize: 16, + lineHeight: 24, + letterSpacing: 0.5, + textColor: HMSThemeColors.onSurfaceMediumEmphasis) + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/hms_prebuilt.dart b/packages/hms_room_kit/lib/src/hms_prebuilt.dart new file mode 100644 index 000000000..48333d528 --- /dev/null +++ b/packages/hms_room_kit/lib/src/hms_prebuilt.dart @@ -0,0 +1,44 @@ +///Package imports +import 'package:flutter/widgets.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/screen_controller.dart'; + +///[HMSPrebuilt] is the main widget that is used to render the prebuilt +///It takes following parameters: +///[roomCode] - The room code of the room to join +///[options] - The options for the prebuilt for more details check the [HMSPrebuiltOptions] class +class HMSPrebuilt extends StatelessWidget { + ///The room code of the room to join + ///This is a required parameter + /// + /// Example: For the public Room: https://public.app.100ms.live/meeting/xvm-wxwo-gbl + /// The room code is: xvm-wxwo-gbl + final String roomCode; + + ///The options for the prebuilt + ///For more details checkout the [HMSPrebuiltOptions] class + ///Defaults to null + final HMSPrebuiltOptions? options; + + ///The key for the widget + const HMSPrebuilt({super.key, required this.roomCode, this.options}); + + ///Builds the widget + ///Returns a [ScreenController] widget + ///The [ScreenController] is the main widget that renders the prebuilt + ///For more details checkout the [ScreenController] class + ///It takes the [roomCode] and [options] as parameters + ///The [roomCode] is the room code of the room to join + ///The [options] are the options for the prebuilt + ///For more details checkout the [HMSPrebuiltOptions] class + ///The [options] are optional and are used to customize the prebuilt + @override + Widget build(BuildContext context) { + return ScreenController( + roomCode: roomCode, + options: options, + ); + } +} diff --git a/packages/hms_room_kit/lib/src/hms_prebuilt_options.dart b/packages/hms_room_kit/lib/src/hms_prebuilt_options.dart new file mode 100644 index 000000000..849410299 --- /dev/null +++ b/packages/hms_room_kit/lib/src/hms_prebuilt_options.dart @@ -0,0 +1,36 @@ +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; + +///[HMSPrebuiltOptions] is a class that is used to pass the options to the prebuilt +///It takes following parameters: +///[userName] - The name of the user +///[userId] - The id of the user +///[endPoints] - The token and init endpoints +///[debugInfo] - To enable the debug mode for the prebuilt +///[iOSScreenshareConfig] - Screen share Config, to enable screen share for iOS +class HMSPrebuiltOptions { + //The name of the user + final String? userName; + + //The id of the user + final String? userId; + + //The token and init endpoints + final Map? endPoints; + + //To enable the debug mode for the prebuilt + final bool debugInfo; + + //Screen share Config, to enable screen share for iOS + //If you wish to enable screen share for iOS, you need to pass + //this config + final HMSIOSScreenshareConfig? iOSScreenshareConfig; + + ///[HMSPrebuiltOptions] is a class that is used to pass the options to the prebuilt + HMSPrebuiltOptions( + {this.userName, + this.userId, + this.endPoints, + this.debugInfo = false, + this.iOSScreenshareConfig}); +} diff --git a/example/lib/hms_sdk_interactor.dart b/packages/hms_room_kit/lib/src/hmssdk_interactor.dart similarity index 84% rename from example/lib/hms_sdk_interactor.dart rename to packages/hms_room_kit/lib/src/hmssdk_interactor.dart index e4acbb90a..19c8b9107 100644 --- a/example/lib/hms_sdk_interactor.dart +++ b/packages/hms_room_kit/lib/src/hmssdk_interactor.dart @@ -1,12 +1,27 @@ //Dart imports - -//Project imports import 'dart:io'; +///Package imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +//Project imports +import 'package:hms_room_kit/src/common/utility_functions.dart'; + +///[HMSSDKInteractor] is the class which is used to interact with the SDK +///It contains all the methods that are required to interact with the SDK +///It takes the following parameters: +///[iOSScreenshareConfig] - This is optional values only required for implementing Screen Share on iOS. They are not required for Android. +///Remove [iOSScreenshareConfig] if your app does not implements Screen Share on iOS. +/// +///[joinWithMutedAudio] & [joinWithMutedVideo] are required to set the initial audio/video state i.e what should be camera and mic +///state while room is joined. By default both audio and video are kept as unmute. +/// +///[isSoftwareDecoderDisabled] - This is used to disable the software decode. By default it's true. +///[isAudioMixerDisabled] - This is used to disable the audio mixer for iOS. By default it's true. +///[audioMode] - This is used to set the audio mode. By default it's VOICE. +///[isPrebuilt] - This is used to set the prebuilt mode. By default it's false. class HMSSDKInteractor { + /// [hmsSDK] is the instance of the HMSSDK class which is used to interact with the SDK. late HMSSDK hmsSDK; /// [iOSScreenshareConfig] is optional values only required for implementing Screen Share on iOS. They are not required for Android. @@ -15,11 +30,12 @@ class HMSSDKInteractor { /// state while room is joined. By default both audio and video are kept as unmute. HMSSDKInteractor( {HMSIOSScreenshareConfig? iOSScreenshareConfig, - bool joinWithMutedAudio = true, - bool joinWithMutedVideo = true, + bool joinWithMutedAudio = false, + bool joinWithMutedVideo = false, bool isSoftwareDecoderDisabled = true, bool isAudioMixerDisabled = true, - HMSAudioMode audioMode = HMSAudioMode.VOICE}) { + HMSAudioMode audioMode = HMSAudioMode.VOICE, + bool isPrebuilt = false}) { HMSLogSettings hmsLogSettings = HMSLogSettings( maxDirSizeInBytes: 1000000, isLogStorageEnabled: true, @@ -35,7 +51,8 @@ class HMSSDKInteractor { hmsSDK = HMSSDK( iOSScreenshareConfig: iOSScreenshareConfig, hmsLogSettings: hmsLogSettings, - hmsTrackSetting: trackSetting); + hmsTrackSetting: trackSetting, + isPrebuilt: isPrebuilt); } Future build() async { @@ -252,9 +269,10 @@ class HMSSDKInteractor { name: name, hmsActionResultListener: hmsActionResultListener); } - void startHLSStreaming(HMSActionResultListener hmsActionResultListener, + Future startHLSStreaming( + HMSActionResultListener hmsActionResultListener, {String? meetingUrl, - required HMSHLSRecordingConfig hmshlsRecordingConfig}) { + required HMSHLSRecordingConfig hmshlsRecordingConfig}) async { List? hmsHlsMeetingUrls; if (meetingUrl != null) { hmsHlsMeetingUrls = []; @@ -265,7 +283,7 @@ class HMSSDKInteractor { meetingURLVariant: hmsHlsMeetingUrls, hmsHLSRecordingConfig: hmshlsRecordingConfig); - hmsSDK.startHlsStreaming( + return await hmsSDK.startHlsStreaming( hmshlsConfig: hmshlsConfig, hmsActionResultListener: hmsActionResultListener); } @@ -362,4 +380,16 @@ class HMSSDKInteractor { void toggleAlwaysScreenOn() { hmsSDK.toggleAlwaysScreenOn(); } + + dynamic getRoomLayout({required String authToken, String? endPoint}) async { + return await hmsSDK.getRoomLayout(authToken: authToken, endPoint: endPoint); + } + + Future previewForRole({required String role}) async { + return await hmsSDK.previewForRole(role: role); + } + + Future cancelPreview() async { + return await hmsSDK.cancelPreview(); + } } diff --git a/packages/hms_room_kit/lib/src/layout_api/hms_conferencing_items.dart b/packages/hms_room_kit/lib/src/layout_api/hms_conferencing_items.dart new file mode 100644 index 000000000..0beee10d8 --- /dev/null +++ b/packages/hms_room_kit/lib/src/layout_api/hms_conferencing_items.dart @@ -0,0 +1,253 @@ +class Conferencing { + Default? defaultConf; + HlsLiveStreaming? hlsLiveStreaming; + + Conferencing({this.defaultConf, this.hlsLiveStreaming}); + + Conferencing.fromJson(Map? json) { + if (json == null) { + defaultConf = null; + hlsLiveStreaming = null; + return; + } + defaultConf = + json.containsKey('default') ? Default.fromJson(json['default']) : null; + hlsLiveStreaming = json.containsKey('hls_live_streaming') + ? HlsLiveStreaming.fromJson(json['hls_live_streaming']) + : null; + } + + Map toJson() { + final Map data = {}; + if (defaultConf != null) { + data['default'] = defaultConf!.toJson(); + } + if (hlsLiveStreaming != null) { + data['hls_live_streaming'] = hlsLiveStreaming!.toJson(); + } + return data; + } +} + +class Default { + Elements? elements; + + Default({this.elements}); + + Default.fromJson(Map? json) { + if (json == null) { + elements = null; + return; + } + elements = json.containsKey('elements') + ? Elements.fromJson(json['elements']) + : null; + } + + Map toJson() { + final Map data = {}; + if (elements != null) { + data['elements'] = elements!.toJson(); + } + return data; + } +} + +class HlsLiveStreaming { + Elements? elements; + + HlsLiveStreaming({this.elements}); + + HlsLiveStreaming.fromJson(Map? json) { + if (json == null) { + elements = null; + return; + } + elements = json.containsKey('elements') + ? Elements.fromJson(json['elements']) + : null; + } + + Map toJson() { + final Map data = {}; + if (elements != null) { + data['elements'] = elements!.toJson(); + } + return data; + } +} + +class Elements { + Chat? chat; + Map? participantList; + VideoTileLayout? videoTileLayout; + Map? emojiReactions; + OnStageExp? onStageExp; + Map? brb; + + Elements( + {this.chat, + this.participantList, + this.videoTileLayout, + this.emojiReactions, + this.onStageExp, + this.brb}); + + Elements.fromJson(Map? json) { + if (json == null) { + chat = null; + participantList = null; + videoTileLayout = null; + emojiReactions = null; + onStageExp = null; + brb = null; + return; + } + chat = (json.containsKey('chat') && json['chat'] != null) ? Chat.fromJson(json['chat']) : null; + participantList = json['participant_list']; + videoTileLayout = json.containsKey('video_tile_layout') + ? VideoTileLayout.fromJson(json['video_tile_layout']['grid']) + : null; + emojiReactions = json['emoji_reactions']; + onStageExp = json.containsKey('on_stage_exp') + ? OnStageExp.fromJson(json['on_stage_exp']) + : null; + brb = json.containsKey("brb") ? json["brb"] : null; + } + + Map toJson() { + final Map data = {}; + if (chat != null) { + data['chat'] = chat!.toJson(); + } + data['participant_list'] = participantList; + if (videoTileLayout != null) { + data['video_tile_layout'] = {'grid': videoTileLayout!.toJson()}; + } + data['emoji_reactions'] = emojiReactions; + if (onStageExp != null) { + data['on_stage_exp'] = onStageExp!.toJson(); + } + data['brb'] = brb; + return data; + } +} + +class OnStageExp { + String? bringToStageLabel; + String? removeFromStageLabel; + String? onStageRole; + List? offStageRoles; + + OnStageExp({ + this.bringToStageLabel, + this.removeFromStageLabel, + this.onStageRole, + this.offStageRoles, + }); + + OnStageExp.fromJson(Map? json) { + if (json == null) { + bringToStageLabel = null; + removeFromStageLabel = null; + onStageRole = null; + offStageRoles = null; + return; + } + bringToStageLabel = json['bring_to_stage_label']; + removeFromStageLabel = json['remove_from_stage_label']; + onStageRole = json['on_stage_role']; + offStageRoles = + json.containsKey('off_stage_roles') && json['off_stage_roles'] is List + ? List.from(json['off_stage_roles']) + : null; + } + + Map toJson() { + final Map data = {}; + data['bring_to_stage_label'] = bringToStageLabel; + data['remove_from_stage_label'] = removeFromStageLabel; + data['on_stage_role'] = onStageRole; + if (offStageRoles != null && offStageRoles!.isNotEmpty) { + data['off_stage_roles'] = offStageRoles; + } + return data; + } +} + +class VideoTileLayout { + bool? enableLocalTileInset; + List? prominentRoles; + bool? enableSpotlightingPeer; + + VideoTileLayout({ + this.enableLocalTileInset, + this.prominentRoles, + this.enableSpotlightingPeer, + }); + + VideoTileLayout.fromJson(Map? json) { + if (json == null) { + enableLocalTileInset = null; + prominentRoles = null; + enableSpotlightingPeer = null; + return; + } + enableLocalTileInset = json['enable_local_tile_inset']; + prominentRoles = + json.containsKey('prominent_roles') && json['prominent_roles'] is List + ? List.from(json['prominent_roles']) + : null; + enableSpotlightingPeer = json['enable_spotlighting_peer']; + } + + Map toJson() { + final Map data = {}; + data['enable_local_tile_inset'] = enableLocalTileInset; + if (prominentRoles != null && prominentRoles!.isNotEmpty) { + data['prominent_roles'] = prominentRoles; + } + data['enable_spotlighting_peer'] = enableSpotlightingPeer; + return data; + } +} + +class Chat { + bool? isOpenInitially; + bool? isOverlay; + bool? allowPinningMessages; + + Chat({this.isOpenInitially, this.isOverlay, this.allowPinningMessages}); + + Chat.fromJson(Map? json) { + if (json == null) { + isOpenInitially = null; + isOverlay = null; + allowPinningMessages = null; + return; + } + isOpenInitially = json.containsKey('initial_state') + ? json['initial_state'].contains("CHAT_STATE_OPEN") + ? true + : false + : null; + isOverlay = json.containsKey('is_overlay') ? json['is_overlay'] : null; + allowPinningMessages = json.containsKey('allow_pinning_messages') + ? json['allow_pinning_messages'] + : null; + } + + Map toJson() { + final Map data = {}; + if (isOpenInitially != null) { + data['initial_state'] = isOpenInitially; + } + if (isOverlay != null) { + data['is_overlay'] = isOverlay; + } + if (allowPinningMessages != null) { + data['allow_pinning_messages'] = allowPinningMessages; + } + return data; + } +} diff --git a/packages/hms_room_kit/lib/src/layout_api/hms_room_layout.dart b/packages/hms_room_kit/lib/src/layout_api/hms_room_layout.dart new file mode 100644 index 000000000..e5ede2172 --- /dev/null +++ b/packages/hms_room_kit/lib/src/layout_api/hms_room_layout.dart @@ -0,0 +1,271 @@ +///Dart imports +import 'dart:convert'; + +///Package imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/hmssdk_interactor.dart'; +import 'package:hms_room_kit/src/layout_api/hms_conferencing_items.dart'; +import 'package:hms_room_kit/src/service/app_secrets.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +class Theme { + final String? name; + final bool? defaultTheme; + final Map? palette; + + Theme({ + this.name, + this.defaultTheme, + this.palette, + }); + + factory Theme.fromJson(Map? json) { + if (json == null) { + return Theme(); + } + return Theme( + name: json['name'], + defaultTheme: json['default'], + palette: Map.from(json['palette']), + ); + } +} + +class ScreenElements { + final String? title; + final String? subTitle; + + ScreenElements({ + this.title, + this.subTitle, + }); + + factory ScreenElements.fromJson(Map? json) { + if (json == null) { + return ScreenElements(); + } + return ScreenElements( + title: json['title'], + subTitle: json['sub_title'], + ); + } +} + +class Preview { + final ScreenElements? previewHeader; + final JoinForm? joinForm; + + Preview({ + this.previewHeader, + this.joinForm, + }); + + factory Preview.fromJson(Map? json) { + if (json == null) { + return Preview(); + } + return Preview( + previewHeader: ScreenElements.fromJson(json['preview_header']), + joinForm: JoinForm.fromJson(json['join_form']), + ); + } +} + +enum JoinButtonType { JOIN_BTN_TYPE_JOIN_ONLY, JOIN_BTN_TYPE_JOIN_AND_GO_LIVE } + +extension JoinButtonTypeValues on JoinButtonType { + static JoinButtonType getButtonTypeFromName(String joinType) { + switch (joinType) { + case 'JOIN_BTN_TYPE_JOIN_ONLY': + return JoinButtonType.JOIN_BTN_TYPE_JOIN_ONLY; + case 'JOIN_BTN_TYPE_JOIN_AND_GO_LIVE': + return JoinButtonType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE; + default: + return JoinButtonType.JOIN_BTN_TYPE_JOIN_ONLY; + } + } +} + +class JoinForm { + final JoinButtonType? joinBtnType; + final String? joinBtnLabel; + final String? goLiveBtnLabel; + + JoinForm({this.joinBtnLabel, this.joinBtnType, this.goLiveBtnLabel}); + + factory JoinForm.fromJson(Map? json) { + if (json == null) { + return JoinForm(); + } else { + return JoinForm( + joinBtnType: + JoinButtonTypeValues.getButtonTypeFromName(json['join_btn_type']), + joinBtnLabel: json['join_btn_label'], + goLiveBtnLabel: json['go_live_btn_label']); + } + } +} + +class Screens { + final Preview? preview; + final Conferencing? conferencing; + final Map? leave; + + Screens({ + this.preview, + this.conferencing, + this.leave, + }); + + factory Screens.fromJson(Map? json) { + if (json == null) { + return Screens(); + } + return Screens( + preview: json.containsKey('preview') == true + ? Preview.fromJson(json['preview']?['default']?['elements']) + : null, + conferencing: json.containsKey('conferencing') == true + ? Conferencing.fromJson(json['conferencing']) + : null, + leave: json['leave'], + ); + } +} + +class AppLogo { + final String? url; + + AppLogo({this.url}); + + factory AppLogo.fromJson(Map? json) { + if (json == null) { + return AppLogo(); + } else { + return AppLogo(url: json['url']); + } + } +} + +class AppTypoGraphy { + final String? typography; + + AppTypoGraphy({this.typography}); + + factory AppTypoGraphy.fromJson(Map? json) { + if (json == null) { + return AppTypoGraphy(); + } else { + return AppTypoGraphy(typography: json['font_family']); + } + } +} + +class LayoutData { + final String? id; + final String? roleId; + final String? role; + final String? templateId; + final String? appId; + final List? themes; + final AppTypoGraphy? typography; + final AppLogo? logo; + final Screens? screens; + + LayoutData({ + this.id, + this.roleId, + this.role, + this.templateId, + this.appId, + this.themes, + this.typography, + this.logo, + this.screens, + }); + + factory LayoutData.fromJson(Map? json) { + if (json == null) { + return LayoutData(); + } + return LayoutData( + id: json['id'], + roleId: json['role_id'], + role: json['role'], + templateId: json['template_id'], + appId: json['app_id'], + themes: List.from( + (json['themes'] ?? []).map((theme) => Theme.fromJson(theme)), + ), + typography: AppTypoGraphy.fromJson(json['typography']), + logo: AppLogo.fromJson(json['logo']), + screens: Screens.fromJson(json['screens']), + ); + } +} + +enum PeerRoleType { hlsViewer, conferencing } + +class HMSRoomLayout { + static List? data; + static String? limit; + static String? last; + static LayoutData? roleLayoutData; + static PeerRoleType? peerType; + static Chat? chatData; + static bool isParticipantsListEnabled = true; + static bool isBRBEnabled = true; + + static Future getRoomLayout( + {required HMSSDKInteractor hmsSDKInteractor, + required String authToken, + String? roleName}) async { + dynamic value = await hmsSDKInteractor.getRoomLayout( + authToken: authToken, endPoint: getLayoutAPIEndpoint()); + if (value != null && value.runtimeType != HMSException) { + _setLayout(layoutJson: jsonDecode(value)); + resetLayout(roleName); + } + } + + static void resetLayout(String? roleName) { + if (roleName != null) { + int? roleIndex = + data?.indexWhere((layoutData) => layoutData.role == roleName); + if (roleIndex != null && roleIndex != -1) { + HMSThemeColors.applyLayoutColors(data?[roleIndex].themes?[0].palette); + roleLayoutData = data?[roleIndex]; + return; + } + } + HMSThemeColors.applyLayoutColors(data?[0].themes?[0].palette); + roleLayoutData = data?[0]; + peerType = roleLayoutData?.screens?.conferencing?.hlsLiveStreaming != null + ? PeerRoleType.hlsViewer + : PeerRoleType.conferencing; + if (peerType == PeerRoleType.conferencing) { + chatData = + roleLayoutData?.screens?.conferencing?.defaultConf?.elements?.chat; + isParticipantsListEnabled = roleLayoutData + ?.screens?.conferencing?.defaultConf?.elements?.participantList != + null; + isBRBEnabled = roleLayoutData?.screens?.conferencing?.defaultConf + ?.elements?.brb != null; + } else { + chatData = roleLayoutData + ?.screens?.conferencing?.hlsLiveStreaming?.elements?.chat; + isParticipantsListEnabled = roleLayoutData?.screens?.conferencing + ?.hlsLiveStreaming?.elements?.participantList != + null; + isBRBEnabled = roleLayoutData?.screens?.conferencing?.hlsLiveStreaming + ?.elements?.brb != null; + } + } + + static void _setLayout({required Map layoutJson}) { + data = List.from((layoutJson['data'] ?? []) + .map((appData) => LayoutData.fromJson(appData))); + limit = layoutJson['limit'].toString(); + last = layoutJson['last']; + } +} diff --git a/packages/hms_room_kit/lib/src/layout_api/hms_theme_colors.dart b/packages/hms_room_kit/lib/src/layout_api/hms_theme_colors.dart new file mode 100644 index 000000000..ac85475e1 --- /dev/null +++ b/packages/hms_room_kit/lib/src/layout_api/hms_theme_colors.dart @@ -0,0 +1,220 @@ +import 'package:flutter/material.dart'; + +/// The [HMSThemeColors] class contains the color constants used in the UI +class HMSThemeColors { + static Color primaryDefault = const Color(0xFF2572ED); + static Color primaryBright = const Color(0xFF538DFF); + static Color primaryDim = const Color(0xFF002D6D); + static Color primaryDisabled = const Color(0xFF004299); + + static Color onPrimaryHighEmphasis = const Color(0xFFFFFFFF); + static Color onPrimaryMediumEmphasis = const Color(0xFFCCDAFF); + static Color onPrimaryLowEmphasis = const Color(0xFF84AAFF); + + static Color secondaryDefault = const Color(0xFF444954); + static Color secondaryBright = const Color(0xFF70778B); + static Color secondaryDim = const Color(0xFF293042); + static Color secondaryDisabled = const Color(0xFF404759); + + static Color onSecondaryHighEmphasis = const Color(0xFFFFFFFF); + static Color onSecondaryMediumEmphasis = const Color(0xFFD3D9F0); + static Color onSecondaryLowEmphasis = const Color(0xFFA4ABC0); + + static Color backgroundDefault = const Color(0xFF0B0E15); + static Color backgroundDim = const Color(0xFF000000); + + static Color surfaceDefault = const Color(0xFF191B23); + static Color surfaceBright = const Color(0xFF272A31); + static Color surfaceBrighter = const Color(0xFF2E3038); + static Color surfaceDim = const Color(0xFF11131A); + + static Color onSurfaceHighEmphasis = const Color(0xFFEFF0FA); + static Color onSurfaceMediumEmphasis = const Color(0xFFC5C6D0); + static Color onSurfaceLowEmphasis = const Color(0xFF8F9099); + + static Color alertErrorDefault = const Color(0xFFC74E5B); + static Color alertErrorBright = const Color(0xFFFFB2B6); + static Color alertErrorBrighter = const Color(0xFFFFEDEC); + static Color alertErrorDim = const Color(0xFF270005); + + static Color alertSuccess = const Color(0xFF36B37E); + static Color alertWarning = const Color(0xFFFFAB00); + + static Color borderDefault = const Color(0xFF1D1F27); + static Color borderBright = const Color(0xFF272A31); + static Color borderPrimary = const Color(0xFF2572ED); + + static Color baseBlack = const Color(0xFF000000); + static Color baseWhite = const Color(0xFFFFFFFF); + + /// Returns the color from the given [hexColor] + static int _getColorFromHex(String hexColor) { + hexColor = hexColor.toUpperCase().replaceAll("#", ""); + if (hexColor.length == 6) { + hexColor = "FF$hexColor"; + } + + final hexNum = int.parse(hexColor, radix: 16); + + if (hexNum == 0) { + return 0xff000000; + } + + return hexNum; + } + + /// Applies the layout colors from the given [palette] + static void applyLayoutColors(Map? palette) { + palette?.forEach((key, value) { + switch (key) { + case "primary_default": + primaryDefault = Color(_getColorFromHex(value)); + break; + case "primary_bright": + primaryBright = Color(_getColorFromHex(value)); + break; + case "primary_dim": + primaryDim = Color(_getColorFromHex(value)); + break; + case "primary_disabled": + primaryDisabled = Color(_getColorFromHex(value)); + break; + case "on_primary_high": + onPrimaryHighEmphasis = Color(_getColorFromHex(value)); + break; + case "on_primary_medium": + onPrimaryMediumEmphasis = Color(_getColorFromHex(value)); + break; + case "on_primary_low": + onPrimaryLowEmphasis = Color(_getColorFromHex(value)); + break; + case "secondary_default": + secondaryDefault = Color(_getColorFromHex(value)); + break; + case "secondary_bright": + secondaryBright = Color(_getColorFromHex(value)); + break; + case "secondary_dim": + secondaryDim = Color(_getColorFromHex(value)); + break; + case "secondary_disabled": + secondaryDisabled = Color(_getColorFromHex(value)); + break; + case "on_secondary_high": + onSecondaryHighEmphasis = Color(_getColorFromHex(value)); + break; + case "on_secondary_medium": + onSecondaryMediumEmphasis = Color(_getColorFromHex(value)); + break; + case "on_secondary_low": + onSecondaryLowEmphasis = Color(_getColorFromHex(value)); + break; + case "background_default": + backgroundDefault = Color(_getColorFromHex(value)); + break; + case "background_dim": + backgroundDim = Color(_getColorFromHex(value)); + break; + case "surface_default": + surfaceDefault = Color(_getColorFromHex(value)); + break; + case "surface_bright": + surfaceBright = Color(_getColorFromHex(value)); + break; + case "surface_brighter": + surfaceBrighter = Color(_getColorFromHex(value)); + break; + case "surface_dim": + surfaceDim = Color(_getColorFromHex(value)); + break; + case "on_surface_high": + onSurfaceHighEmphasis = Color(_getColorFromHex(value)); + break; + case "on_surface_medium": + onSurfaceMediumEmphasis = Color(_getColorFromHex(value)); + break; + case "on_surface_low": + onSurfaceLowEmphasis = Color(_getColorFromHex(value)); + break; + case "alert_error_default": + alertErrorDefault = Color(_getColorFromHex(value)); + break; + case "alert_error_bright": + alertErrorBright = Color(_getColorFromHex(value)); + break; + case "alert_error_brighter": + alertErrorBrighter = Color(_getColorFromHex(value)); + break; + case "alert_error_dim": + alertErrorDim = Color(_getColorFromHex(value)); + break; + case "alert_success": + alertSuccess = Color(_getColorFromHex(value)); + break; + case "alert_warning": + alertWarning = Color(_getColorFromHex(value)); + break; + case "border_default": + borderDefault = Color(_getColorFromHex(value)); + break; + case "border_bright": + borderBright = Color(_getColorFromHex(value)); + break; + case "base_black": + baseBlack = Color(_getColorFromHex(value)); + break; + case "base_white": + baseWhite = Color(_getColorFromHex(value)); + break; + } + }); + } + + /// Resets the layout colors to the default values + static void resetLayoutColors() { + primaryDefault = const Color(0xFF2572ED); + primaryBright = const Color(0xFF538DFF); + primaryDim = const Color(0xFF002D6D); + primaryDisabled = const Color(0xFF004299); + + onPrimaryHighEmphasis = const Color(0xFFFFFFFF); + onPrimaryMediumEmphasis = const Color(0xFFCCDAFF); + onPrimaryLowEmphasis = const Color(0xFF84AAFF); + + secondaryDefault = const Color(0xFF444954); + secondaryBright = const Color(0xFF70778B); + secondaryDim = const Color(0xFF293042); + secondaryDisabled = const Color(0xFF404759); + + onSecondaryHighEmphasis = const Color(0xFFFFFFFF); + onSecondaryMediumEmphasis = const Color(0xFFD3D9F0); + onSecondaryLowEmphasis = const Color(0xFFA4ABC0); + + backgroundDefault = const Color(0xFF0B0E15); + backgroundDim = const Color(0xFF000000); + + surfaceDefault = const Color(0xFF191B23); + surfaceBright = const Color(0xFF272A31); + surfaceBrighter = const Color(0xFF2E3038); + surfaceDim = const Color(0xFF11131A); + + onSurfaceHighEmphasis = const Color(0xFFEFF0FA); + onSurfaceMediumEmphasis = const Color(0xFFC5C6D0); + onSurfaceLowEmphasis = const Color(0xFF8F9099); + + alertErrorDefault = const Color(0xFFC74E5B); + alertErrorBright = const Color(0xFFFFB2B6); + alertErrorBrighter = const Color(0xFFFFEDEC); + alertErrorDim = const Color(0xFF270005); + + alertSuccess = const Color(0xFF36B37E); + alertWarning = const Color(0xFFFFAB00); + + borderDefault = const Color(0xFF1D1F27); + borderBright = const Color(0xFF272A31); + borderPrimary = const Color(0xFF2572ED); + + baseBlack = const Color(0xFF000000); + baseWhite = const Color(0xFFFFFFFF); + } +} diff --git a/packages/hms_room_kit/lib/src/meeting/meeting_bottom_navigation_bar.dart b/packages/hms_room_kit/lib/src/meeting/meeting_bottom_navigation_bar.dart new file mode 100644 index 000000000..cc036fafa --- /dev/null +++ b/packages/hms_room_kit/lib/src/meeting/meeting_bottom_navigation_bar.dart @@ -0,0 +1,250 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/src/hls_viewer/hls_chat_component.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/chat_only_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/tab_widgets/chat_participants_tab_bar.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/enums/meeting_mode.dart'; +import 'package:hms_room_kit/src/enums/session_store_keys.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_embedded_button.dart'; + +///This renders the meeting bottom navigation bar +///It contains the leave, mic, camera, chat and menu buttons +///The mic and camera buttons are only rendered if the local peer has the +///permission to publish audio and video respectively +class MeetingBottomNavigationBar extends StatefulWidget { + const MeetingBottomNavigationBar({super.key}); + + @override + State createState() => + _MeetingBottomNavigationBarState(); +} + +class _MeetingBottomNavigationBarState + extends State { + @override + Widget build(BuildContext context) { + return Column( + children: [ + if (HMSRoomLayout.chatData?.isOverlay ?? false) + Selector( + selector: (_, meetingStore) => meetingStore.isOverlayChatOpened, + builder: (_, isOverlayChatOpened, __) { + return isOverlayChatOpened + ? Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Colors.black.withAlpha(0), + Colors.black.withAlpha(64) + ])), + child: Padding( + padding: EdgeInsets.only( + bottom: MediaQuery.of(context).viewInsets.bottom + + 15), + child: HLSChatComponent( + height: MediaQuery.of(context).size.height * 0.3, + ), + )) + : const SizedBox(); + }), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + ///Leave Button + HMSEmbeddedButton( + onTap: () async => + {await UtilityComponents.onBackPressed(context)}, + offColor: HMSThemeColors.alertErrorDefault, + disabledBorderColor: HMSThemeColors.alertErrorDefault, + isActive: false, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/exit_room.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorBrighter, BlendMode.srcIn), + semanticsLabel: "leave_room_button", + ), + ), + ), + + ///Microphone button + ///This button is only rendered if the local peer has the permission to + ///publish audio + if (Provider.of(context) + .localPeer + ?.role + .publishSettings + ?.allowed + .contains("audio") ?? + false) + Selector( + selector: (_, meetingStore) => meetingStore.isMicOn, + builder: (_, isMicOn, __) { + return HMSEmbeddedButton( + onTap: () => + {context.read().toggleMicMuteState()}, + onColor: HMSThemeColors.backgroundDim, + isActive: isMicOn, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + isMicOn + ? "packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "audio_mute_button", + ), + ), + ); + }), + + ///Camera button + ///This button is only rendered if the local peer has the permission to + ///publish video + if (Provider.of(context) + .localPeer + ?.role + .publishSettings + ?.allowed + .contains("video") ?? + false) + Selector>( + selector: (_, meetingStore) => Tuple2(meetingStore.isVideoOn, + meetingStore.meetingMode == MeetingMode.audio), + builder: (_, data, __) { + return HMSEmbeddedButton( + onTap: () => { + (data.item2) + ? null + : context + .read() + .toggleCameraMuteState(), + }, + onColor: HMSThemeColors.backgroundDim, + isActive: data.item1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + data.item1 + ? "packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "video_mute_button"), + ), + ); + }), + + ///Chat Button + if(HMSRoomLayout.chatData != null) + Selector( + selector: (_, meetingStore) => Tuple2( + meetingStore.isNewMessageReceived, + meetingStore.isOverlayChatOpened), + builder: (_, chatState, __) { + return HMSEmbeddedButton( + onTap: () => { + if (HMSRoomLayout.chatData?.isOverlay ?? false) + {context.read().toggleChatOverlay()} + else + { + context.read().getSessionMetadata( + SessionStoreKeyValues.getNameFromMethod( + SessionStoreKey.pinnedMessageSessionKey)), + context.read().setNewMessageFalse(), + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: HMSRoomLayout.isParticipantsListEnabled + ? const ChatParticipantsTabBar( + tabIndex: 0, + ) + : const ChatOnlyBottomSheet()), + ) + } + }, + onColor: HMSThemeColors.backgroundDim, + isActive: !(chatState.item2 && + (HMSRoomLayout.chatData?.isOverlay ?? false)), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: chatState.item1 && !chatState.item2 + ? Badge( + backgroundColor: HMSThemeColors.primaryDefault, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg", + semanticsLabel: "chat_button", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + ) + : SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "chat_button", + ), + ), + ); + }), + + ///Menu Button + HMSEmbeddedButton( + onTap: () async => { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: const AppUtilitiesBottomSheet()), + ) + }, + onColor: HMSThemeColors.backgroundDim, + isActive: true, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/menu.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + semanticsLabel: "more_button"), + ), + ), + ], + ), + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/meeting/meeting_header.dart b/packages/hms_room_kit/lib/src/meeting/meeting_header.dart new file mode 100644 index 000000000..d84b2c1ea --- /dev/null +++ b/packages/hms_room_kit/lib/src/meeting/meeting_header.dart @@ -0,0 +1,241 @@ +///Dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/audio_settings_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_embedded_button.dart'; + +///This widget is used to show the header of the meeting screen +///It contains the logo, live indicator, recording indicator, number of peers +///and the switch camera and audio device selection buttons +class MeetingHeader extends StatefulWidget { + const MeetingHeader({super.key}); + + @override + State createState() => _MeetingHeaderState(); +} + +class _MeetingHeaderState extends State { + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ///This renders the logo, live indicator, recording indicator, number of peers + Row( + children: [ + ///This renders the logo + ///If the logo is null, we render an empty SizedBox + ///If the logo is an svg, we render the svg + ///If the logo is an image, we render the image + HMSRoomLayout.roleLayoutData?.logo?.url == null + ? Container() + : HMSRoomLayout.roleLayoutData!.logo!.url!.contains("svg") + ? SvgPicture.network( + HMSRoomLayout.roleLayoutData!.logo!.url!) + : Image.network( + HMSRoomLayout.roleLayoutData!.logo!.url!, + height: 30, + width: 30, + ), + const SizedBox( + width: 12, + ), + + ///This renders the live status + ///If the HLS streaming is started, we render the live indicator + ///else we render an empty Container + /// + ///For hls streaming status we use the streamingType map from the [MeetingStore] + Selector( + selector: (_, meetingStore) => + meetingStore.streamingType['hls'] ?? false, + builder: (_, isHLSStarted, __) { + return isHLSStarted + ? Container( + height: 24, + width: 43, + decoration: BoxDecoration( + color: HMSThemeColors.alertErrorDefault, + borderRadius: BorderRadius.circular(4)), + child: Center( + child: HMSTitleText( + text: "LIVE", + fontSize: 10, + lineHeight: 16, + letterSpacing: 1.5, + textColor: HMSThemeColors.alertErrorBrighter), + ), + ) + : Container(); + }), + const SizedBox( + width: 8, + ), + + ///This renders the recording status + ///If the recording is started, we render the recording indicator + ///else we render an empty Container + /// + ///For recording status we use the recordingType map from the [MeetingStore] + Selector>( + selector: (_, meetingStore) => Tuple3( + meetingStore.recordingType["browser"] ?? false, + meetingStore.recordingType["server"] ?? false, + meetingStore.recordingType["hls"] ?? false, + ), + builder: (_, data, __) { + return (data.item1 || data.item2 || data.item3) + ? SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/record.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, + BlendMode.srcIn), + ) + : Container(); + }), + const SizedBox( + width: 8, + ), + + ///This renders the number of peers + ///If the HLS streaming is started, we render the number of peers + ///else we render an empty Container + Selector>( + selector: (_, meetingStore) => Tuple2( + meetingStore.streamingType['hls'] ?? false, + meetingStore.peers.length), + builder: (_, data, __) { + return data.item1 + ? Container( + width: 59, + height: 24, + constraints: + const BoxConstraints(minWidth: 59, maxWidth: 70), + decoration: BoxDecoration( + border: Border.all( + color: HMSThemeColors.borderBright, width: 1), + borderRadius: + const BorderRadius.all(Radius.circular(4)), + color: HMSThemeColors.backgroundDim + .withOpacity(0.64)), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/watching.svg", + width: 16, + height: 16, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "fl_watching", + ), + const SizedBox( + width: 4, + ), + HMSTitleText( + text: Utilities.formatNumber(data.item2), + fontSize: 10, + lineHeight: 10, + letterSpacing: 1.5, + textColor: + HMSThemeColors.onSurfaceHighEmphasis) + ], + )) + : Container(); + }) + ], + ), + Row( + children: [ + ///This renders the switch camera button + ///If the role is allowed to publish video, we render the switch camera button + ///else we render an empty SizedBox + /// + ///If the video is on we disable the button + Selector?>>( + selector: (_, meetingStore) => Tuple2( + meetingStore.isVideoOn, + meetingStore.localPeer?.role.publishSettings?.allowed ?? + []), + builder: (_, data, __) { + return (data.item2?.contains("video") ?? false) + ? HMSEmbeddedButton( + onTap: () => { + if (data.item1) + {context.read().switchCamera()} + }, + isActive: true, + onColor: HMSThemeColors.backgroundDim, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/camera.svg", + colorFilter: ColorFilter.mode( + data.item1 + ? HMSThemeColors.onSurfaceHighEmphasis + : HMSThemeColors.onSurfaceLowEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "fl_switch_camera", + ), + ) + : const SizedBox(); + }), + const SizedBox( + width: 16, + ), + + ///This renders the audio device selection button + ///If the role is allowed to publish audio, we render the audio device selection button + ///else we render an empty SizedBox + Selector( + selector: (_, meetingStore) => + meetingStore.currentAudioDeviceMode, + builder: (_, audioDevice, __) { + return HMSEmbeddedButton( + onTap: () { + ///If the platform is iOS, we use the iOS UI to switch audio output + ///on Android we use the [AudioSettingsBottomSheet] to switch audio output + if (Platform.isIOS) { + context + .read() + .switchAudioOutputUsingiOSUI(); + } else { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: const AudioSettingsBottomSheet())); + } + }, + onColor: HMSThemeColors.backgroundDim, + isActive: true, + child: SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/${Utilities.getAudioDeviceIconName(audioDevice)}.svg', + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "settings_button", + )); + }), + ], + ) + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/meeting/meeting_page.dart b/packages/hms_room_kit/lib/src/meeting/meeting_page.dart new file mode 100644 index 000000000..6425cea77 --- /dev/null +++ b/packages/hms_room_kit/lib/src/meeting/meeting_page.dart @@ -0,0 +1,590 @@ +//Dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_foreground_task/flutter_foreground_task.dart'; +import 'package:hms_room_kit/src/preview_for_role/preview_for_role_bottom_sheet.dart'; +import 'package:hms_room_kit/src/preview_for_role/preview_for_role_header.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_circular_avatar.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_left_room_screen.dart'; +import 'package:hms_room_kit/src/widgets/meeting_modes/custom_one_to_one_grid.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_recording_error_toast.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_bottom_navigation_bar.dart'; +import 'package:hms_room_kit/src/meeting/meeting_header.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_bring_on_stage_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_local_screen_share_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_role_change_decline_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast_model.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toasts_type.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/enums/meeting_mode.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/app_dialogs/audio_device_change_dialog.dart'; +import 'package:hms_room_kit/src/widgets/meeting_modes/audio_mode.dart'; +import 'package:hms_room_kit/src/widgets/meeting_modes/full_screen_mode.dart'; +import 'package:hms_room_kit/src/widgets/meeting_modes/hero_mode.dart'; +import 'package:hms_room_kit/src/widgets/meeting_modes/one_to_one_mode.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/meeting/pip_view.dart'; + +///[MeetingPage] is the main page of the meeting +///It takes the following parameters: +///[meetingLink] is the link of the meeting +///[isRoomMute] is the flag to mute the room +class MeetingPage extends StatefulWidget { + final String meetingLink; + final bool isRoomMute; + const MeetingPage( + {Key? key, required this.meetingLink, this.isRoomMute = true}) + : super(key: key); + + @override + State createState() => _MeetingPageState(); +} + +class _MeetingPageState extends State { + @override + void initState() { + super.initState(); + checkAudioState(); + _enableForegroundService(); + } + + void checkAudioState() async { + if (widget.isRoomMute) { + WidgetsBinding.instance.addPostFrameCallback((_) { + context.read().toggleSpeaker(); + }); + } + } + + void _enableForegroundService() { + context.read().initForegroundTask(); + } + + ///This method returns the toast according to the type of toast + Widget getToast(HMSToastModel toast, int index, int toastsCount) { + switch (toast.hmsToastType) { + case HMSToastsType.roleChangeToast: + return HMSBringOnStageToast( + toastColor: Utilities.getToastColor(index, toastsCount), + peer: toast.toastData, + meetingStore: context.read(), + ); + case HMSToastsType.errorToast: + return HMSRecordingErrorToast( + recordingError: toast.toastData, + meetingStore: context.read()); + case HMSToastsType.localScreenshareToast: + return HMSLocalScreenShareToast( + toastColor: Utilities.getToastColor(index, toastsCount), + meetingStore: context.read(), + ); + + case HMSToastsType.roleChangeDeclineToast: + return HMSRoleChangeDeclineToast( + peer: toast.toastData, + toastColor: Utilities.getToastColor(index, toastsCount), + meetingStore: context.read(), + ); + } + } + + ///This method returns the scale of the toast according to the index and the total number of toasts + double _getToastScale(int index, int toastsCount) { + if (toastsCount == 1) { + return 1; + } else if (toastsCount == 2) { + if (index == 0) { + return 0.95; + } + return 1; + } else { + if (index == 0) { + return 0.90; + } else if (index == 1) { + return 0.95; + } + return 1; + } + } + + @override + Widget build(BuildContext context) { + bool isPortraitMode = + MediaQuery.of(context).orientation == Orientation.portrait; + return WillPopScope( + onWillPop: () async { + bool ans = await UtilityComponents.onBackPressed(context) ?? false; + return ans; + }, + child: WithForegroundTask( + child: Selector>( + selector: (_, meetingStore) => Tuple4(meetingStore.isRoomEnded, + meetingStore.hmsException, meetingStore.isEndRoomCalled,meetingStore.localPeer?.role.permissions.hlsStreaming??false), + builder: (_, failureErrors, __) { + if (failureErrors.item1) { + WidgetsBinding.instance.addPostFrameCallback((_) { + Navigator.of(context).pushReplacement(MaterialPageRoute( + builder: (context) => HMSLeftRoomScreen( + isEndRoomCalled: failureErrors.item3, + doesRoleHasStreamPermission: failureErrors.item4, + ))); + }); + } + return Selector( + selector: (_, meetingStore) => meetingStore.isPipActive, + builder: (_, isPipActive, __) { + return isPipActive && Platform.isAndroid + ? const PipView() + : Scaffold( + backgroundColor: HMSThemeColors.backgroundDim, + resizeToAvoidBottomInset: false, + body: SafeArea( + child: Theme( + data: ThemeData( + brightness: Brightness.dark, + primaryColor: + HMSThemeColors.primaryDefault, + scaffoldBackgroundColor: + HMSThemeColors.backgroundDim), + child: SingleChildScrollView( + child: SizedBox( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context) + .size + .height - + MediaQuery.of(context).padding.top - + MediaQuery.of(context).padding.bottom, + child: Stack( + children: [ + Selector< + MeetingStore, + Tuple6< + List, + bool, + int, + int, + MeetingMode, + PeerTrackNode?>>( + selector: (_, meetingStore) => Tuple6( + meetingStore.peerTracks, + meetingStore.isHLSLink, + meetingStore + .peerTracks.length, + meetingStore.screenShareCount, + meetingStore.meetingMode, + meetingStore + .peerTracks.isNotEmpty + ? meetingStore.peerTracks[ + meetingStore + .screenShareCount] + : null), + builder: (_, data, __) { + if (data.item3 == 0) { + return Center( + child: Column( + mainAxisSize: + MainAxisSize.min, + children: [ + CircularProgressIndicator( + strokeWidth: 2, + color: HMSThemeColors + .primaryDefault, + ), + const SizedBox( + height: 10, + ), + if (context + .read() + .peers + .isNotEmpty) + HMSTitleText( + text: + "Please wait for broadcaster to join", + textColor: + HMSThemeColors + .onSurfaceHighEmphasis) + ], + )); + } + return Selector< + MeetingStore, + Tuple2>( + selector: (_, + meetingStore) => + Tuple2( + meetingStore + .meetingMode, + meetingStore + .localPeer), + builder: (_, modeData, __) { + Size size = Size( + MediaQuery.of(context) + .size + .width, + MediaQuery.of(context) + .size + .height - + 122 - + MediaQuery.of( + context) + .padding + .bottom - + MediaQuery.of( + context) + .padding + .top); + return Positioned( + top: 55, + left: 0, + right: 0, + bottom: 68, + /*** + * The logic for gridview is as follows: + * - Default mode is Active Speaker mode which displays only 4 tiles on screen without scroll and updates the tile according to who is currently speaking + * - If there are only 2 peers in the room in which one is local peer then automatically the mode is switched to oneToOne mode + * - As the peer count increases the mode is switched back to active speaker view in case of default mode + * - Remaining as the mode from bottom sheet is selected corresponding grid layout is rendered + */ + child: (modeData.item1 == + MeetingMode + .activeSpeakerWithInset && + (context.read().localPeer?.audioTrack != + null || + context.read().localPeer?.videoTrack != + null)) + ? OneToOneMode( + bottomMargin: + 225, + peerTracks: + data + .item1, + screenShareCount: + data + .item4, + context: + context, + size: size) + : (modeData.item1 == + MeetingMode + .activeSpeakerWithoutInset) + ? const CustomOneToOneGrid( + isLocalInsetPresent: + false, + ) + : (modeData.item1 == + MeetingMode + .hero) + ? heroMode( + peerTracks: data + .item1, + itemCount: data + .item3, + screenShareCount: data + .item4, + context: + context, + isPortrait: + isPortraitMode, + size: + size) + : (modeData.item1 == + MeetingMode + .audio) + ? audioMode( + peerTracks: data.item1.sublist(data.item4), + itemCount: data.item1.sublist(data.item4).length, + context: context, + isPortrait: isPortraitMode, + size: size) + : (data.item5 == MeetingMode.single) + ? fullScreenMode(peerTracks: data.item1, itemCount: data.item3, screenShareCount: data.item4, context: context, isPortrait: isPortraitMode, size: size) + : const CustomOneToOneGrid( + isLocalInsetPresent: false, + )); + }); + }), + Column( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: const [ + Padding( + padding: EdgeInsets.only( + left: 15, + right: 15, + top: 5, + bottom: 2), + child: MeetingHeader()), + Padding( + padding: EdgeInsets.only( + bottom: 8.0), + child: + MeetingBottomNavigationBar()) + ], + ), + + ///This gets rendered when the previewForRole method is called + ///This is used to show the preview for role component + Selector< + MeetingStore, + Tuple3< + HMSLocalVideoTrack?, + HMSLocalAudioTrack?, + HMSRoleChangeRequest?>>( + selector: (_, meetingStore) => Tuple3( + meetingStore + .previewForRoleVideoTrack, + meetingStore + .previewForRoleAudioTrack, + meetingStore + .currentRoleChangeRequest), + builder: (_, previewForRoleTracks, + __) { + ///If the preview for role tracks are not null + ///or role change request is not null + ///we show the preview for role component + ///else we show and empty Container + if (previewForRoleTracks.item1 != null || + previewForRoleTracks + .item2 != + null || + previewForRoleTracks + .item3 != + null) { + WidgetsBinding.instance + .addPostFrameCallback( + (timeStamp) { + ///For preview for role component we use the [showGeneralDialog] + showGeneralDialog( + context: context, + pageBuilder: + (ctx, _, __) { + return ListenableProvider + .value( + value: context.read< + MeetingStore>(), + child: Scaffold( + body: SafeArea( + child: + Container( + color: HMSThemeColors + .backgroundDim, + height: MediaQuery.of( + context) + .size + .height, + width: MediaQuery.of( + context) + .size + .width, + + ///We render the preview for role component + child: Stack( + children: [ + ///This renders the video component + ///[HMSVideoView] is only rendered if video is ON + /// + ///else we render the [HMSCircularAvatar] + Selector< + MeetingStore, + bool>( + selector: (_, meetingStore) => meetingStore + .isVideoOn, + builder: (_, + isVideoOn, + __) { + return Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + color: HMSThemeColors.backgroundDim, + child: (isVideoOn && previewForRoleTracks.item1 != null) + ? Center( + child: HMSVideoView( + scaleType: ScaleType.SCALE_ASPECT_FILL, + track: previewForRoleTracks.item1!, + setMirror: true, + ), + ) + : Center( + child: HMSCircularAvatar(name: context.read().localPeer?.name ?? ""), + ), + ); + }), + + ///This renders the preview for role header + const PreviewForRoleHeader(), + + ///This renders the preview for role bottom sheet + PreviewForRoleBottomSheet( + meetingStore: + context.read(), + roleChangeRequest: context + .read() + .currentRoleChangeRequest, + ) + ], + ), + ), + ), + ), + ); + }); + }); + } + return Container(); + }), + + Selector( + selector: (_, meetingStore) => + meetingStore + .hmsTrackChangeRequest, + builder: (_, + hmsTrackChangeRequest, __) { + if (hmsTrackChangeRequest != + null) { + HMSTrackChangeRequest + currentRequest = + hmsTrackChangeRequest; + context + .read() + .hmsTrackChangeRequest = + null; + WidgetsBinding.instance + .addPostFrameCallback( + (_) { + UtilityComponents + .showTrackChangeDialog( + context, + currentRequest); + }); + } + return const SizedBox(); + }), + Selector( + selector: (_, meetingStore) => + meetingStore + .showAudioDeviceChangePopup, + builder: (_, + showAudioDeviceChangePopup, + __) { + if (showAudioDeviceChangePopup) { + context + .read() + .showAudioDeviceChangePopup = + false; + WidgetsBinding.instance + .addPostFrameCallback( + (_) { + showDialog( + context: context, + builder: (_) => + AudioDeviceChangeDialog( + currentAudioDevice: context + .read< + MeetingStore>() + .currentAudioOutputDevice!, + audioDevicesList: context + .read< + MeetingStore>() + .availableAudioOutputDevices, + changeAudioDevice: + (audioDevice) { + context + .read< + MeetingStore>() + .switchAudioOutput( + audioDevice: + audioDevice); + }, + )); + }); + } + return const SizedBox(); + }), + Selector< + MeetingStore, + Tuple2, + int>>( + selector: (_, meetingStore) => + Tuple2( + meetingStore.toasts + .toList(), + meetingStore + .toasts.length), + builder: (_, toastsItem, __) { + if (toastsItem.item1.isEmpty) { + return Container(); + } + return Stack( + children: toastsItem.item1 + .asMap() + .entries + .map((toasts) { + return Positioned( + bottom: + 48.0 + 8 * toasts.key, + left: 5, + child: Transform.scale( + scale: _getToastScale( + toasts.key, + toastsItem.item2), + child: getToast( + toasts.value, + toasts.key, + toastsItem.item2), + )); + }).toList()); + }), + Selector( + selector: (_, meetingStore) => + meetingStore.reconnecting, + builder: (_, reconnecting, __) { + if (reconnecting) { + return UtilityComponents + .showReconnectingDialog( + context); + } + return const SizedBox(); + }), + if (failureErrors.item2 != null) + if (failureErrors.item2?.code?.errorCode == 1003 || + failureErrors.item2?.code + ?.errorCode == + 2000 || + failureErrors.item2?.code + ?.errorCode == + 4005 || + failureErrors.item2?.code + ?.errorCode == + 424) + UtilityComponents + .showFailureError( + failureErrors.item2!, + context, + () => context + .read() + .leave()) + ], + ), + ), + ), + ), + ), + ); + }); + }), + )); + } +} diff --git a/example/lib/meeting/meeting_store.dart b/packages/hms_room_kit/lib/src/meeting/meeting_store.dart similarity index 62% rename from example/lib/meeting/meeting_store.dart rename to packages/hms_room_kit/lib/src/meeting/meeting_store.dart index 8015db7b4..02ca44a2c 100644 --- a/example/lib/meeting/meeting_store.dart +++ b/packages/hms_room_kit/lib/src/meeting/meeting_store.dart @@ -1,29 +1,33 @@ -//Package imports - +///Dart imports import 'dart:convert'; import 'dart:developer'; import 'dart:io'; -import 'dart:math' as Math; -import 'package:firebase_analytics/firebase_analytics.dart'; +import 'dart:math' as math; + +//Package imports +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_foreground_task/flutter_foreground_task.dart'; -import 'package:hmssdk_flutter_example/common/util/log_writer.dart'; -import 'package:hmssdk_flutter_example/app_secrets.dart'; -import 'package:hmssdk_flutter_example/enum/session_store_key.dart'; -import 'package:hmssdk_flutter_example/service/constant.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_mode.dart'; -import 'package:hmssdk_flutter_example/model/rtc_stats.dart'; import 'package:intl/intl.dart'; -import 'package:collection/collection.dart'; //Project imports -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/hms_sdk_interactor.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:hmssdk_flutter_example/service/room_service.dart'; - +import 'package:hms_room_kit/src/model/participant_store.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/enums/meeting_mode.dart'; +import 'package:hms_room_kit/src/enums/session_store_keys.dart'; +import 'package:hms_room_kit/src/hmssdk_interactor.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/model/rtc_stats.dart'; +import 'package:hms_room_kit/src/service/app_secrets.dart'; +import 'package:hms_room_kit/src/service/room_service.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast_model.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toasts_type.dart'; + +///[MeetingStore] is the store that is used to store the data of the meeting +///It takes the following parameters: +///[hmsSDKInteractor] is the interactor that is used to interact with the SDK class MeetingStore extends ChangeNotifier with WidgetsBindingObserver implements @@ -55,6 +59,14 @@ class MeetingStore extends ChangeNotifier HMSRoleChangeRequest? currentRoleChangeRequest; + HMSLocalVideoTrack? previewForRoleVideoTrack; + + HMSLocalAudioTrack? previewForRoleAudioTrack; + + HMSPeer? peerDeclinedRequest; + + HMSPeer? peerToBringOnStage; + bool isMeetingStarted = false; bool isVideoOn = true; @@ -63,9 +75,7 @@ class MeetingStore extends ChangeNotifier bool isScreenShareOn = false; - List screenShareTrack = []; - - HMSTrack? curentScreenShareTrack; + BuildContext? screenshareContext; bool reconnecting = false; @@ -73,6 +83,12 @@ class MeetingStore extends ChangeNotifier bool isRoomEnded = false; + ///This variable is used to check if the room end method is called or not + ///by you or someone else(This also covers the case when you are removed from session but session is still active) + bool isEndRoomCalled = false; + + List toasts = []; + Map recordingType = { "browser": false, "server": false, @@ -89,9 +105,13 @@ class MeetingStore extends ChangeNotifier List peers = []; - List filteredPeers = []; + ///Map with key as role and value as list of peers with that role + Map> participantsInMeetingMap = { + "Hand Raised": [] + }; - String selectedRoleFilter = "Everyone"; + ///This stores the length of the filteredPeerList + int participantsInMeeting = 0; HMSPeer? localPeer; @@ -109,12 +129,14 @@ class MeetingStore extends ChangeNotifier bool isStatsVisible = false; - bool isMirror = false; - bool isAutoSimulcast = true; bool isNewMessageReceived = false; + bool isOverlayChatOpened = + (HMSRoomLayout.chatData?.isOpenInitially ?? false) && + (HMSRoomLayout.chatData?.isOverlay ?? false); + int firstTimeBuild = 0; String message = ""; @@ -123,7 +145,7 @@ class MeetingStore extends ChangeNotifier ScrollController controller = ScrollController(); - MeetingMode meetingMode = MeetingMode.Grid; + MeetingMode meetingMode = MeetingMode.activeSpeakerWithInset; bool isLandscapeLocked = false; @@ -148,8 +170,6 @@ class MeetingStore extends ChangeNotifier int trackChange = -1; - final GlobalKey pipFlutterPlayerKey = GlobalKey(); - bool hlsStreamingRetry = false; bool isTrackSettingApplied = false; @@ -162,7 +182,7 @@ class MeetingStore extends ChangeNotifier bool isPipActive = false; - bool isPipAutoEnabled = true; + // bool isPipAutoEnabled = true; bool lastVideoStatus = false; @@ -170,12 +190,14 @@ class MeetingStore extends ChangeNotifier bool showNotification = false; - HMSVideoTrack? currentPIPtrack; + // HMSVideoTrack? currentPIPtrack; HMSLogList applicationLogs = HMSLogList(hmsLog: []); bool isFlashOn = false; + String? previousRole; + ///These variables are used in session metadata implementation ************************************************* HMSSessionStore? _hmsSessionStore; @@ -192,48 +214,66 @@ class MeetingStore extends ChangeNotifier bool isDefaultAspectRatioSelected = true; + int currentPage = 0; + + int currentScreenSharePage = 0; + Future join(String userName, String roomUrl, {HMSConfig? roomConfig}) async { //If roomConfig is null then only we call the methods to get the authToken //If we are joining the room from preview we already have authToken so we don't //need to call the getAuthTokenByRoomCode method if (roomConfig == null) { - List? _roomData = RoomService().getCode(roomUrl); + // List? roomData = RoomService().getCode(roomUrl); //If the link is not valid then we might not get the code and whether the link is a //PROD or QA so we return the error in this case - if (_roomData?.length == 0) { - return HMSException( - message: "Invalid meeting URL", - description: "Provided meeting URL is invalid", - action: "Please Check the meeting URL", - isTerminal: false); - } - - //qaTokenEndPoint is only required for 100ms internal testing - //It can be removed and should not affect the join method call - //For _endPoint just pass it as null - //the endPoint parameter in getAuthTokenByRoomCode can be passed as null - String? _endPoint = _roomData?[1] == "true" ? null : '$qaTokenEndPoint'; + // if (roomData != null && roomData.isEmpty) { + // return HMSException( + // message: "Invalid meeting URL", + // description: "Provided meeting URL is invalid", + // action: "Please Check the meeting URL", + // isTerminal: false); + // } + String? tokenEndPoint; + String? initEndPoint; + + if (roomUrl.contains("app.100ms.live")) { + List? roomData = RoomService().getCode(roomUrl); + + //If the link is not valid then we might not get the code and whether the link is a + //PROD or QA so we return the error in this case + if (roomData == null || roomData.isEmpty) { + return HMSException( + message: "Invalid meeting URL", + description: "Provided meeting URL is invalid", + action: "Please Check the meeting URL", + isTerminal: false); + } - Constant.meetingCode = _roomData?[0] ?? ''; + //qaTokenEndPoint is only required for 100ms internal testing + //It can be removed and should not affect the join method call + //For _endPoint just pass it as null + //the endPoint parameter in getAuthTokenByRoomCode can be passed as null + tokenEndPoint = roomData[1] == "true" ? null : qaTokenEndPoint; + initEndPoint = roomData[1] == "true" ? "" : qaInitEndPoint; + Constant.meetingCode = roomData[0] ?? ''; + } else { + Constant.meetingCode = roomUrl; + } //We use this to get the auth token from room code - dynamic _tokenData = await _hmsSDKInteractor.getAuthTokenByRoomCode( - roomCode: Constant.meetingCode, endPoint: _endPoint); + dynamic tokenData = await _hmsSDKInteractor.getAuthTokenByRoomCode( + roomCode: Constant.meetingCode, endPoint: tokenEndPoint); - if ((_tokenData is String?) && _tokenData != null) { + if ((tokenData is String?) && tokenData != null) { roomConfig = HMSConfig( - authToken: _tokenData, - userName: userName, - captureNetworkQualityInPreview: true, - // endPoint is only required by 100ms Team. Client developers should not use `endPoint` - //This is only for 100ms internal testing, endPoint can be safely removed from - //the HMSConfig for external usage - endPoint: _roomData?[1] == "true" ? "" : '$qaInitEndPoint', - ); + authToken: tokenData, + userName: userName, + captureNetworkQualityInPreview: true, + endPoint: initEndPoint); } else { - return _tokenData; + return tokenData; } } @@ -241,11 +281,29 @@ class MeetingStore extends ChangeNotifier _hmsSDKInteractor.addLogsListener(this); HMSHLSPlayerController.addHMSHLSPlaybackEventsListener(this); WidgetsBinding.instance.addObserver(this); + setMeetingModeUsingLayoutApi(); _hmsSDKInteractor.join(config: roomConfig); - this.meetingUrl = roomUrl; + meetingUrl = roomUrl; return null; } + ///This method is used to set the meeting mode using the layout api + void setMeetingModeUsingLayoutApi() { + if (HMSRoomLayout.peerType == PeerRoleType.conferencing) { + meetingMode = (HMSRoomLayout + .roleLayoutData + ?.screens + ?.conferencing + ?.defaultConf + ?.elements + ?.videoTileLayout + ?.enableLocalTileInset ?? + true) + ? MeetingMode.activeSpeakerWithInset + : MeetingMode.activeSpeakerWithoutInset; + } + } + //HMSSDK Methods void leave() async { @@ -286,7 +344,8 @@ class MeetingStore extends ChangeNotifier } void endRoom(bool lock, String? reason) { - _hmsSDKInteractor.endRoom(lock, reason == null ? "" : reason, this); + isEndRoomCalled = true; + _hmsSDKInteractor.endRoom(lock, reason ?? "", this); _hmsSDKInteractor.destroy(); } @@ -343,7 +402,44 @@ class MeetingStore extends ChangeNotifier } Future isScreenShareActive() async { - this.isScreenShareOn = await _hmsSDKInteractor.isScreenShareActive(); + isScreenShareOn = await _hmsSDKInteractor.isScreenShareActive(); + if (isScreenShareOn) { + int index = toasts.indexWhere( + (toast) => toast.hmsToastType == HMSToastsType.localScreenshareToast); + if (index == -1) { + toasts.add(HMSToastModel(this, + hmsToastType: HMSToastsType.localScreenshareToast)); + notifyListeners(); + } + } else { + toasts.removeWhere((element) => + element.hmsToastType == HMSToastsType.localScreenshareToast); + notifyListeners(); + } + } + + void removeToast(HMSToastsType hmsToastsType, {dynamic data}) { + switch (hmsToastsType) { + case HMSToastsType.roleChangeToast: + toasts.removeWhere((toast) => + toast.hmsToastType == HMSToastsType.roleChangeToast && + data.peerId == toast.toastData.peerId); + break; + case HMSToastsType.errorToast: + toasts.removeWhere( + (toast) => toast.hmsToastType == HMSToastsType.errorToast); + break; + case HMSToastsType.localScreenshareToast: + toasts.removeWhere((toast) => + toast.hmsToastType == HMSToastsType.localScreenshareToast); + break; + case HMSToastsType.roleChangeDeclineToast: + toasts.removeWhere((toast) => + toast.hmsToastType == HMSToastsType.roleChangeDeclineToast && + data.peerId == toast.toastData.peerId); + break; + } + notifyListeners(); } void changeStatsVisible() { @@ -382,6 +478,43 @@ class MeetingStore extends ChangeNotifier return await _hmsSDKInteractor.getRoles(); } + HMSRole? getOnStageRole() { + if (HMSRoomLayout.peerType == PeerRoleType.conferencing) { + String? roleName = HMSRoomLayout.roleLayoutData?.screens?.conferencing + ?.defaultConf?.elements?.onStageExp?.onStageRole; + int? roleIndex = roles.indexWhere((element) => element.name == roleName); + if (roleIndex != -1) { + return roles[roleIndex]; + } + } else if (HMSRoomLayout.peerType == PeerRoleType.hlsViewer) { + String? roleName = HMSRoomLayout.roleLayoutData?.screens?.conferencing + ?.hlsLiveStreaming?.elements?.onStageExp?.onStageRole; + int? roleIndex = roles.indexWhere((element) => element.name == roleName); + if (roleIndex != -1) { + return roles[roleIndex]; + } + } + return null; + } + + ///This method returns the off stage roles + bool isOffStageRole(String? roleName) { + if (HMSRoomLayout.peerType == PeerRoleType.conferencing) { + int? roleIndex = HMSRoomLayout.roleLayoutData?.screens?.conferencing + ?.defaultConf?.elements?.onStageExp?.offStageRoles?.indexWhere((role) => role==roleName); + if (roleIndex != -1) { + return true; + } + } else if (HMSRoomLayout.peerType == PeerRoleType.hlsViewer) { + int? roleIndex = HMSRoomLayout.roleLayoutData?.screens?.conferencing + ?.hlsLiveStreaming?.elements?.onStageExp?.offStageRoles?.indexWhere((role) => role==roleName); + if (roleIndex != -1) { + return true; + } + } + return false; + } + void changeTrackState(HMSTrack track, bool mute) { return _hmsSDKInteractor.changeTrackState(track, mute, this); } @@ -394,12 +527,65 @@ class MeetingStore extends ChangeNotifier {String? meetingUrl, required bool toRecord, List? rtmpUrls}) async { - HMSRecordingConfig hmsRecordingConfig = new HMSRecordingConfig( + HMSRecordingConfig hmsRecordingConfig = HMSRecordingConfig( meetingUrl: meetingUrl, toRecord: toRecord, rtmpUrls: rtmpUrls); _hmsSDKInteractor.startRtmpOrRecording(hmsRecordingConfig, this); } + void cancelPreview() async { + var result = await _hmsSDKInteractor.cancelPreview(); + if (result != null) { + log(result.toString()); + return; + } + if (isRaisedHand) { + changeMetadata(); + } + if (currentRoleChangeRequest?.suggestedBy != null) { + _hmsSDKInteractor.sendDirectMessage( + "", currentRoleChangeRequest!.suggestedBy!, this, + type: "role_change_declined"); + } + currentRoleChangeRequest = null; + previewForRoleAudioTrack = null; + previewForRoleVideoTrack = null; + notifyListeners(); + } + + void toggleRequestDeclined(HMSPeer? sender) { + toasts.add(HMSToastModel(sender, + hmsToastType: HMSToastsType.roleChangeDeclineToast)); + notifyListeners(); + } + + dynamic previewForRole(String role) async { + var result = await _hmsSDKInteractor.previewForRole(role: role); + + ///Handle the exception + if (result is HMSException) { + log(result.toString()); + } else { + var indexForVideoTrack = (result as List).indexWhere( + (element) => + element.kind == HMSTrackKind.kHMSTrackKindVideo && + element.source == "REGULAR"); + if (indexForVideoTrack != -1) { + previewForRoleVideoTrack = + result[indexForVideoTrack] as HMSLocalVideoTrack; + isVideoOn = true; + } + var indexForAudioTrack = result.indexWhere( + (element) => element.kind == HMSTrackKind.kHMSTrackKindAudio); + if (indexForAudioTrack != -1) { + previewForRoleAudioTrack = + result[indexForAudioTrack] as HMSLocalAudioTrack; + isMicOn = true; + } + notifyListeners(); + } + } + void stopRtmpAndRecording() async { _hmsSDKInteractor.stopRtmpAndRecording(this); } @@ -418,7 +604,8 @@ class MeetingStore extends ChangeNotifier isBRB = false; String value = isRaisedHand ? "true" : "false"; _hmsSDKInteractor.changeMetadata( - metadata: "{\"isHandRaised\":$value,\"isBRBOn\":false}", + metadata: + "{\"isHandRaised\":$value,\"isBRBOn\":false,\"prevRole\":\"$previousRole\"}", hmsActionResultListener: this); } @@ -429,7 +616,8 @@ class MeetingStore extends ChangeNotifier isRaisedHand = false; String value = isBRB ? "true" : "false"; _hmsSDKInteractor.changeMetadata( - metadata: "{\"isHandRaised\":false,\"isBRBOn\":$value}", + metadata: + "{\"isHandRaised\":false,\"isBRBOn\":$value,\"prevRole\":\"$previousRole\"}", hmsActionResultListener: this); if (isMicOn) { toggleMicMuteState(); @@ -441,7 +629,18 @@ class MeetingStore extends ChangeNotifier } void acceptChangeRole(HMSRoleChangeRequest hmsRoleChangeRequest) { + previewForRoleAudioTrack = null; + previewForRoleVideoTrack = null; _hmsSDKInteractor.acceptChangeRole(hmsRoleChangeRequest, this); + if (localPeer != null) { + previousRole = localPeer?.role.name; + if (isRaisedHand) { + changeMetadata(); + } + HMSRoomLayout.resetLayout(hmsRoleChangeRequest.suggestedRole.name); + currentRoleChangeRequest = null; + notifyListeners(); + } } void changeName({required String name}) { @@ -449,12 +648,12 @@ class MeetingStore extends ChangeNotifier } HMSHLSRecordingConfig? hmshlsRecordingConfig; - void startHLSStreaming(bool singleFile, bool videoOnDemand) { + Future startHLSStreaming( + bool singleFile, bool videoOnDemand) async { hmshlsRecordingConfig = HMSHLSRecordingConfig( singleFilePerLayer: singleFile, videoOnDemand: videoOnDemand); - _hmsSDKInteractor.startHLSStreaming(this, + return await _hmsSDKInteractor.startHLSStreaming(this, hmshlsRecordingConfig: hmshlsRecordingConfig!); - retryHLS = true; } void stopHLSStreaming() { @@ -471,7 +670,6 @@ class MeetingStore extends ChangeNotifier } void setSettings() async { - isMirror = await Utilities.getBoolData(key: 'mirror-camera') ?? false; isStatsVisible = await Utilities.getBoolData(key: 'show-stats') ?? false; isAutoSimulcast = await Utilities.getBoolData(key: 'is-auto-simulcast') ?? true; @@ -498,6 +696,7 @@ class MeetingStore extends ChangeNotifier selfChangeAudioDevice = true; currentAudioDeviceMode = audioDevice; _hmsSDKInteractor.switchAudioOutput(audioDevice: audioDevice); + notifyListeners(); } // Override Methods @@ -528,26 +727,31 @@ class MeetingStore extends ChangeNotifier if (room.hmshlsStreamingState?.running == true) { streamingType["hls"] = true; } + setParticipantsList(roles); for (HMSPeer each in room.peers!) { if (each.isLocal) { int index = peerTracks - .indexWhere((element) => element.uid == each.peerId + "mainVideo"); - if (index == -1) + .indexWhere((element) => element.uid == "${each.peerId}mainVideo"); + if (index == -1 && + (each.audioTrack != null || each.videoTrack != null)) { peerTracks.add(PeerTrackNode( peer: each, - uid: each.peerId + "mainVideo", + uid: "${each.peerId}mainVideo", networkQuality: localPeerNetworkQuality, stats: RTCStats())); + } localPeer = each; addPeer(localPeer!); - if (localPeer!.role.name.contains("hls-") == true) isHLSLink = true; + if (HMSRoomLayout + .roleLayoutData?.screens?.conferencing?.hlsLiveStreaming != + null) isHLSLink = true; index = peerTracks - .indexWhere((element) => element.uid == each.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${each.peerId}mainVideo"); if (each.videoTrack != null) { if (each.videoTrack!.kind == HMSTrackKind.kHMSTrackKindVideo) { peerTracks[index].track = each.videoTrack!; if (each.videoTrack!.isMute) { - this.isVideoOn = false; + isVideoOn = false; } } } @@ -555,29 +759,56 @@ class MeetingStore extends ChangeNotifier if (each.audioTrack!.kind == HMSTrackKind.kHMSTrackKindAudio) { peerTracks[index].audioTrack = each.audioTrack!; if (each.audioTrack!.isMute) { - this.isMicOn = false; + isMicOn = false; } } } break; } } - roles = await getRoles(); - roles.removeWhere((element) => element.name == "__internal_recorder"); - Utilities.saveStringData(key: "meetingLink", value: this.meetingUrl); + + if (roles.isEmpty) { + roles = await getRoles(); + roles.removeWhere((element) => element.name == "__internal_recorder"); + setParticipantsList(roles); + } + Utilities.saveStringData(key: "meetingLink", value: meetingUrl); getCurrentAudioDevice(); getAudioDevicesList(); notifyListeners(); - if (Platform.isIOS && !(localPeer?.role.name.contains("hls-") ?? false)) { - HMSIOSPIPController.setup( - autoEnterPip: true, - aspectRatio: [9, 16], - backgroundColor: Colors.black); - } else if (Platform.isAndroid) { - HMSAndroidPIPController.setup(); + // if (Platform.isIOS && + // HMSRoomLayout.roleLayoutData?.screens?.conferencing?.defaultConf != + // null) { + // HMSIOSPIPController.setup( + // autoEnterPip: true, + // aspectRatio: [9, 16], + // backgroundColor: Colors.black); + // } else if (Platform.isAndroid) { + // HMSAndroidPIPController.setup(); + // } + } + + void setParticipantsList(List roles) { + String? onStageRoles = HMSRoomLayout.roleLayoutData?.screens?.conferencing + ?.defaultConf?.elements?.onStageExp?.onStageRole; + if (onStageRoles != null) { + participantsInMeetingMap[onStageRoles] = []; } + roles + .where((role) => role.publishSettings?.allowed.isNotEmpty ?? false) + .forEach((element) { + participantsInMeetingMap[element.name] = []; + }); + roles + .where((role) => role.publishSettings?.allowed.isEmpty ?? false) + .forEach((element) { + participantsInMeetingMap[element.name] = []; + }); + } + + void initForegroundTask() { FlutterForegroundTask.startService( notificationTitle: "100ms foreground service running", notificationText: "Tap to return to the app"); @@ -655,13 +886,14 @@ class MeetingStore extends ChangeNotifier } if (peer.isLocal) { + localPeer = peer; if (track.kind == HMSTrackKind.kHMSTrackKindAudio && track.source == "REGULAR") { - this.isMicOn = !track.isMute; + isMicOn = !track.isMute; } if (track.kind == HMSTrackKind.kHMSTrackKindVideo && track.source == "REGULAR") { - this.isVideoOn = !track.isMute; + isVideoOn = !track.isMute; } notifyListeners(); } @@ -669,15 +901,15 @@ class MeetingStore extends ChangeNotifier if (track.kind == HMSTrackKind.kHMSTrackKindAudio && trackUpdate != HMSTrackUpdate.trackRemoved) { int index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); if (index != -1) { PeerTrackNode peerTrackNode = peerTracks[index]; peerTrackNode.audioTrack = track as HMSAudioTrack; peerTrackNode.notify(); } else { - peerTracks.add(new PeerTrackNode( + peerTracks.add(PeerTrackNode( peer: peer, - uid: peer.peerId + "mainVideo", + uid: "${peer.peerId}mainVideo", stats: RTCStats(), audioTrack: track as HMSAudioTrack)); notifyListeners(); @@ -689,20 +921,20 @@ class MeetingStore extends ChangeNotifier if (track.source == "REGULAR" && trackUpdate != HMSTrackUpdate.trackRemoved) { int index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); if (index != -1) { PeerTrackNode peerTrackNode = peerTracks[index]; peerTrackNode.track = track as HMSVideoTrack; peerTrackNode.notify(); - if (meetingMode == MeetingMode.Single) { + if (meetingMode == MeetingMode.single) { rearrangeTile(peerTrackNode, index); } setSpotlightOnTrackUpdate(track); return; } else { - peerTracks.add(new PeerTrackNode( + peerTracks.add(PeerTrackNode( peer: peer, - uid: peer.peerId + "mainVideo", + uid: "${peer.peerId}mainVideo", stats: RTCStats(), track: track as HMSVideoTrack)); notifyListeners(); @@ -716,7 +948,7 @@ class MeetingStore extends ChangeNotifier @override void onHMSError({required HMSException error}) { log("onHMSError-> error: ${error.code} ${error.message}"); - this.hmsException = error; + hmsException = error; Utilities.showNotification(error.message ?? "", "error"); notifyListeners(); } @@ -727,6 +959,11 @@ class MeetingStore extends ChangeNotifier switch (message.type) { case "metadata": break; + case "EMOJI_REACTION": + break; + case "role_change_declined": + toggleRequestDeclined(message.sender); + break; default: addMessage(message); isNewMessageReceived = true; @@ -740,125 +977,84 @@ class MeetingStore extends ChangeNotifier @override void onRoleChangeRequest({required HMSRoleChangeRequest roleChangeRequest}) { log("onRoleChangeRequest-> sender: ${roleChangeRequest.suggestedBy} role: ${roleChangeRequest.suggestedRole}"); - this.currentRoleChangeRequest = roleChangeRequest; + currentRoleChangeRequest = roleChangeRequest; + previewForRole(roleChangeRequest.suggestedRole.name); + } + + void setCurrentPage(int newPage) { + currentPage = newPage; + notifyListeners(); + } + + void setCurrentScreenSharePage(int newPage) { + currentScreenSharePage = newPage; notifyListeners(); } @override void onUpdateSpeakers({required List updateSpeakers}) { //To handle the active speaker mode scenario - if (meetingMode == MeetingMode.ActiveSpeaker) { - //Picking up the first four peers from the peerTracks list - List activeSpeakerList = peerTracks.sublist( - screenShareCount + (spotLightPeer != null ? 1 : 0), - Math.min(peerTracks.length, 4)); - + if ((currentPage == 0) && + (meetingMode == MeetingMode.activeSpeakerWithInset || + meetingMode == MeetingMode.activeSpeakerWithoutInset) && + peerTracks.length > 6) { /* Here we iterate through the updateSpeakers list * and do the following: - * - Whether the peer is already present on screen - * - if not we find the peer's index from peerTracks list - * - if peer is present in the peerTracks list(this is done just to make sure that peer is still in the room) - * - Insert the peer after screenShare tracks and remove the peer from it's previous position + * Find the index of the peer + * If the peer is out of the screen when you are on first page + * we remove the peer from that index and insert it on the first index */ - updateSpeakers.forEach((speaker) { - int index = activeSpeakerList.indexWhere((previousSpeaker) => - previousSpeaker.uid == speaker.peer.peerId + "mainVideo"); - if (index == -1) { - int peerIndex = peerTracks.indexWhere( - (node) => node.uid == speaker.peer.peerId + "mainVideo"); - if (peerIndex != -1) { - if (peerTracks[peerIndex].uid != spotLightPeer?.uid) { - PeerTrackNode activeSpeaker = peerTracks[peerIndex]; - peerTracks.removeAt(peerIndex); - peerTracks.insert( - screenShareCount + (spotLightPeer != null ? 1 : 0), - activeSpeaker); - peerTracks[screenShareCount + (spotLightPeer != null ? 1 : 0)] - .setOffScreenStatus(false); - } - } + for (var speaker in updateSpeakers) { + int index = peerTracks.indexWhere((previousSpeaker) => + previousSpeaker.uid == "${speaker.peer.peerId}mainVideo"); + if (index > 5) { + PeerTrackNode activeSpeaker = peerTracks[index]; + peerTracks.removeAt(index); + peerTracks.insert(screenShareCount, activeSpeaker); + peerTracks[screenShareCount].setOffScreenStatus(false); } - }); - activeSpeakerList.clear(); + } notifyListeners(); } //This is to handle the borders around the tiles of peers who are currently speaking //Reseting the borders of the tile everytime the update is received if (activeSpeakerIds.isNotEmpty) { - activeSpeakerIds.forEach((key) { + for (var key in activeSpeakerIds) { int index = peerTracks.indexWhere((element) => element.uid == key); if (index != -1) { peerTracks[index].setAudioLevel(-1); } - }); + } activeSpeakerIds.clear(); } //Setting the border for peers who are speaking - updateSpeakers.forEach((element) { - activeSpeakerIds.add(element.peer.peerId + "mainVideo"); + for (var element in updateSpeakers) { + activeSpeakerIds.add("${element.peer.peerId}mainVideo"); int index = peerTracks .indexWhere((element) => element.uid == activeSpeakerIds.last); if (index != -1) { peerTracks[index].setAudioLevel(element.audioLevel); } - }); - - // Below code for change track and text in PIP mode iOS and android. - if (updateSpeakers.isNotEmpty) { - if (Platform.isIOS && (screenShareCount == 0 || isScreenShareOn)) { - if (updateSpeakers[0].peer.videoTrack != null) { - changePIPWindowTrackOnIOS( - track: updateSpeakers[0].peer.videoTrack, - alternativeText: updateSpeakers[0].peer.name, - ratio: [9, 16]); - } else { - changePIPWindowTextOnIOS( - text: updateSpeakers[0].peer.name, ratio: [9, 16]); - } - } else if (Platform.isAndroid) { - changePIPWindowOnAndroid(updateSpeakers[0].peer.peerId + "mainVideo"); - } } + // Below code for change track and text in PIP mode iOS and android. // if (updateSpeakers.isNotEmpty) { - // highestSpeaker = updateSpeakers[0].peer.name; - // } else { - // highestSpeaker = null; - // } - // activeSpeakerIds.clear(); - // updateSpeakers.forEach((element) { - // activeSpeakerIds[element.peer.peerId + "mainVideo"] = element.audioLevel; - // }); - // int firstScreenPeersCount = (meetingMode == MeetingMode.Audio) ? 6 : 4; - // if ((isActiveSpeakerMode && peerTracks.length > firstScreenPeersCount) || - // meetingMode == MeetingMode.Hero) { - // List activeSpeaker = []; - // if (updateSpeakers.length > firstScreenPeersCount) { - // activeSpeaker.addAll(updateSpeakers.sublist(0, firstScreenPeersCount)); - // } else { - // activeSpeaker.addAll(updateSpeakers); - // } - // for (int i = activeSpeaker.length - 1; i > -1; i--) { - // if (isActiveSpeakerMode) { - // List tempTracks = peerTracks.sublist( - // screenShareCount, screenShareCount + firstScreenPeersCount); - // int indexTrack = tempTracks.indexWhere( - // (peer) => activeSpeaker[i].peer.peerId + "mainVideo" == peer.uid); - // if (indexTrack != -1) { - // continue; - // } - // } - // int index = peerTracks.indexWhere( - // (peer) => activeSpeaker[i].peer.peerId + "mainVideo" == peer.uid); - // if (index != -1) { - // PeerTrackNode peerTrackNode = peerTracks.removeAt(index); - // peerTracks.insert(screenShareCount, peerTrackNode); + // if (Platform.isIOS && (screenShareCount == 0 || isScreenShareOn)) { + // if (updateSpeakers[0].peer.videoTrack != null) { + // changePIPWindowTrackOnIOS( + // track: updateSpeakers[0].peer.videoTrack, + // alternativeText: updateSpeakers[0].peer.name, + // ratio: [9, 16]); + // } else { + // changePIPWindowTextOnIOS( + // text: updateSpeakers[0].peer.name, ratio: [9, 16]); // } + // } else if (Platform.isAndroid) { + // changePIPWindowOnAndroid("${updateSpeakers[0].peer.peerId}mainVideo"); // } // } - // notifyListeners(); } @override @@ -894,6 +1090,7 @@ class MeetingStore extends ChangeNotifier @override void onRemovedFromRoom( {required HMSPeerRemovedFromPeer hmsPeerRemovedFromPeer}) { + isEndRoomCalled = hmsPeerRemovedFromPeer.roomWasEnded; log("onRemovedFromRoom-> sender: ${hmsPeerRemovedFromPeer.peerWhoRemoved}, reason: ${hmsPeerRemovedFromPeer.reason}, roomEnded: ${hmsPeerRemovedFromPeer.roomWasEnded}"); description = "Removed by ${hmsPeerRemovedFromPeer.peerWhoRemoved?.name}"; clearRoomState(); @@ -910,7 +1107,7 @@ class MeetingStore extends ChangeNotifier .indexWhere((element) => element.uid == peer.peerId + track.trackId); } else { index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); } if (index != -1) { peerTracks[index].setHMSLocalAudioStats(hmsLocalAudioStats); @@ -928,7 +1125,7 @@ class MeetingStore extends ChangeNotifier .indexWhere((element) => element.uid == peer.peerId + track.trackId); } else { index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); } if (index != -1) { peerTracks[index].setHMSLocalVideoStats(hmsLocalVideoStats); @@ -946,7 +1143,7 @@ class MeetingStore extends ChangeNotifier .indexWhere((element) => element.uid == peer.peerId + track.trackId); } else { index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); } if (index != -1) { peerTracks[index].setHMSRemoteAudioStats(hmsRemoteAudioStats); @@ -964,7 +1161,7 @@ class MeetingStore extends ChangeNotifier .indexWhere((element) => element.uid == peer.peerId + track.trackId); } else { index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); } if (index != -1) { peerTracks[index].setHMSRemoteVideoStats(hmsRemoteVideoStats); @@ -990,48 +1187,57 @@ class MeetingStore extends ChangeNotifier List? availableAudioDevice}) { if (currentAudioDeviceMode != HMSAudioDevice.AUTOMATIC && !selfChangeAudioDevice) { - this.showAudioDeviceChangePopup = true; + showAudioDeviceChangePopup = true; } if (selfChangeAudioDevice) { selfChangeAudioDevice = false; } if (currentAudioDevice != null && - this.currentAudioOutputDevice != currentAudioDevice) { + currentAudioOutputDevice != currentAudioDevice) { Utilities.showToast( "Output Device changed to ${currentAudioDevice.name}"); - this.currentAudioOutputDevice = currentAudioDevice; + currentAudioOutputDevice = currentAudioDevice; } if (availableAudioDevice != null) { - this.availableAudioOutputDevices.clear(); - this.availableAudioOutputDevices.addAll(availableAudioDevice); + availableAudioOutputDevices.clear(); + availableAudioOutputDevices.addAll(availableAudioDevice); } } // Helper Methods void clearRoomState() async { - HMSLogList? _logsDump = await _hmsSDKInteractor.getAllogs(); - await deleteFile(); - writeLogs(_logsDump); - if (Platform.isAndroid) { - HMSAndroidPIPController.destroy(); - } else if (Platform.isIOS) { - HMSIOSPIPController.destroy(); - } - _hmsSDKInteractor.removeUpdateListener(this); - _hmsSDKInteractor.removeLogsListener(this); - _hmsSessionStore?.removeKeyChangeListener(hmsKeyChangeListener: this); - _hmsSDKInteractor.removeHMSLogger(); - HMSHLSPlayerController.removeHMSHLSPlaybackEventsListener(this); + // clearPIPState(); + removeListeners(); toggleAlwaysScreenOn(); _hmsSDKInteractor.destroy(); _hmsSessionStore = null; peerTracks.clear(); isRoomEnded = true; + resetForegroundTaskAndOrientation(); + notifyListeners(); + } + + void resetForegroundTaskAndOrientation() { setLandscapeLock(false); FlutterForegroundTask.stopService(); - notifyListeners(); + } + + // void clearPIPState() { + // if (Platform.isAndroid) { + // HMSAndroidPIPController.destroy(); + // } else if (Platform.isIOS) { + // HMSIOSPIPController.destroy(); + // } + // } + + void removeListeners() { + _hmsSDKInteractor.removeUpdateListener(this); + _hmsSDKInteractor.removeLogsListener(this); + _hmsSessionStore?.removeKeyChangeListener(hmsKeyChangeListener: this); + _hmsSDKInteractor.removeHMSLogger(); + HMSHLSPlayerController.removeHMSHLSPlaybackEventsListener(this); } void toggleScreenShare() { @@ -1044,48 +1250,95 @@ class MeetingStore extends ChangeNotifier void removePeer(HMSPeer peer) { peers.remove(peer); - if (filteredPeers.contains(peer)) filteredPeers.remove(peer); + participantsInMeetingMap[peer.role.name] + ?.removeWhere((oldPeer) => oldPeer.peer.peerId == peer.peerId); + participantsInMeeting--; + if (peer.metadata?.contains("\"isHandRaised\":true") ?? false) { + participantsInMeetingMap["Hand Raised"] + ?.removeWhere((oldPeer) => oldPeer.peer.peerId == peer.peerId); + participantsInMeeting--; + } + notifyListeners(); } void addPeer(HMSPeer peer) { if (!peers.contains(peer)) peers.add(peer); - if (checkForFilteredList(peer)) filteredPeers.add(peer); + if (participantsInMeetingMap[peer.role.name] + ?.indexWhere((element) => element.peer.peerId == peer.peerId) == + -1) { + participantsInMeetingMap[peer.role.name] + ?.add(ParticipantsStore(peer: peer)); + participantsInMeeting++; + } + if (peer.metadata?.contains("\"isHandRaised\":true") ?? false) { + participantsInMeetingMap["Hand Raised"] + ?.add(ParticipantsStore(peer: peer)); + participantsInMeeting++; + } + notifyListeners(); } void addMessage(HMSMessage message) { - this.messages.add(message); + messages.add(message); } void updatePeerAt(HMSPeer peer) { - int index = this.peers.indexOf(peer); - this.peers.removeAt(index); - this.peers.insert(index, peer); + int index = peers.indexOf(peer); + if (index != -1) { + peers.removeAt(index); + peers.insert(index, peer); + } } - void updateFilteredList(HMSPeerUpdate peerUpdate, HMSPeer peer) { - String currentRole = this.selectedRoleFilter; - int index = - filteredPeers.indexWhere((element) => element.peerId == peer.peerId); + void updatePeerMap(HMSPeerUpdate peerUpdate, HMSPeer peer, + {HMSRole? oldRole}) { + int? index = participantsInMeetingMap[peer.role.name] + ?.indexWhere((element) => element.peer.peerId == peer.peerId); - if (index != -1) { - this.filteredPeers.removeAt(index); + if (index != null && index != -1) { if ((peerUpdate == HMSPeerUpdate.nameChanged)) { - this.filteredPeers.insert(index, peer); + participantsInMeetingMap[peer.role.name]?[index].updatePeer(peer); + if ((peer.metadata?.contains("\"isHandRaised\":true") ?? false)) { + int? peerIndex = participantsInMeetingMap["Hand Raised"] + ?.indexWhere((element) => element.peer.peerId == peer.peerId); + if (peerIndex != null && peerIndex != -1) { + participantsInMeetingMap["Hand Raised"]?[peerIndex] + .updatePeer(peer); + } + } } else if (peerUpdate == HMSPeerUpdate.metadataChanged) { - if ((peer.metadata?.contains("\"isHandRaised\":true") ?? false) || - ((currentRole == "Everyone") || (currentRole == peer.role.name))) { - this.filteredPeers.insert(index, peer); + if ((peer.metadata?.contains("\"isHandRaised\":true") ?? false)) { + if (participantsInMeetingMap["Hand Raised"]?.indexWhere( + (element) => element.peer.peerId == peer.peerId) == + -1) { + participantsInMeetingMap["Hand Raised"] + ?.add(ParticipantsStore(peer: peer)); + participantsInMeeting++; + } + participantsInMeetingMap[peer.role.name]?[index].updatePeer(peer); + } else if ((peer.metadata?.contains("\"isHandRaised\":false") ?? + false)) { + participantsInMeetingMap["Hand Raised"]?.removeWhere( + (handDownPeer) => handDownPeer.peer.peerId == peer.peerId); + participantsInMeeting--; + participantsInMeetingMap[peer.role.name]?[index].updatePeer(peer); } - } else if (peerUpdate == HMSPeerUpdate.roleUpdated && - ((currentRole == "Everyone") || (currentRole == "Raised Hand"))) { - this.filteredPeers.insert(index, peer); + notifyListeners(); } } else { - if ((peerUpdate == HMSPeerUpdate.metadataChanged && - currentRole == "Raised Hand") || - (peerUpdate == HMSPeerUpdate.roleUpdated && - currentRole == peer.role.name)) { - this.filteredPeers.add(peer); + if (peerUpdate == HMSPeerUpdate.roleUpdated) { + if (oldRole != null) { + participantsInMeetingMap[oldRole.name] + ?.removeWhere((oldPeer) => oldPeer.peer.peerId == peer.peerId); + } + participantsInMeetingMap["Hand Raised"] + ?.removeWhere((oldPeer) => oldPeer.peer.peerId == peer.peerId); + participantsInMeetingMap[peer.role.name] + ?.add(ParticipantsStore(peer: peer)); + participantsInMeetingMap[peer.role.name] + ?[participantsInMeetingMap[peer.role.name]!.length - 1] + .updatePeer(peer); + notifyListeners(); } } } @@ -1119,7 +1372,7 @@ class MeetingStore extends ChangeNotifier case HMSPeerUpdate.peerLeft: Utilities.showNotification("${peer.name} left", "peer-left"); int index = peerTracks.indexWhere( - (leftPeer) => leftPeer.uid == peer.peerId + "mainVideo"); + (leftPeer) => leftPeer.uid == "${peer.peerId}mainVideo"); if (index != -1) { peerTracks.removeAt(index); notifyListeners(); @@ -1130,57 +1383,84 @@ class MeetingStore extends ChangeNotifier case HMSPeerUpdate.roleUpdated: if (peer.isLocal) { getSpotlightPeer(); + HMSRoomLayout.resetLayout(peer.role.name); localPeer = peer; } - if (peer.role.name.contains("hls-")) { + if (HMSRoomLayout + .roleLayoutData?.screens?.conferencing?.hlsLiveStreaming != + null) { isHLSLink = peer.isLocal; peerTracks.removeWhere( - (leftPeer) => leftPeer.uid == peer.peerId + "mainVideo"); + (leftPeer) => leftPeer.uid == "${peer.peerId}mainVideo"); } else { if (peer.isLocal) { isHLSLink = false; } } - if (peer.isLocal) { - if (Platform.isIOS) { - if (peer.role.name.contains("hls-")) { - HMSIOSPIPController.destroy(); - } else { - HMSIOSPIPController.setup( - autoEnterPip: true, - aspectRatio: [9, 16], - backgroundColor: Colors.black); - } - } + // if (peer.isLocal) { + // if (Platform.isIOS) { + // if (HMSRoomLayout + // .roleLayoutData?.screens?.conferencing?.hlsLiveStreaming != + // null) { + // HMSIOSPIPController.destroy(); + // } else { + // HMSIOSPIPController.setup( + // autoEnterPip: true, + // aspectRatio: [9, 16], + // backgroundColor: Colors.black); + // } + // } + // } + + Utilities.showToast("${peer.name}'s role changed to ${peer.role.name}"); + int index = peers.indexOf(peer); + HMSRole? oldRole; + if (index != -1) { + oldRole = peers[index].role; } - - Utilities.showToast("${peer.name}'s role changed to " + peer.role.name); updatePeerAt(peer); - updateFilteredList(update, peer); + updatePeerMap(update, peer, oldRole: oldRole); notifyListeners(); break; case HMSPeerUpdate.metadataChanged: if (peer.isLocal) localPeer = peer; int index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); if (index != -1) { PeerTrackNode peerTrackNode = peerTracks[index]; peerTrackNode.peer = peer; - if (peer.metadata?.contains("\"isHandRaised\":true") ?? false) + if (peer.metadata?.contains("\"isHandRaised\":true") ?? false) { Utilities.showNotification( "${peer.name} raised hand", "hand-raise"); + } peerTrackNode.notify(); + } else { + if (HMSRoomLayout.peerType == PeerRoleType.conferencing) { + if (HMSRoomLayout.roleLayoutData?.screens?.conferencing?.defaultConf + ?.elements?.onStageExp?.offStageRoles + ?.contains(peer.role.name) ?? + false) { + addRemoveToastsForRoleChange(peer: peer); + } + } else if (HMSRoomLayout.peerType == PeerRoleType.hlsViewer) { + if (HMSRoomLayout.roleLayoutData?.screens?.conferencing + ?.hlsLiveStreaming?.elements?.onStageExp?.offStageRoles + ?.contains(peer.role.name) ?? + false) { + addRemoveToastsForRoleChange(peer: peer); + } + } } updatePeerAt(peer); - updateFilteredList(update, peer); + updatePeerMap(update, peer); break; case HMSPeerUpdate.nameChanged: if (peer.isLocal) { int localPeerIndex = peerTracks.indexWhere( - (element) => element.uid == localPeer!.peerId + "mainVideo"); + (element) => element.uid == "${localPeer!.peerId}mainVideo"); if (localPeerIndex != -1) { PeerTrackNode peerTrackNode = peerTracks[localPeerIndex]; peerTrackNode.peer = peer; @@ -1190,7 +1470,7 @@ class MeetingStore extends ChangeNotifier } } else { int remotePeerIndex = peerTracks.indexWhere( - (element) => element.uid == peer.peerId + "mainVideo"); + (element) => element.uid == "${peer.peerId}mainVideo"); if (remotePeerIndex != -1) { PeerTrackNode peerTrackNode = peerTracks[remotePeerIndex]; peerTrackNode.peer = peer; @@ -1198,14 +1478,20 @@ class MeetingStore extends ChangeNotifier } } updatePeerAt(peer); - updateFilteredList(update, peer); + updatePeerMap(update, peer); break; case HMSPeerUpdate.networkQualityUpdated: int index = peerTracks - .indexWhere((element) => element.uid == peer.peerId + "mainVideo"); + .indexWhere((element) => element.uid == "${peer.peerId}mainVideo"); if (index != -1) { peerTracks[index].setNetworkQuality(peer.networkQuality?.quality); + int? participantsListIndex = participantsInMeetingMap[peer.role.name] + ?.indexWhere((element) => element.peer.peerId == peer.peerId); + if (participantsListIndex != null && participantsListIndex != -1) { + participantsInMeetingMap[peer.role.name]?[participantsListIndex] + .updatePeer(peer); + } } break; @@ -1221,55 +1507,67 @@ class MeetingStore extends ChangeNotifier switch (update) { case HMSTrackUpdate.trackAdded: if (track.source != "REGULAR") { - int peerIndex = peerTracks.indexWhere( - (element) => element.uid == peer.peerId + track.trackId); - if (peerIndex == -1) { - screenShareCount++; - peerTracks.insert( - 0, - PeerTrackNode( - peer: peer, - uid: peer.peerId + track.trackId, - track: track as HMSVideoTrack, - stats: RTCStats())); + if (!peer.isLocal) { + int peerIndex = peerTracks.indexWhere( + (element) => element.uid == peer.peerId + track.trackId); + if (peerIndex == -1) { + screenShareCount++; + peerTracks.insert( + 0, + PeerTrackNode( + peer: peer, + uid: peer.peerId + track.trackId, + track: track as HMSVideoTrack, + stats: RTCStats())); + notifyListeners(); + // changePIPWindowTrackOnIOS( + // track: track, + // ratio: [9, 16], + // alternativeText: "${peer.name} Screen share"); + } + } else { isScreenShareActive(); - notifyListeners(); - changePIPWindowTrackOnIOS( - track: track, - ratio: [9, 16], - alternativeText: "${peer.name} Screen share"); } } break; case HMSTrackUpdate.trackRemoved: if (track.source != "REGULAR") { - int peerIndex = peerTracks.indexWhere( - (element) => element.uid == peer.peerId + track.trackId); - if (peerIndex != -1) { - screenShareCount--; - peerTracks.removeAt(peerIndex); - if (screenShareCount == 0) { - setLandscapeLock(false); + if (!peer.isLocal) { + int peerIndex = peerTracks.indexWhere( + (element) => element.uid == peer.peerId + track.trackId); + if (peerIndex != -1) { + screenShareCount--; + peerTracks.removeAt(peerIndex); + notifyListeners(); + // changePIPWindowTextOnIOS(text: localPeer?.name, ratio: [9, 16]); + } + + //pop the full screen screenshare when the screenshare is stopped + //set the screenshareContext to null + if (screenshareContext != null) { + Navigator.pop(screenshareContext!); + screenshareContext = null; } + + ///Need to check why we were doing this + // peerTracks.removeWhere( + // (element) => element.track?.trackId == track.trackId); + } else { isScreenShareActive(); - notifyListeners(); - changePIPWindowTextOnIOS(text: localPeer?.name, ratio: [9, 16]); } - peerTracks.removeWhere( - (element) => element.track?.trackId == track.trackId); notifyListeners(); return; } else { int peerIndex = peerTracks.indexWhere( - (element) => element.uid == peer.peerId + "mainVideo"); + (element) => element.uid == "${peer.peerId}mainVideo"); if (peerIndex != -1) { if (track.kind == HMSTrackKind.kHMSTrackKindAudio) { peerTracks[peerIndex].audioTrack = null; } else if (track.kind == HMSTrackKind.kHMSTrackKindVideo) { peerTracks[peerIndex].track = null; - if (currentPIPtrack == track) { - changePIPWindowTextOnIOS(text: localPeer?.name, ratio: [9, 16]); - } + // if (currentPIPtrack == track) { + // changePIPWindowTextOnIOS(text: localPeer?.name, ratio: [9, 16]); + // } } if (peerTracks[peerIndex].track == null && peerTracks[peerIndex].audioTrack == null) { @@ -1281,22 +1579,22 @@ class MeetingStore extends ChangeNotifier } break; case HMSTrackUpdate.trackMuted: - if (currentPIPtrack == track && - track.kind == HMSTrackKind.kHMSTrackKindVideo) { - changePIPWindowTrackOnIOS( - track: track as HMSVideoTrack, - alternativeText: peer.name, - ratio: [9, 16]); - } + // if (currentPIPtrack == track && + // track.kind == HMSTrackKind.kHMSTrackKindVideo) { + // changePIPWindowTrackOnIOS( + // track: track as HMSVideoTrack, + // alternativeText: peer.name, + // ratio: [9, 16]); + // } break; case HMSTrackUpdate.trackUnMuted: - if (currentPIPtrack == track && - track.kind == HMSTrackKind.kHMSTrackKindVideo) { - changePIPWindowTrackOnIOS( - track: track as HMSVideoTrack, - alternativeText: peer.name, - ratio: [9, 16]); - } + // if (currentPIPtrack == track && + // track.kind == HMSTrackKind.kHMSTrackKindVideo) { + // changePIPWindowTrackOnIOS( + // track: track as HMSVideoTrack, + // alternativeText: peer.name, + // ratio: [9, 16]); + // } break; case HMSTrackUpdate.trackDescriptionChanged: break; @@ -1330,10 +1628,10 @@ class MeetingStore extends ChangeNotifier log("onKeyChanged --> key: $key value: $value"); SessionStoreKey keyType = SessionStoreKeyValues.getMethodFromName(key); switch (keyType) { - case SessionStoreKey.PINNED_MESSAGE_SESSION_KEY: + case SessionStoreKey.pinnedMessageSessionKey: sessionMetadata = value; break; - case SessionStoreKey.SPOTLIGHT: + case SessionStoreKey.spotlight: setPeerToSpotlight(value); break; case SessionStoreKey.unknown: @@ -1376,17 +1674,17 @@ class MeetingStore extends ChangeNotifier void setMode(MeetingMode meetingMode) { //Turning the videos on if the previously mode was audio - if (this.meetingMode == MeetingMode.Audio && - meetingMode != MeetingMode.Audio) { + if (this.meetingMode == MeetingMode.audio && + meetingMode != MeetingMode.audio) { unMuteRoomVideoLocally(); } switch (meetingMode) { - case MeetingMode.Audio: + case MeetingMode.audio: //Muting the videos of peers in room locally muteRoomVideoLocally(); break; - case MeetingMode.Single: + case MeetingMode.single: //This is to place the peers with there videos ON //in the beginning int type0 = 0; @@ -1400,8 +1698,9 @@ class MeetingStore extends ChangeNotifier peerTracks[type1] = peerTrackNode; } type1--; - } else + } else { type0++; + } } break; default: @@ -1413,6 +1712,11 @@ class MeetingStore extends ChangeNotifier notifyListeners(); } + ///This method rearranges tiles based on whether camera is ON/OFF + ///and whether the peer is in spotlight or not + ///If the peer is in spotlight then it is placed on the first index + ///If video is ON then the peer is placed on the first index + ///If video is OFF then the peer is placed on the last index rearrangeTile(PeerTrackNode peerTrackNode, int index) { if (peerTrackNode.track!.isMute) { if (peerTracks.length - 1 > index && @@ -1438,7 +1742,7 @@ class MeetingStore extends ChangeNotifier void setNewMessageFalse() { if (!isNewMessageReceived) return; - this.isNewMessageReceived = false; + isNewMessageReceived = false; notifyListeners(); } @@ -1447,35 +1751,6 @@ class MeetingStore extends ChangeNotifier notifyListeners(); } - void getFilteredList(String type) { - filteredPeers.clear(); - filteredPeers.addAll(peers); - filteredPeers.removeWhere((element) => element.isLocal); - filteredPeers.sortedBy(((element) => element.role.priority.toString())); - filteredPeers.insert(0, localPeer!); - if (type == "Everyone") { - return; - } else if (type == "Raised Hand") { - filteredPeers = filteredPeers - .where((element) => - element.metadata != null && - element.metadata!.contains("\"isHandRaised\":true")) - .toList(); - } else { - filteredPeers = - filteredPeers.where((element) => element.role.name == type).toList(); - } - notifyListeners(); - } - - bool checkForFilteredList(HMSPeer peer) { - if ((selectedRoleFilter == "Everyone") || - (peer.role.name == selectedRoleFilter)) { - return true; - } - return false; - } - void setSpotlightOnTrackUpdate(HMSTrack track) { ///In order to avoid errors because of ///track updates ordering for audio and video @@ -1531,71 +1806,73 @@ class MeetingStore extends ChangeNotifier notifyListeners(); } - void enterPipModeOnAndroid() async { - //to check whether pip is available in android - if (Platform.isAndroid) { - bool _isPipAvailable = await HMSAndroidPIPController.isAvailable(); - if (_isPipAvailable) { - //[isPipActive] method can also be used to check whether application is in pip Mode or not - isPipActive = await HMSAndroidPIPController.start(); - notifyListeners(); - } - } - } - - Future isPIPActive() async { - if (Platform.isAndroid) - isPipActive = await HMSAndroidPIPController.isActive(); - else if (Platform.isIOS) isPipActive = await HMSIOSPIPController.isActive(); - return isPipActive; - } - - void changePIPWindowOnAndroid(String uid) { - if (Platform.isAndroid && isPipActive) { - int index = -1; - index = peerTracks.indexWhere((element) => element.uid == uid); - if (index != -1) { - PeerTrackNode node = peerTracks[index]; - peerTracks.removeAt(index); - peerTracks.insert(screenShareCount, node); - } - notifyListeners(); - } - } + // void enterPipModeOnAndroid() async { + // //to check whether pip is available in android + // if (Platform.isAndroid) { + // bool isPipAvailable = await HMSAndroidPIPController.isAvailable(); + // if (isPipAvailable) { + // //[isPipActive] method can also be used to check whether application is in pip Mode or not + // isPipActive = await HMSAndroidPIPController.start(); + // notifyListeners(); + // } + // } + // } + + // Future isPIPActive() async { + // if (Platform.isAndroid) { + // isPipActive = await HMSAndroidPIPController.isActive(); + // } else if (Platform.isIOS) { + // isPipActive = await HMSIOSPIPController.isActive(); + // } + // return isPipActive; + // } + + // void changePIPWindowOnAndroid(String uid) { + // if (Platform.isAndroid && isPipActive) { + // int index = -1; + // index = peerTracks.indexWhere((element) => element.uid == uid); + // if (index != -1) { + // PeerTrackNode node = peerTracks[index]; + // peerTracks.removeAt(index); + // peerTracks.insert(screenShareCount, node); + // } + // notifyListeners(); + // } + // } void switchAudioOutputUsingiOSUI() { _hmsSDKInteractor.switchAudioOutputUsingiOSUI(); } - void changePIPWindowTrackOnIOS( - {HMSVideoTrack? track, - required String alternativeText, - required List ratio}) async { - if (Platform.isIOS && track != null) { - isPipActive = await isPIPActive(); - if (isPipActive) { - HMSIOSPIPController.changeVideoTrack( - track: track, - aspectRatio: ratio, - alternativeText: alternativeText, - scaleType: ScaleType.SCALE_ASPECT_FILL, - backgroundColor: Colors.black); - currentPIPtrack = track; - } - } - } - - void changePIPWindowTextOnIOS( - {String? text, required List ratio}) async { - if (Platform.isIOS && text != null) { - isPipActive = await isPIPActive(); - if (isPipActive) { - HMSIOSPIPController.changeText( - text: text, aspectRatio: ratio, backgroundColor: Colors.black); - currentPIPtrack = null; - } - } - } + // void changePIPWindowTrackOnIOS( + // {HMSVideoTrack? track, + // required String alternativeText, + // required List ratio}) async { + // if (Platform.isIOS && track != null) { + // isPipActive = await isPIPActive(); + // if (isPipActive) { + // HMSIOSPIPController.changeVideoTrack( + // track: track, + // aspectRatio: ratio, + // alternativeText: alternativeText, + // scaleType: ScaleType.SCALE_ASPECT_FILL, + // backgroundColor: Colors.black); + // currentPIPtrack = track; + // } + // } + // } + + // void changePIPWindowTextOnIOS( + // {String? text, required List ratio}) async { + // if (Platform.isIOS && text != null) { + // isPipActive = await isPIPActive(); + // if (isPipActive) { + // HMSIOSPIPController.changeText( + // text: text, aspectRatio: ratio, backgroundColor: Colors.black); + // currentPIPtrack = null; + // } + // } + // } void setAspectRatio(double ratio) { hlsAspectRatio = ratio; @@ -1633,8 +1910,31 @@ class MeetingStore extends ChangeNotifier } } -//Get onSuccess or onException callbacks for HMSActionResultListenerMethod + /// + /// Method to toggle the role change toast + /// + void addRemoveToastsForRoleChange({required HMSPeer peer}) { + if (peer.metadata?.contains("\"isHandRaised\":true") ?? false) { + toasts.add( + HMSToastModel(peer, hmsToastType: HMSToastsType.roleChangeToast)); + notifyListeners(); + } else if (peer.metadata?.contains("\"isHandRaised\":false") ?? false) { + toasts.removeWhere((toast) => + toast.hmsToastType == HMSToastsType.roleChangeToast && + peer.peerId == toast.toastData.peerId); + notifyListeners(); + } + } + + void toggleChatOverlay() { + isOverlayChatOpened = !isOverlayChatOpened; + if (isOverlayChatOpened) { + isNewMessageReceived = false; + } + notifyListeners(); + } +//Get onSuccess or onException callbacks for HMSActionResultListenerMethod @override void onSuccess( {HMSActionResultListenerMethod methodType = @@ -1660,9 +1960,6 @@ class MeetingStore extends ChangeNotifier case HMSActionResultListenerMethod.acceptChangeRole: Utilities.showToast("Accept role change successful"); break; - case HMSActionResultListenerMethod.changeRole: - Utilities.showToast("Change role successful"); - break; case HMSActionResultListenerMethod.changeRoleOfPeer: Utilities.showToast("Change role successful"); break; @@ -1757,6 +2054,9 @@ class MeetingStore extends ChangeNotifier case HMSActionResultListenerMethod.sendHLSTimedMetadata: Utilities.showToast("Metadata sent successfully"); break; + default: + log("ActionResultListener onException-> method: ${methodType.toString()}Could not find a valid case while switching"); + break; } } @@ -1768,11 +2068,6 @@ class MeetingStore extends ChangeNotifier required HMSException hmsException}) { this.hmsException = hmsException; log("ActionResultListener onException-> method: ${methodType.toString()} , Error code : ${hmsException.code} , Description : ${hmsException.description} , Message : ${hmsException.message}"); - FirebaseAnalytics.instance - .logEvent(name: "HMSActionResultListenerLogs", parameters: { - "data": - "ActionResultListener onException-> method: ${methodType.toString()} , Error code : ${hmsException.code} , Description : ${hmsException.description} , Message : ${hmsException.message}" - }); switch (methodType) { case HMSActionResultListenerMethod.leave: break; @@ -1786,13 +2081,14 @@ class MeetingStore extends ChangeNotifier break; case HMSActionResultListenerMethod.acceptChangeRole: break; - case HMSActionResultListenerMethod.changeRole: - break; case HMSActionResultListenerMethod.changeRoleOfPeer: break; case HMSActionResultListenerMethod.changeTrackStateForRole: break; case HMSActionResultListenerMethod.startRtmpOrRecording: + toasts.add(HMSToastModel(hmsException, + hmsToastType: HMSToastsType.errorToast)); + notifyListeners(); break; case HMSActionResultListenerMethod.stopRtmpAndRecording: break; @@ -1805,13 +2101,6 @@ class MeetingStore extends ChangeNotifier case HMSActionResultListenerMethod.sendDirectMessage: break; case HMSActionResultListenerMethod.hlsStreamingStarted: - if (retryHLS) { - _hmsSDKInteractor.startHLSStreaming(this, - meetingUrl: Constant.streamingUrl, - hmshlsRecordingConfig: hmshlsRecordingConfig!); - retryHLS = false; - } - break; case HMSActionResultListenerMethod.hlsStreamingStopped: break; @@ -1841,6 +2130,9 @@ class MeetingStore extends ChangeNotifier case HMSActionResultListenerMethod.sendHLSTimedMetadata: // TODO: Handle this case. break; + default: + log("ActionResultListener onException-> method: ${methodType.toString()} Could not find a valid case while switching"); + break; } notifyListeners(); } @@ -1852,11 +2144,11 @@ class MeetingStore extends ChangeNotifier return; } if (state == AppLifecycleState.resumed) { - if (Platform.isAndroid) { - isPipActive = await HMSAndroidPIPController.isActive(); - } else if (Platform.isIOS) { - isPipActive = false; - } + // if (Platform.isAndroid) { + // isPipActive = await HMSAndroidPIPController.isActive(); + // } else if (Platform.isIOS) { + // isPipActive = false; + // } notifyListeners(); if (lastVideoStatus && !reconnecting) { @@ -1886,51 +2178,50 @@ class MeetingStore extends ChangeNotifier } if (Platform.isAndroid) { - isPipActive = await HMSAndroidPIPController.isActive(); + // isPipActive = await HMSAndroidPIPController.isActive(); notifyListeners(); } - if (Platform.isIOS) { - if (screenShareCount == 0 || isScreenShareOn) { - int peerIndex = peerTracks.indexWhere((element) => - (!(element.track?.isMute ?? true) && !element.peer.isLocal)); - if (peerIndex != -1) { - changePIPWindowTrackOnIOS( - track: peerTracks[peerIndex].track, - alternativeText: peerTracks[peerIndex].peer.name, - ratio: [9, 16]); - } else { - changePIPWindowTextOnIOS(text: localPeer?.name, ratio: [9, 16]); - } - } else { - int peerIndex = peerTracks.indexWhere((element) => - element.uid == - element.peer.peerId + (element.track?.trackId ?? "")); - if (peerIndex != -1) - changePIPWindowTrackOnIOS( - track: peerTracks[peerIndex].track, - alternativeText: peerTracks[peerIndex].peer.name, - ratio: [9, 16]); - } - } - } else if (state == AppLifecycleState.inactive) { - if (Platform.isAndroid && !isPipActive) { - isPipActive = await HMSAndroidPIPController.isActive(); - } - notifyListeners(); - } else if (state == AppLifecycleState.detached) { - if (Platform.isAndroid && !isPipActive) { - isPipActive = await HMSAndroidPIPController.isActive(); - } - notifyListeners(); - } + // if (Platform.isIOS) { + // if (screenShareCount == 0 || isScreenShareOn) { + // int peerIndex = peerTracks.indexWhere((element) => + // (!(element.track?.isMute ?? true) && !element.peer.isLocal)); + // if (peerIndex != -1) { + // changePIPWindowTrackOnIOS( + // track: peerTracks[peerIndex].track, + // alternativeText: peerTracks[peerIndex].peer.name, + // ratio: [9, 16]); + // } else { + // changePIPWindowTextOnIOS(text: localPeer?.name, ratio: [9, 16]); + // } + // } else { + // int peerIndex = peerTracks.indexWhere((element) => + // element.uid == + // element.peer.peerId + (element.track?.trackId ?? "")); + // if (peerIndex != -1) { + // changePIPWindowTrackOnIOS( + // track: peerTracks[peerIndex].track, + // alternativeText: peerTracks[peerIndex].peer.name, + // ratio: [9, 16]); + // } + // } + // } + } + // else if (state == AppLifecycleState.inactive) { + // if (Platform.isAndroid && !isPipActive) { + // isPipActive = await HMSAndroidPIPController.isActive(); + // } + // notifyListeners(); + // } else if (state == AppLifecycleState.detached) { + // if (Platform.isAndroid && !isPipActive) { + // isPipActive = await HMSAndroidPIPController.isActive(); + // } + // notifyListeners(); + // } } @override void onLogMessage({required HMSLogList hmsLogList}) { - FirebaseAnalytics.instance.logEvent( - name: "SDK_Logs", parameters: {"data": hmsLogList.toString()}); - applicationLogs.hmsLog.addAll(hmsLogList.hmsLog); notifyListeners(); } @@ -1956,14 +2247,14 @@ class MeetingStore extends ChangeNotifier time: hlsCue.endDate == null ? 2 : (hlsCue.endDate!.difference(hlsCue.startDate)).inSeconds, - align: Utilities.timedMetadataAlignment[Math.Random() + align: Utilities.timedMetadataAlignment[math.Random() .nextInt(Utilities.timedMetadataAlignment.length)]); } catch (e) { Utilities.showTimedMetadata(hlsCue.payload!, time: hlsCue.endDate == null ? 2 : (hlsCue.endDate!.difference(hlsCue.startDate)).inSeconds, - align: Utilities.timedMetadataAlignment[Math.Random() + align: Utilities.timedMetadataAlignment[math.Random() .nextInt(Utilities.timedMetadataAlignment.length)]); } } diff --git a/example/lib/common/widgets/pip_view.dart b/packages/hms_room_kit/lib/src/meeting/pip_view.dart similarity index 55% rename from example/lib/common/widgets/pip_view.dart rename to packages/hms_room_kit/lib/src/meeting/pip_view.dart index 873dd9f3b..75569d211 100644 --- a/example/lib/common/widgets/pip_view.dart +++ b/packages/hms_room_kit/lib/src/meeting/pip_view.dart @@ -1,12 +1,14 @@ import 'package:flutter/material.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/audio_level_avatar.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/audio_level_avatar.dart'; import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class PipView extends StatefulWidget { + const PipView({super.key}); + @override State createState() => _PipViewState(); } @@ -18,9 +20,9 @@ class _PipViewState extends State { body: Selector>( selector: (_, meetingStore) => meetingStore.peerTracks, builder: (_, data, __) { - return data.length > 0 + return data.isNotEmpty ? ChangeNotifierProvider.value( - key: ValueKey(data[0].uid + "video_view"), + key: ValueKey("${data[0].uid}video_view"), value: data[0], child: Selector>( @@ -33,19 +35,16 @@ class _PipViewState extends State { peerTrackToDisplay.item1?.isDegraded == true) ? Semantics( label: "fl_video_off", - child: AudioLevelAvatar()) - : Container( - child: HMSVideoView( - key: Key(peerTrackToDisplay.item1!.trackId + - "pipView"), - track: peerTrackToDisplay.item1!, - scaleType: - (peerTrackToDisplay.item1!.source != - "REGULAR") - ? ScaleType.SCALE_ASPECT_FIT - : ScaleType.SCALE_ASPECT_FILL, - setMirror: false), - ); + child: const AudioLevelAvatar()) + : HMSVideoView( + key: Key( + "${peerTrackToDisplay.item1!.trackId}pipView"), + track: peerTrackToDisplay.item1!, + scaleType: (peerTrackToDisplay.item1!.source != + "REGULAR") + ? ScaleType.SCALE_ASPECT_FIT + : ScaleType.SCALE_ASPECT_FILL, + setMirror: false); }, )) : Container(); diff --git a/packages/hms_room_kit/lib/src/meeting_screen_controller.dart b/packages/hms_room_kit/lib/src/meeting_screen_controller.dart new file mode 100644 index 000000000..9e405c9b5 --- /dev/null +++ b/packages/hms_room_kit/lib/src/meeting_screen_controller.dart @@ -0,0 +1,102 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_player_store.dart'; +import 'package:hms_room_kit/src/hls_viewer/hls_viewer_page.dart'; +import 'package:hms_room_kit/src/meeting/meeting_page.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///[MeetingScreenController] is the controller for the meeting screen +///It is used to join the room +class MeetingScreenController extends StatefulWidget { + ///[roomCode] is the room code of the room to join + final String roomCode; + + ///[user] is the name of the user joining the room + final String user; + + ///[localPeerNetworkQuality] is the network quality of the local peer + final int? localPeerNetworkQuality; + + ///[isRoomMute] is the mute status of the room when the user joins + ///If it's false then user can listen to the audio of the room + ///If it's true then user can't listen to the audio of the room + final bool isRoomMute; + + ///[showStats] is the flag to show the stats of the room + final bool showStats; + + ///[mirrorCamera] is the flag to mirror the camera + ///Generally set to true for local peer + ///and false to other peers + final bool mirrorCamera; + + ///[role] is the role of the user joining the room + final HMSRole? role; + + ///[config] is the config of the room + ///For more details checkout the [HMSConfig] class + final HMSConfig? config; + + const MeetingScreenController( + {Key? key, + required this.roomCode, + required this.user, + required this.localPeerNetworkQuality, + this.isRoomMute = false, + this.showStats = false, + this.mirrorCamera = true, + this.role, + this.config}) + : super(key: key); + + @override + State createState() => + _MeetingScreenControllerState(); +} + +class _MeetingScreenControllerState extends State { + HLSPlayerStore? _hlsPlayerStore; + @override + void initState() { + super.initState(); + _setInitValues(); + Utilities.initForegroundTask(); + } + + ///This function sets the HLSPlayerStore if the role is hls-viewer + void _setHLSPlayerStore() { + _hlsPlayerStore ??= HLSPlayerStore(); + } + + ///This function sets the initial values of the meeting + void _setInitValues() async { + context.read().setSettings(); + } + + @override + Widget build(BuildContext context) { + return Selector( + builder: (_, data, __) { + ///If the role is hls-viewer then we show the HLSViewerPage + ///else we show the MeetingPage + if (HMSRoomLayout + .roleLayoutData?.screens?.conferencing?.hlsLiveStreaming != + null) { + _setHLSPlayerStore(); + return ListenableProvider.value( + value: _hlsPlayerStore, child: const HLSViewerPage()); + } + return MeetingPage( + meetingLink: widget.roomCode, + isRoomMute: widget.isRoomMute, + ); + }, + selector: (_, meetingStore) => meetingStore.localPeer?.role.name); + } +} diff --git a/packages/hms_room_kit/lib/src/model/participant_store.dart b/packages/hms_room_kit/lib/src/model/participant_store.dart new file mode 100644 index 000000000..f4a089f8d --- /dev/null +++ b/packages/hms_room_kit/lib/src/model/participant_store.dart @@ -0,0 +1,16 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///[ParticipantsStore] is a store that is used to store the participant +///It is used to update the participant list +class ParticipantsStore extends ChangeNotifier { + late HMSPeer peer; + + ParticipantsStore({required this.peer}); + + void updatePeer(HMSPeer newPeer) { + peer = newPeer; + notifyListeners(); + } +} diff --git a/example/lib/model/peer_track_node.dart b/packages/hms_room_kit/lib/src/model/peer_track_node.dart similarity index 80% rename from example/lib/model/peer_track_node.dart rename to packages/hms_room_kit/lib/src/model/peer_track_node.dart index 3ace4137e..afbfee2e3 100644 --- a/example/lib/model/peer_track_node.dart +++ b/packages/hms_room_kit/lib/src/model/peer_track_node.dart @@ -3,7 +3,7 @@ import 'package:flutter/foundation.dart'; //Project Imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/model/rtc_stats.dart'; +import 'package:hms_room_kit/src/model/rtc_stats.dart'; class PeerTrackNode extends ChangeNotifier { HMSPeer peer; @@ -32,21 +32,18 @@ class PeerTrackNode extends ChangeNotifier { return 'PeerTrackNode{peerId: ${peer.peerId}, name: ${peer.name}, track: $track}, isVideoOn: $isOffscreen }'; } - @override - int get hashCode => peer.peerId.hashCode; - void notify() { notifyListeners(); } void setOffScreenStatus(bool currentState) { - this.isOffscreen = currentState; + isOffscreen = currentState; notify(); } void setAudioLevel(int audioLevel) { this.audioLevel = audioLevel; - if (!this.isOffscreen) { + if (!isOffscreen) { notify(); } } @@ -54,7 +51,7 @@ class PeerTrackNode extends ChangeNotifier { void setNetworkQuality(int? networkQuality) { if (networkQuality != null) { this.networkQuality = networkQuality; - if (!this.isOffscreen) { + if (!isOffscreen) { notify(); } } @@ -62,34 +59,29 @@ class PeerTrackNode extends ChangeNotifier { void setHMSRemoteAudioStats(HMSRemoteAudioStats hmsRemoteAudioStats) { stats?.hmsRemoteAudioStats = hmsRemoteAudioStats; - if (!this.isOffscreen) { + if (!isOffscreen) { notify(); } } void setHMSRemoteVideoStats(HMSRemoteVideoStats hmsRemoteVideoStats) { stats?.hmsRemoteVideoStats = hmsRemoteVideoStats; - if (!this.isOffscreen) { + if (!isOffscreen) { notify(); } } void setHMSLocalVideoStats(List hmsLocalVideoStats) { stats?.hmsLocalVideoStats = hmsLocalVideoStats; - if (!this.isOffscreen) { + if (!isOffscreen) { notify(); } } void setHMSLocalAudioStats(HMSLocalAudioStats hmsLocalAudioStats) { stats?.hmsLocalAudioStats = hmsLocalAudioStats; - if (!this.isOffscreen) { + if (!isOffscreen) { notify(); } } - - @override - bool operator ==(Object other) { - return super == other; - } } diff --git a/example/lib/model/rtc_stats.dart b/packages/hms_room_kit/lib/src/model/rtc_stats.dart similarity index 100% rename from example/lib/model/rtc_stats.dart rename to packages/hms_room_kit/lib/src/model/rtc_stats.dart diff --git a/packages/hms_room_kit/lib/src/preview/preview_bottom_button_section.dart b/packages/hms_room_kit/lib/src/preview/preview_bottom_button_section.dart new file mode 100644 index 000000000..b6728c363 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_bottom_button_section.dart @@ -0,0 +1,145 @@ +///Dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/preview/preview_device_settings.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_embedded_button.dart'; + +///This renders the bottom button section +///It contains the audio, video, switch camera and audio device selection buttons +class PreviewBottomButtonSection extends StatelessWidget { + final PreviewStore previewStore; + const PreviewBottomButtonSection({super.key, required this.previewStore}); + + @override + Widget build(BuildContext context) { + ///If the peer is not null, we render the buttons + ///else we render an empty SizedBox + return (previewStore.peer != null) + ? Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + ///This renders the [Audio Button] only if the + ///Peer role has the permission to publish audio + ///and the Peer is not null + if (previewStore.peer != null && + previewStore.peer!.role.publishSettings!.allowed + .contains("audio")) + HMSEmbeddedButton( + onTap: () async => previewStore.toggleMicMuteState(), + isActive: previewStore.isAudioOn, + child: SvgPicture.asset( + previewStore.isAudioOn + ? "packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "audio_mute_button", + ), + ), + const SizedBox( + width: 16, + ), + + ///This renders the [Video Button] only if the + ///Peer role has the permission to publish video + ///and the Peer is not null + if (previewStore.peer != null && + previewStore.peer!.role.publishSettings!.allowed + .contains("video")) + HMSEmbeddedButton( + onTap: () async => (previewStore.localTracks.isEmpty) + ? null + : previewStore.toggleCameraMuteState(), + isActive: previewStore.isVideoOn, + child: SvgPicture.asset( + previewStore.isVideoOn + ? "packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "video_mute_button", + ), + ), + const SizedBox( + width: 16, + ), + + ///This renders the [Switch Camera Button] only if the + ///Peer role has the permission to publish video + ///and the Peer is not null + if (previewStore.peer != null && + previewStore.peer!.role.publishSettings!.allowed + .contains("video")) + HMSEmbeddedButton( + onTap: () async => previewStore.switchCamera(), + isActive: true, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/camera.svg", + colorFilter: ColorFilter.mode( + previewStore.isVideoOn + ? HMSThemeColors.onSurfaceHighEmphasis + : HMSThemeColors.onSurfaceLowEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "switch_camera_button", + ), + ), + ], + ), + Row( + children: [ + ///This renders the [Audio Device Selection Button] only if the + ///Peer role has the permission to publish audio + ///and the Peer is not null + if (previewStore.peer != null && + previewStore.peer!.role.publishSettings!.allowed + .contains("audio")) + HMSEmbeddedButton( + onTap: () { + ///For iOS, This will open the native audio device selection UI + /// + ///For Android, it will open a bottom sheet + ///with the list of available audio devices + if (Platform.isIOS) { + previewStore.switchAudioOutputUsingiOSUI(); + } else { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: previewStore, + child: const PreviewDeviceSettings())); + } + }, + isActive: true, + child: SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/${Utilities.getAudioDeviceIconName(previewStore.currentAudioOutputDevice)}.svg', + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "settings_button", + )), + ], + ) + ], + ) + : const SizedBox(); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_device_settings.dart b/packages/hms_room_kit/lib/src/preview/preview_device_settings.dart new file mode 100644 index 000000000..dff9d84fd --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_device_settings.dart @@ -0,0 +1,225 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; + +///This renders the audio device selection bottom sheet only on android +///It contains the list of available audio devices +class PreviewDeviceSettings extends StatefulWidget { + const PreviewDeviceSettings({ + Key? key, + }) : super(key: key); + @override + State createState() => _PreviewDeviceSettingsState(); +} + +class _PreviewDeviceSettingsState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return DraggableScrollableSheet( + maxChildSize: + (context.read().availableAudioOutputDevices.length + + 1.2) * + 0.1, + minChildSize: + (context.read().availableAudioOutputDevices.length + + 1) * + 0.1, + initialChildSize: + (context.read().availableAudioOutputDevices.length + + 1) * + 0.1, + builder: (context, ScrollController scrollController) { + return Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), topRight: Radius.circular(16)), + color: HMSThemeColors.backgroundDefault, + ), + + ///We are using the selector to rebuild the widget only when the available audio devices list changes + ///or the current audio device changes + child: Selector, int, HMSAudioDevice?>>( + selector: (_, previewStore) => Tuple3( + previewStore.availableAudioOutputDevices, + previewStore.availableAudioOutputDevices.length, + previewStore.currentAudioOutputDevice), + builder: (context, data, _) { + return Padding( + padding: + const EdgeInsets.only(top: 24.0, left: 16, right: 16), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + HMSTitleText( + text: "Audio Output", + textColor: + HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + ), + ], + ), + Row( + children: const [HMSCrossButton()], + ), + ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + Expanded( + child: ListView.builder( + controller: scrollController, + itemCount: data.item2, + itemBuilder: (context, index) { + return Column( + children: [ + GestureDetector( + onTap: () { + context + .read() + .switchAudioOutput( + audioDevice: data.item1[index]); + Navigator.pop(context); + }, + + ///Here we are checking if the current audio device is automatic or not + ///If it is automatic then we render the automatic icon + ///else we render the audio device icon + /// + ///If the current audio device is the selected audio device then we render the tick icon + ///else we render an empty container + child: data.item1[index] == + HMSAudioDevice.AUTOMATIC + ? ListTile( + horizontalTitleGap: 2, + enabled: false, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/${Utilities.getAudioDeviceIconName(data.item3)}.svg", + fit: BoxFit.scaleDown, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubtitleText( + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.10, + fontWeight: FontWeight.w600, + text: + "${Utilities.getAudioDeviceName(data.item1[index])} (${Utilities.getAudioDeviceName(data.item3)})", + textColor: HMSThemeColors + .onSurfaceHighEmphasis, + ), + trailing: context + .read() + .currentAudioDeviceMode == + HMSAudioDevice.AUTOMATIC + ? SizedBox( + height: 24, + width: 24, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/tick.svg", + fit: BoxFit.scaleDown, + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode + .srcIn), + ), + ) + : const SizedBox( + height: 24, + width: 24, + ), + ) + : ListTile( + horizontalTitleGap: 2, + enabled: false, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/${Utilities.getAudioDeviceIconName(data.item1[index])}.svg", + fit: BoxFit.scaleDown, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubtitleText( + text: Utilities + .getAudioDeviceName( + data.item1[index]), + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.10, + fontWeight: FontWeight.w600, + textColor: HMSThemeColors + .onSurfaceHighEmphasis, + ), + trailing: data.item1[index] == + context + .read() + .currentAudioDeviceMode + ? SizedBox( + height: 24, + width: 24, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/tick.svg", + fit: BoxFit.scaleDown, + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode + .srcIn), + ), + ) + : const SizedBox( + height: 24, + width: 24, + ), + ), + ), + Padding( + padding: const EdgeInsets.symmetric( + vertical: 5), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + )), + ], + ); + }), + ) + ], + ), + ); + }), + ); + }); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_get_participants_text.dart b/packages/hms_room_kit/lib/src/preview/preview_get_participants_text.dart new file mode 100644 index 000000000..ecd376822 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_get_participants_text.dart @@ -0,0 +1,28 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///This renders the text based on the number of participants who are already in the room +///If there is only a single peer in room then we render "1 other in session" +///For more than one peer we render it as "{number_of_peers} in session" +/// +///Please note that this will only be rendered if the room state is enabled for the role with peer-list +///Checkout the docs for room-state here: https://www.100ms.live/docs/flutter/v2/how-to-guides/set-up-video-conferencing/preview#get-onpeerupdate-and-onroomupdate-while-in-preview-mode +class PreviewParticipantsText extends StatelessWidget { + final int peerCount; + + const PreviewParticipantsText({super.key, required this.peerCount}); + + @override + Widget build(BuildContext context) { + return HMSTitleText( + text: "$peerCount ${peerCount > 1 ? "others" : "other"} in session", + lineHeight: 20, + fontSize: 14, + letterSpacing: 0.25, + textColor: HMSThemeColors.onSurfaceHighEmphasis); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_header.dart b/packages/hms_room_kit/lib/src/preview/preview_header.dart new file mode 100644 index 000000000..50a22a5f4 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_header.dart @@ -0,0 +1,104 @@ +///dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/preview/preview_participant_chip.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///[PreviewHeader] is the header of the preview screen +///It contains the logo, title, subtitle and the participant chip +///The participant chip is only visible when the room state is enabled +///and the peer list is not empty and the peer role has the permission to receive room state +class PreviewHeader extends StatelessWidget { + final PreviewStore previewStore; + final bool isHidden; + final double width; + const PreviewHeader( + {super.key, + required this.previewStore, + required this.isHidden, + required this.width}); + + @override + Widget build(BuildContext context) { + return Container( + width: width, + decoration: BoxDecoration( + gradient: previewStore.isVideoOn + ? LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + stops: const [0.45, 1], + colors: [ + HMSThemeColors.backgroundDim.withOpacity(1), + HMSThemeColors.backgroundDim.withOpacity(0) + ], + ) + : null), + child: Padding( + padding: EdgeInsets.only( + top: (!(previewStore.peer?.role.publishSettings!.allowed + .contains("video") ?? + false) + ? MediaQuery.of(context).size.height * 0.4 + : Platform.isIOS + ? 50 + : 35), + ), + child: isHidden + ? Container() + : Column( + children: [ + ///We render a generic logo which can be replaced + ///with the company logo from dashboard + HMSRoomLayout.roleLayoutData?.logo?.url == null + ? Container() + : HMSRoomLayout.roleLayoutData!.logo!.url!.contains("svg") + ? SvgPicture.network( + HMSRoomLayout.roleLayoutData!.logo!.url!) + : Image.network( + HMSRoomLayout.roleLayoutData!.logo!.url!, + height: 30, + width: 30, + ), + const SizedBox( + height: 16, + ), + HMSTitleText( + text: HMSRoomLayout.roleLayoutData?.screens?.preview + ?.previewHeader?.title ?? + "Get Started", + fontSize: 24, + lineHeight: 32, + textColor: HMSThemeColors.onSurfaceHighEmphasis), + const SizedBox( + height: 4, + ), + HMSSubheadingText( + text: HMSRoomLayout.roleLayoutData?.screens?.preview + ?.previewHeader?.subTitle ?? + "Setup your audio and video before joining", + textColor: HMSThemeColors.onSurfaceMediumEmphasis), + + ///Here we use SizedBox to keep the UI consistent + ///until we have received peer list or the room-state is + ///not enabled + const SizedBox( + height: 16, + ), + PreviewParticipantChip( + previewStore: previewStore, width: width) + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_join_button.dart b/packages/hms_room_kit/lib/src/preview/preview_join_button.dart new file mode 100644 index 000000000..5a8f9b043 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_join_button.dart @@ -0,0 +1,92 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///This renders the join button text in the preview screen based on the condition +class PreviewJoinButton extends StatelessWidget { + final PreviewStore previewStore; + final bool isEmpty; + final bool isJoining; + + const PreviewJoinButton( + {super.key, + required this.previewStore, + required this.isEmpty, + required this.isJoining}); + + @override + Widget build(BuildContext context) { + return Container( + height: 48, + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(8))), + + ///If the join button type is `join and go live` and the HLS streaming is not started + ///we show the go live button + /// + ///If the join button type is `join and go live` and the HLS streaming is started + ///we show the join now button + ///If the join button type is `join now`, we show the join now button + child: HMSRoomLayout.roleLayoutData?.screens?.preview?.joinForm + ?.joinBtnType == + JoinButtonType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE && + !previewStore.isHLSStreamingStarted + + ///If the room join is in progress we show the loading indicator + ///If the room join is not in progress we show the go live button + ? isJoining + ? const Center( + child: SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator( + strokeWidth: 3, + color: Colors.white, + ), + ), + ) + : Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/live.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + isEmpty + ? HMSThemeColors.onPrimaryLowEmphasis + : HMSThemeColors.onPrimaryHighEmphasis, + BlendMode.srcIn), + ), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: HMSRoomLayout.roleLayoutData?.screens?.preview + ?.joinForm?.goLiveBtnLabel ?? + 'Go Live', + textColor: isEmpty + ? HMSThemeColors.onPrimaryLowEmphasis + : HMSThemeColors.onPrimaryHighEmphasis, + ) + ], + ) + : Center( + child: HMSTitleText( + text: HMSRoomLayout + .data?[0].screens?.preview?.joinForm?.joinBtnLabel ?? + 'Join Now', + textColor: isEmpty + ? HMSThemeColors.onPrimaryLowEmphasis + : HMSThemeColors.onPrimaryHighEmphasis, + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_network_indicator.dart b/packages/hms_room_kit/lib/src/preview/preview_network_indicator.dart new file mode 100644 index 000000000..3e4fc4fe1 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_network_indicator.dart @@ -0,0 +1,51 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; + +///This renders the network indicator with the network quality +/// +///The network quality is fetched from the [PreviewStore] +///The network quality is shown only if the network quality is not null and not -1 +///The network quality is shown only if the [isHidden] is false +class PreviewNetworkIndicator extends StatelessWidget { + final PreviewStore previewStore; + final bool isHidden; + const PreviewNetworkIndicator( + {super.key, required this.previewStore, required this.isHidden}); + + @override + Widget build(BuildContext context) { + return ((previewStore.networkQuality != null && + previewStore.networkQuality != -1) && + !isHidden) + ? Positioned( + bottom: 168, + left: 8, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: HMSThemeColors.backgroundDim.withAlpha(64)), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + if (previewStore.networkQuality != null && + previewStore.networkQuality != -1) + SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/network_${previewStore.networkQuality}.svg', + fit: BoxFit.contain, + semanticsLabel: "fl_network_icon_label", + ), + ], + ), + ), + ), + ) + : const SizedBox(); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_page.dart b/packages/hms_room_kit/lib/src/preview/preview_page.dart new file mode 100644 index 000000000..1da0dac49 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_page.dart @@ -0,0 +1,470 @@ +///Dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:provider/provider.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/preview/preview_bottom_button_section.dart'; +import 'package:hms_room_kit/src/preview/preview_header.dart'; +import 'package:hms_room_kit/src/preview/preview_join_button.dart'; +import 'package:hms_room_kit/src/preview/preview_network_indicator.dart'; +import 'package:hms_room_kit/src/screen_controller.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_circular_avatar.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_loader.dart'; +import 'package:hms_room_kit/src/widgets/hms_buttons/hms_back_button.dart'; +import 'package:hms_room_kit/src/meeting_screen_controller.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_listenable_button.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///This renders the Preview Screen +class PreviewPage extends StatefulWidget { + final String name; + final String meetingLink; + final HMSPrebuiltOptions? options; + + const PreviewPage( + {super.key, + required this.name, + required this.meetingLink, + required this.options}); + @override + State createState() => _PreviewPageState(); +} + +class _PreviewPageState extends State { + late MeetingStore _meetingStore; + TextEditingController nameController = TextEditingController(); + bool isJoiningRoom = false; + bool isHLSStarting = false; + + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + nameController.dispose(); + super.dispose(); + } + + ///This function initializes the [MeetingStore] object + void _setMeetingStore(PreviewStore previewStore) { + _meetingStore = MeetingStore( + hmsSDKInteractor: previewStore.hmsSDKInteractor, + ); + _meetingStore.roles = previewStore.roles; + } + + ///This function joins the room only if the name is not empty + void _joinMeeting(PreviewStore previewStore) async { + if (nameController.text.isNotEmpty) { + FocusManager.instance.primaryFocus?.unfocus(); + setState(() { + isJoiningRoom = true; + }); + + ///Here we set the [MeetingStore] object + _setMeetingStore(previewStore); + + /// We join the room here + HMSException? ans = + await _meetingStore.join(nameController.text, widget.meetingLink); + + ///If the room join fails we show the error dialog + if (ans != null && mounted) { + showGeneralDialog( + context: context, + pageBuilder: (_, data, __) { + return UtilityComponents.showFailureError( + ans, + context, + () => + Navigator.of(context).popUntil((route) => route.isFirst)); + }); + return; + } + + /// If the room join is successful + /// - If the join button type is `join only` or the HLS streaming is already started + /// - We navigate to the meeting screen + /// + /// - If the join button type is `join and go live` and the HLS streaming is not started + /// - We start the HLS streaming + previewStore.isRoomJoined = true; + previewStore.removePreviewListener(); + previewStore.hmsSDKInteractor.addUpdateListener(previewStore); + + ///When the user does not have permission to stream, or the stream is already started, or the flow is webRTC flow, then we directly navigate to the meeting screen. + ///Without starting the HLS stream. + if (HMSRoomLayout + .roleLayoutData?.screens?.preview?.joinForm?.joinBtnType == + JoinButtonType.JOIN_BTN_TYPE_JOIN_ONLY || + previewStore.isHLSStreamingStarted) { + previewStore.toggleIsRoomJoinedAndHLSStarted(); + previewStore.isMeetingJoined = true; + return; + } + + setState(() { + isJoiningRoom = false; + if (HMSRoomLayout + .roleLayoutData?.screens?.preview?.joinForm?.joinBtnType == + JoinButtonType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE) { + isHLSStarting = true; + } + }); + + _startStreaming(previewStore, _meetingStore); + } + } + + ///This function starts the HLS streaming + void _startStreaming( + PreviewStore previewStore, MeetingStore meetingStore) async { + HMSException? isStreamSuccessful; + Future.delayed(const Duration(milliseconds: 100)).then((value) async => { + isStreamSuccessful = + await _meetingStore.startHLSStreaming(false, false), + if (isStreamSuccessful != null) + { + previewStore.hmsSDKInteractor.toggleAlwaysScreenOn(), + setState(() { + isHLSStarting = false; + }), + previewStore.hmsSDKInteractor.removeUpdateListener(previewStore), + meetingStore.removeListeners(), + meetingStore.peerTracks.clear(), + meetingStore.resetForegroundTaskAndOrientation(), + // meetingStore.clearPIPState(), + meetingStore.isRoomEnded = true, + previewStore.isMeetingJoined = false, + previewStore.hmsSDKInteractor.leave(), + HMSThemeColors.resetLayoutColors(), + Navigator.pushReplacement( + context, + CupertinoPageRoute( + builder: (_) => ScreenController( + roomCode: widget.meetingLink, + options: widget.options, + ))), + } + }); + } + + @override + Widget build(BuildContext context) { + var size = MediaQuery.of(context).size; + final double height = size.height; + final double width = size.width; + final previewStore = context.watch(); + + return WillPopScope( + onWillPop: () async { + previewStore.leave(); + return true; + }, + child: Selector( + selector: (_, previewStore) => previewStore.error, + builder: (_, error, __) { + if (previewStore.isRoomJoinedAndHLSStarted) { + previewStore.hmsSDKInteractor.removeUpdateListener(previewStore); + } + return Scaffold( + resizeToAvoidBottomInset: false, + backgroundColor: HMSThemeColors.backgroundDim, + body: previewStore.isRoomJoinedAndHLSStarted + ? ListenableProvider.value( + value: _meetingStore, + child: MeetingScreenController( + role: previewStore.peer?.role, + roomCode: widget.meetingLink, + localPeerNetworkQuality: null, + user: nameController.text, + ), + ) + : SingleChildScrollView( + ///We show circular progress indicator until the local peer is null + ///otherwise we render the preview + child: (previewStore.peer == null) + ? const HMSLoader() + /** + * This component is used to render the video if the role has permission to publish video. + * For hls-viewer role or role without video publishing permission we just render an empty container with screen height and width + * The video is only rendered is camera is turned ON + * Otherwise it will render the circular avatar + */ + : Stack( + children: [ + ((!previewStore + .peer!.role.publishSettings!.allowed + .contains("video"))) + ? SizedBox( + height: height, + width: width, + ) + : Stack( + children: [ + Container( + height: height, + width: width, + color: HMSThemeColors.backgroundDim, + + ///This renders the video view + ///It will be shown only if the video is ON + ///and the role has permission to publish video + ///Otherwise it will render the circular avatar + child: (previewStore.isVideoOn) + ? Center( + child: HMSVideoView( + scaleType: ScaleType + .SCALE_ASPECT_FILL, + track: previewStore + .localTracks[0], + setMirror: true, + ), + ) + : isHLSStarting + ? Container() + : Center( + child: HMSCircularAvatar( + avatarTitleTextColor: + Colors.white, + name: nameController + .text), + ), + ), + + ///This shows the network quality strength of the peer + ///It will be shown only if the network quality is not null + ///and not -1 and HLS is not starting + PreviewNetworkIndicator( + previewStore: previewStore, + isHidden: isHLSStarting) + ], + ), + + ///This renders the gradient background for the preview screen + ///It will be shown only if the peer role is not hls + ///and the video is ON + PreviewHeader( + previewStore: previewStore, + isHidden: isHLSStarting, + width: width), + + ///This renders the back button at top left + if (!isHLSStarting) + Positioned( + top: Platform.isIOS ? 50 : 35, + left: 10, + child: HMSBackButton( + onPressed: () => { + previewStore.leave(), + Navigator.pop(context) + })), + + ///This renders the bottom sheet with microphone, camera and audio device settings + ///This also contains text field for entering the name + /// + ///This is only rendered when the peer is not null + ///and the HLS is not starting + Positioned( + bottom: 0, + child: (previewStore.peer != null && + !isHLSStarting) + ? Container( + decoration: BoxDecoration( + borderRadius: + const BorderRadius.only( + topLeft: + Radius.circular(16), + topRight: + Radius.circular(16)), + color: HMSThemeColors + .backgroundDefault, + ), + width: width, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 16), + child: Column( + children: [ + ///This renders the preview page bottom buttons + PreviewBottomButtonSection( + previewStore: previewStore), + const SizedBox( + height: 16, + ), + + ///This renders the name text field and join button + Padding( + padding: + const EdgeInsets.only( + bottom: 24.0), + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + SizedBox( + height: 48, + width: width * 0.50, + child: TextField( + cursorColor: + HMSThemeColors + .onSurfaceHighEmphasis, + onTapOutside: (event) => + FocusManager + .instance + .primaryFocus + ?.unfocus(), + textInputAction: + TextInputAction + .done, + textCapitalization: + TextCapitalization + .words, + style: GoogleFonts.inter( + color: HMSThemeColors + .onSurfaceHighEmphasis), + controller: + nameController, + keyboardType: + TextInputType + .text, + onChanged: (value) { + setState(() {}); + }, + decoration: + InputDecoration( + contentPadding: + const EdgeInsets.symmetric( + vertical: + 12, + horizontal: + 16), + fillColor: HMSThemeColors + .surfaceDefault, + filled: true, + + ///This renders the hint text + hintText: + 'Enter Name...', + hintStyle: GoogleFonts.inter( + color: HMSThemeColors + .onSurfaceLowEmphasis, + height: + 1.5, + fontSize: + 16, + letterSpacing: + 0.5, + fontWeight: FontWeight + .w400), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + width: + 2, + color: HMSThemeColors + .primaryDefault), + borderRadius: + const BorderRadius.all(Radius.circular( + 8))), + enabledBorder: const OutlineInputBorder( + borderSide: + BorderSide + .none, + borderRadius: + BorderRadius.all(Radius.circular(8))), + border: const OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(8)))), + ), + ), + HMSListenableButton( + isDisabled: + isHLSStarting, + textController: + nameController, + width: width * 0.38, + onPressed: () => + _joinMeeting( + previewStore), + childWidget: + PreviewJoinButton( + isEmpty: + nameController + .text.isEmpty, + previewStore: + previewStore, + isJoining: + isJoiningRoom, + ), + ), + ], + ), + ), + ], + ), + ), + ) + : const SizedBox(), + ), + if (isHLSStarting) + Container( + height: height, + width: width, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + HMSThemeColors.backgroundDim + .withOpacity(1), + HMSThemeColors.backgroundDim + .withOpacity(0) + ], + )), + child: Column( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + CircularProgressIndicator( + strokeWidth: 2, + color: HMSThemeColors.primaryDefault, + ), + const SizedBox( + height: 29, + ), + HMSSubtitleText( + text: "Starting live stream...", + textColor: HMSThemeColors + .onSurfaceHighEmphasis, + fontSize: 16, + lineHeight: 24, + letterSpacing: 0.50, + ) + ], + ), + ), + if (error != null) + UtilityComponents.showFailureError( + error, + context, + () => Navigator.of(context) + .popUntil((route) => route.isFirst)), + ], + ), + ), + ); + }), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_participant_chip.dart b/packages/hms_room_kit/lib/src/preview/preview_participant_chip.dart new file mode 100644 index 000000000..9715fb9ce --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_participant_chip.dart @@ -0,0 +1,98 @@ +///Package imports +import 'package:flutter/widgets.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/preview/preview_get_participants_text.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///This widget renders the UI for whether the HLS is running in the room +///If the HLS is running, it will show the LIVE tag +///Please note that this will only be rendered if the room state is enabled for the role from dashboard +///This also renders the number of participants in the room in a chip +///Please note that this will only be rendered if the room state is enabled for the role with peer-list +/// +///Checkout the docs for room-state here: https://www.100ms.live/docs/flutter/v2/how-to-guides/set-up-video-conferencing/preview#get-onpeerupdate-and-onroomupdate-while-in-preview-mode +class PreviewParticipantChip extends StatelessWidget { + final PreviewStore previewStore; + final double width; + + const PreviewParticipantChip( + {super.key, required this.previewStore, required this.width}); + + @override + Widget build(BuildContext context) { + var peerCount = + previewStore.peerCount + (previewStore.peer == null ? 0 : 1); + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ///This will only be rendered if the room state is enabled for the role from dashboard and the HLS is running in the room + previewStore.isHLSStreamingStarted + ? Padding( + padding: const EdgeInsets.only(right: 12.0), + child: Container( + height: 40, + decoration: BoxDecoration( + color: HMSThemeColors.alertErrorDefault, + borderRadius: BorderRadius.circular(20)), + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Row( + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/white_dot.svg", + width: 20, + height: 20, + ), + Padding( + padding: const EdgeInsets.only(left: 4.0, right: 6), + child: HMSSubtitleText( + text: "LIVE", + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: 0.25, + textColor: HMSThemeColors.onSurfaceHighEmphasis), + ), + ], + ), + )), + ), + ) + : Container(), + + ///This will only be rendered if room state is enabled for the role + peerCount == 0 + ? Container() + : Container( + height: 40, + decoration: BoxDecoration( + color: HMSThemeColors.surfaceDefault, + border: Border.all( + width: 1, color: HMSThemeColors.borderDefault), + borderRadius: BorderRadius.circular(20)), + child: Center( + child: Padding( + padding: const EdgeInsets.only( + top: 8.0, bottom: 8, left: 20, right: 16), + child: peerCount == 1 + ? HMSTitleText( + text: "You are the first to join", + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.25, + textColor: HMSThemeColors.onSurfaceHighEmphasis) + : PreviewParticipantsText( + peerCount: previewStore.peerCount, + ), + ), + ), + ), + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/preview/preview_permissions.dart b/packages/hms_room_kit/lib/src/preview/preview_permissions.dart new file mode 100644 index 000000000..f358e79f9 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview/preview_permissions.dart @@ -0,0 +1,130 @@ +///Dart imports +import 'dart:io'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/hms_prebuilt_options.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/widgets/hms_buttons/hms_back_button.dart'; + +///This renders the preview permissions screen +class PreviewPermissions extends StatefulWidget { + final String roomCode; + final HMSPrebuiltOptions? options; + final void Function() callback; + + const PreviewPermissions( + {super.key, + required this.roomCode, + this.options, + required this.callback}); + + @override + State createState() => _PreviewPermissionsState(); +} + +class _PreviewPermissionsState extends State { + ///This function gets the permissions + ///If the permissions are granted then we call the callback provided + /// + ///For more details checkout the [Utilities.getPermissions] function + void _getPermissions() async { + var res = await Utilities.getPermissions(); + + if (res) { + widget.callback(); + } + } + + @override + Widget build(BuildContext context) { + Size size = MediaQuery.of(context).size; + return SizedBox( + width: size.width, + height: size.height, + child: Stack( + children: [ + Positioned( + top: Platform.isIOS ? 50 : 35, + left: 10, + child: HMSBackButton(onPressed: () => {Navigator.pop(context)})), + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircleAvatar( + radius: 50, + backgroundColor: HMSThemeColors.surfaceDefault, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/permission_lock.svg", + height: 56, + width: 56, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + ), + const SizedBox( + height: 20, + ), + HMSTitleText( + text: "Enable permissions", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 24, + lineHeight: 32, + ), + const SizedBox( + height: 8, + ), + HMSSubtitleText( + text: "Just a few things before you join", + fontSize: 14, + lineHeight: 20, + textColor: HMSThemeColors.onSecondaryMediumEmphasis), + ], + ), + ), + Align( + alignment: Alignment.bottomCenter, + child: Padding( + padding: const EdgeInsets.fromLTRB(8, 8, 8, 24), + child: SizedBox( + width: size.width - 40, + height: 48, + child: ElevatedButton( + onPressed: () { + _getPermissions(); + }, + style: ButtonStyle( + backgroundColor: MaterialStatePropertyAll( + HMSThemeColors.primaryDefault), + shape: + MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8)))), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: HMSTitleText( + text: "Grant Permissions", + textColor: HMSThemeColors.onPrimaryHighEmphasis), + ), + ), + ), + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/example/lib/preview/preview_store.dart b/packages/hms_room_kit/lib/src/preview/preview_store.dart similarity index 53% rename from example/lib/preview/preview_store.dart rename to packages/hms_room_kit/lib/src/preview/preview_store.dart index 2c5cecb73..5c36d5344 100644 --- a/example/lib/preview/preview_store.dart +++ b/packages/hms_room_kit/lib/src/preview/preview_store.dart @@ -1,23 +1,24 @@ -//Package imports +//Dart imports import 'dart:developer'; -import 'package:firebase_analytics/firebase_analytics.dart'; -import 'package:firebase_crashlytics/firebase_crashlytics.dart'; +///Package imports import 'package:flutter/cupertino.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/app_secrets.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/hms_sdk_interactor.dart'; -import 'package:hmssdk_flutter_example/service/constant.dart'; -import 'package:hmssdk_flutter_example/service/room_service.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/common/constants.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/hmssdk_interactor.dart'; +import 'package:hms_room_kit/src/service/app_secrets.dart'; +import 'package:hms_room_kit/src/service/room_service.dart'; class PreviewStore extends ChangeNotifier - implements HMSPreviewListener, HMSLogListener { + implements HMSPreviewListener, HMSLogListener, HMSUpdateListener { late HMSSDKInteractor hmsSDKInteractor; - PreviewStore({required HMSSDKInteractor hmsSDKInteractor}) { - this.hmsSDKInteractor = hmsSDKInteractor; - } + PreviewStore({required this.hmsSDKInteractor}); List localTracks = []; @@ -28,17 +29,23 @@ class PreviewStore extends ChangeNotifier bool isHLSLink = false; HMSRoom? room; - bool isVideoOn = true; + bool isVideoOn = false; - bool isAudioOn = true; + bool isAudioOn = false; bool isRecordingStarted = false; bool isHLSStreamingStarted = false; + bool isRoomJoinedAndHLSStarted = false; + + bool isRoomJoined = false; + + bool isMeetingJoined = false; + bool isRTMPStreamingStarted = false; - List peers = []; + List? peers; int? networkQuality; @@ -70,8 +77,12 @@ class PreviewStore extends ChangeNotifier this.room = room; for (HMSPeer each in room.peers!) { if (each.isLocal) { + HMSRoomLayout.resetLayout(each.role.name); + notifyListeners(); peer = each; - if (each.role.name.indexOf("hls-") == 0) { + if (HMSRoomLayout + .roleLayoutData?.screens?.conferencing?.hlsLiveStreaming != + null) { isHLSLink = true; } if (!each.role.publishSettings!.allowed.contains("video")) { @@ -93,7 +104,7 @@ class PreviewStore extends ChangeNotifier } } this.localTracks = videoTracks; - Utilities.saveStringData(key: "meetingLink", value: this.meetingUrl); + Utilities.saveStringData(key: "meetingLink", value: meetingUrl); getRoles(); getCurrentAudioDevice(); getAudioDevicesList(); @@ -102,39 +113,50 @@ class PreviewStore extends ChangeNotifier Future startPreview( {required String userName, required String meetingLink}) async { - List? _roomData = RoomService().getCode(meetingLink); - - //If the link is not valid then we might not get the code and whether the link is a - //PROD or QA so we return the error in this case - if (_roomData?.length == 0) { - return HMSException( - message: "Invalid meeting URL", - description: "Provided meeting URL is invalid", - action: "Please Check the meeting URL", - isTerminal: false); - } + String? tokenEndPoint; + String? initEndPoint; + + if (meetingLink.contains("app.100ms.live")) { + List? roomData = RoomService().getCode(meetingLink); + + //If the link is not valid then we might not get the code and whether the link is a + //PROD or QA so we return the error in this case + if (roomData == null || roomData.isEmpty) { + return HMSException( + message: "Invalid meeting URL", + description: "Provided meeting URL is invalid", + action: "Please Check the meeting URL", + isTerminal: false); + } - //qaTokenEndPoint is only required for 100ms internal testing - //It can be removed and should not affect the join method call - //For _endPoint just pass it as null - //the endPoint parameter in getAuthTokenByRoomCode can be passed as null - String? _endPoint = _roomData?[1] == "true" ? null : '$qaTokenEndPoint'; + //qaTokenEndPoint is only required for 100ms internal testing + //It can be removed and should not affect the join method call + //For _endPoint just pass it as null + //the endPoint parameter in getAuthTokenByRoomCode can be passed as null + tokenEndPoint = roomData[1] == "true" ? null : qaTokenEndPoint; + initEndPoint = roomData[1] == "true" ? "" : qaInitEndPoint; - Constant.meetingCode = _roomData?[0] ?? ''; + Constant.meetingCode = roomData[0] ?? ''; + } else { + Constant.meetingCode = meetingLink; + } //We use this to get the auth token from room code - dynamic _tokenData = await hmsSDKInteractor.getAuthTokenByRoomCode( - roomCode: Constant.meetingCode, endPoint: _endPoint); + dynamic tokenData = await hmsSDKInteractor.getAuthTokenByRoomCode( + roomCode: Constant.meetingCode, endPoint: tokenEndPoint); - if ((_tokenData is String?) && _tokenData != null) { + if ((tokenData is String?) && tokenData != null) { roomConfig = HMSConfig( - authToken: _tokenData, - userName: userName, - captureNetworkQualityInPreview: true, - // endPoint is only required by 100ms Team. Client developers should not use `endPoint` - //This is only for 100ms internal testing, endPoint can be safely removed from - //the HMSConfig for external usage - endPoint: _roomData?[1] == "true" ? "" : '$qaInitEndPoint', + authToken: tokenData, + userName: userName, + captureNetworkQualityInPreview: true, + // endPoint is only required by 100ms Team. Client developers should not use `endPoint` + //This is only for 100ms internal testing, endPoint can be safely removed from + //the HMSConfig for external usage + endPoint: initEndPoint); + await HMSRoomLayout.getRoomLayout( + hmsSDKInteractor: hmsSDKInteractor, + authToken: tokenData, ); hmsSDKInteractor.startHMSLogger( Constant.webRTCLogLevel, Constant.sdkLogLevel); @@ -143,7 +165,7 @@ class PreviewStore extends ChangeNotifier meetingUrl = meetingLink; return null; } - return _tokenData; + return tokenData; } @override @@ -151,10 +173,11 @@ class PreviewStore extends ChangeNotifier log("onPeerUpdate-> peer: ${peer.name} update: ${update.name}"); switch (update) { case HMSPeerUpdate.peerJoined: - peers.add(peer); + peers ??= []; + peers?.add(peer); break; case HMSPeerUpdate.peerLeft: - peers.remove(peer); + peers?.remove(peer); break; case HMSPeerUpdate.networkQualityUpdated: if (peer.isLocal) { @@ -163,8 +186,12 @@ class PreviewStore extends ChangeNotifier } break; case HMSPeerUpdate.roleUpdated: - int index = peers.indexOf(peer); - if (index != -1) peers[index] = peer; + if (peers != null) { + int index = peers!.indexOf(peer); + if (index != -1) { + peers![index] = peer; + } + } break; default: break; @@ -194,6 +221,11 @@ class PreviewStore extends ChangeNotifier break; case HMSRoomUpdate.hlsStreamingStateUpdated: isHLSStreamingStarted = room.hmshlsStreamingState?.running ?? false; + if (!isMeetingJoined && isRoomJoined) { + isRoomJoinedAndHLSStarted = + (room.hmshlsStreamingState?.running ?? false) && isRoomJoined; + isMeetingJoined = true; + } break; case HMSRoomUpdate.roomPeerCountUpdated: peerCount = room.peerCount; @@ -220,6 +252,12 @@ class PreviewStore extends ChangeNotifier notifyListeners(); } + void switchCamera() { + if (isVideoOn) { + hmsSDKInteractor.switchCamera(); + } + } + void addLogsListener(HMSLogListener hmsLogListener) { hmsSDKInteractor.addLogsListener(hmsLogListener); } @@ -229,12 +267,7 @@ class PreviewStore extends ChangeNotifier } @override - void onLogMessage({required HMSLogList hmsLogList}) { - log("preview_store: onLogMessage"); - FirebaseCrashlytics.instance.log(hmsLogList.toString()); - FirebaseAnalytics.instance.logEvent( - name: "SDK_Logs", parameters: {"data": hmsLogList.toString()}); - } + void onLogMessage({required HMSLogList hmsLogList}) {} void destroy() { hmsSDKInteractor.removePreviewListener(this); @@ -243,28 +276,31 @@ class PreviewStore extends ChangeNotifier void leave() { hmsSDKInteractor.leave(); + HMSThemeColors.resetLayoutColors(); + hmsSDKInteractor.toggleAlwaysScreenOn(); destroy(); } void toggleSpeaker() async { - if (!this.isRoomMute) { + if (!isRoomMute) { hmsSDKInteractor.muteRoomAudioLocally(); } else { hmsSDKInteractor.unMuteRoomAudioLocally(); } - this.isRoomMute = !this.isRoomMute; + isRoomMute = !isRoomMute; notifyListeners(); } void getRoles() async { roles = await hmsSDKInteractor.getRoles(); + roles.removeWhere((element) => element.name == "__internal_recorder"); notifyListeners(); } Future getAudioDevicesList() async { + var devices = await hmsSDKInteractor.getAudioDevicesList(); availableAudioOutputDevices.clear(); - availableAudioOutputDevices - .addAll(await hmsSDKInteractor.getAudioDevicesList()); + availableAudioOutputDevices.addAll(devices); notifyListeners(); } @@ -279,21 +315,65 @@ class PreviewStore extends ChangeNotifier notifyListeners(); } + void switchAudioOutputUsingiOSUI() { + hmsSDKInteractor.switchAudioOutputUsingiOSUI(); + } + @override void onAudioDeviceChanged( {HMSAudioDevice? currentAudioDevice, List? availableAudioDevice}) { if (currentAudioDevice != null && - this.currentAudioOutputDevice != currentAudioDevice) { + currentAudioOutputDevice != currentAudioDevice) { Utilities.showToast( "Output Device changed to ${currentAudioDevice.name}"); - this.currentAudioOutputDevice = currentAudioDevice; + currentAudioOutputDevice = currentAudioDevice; } if (availableAudioDevice != null) { - this.availableAudioOutputDevices.clear(); - this.availableAudioOutputDevices.addAll(availableAudioDevice); + availableAudioOutputDevices.clear(); + availableAudioOutputDevices.addAll(availableAudioDevice); } notifyListeners(); } + + void toggleIsRoomJoinedAndHLSStarted() { + isRoomJoinedAndHLSStarted = (!isRoomJoinedAndHLSStarted && isRoomJoined); + notifyListeners(); + } + + @override + void onChangeTrackStateRequest( + {required HMSTrackChangeRequest hmsTrackChangeRequest}) {} + + @override + void onJoin({required HMSRoom room}) {} + + @override + void onMessage({required HMSMessage message}) {} + + @override + void onReconnected() {} + + @override + void onReconnecting() {} + + @override + void onRemovedFromRoom( + {required HMSPeerRemovedFromPeer hmsPeerRemovedFromPeer}) {} + + @override + void onRoleChangeRequest({required HMSRoleChangeRequest roleChangeRequest}) {} + + @override + void onSessionStoreAvailable({HMSSessionStore? hmsSessionStore}) {} + + @override + void onTrackUpdate( + {required HMSTrack track, + required HMSTrackUpdate trackUpdate, + required HMSPeer peer}) {} + + @override + void onUpdateSpeakers({required List updateSpeakers}) {} } diff --git a/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_bottom_sheet.dart b/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_bottom_sheet.dart new file mode 100644 index 000000000..3062c2b82 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_bottom_sheet.dart @@ -0,0 +1,237 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_embedded_button.dart'; + +///[PreviewForRoleBottomSheet] is the bottom sheet that is shown when the user is invited to join the stage +///This bottom sheet shows the audio, video and camera buttons and the join now and decline buttons +///The user can join the stage by clicking on the join now button +///The user can decline the invitation by clicking on the decline button +/// +///This takes the following parameters: +///[meetingStore] - The meeting store that is used to access the meeting related data +///[roleChangeRequest] - The role change request that is used to accept the role change request +class PreviewForRoleBottomSheet extends StatefulWidget { + final MeetingStore meetingStore; + final HMSRoleChangeRequest? roleChangeRequest; + const PreviewForRoleBottomSheet( + {super.key, required this.meetingStore, required this.roleChangeRequest}); + + @override + State createState() => + _PreviewForRoleBottomSheetState(); +} + +class _PreviewForRoleBottomSheetState extends State { + @override + Widget build(BuildContext context) { + return Positioned( + bottom: 0, + child: Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), topRight: Radius.circular(16)), + color: HMSThemeColors.surfaceDim, + ), + width: MediaQuery.of(context).size.width, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 24), + child: Column( + children: [ + ///We show the title and the description of the bottom sheet + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + HMSTitleText( + text: "You’re invited to join the stage", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 20, + letterSpacing: 0.15, + ), + ], + ), + const SizedBox( + height: 8, + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + HMSTitleText( + text: "Setup your audio and video before joining", + textColor: HMSThemeColors.onSurfaceMediumEmphasis, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.25, + ), + ], + ), + const SizedBox( + height: 24, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + ///We show the audio, video and camera buttons + ///The audio button is shown only if the local peer is not null and the preview for role audio track is not null + if (widget.meetingStore.localPeer != null && + widget.meetingStore.previewForRoleAudioTrack != + null) + Selector( + selector: (_, meetingStore) => + meetingStore.isMicOn, + builder: (_, isMicOn, __) { + return HMSEmbeddedButton( + onTap: () async => + widget.meetingStore.toggleMicMuteState(), + isActive: isMicOn, + onColor: HMSThemeColors.surfaceDim, + child: SvgPicture.asset( + isMicOn + ? "packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "audio_mute_button", + ), + ); + }), + const SizedBox( + width: 16, + ), + + ///The video button is shown only if the local peer is not null and the preview for role video track is not null + if (widget.meetingStore.localPeer != null && + widget.meetingStore.previewForRoleVideoTrack != + null) + Selector( + selector: (_, meetingStore) => + meetingStore.isVideoOn, + builder: (_, isVideoOn, __) { + return HMSEmbeddedButton( + onTap: () async => widget.meetingStore + .toggleCameraMuteState(), + isActive: isVideoOn, + onColor: HMSThemeColors.surfaceDim, + child: SvgPicture.asset( + isVideoOn + ? "packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "video_mute_button", + ), + ); + }), + const SizedBox( + width: 16, + ), + + ///The switch camera button is shown only if the local peer is not null and the preview for role video track is not null + if (widget.meetingStore.localPeer != null && + widget.meetingStore.previewForRoleVideoTrack != + null) + Selector( + selector: (_, meetingStore) => + meetingStore.isVideoOn, + builder: (_, isVideoOn, __) { + return HMSEmbeddedButton( + onTap: () async => + widget.meetingStore.switchCamera(), + isActive: true, + onColor: HMSThemeColors.surfaceDim, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/camera.svg", + colorFilter: ColorFilter.mode( + isVideoOn + ? HMSThemeColors + .onSurfaceHighEmphasis + : HMSThemeColors + .onSurfaceLowEmphasis, + BlendMode.srcIn), + fit: BoxFit.scaleDown, + semanticsLabel: "switch_camera_button", + ), + ); + }), + ], + ), + ], + ), + const SizedBox( + height: 16, + ), + + ///We show the join now and decline buttons + ElevatedButton( + style: ButtonStyle( + shadowColor: MaterialStateProperty.all( + HMSThemeColors.surfaceDim), + backgroundColor: MaterialStateProperty.all( + HMSThemeColors.primaryDefault), + shape: + MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ))), + onPressed: () { + Navigator.pop(context); + if (widget.roleChangeRequest != null) { + context + .read() + .acceptChangeRole(widget.roleChangeRequest!); + } + }, + child: SizedBox( + height: 48, + child: Center( + child: HMSTitleText( + text: "Join Now", + textColor: HMSThemeColors.onPrimaryHighEmphasis), + ), + )), + const SizedBox( + height: 16, + ), + ElevatedButton( + style: ButtonStyle( + shadowColor: MaterialStateProperty.all( + HMSThemeColors.surfaceDim), + backgroundColor: MaterialStateProperty.all( + HMSThemeColors.surfaceDim), + shape: + MaterialStateProperty.all( + RoundedRectangleBorder( + side: BorderSide( + color: HMSThemeColors.secondaryDefault), + borderRadius: BorderRadius.circular(8.0), + ))), + onPressed: () { + Navigator.pop(context); + context.read().cancelPreview(); + }, + child: SizedBox( + height: 48, + child: Center( + child: HMSTitleText( + text: "Decline", + textColor: HMSThemeColors.onSurfaceHighEmphasis), + ), + )) + ], + ), + ), + )); + } +} diff --git a/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_header.dart b/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_header.dart new file mode 100644 index 000000000..5cf98a9e6 --- /dev/null +++ b/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_header.dart @@ -0,0 +1,153 @@ +///Package imports +import 'package:flutter/cupertino.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///[PreviewForRoleHeader] is the header of the PreviewForRole screen +///It shows the logo, the LIVE icon and the number of participants +class PreviewForRoleHeader extends StatefulWidget { + const PreviewForRoleHeader({super.key}); + + @override + State createState() => _PreviewForRoleHeaderState(); +} + +class _PreviewForRoleHeaderState extends State { + @override + Widget build(BuildContext context) { + return Positioned( + top: 16, + left: 24, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + ///We render the logo as set in the dashboard + HMSRoomLayout.roleLayoutData?.logo?.url == null + ? Container() + : HMSRoomLayout.roleLayoutData!.logo!.url!.contains("svg") + ? SvgPicture.network( + HMSRoomLayout.roleLayoutData!.logo!.url!) + : Image.network( + HMSRoomLayout.roleLayoutData!.logo!.url!, + height: 30, + width: 30, + ), + const SizedBox( + width: 12, + ), + + ///We render the LIVE icon based on the HLS streaming status + ///If the HLS streaming is started we show the LIVE icon + ///If the HLS streaming is not started we show nothing + Selector( + selector: (_, meetingStore) => + meetingStore.streamingType['hls'] ?? false, + builder: (_, isHLSStrted, __) { + return isHLSStrted + ? Container( + height: 24, + width: 43, + decoration: BoxDecoration( + color: HMSThemeColors.alertErrorDefault, + borderRadius: BorderRadius.circular(4)), + child: Center( + child: HMSTitleText( + text: "LIVE", + fontSize: 10, + lineHeight: 16, + letterSpacing: 1.5, + textColor: HMSThemeColors.alertErrorBrighter), + ), + ) + : Container(); + }), + const SizedBox( + width: 8, + ), + + ///We render the recording icon based on the recording status + ///If the recording is started we show the recording icon + ///If the recording is not started we show nothing + Selector>( + selector: (_, meetingStore) => Tuple3( + meetingStore.recordingType["browser"] ?? false, + meetingStore.recordingType["server"] ?? false, + meetingStore.recordingType["hls"] ?? false, + ), + builder: (_, data, __) { + return (data.item1 || data.item2 || data.item3) + ? SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/record.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, + BlendMode.srcIn), + ) + : Container(); + }), + const SizedBox( + width: 8, + ), + + ///This renders the number of peers + ///If the HLS streaming is started, we render the number of peers + ///else we render an empty Container + Selector>( + selector: (_, meetingStore) => Tuple2( + meetingStore.streamingType['hls'] ?? false, + meetingStore.peers.length), + builder: (_, data, __) { + return data.item1 + ? Container( + width: 59, + height: 24, + decoration: BoxDecoration( + border: Border.all( + color: HMSThemeColors.borderBright, + width: 1), + borderRadius: + const BorderRadius.all(Radius.circular(4)), + color: HMSThemeColors.backgroundDim + .withOpacity(0.64)), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/watching.svg", + width: 16, + height: 16, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "fl_watching", + ), + const SizedBox( + width: 4, + ), + HMSTitleText( + text: Utilities.formatNumber(data.item2), + fontSize: 10, + lineHeight: 10, + letterSpacing: 1.5, + textColor: + HMSThemeColors.onSurfaceHighEmphasis) + ], + )) + : Container(); + }) + ], + ), + ], + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/screen_controller.dart b/packages/hms_room_kit/lib/src/screen_controller.dart new file mode 100644 index 000000000..0ef05e5d7 --- /dev/null +++ b/packages/hms_room_kit/lib/src/screen_controller.dart @@ -0,0 +1,134 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/hmssdk_interactor.dart'; +import 'package:hms_room_kit/src/preview/preview_page.dart'; +import 'package:hms_room_kit/src/preview/preview_permissions.dart'; +import 'package:hms_room_kit/src/preview/preview_store.dart'; + +///[ScreenController] is the controller for the preview screen +///It takes following parameters: +///[roomCode] is the room code of the room to join +///[options] is the options for the prebuilt +///For more details checkout the [HMSPrebuiltOptions] class +class ScreenController extends StatefulWidget { + ///[roomCode] is the room code of the room to join + final String roomCode; + + ///[options] is the options for the prebuilt + ///For more details checkout the [HMSPrebuiltOptions] class + final HMSPrebuiltOptions? options; + + const ScreenController({super.key, required this.roomCode, this.options}); + @override + State createState() => _ScreenControllerState(); +} + +class _ScreenControllerState extends State { + bool isPermissionGranted = false; + late HMSSDKInteractor _hmsSDKInteractor; + late PreviewStore _previewStore; + bool isLoading = true; + + @override + void initState() { + super.initState(); + Constant.prebuiltOptions = widget.options; + Constant.meetingUrl = widget.roomCode; + _checkPermissions(); + } + + ///This function checks the permissions for the app + void _checkPermissions() async { + isPermissionGranted = await Utilities.checkPermissions(); + if (isPermissionGranted) { + _initPreview(); + } else { + setState(() { + isLoading = false; + }); + } + } + + ///This function initializes the preview + ///- Assign the _hmssdkInteractor an instance of HMSSDKInteractor + ///- Build the HMSSDK + ///- Initialize PreviewStore + ///- Start the preview + /// - If preview fails then we show the error dialog + /// - If successful we show the preview page + void _initPreview() async { + setState(() { + isLoading = true; + }); + _hmsSDKInteractor = HMSSDKInteractor( + iOSScreenshareConfig: widget.options?.iOSScreenshareConfig, + joinWithMutedAudio: AppDebugConfig.joinWithMutedAudio, + joinWithMutedVideo: AppDebugConfig.joinWithMutedVideo, + isSoftwareDecoderDisabled: AppDebugConfig.isSoftwareDecoderDisabled, + isAudioMixerDisabled: AppDebugConfig.isAudioMixerDisabled, + isPrebuilt: true); + await _hmsSDKInteractor.build(); + _previewStore = PreviewStore(hmsSDKInteractor: _hmsSDKInteractor); + HMSException? ans = await _previewStore.startPreview( + userName: "", meetingLink: widget.roomCode); + + ///If preview fails then we show the error dialog + ///with the error message and description + if (ans != null && mounted) { + showGeneralDialog( + context: context, + pageBuilder: (_, data, __) { + return UtilityComponents.showFailureError(ans, context, + () => Navigator.of(context).popUntil((route) => route.isFirst)); + }); + } else { + _hmsSDKInteractor.toggleAlwaysScreenOn(); + setState(() { + isLoading = false; + }); + Constant.debugMode = AppDebugConfig.isDebugMode; + } + } + + ///This function is called when the permissions are granted + ///This is called when user grants the permissions from PreviewPermissions widget + ///Here we initialize the preview if the permissions are granted + ///and set the [isPermissionGranted] to true + void _isPermissionGrantedCallback() { + _initPreview(); + setState(() { + isPermissionGranted = true; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: isLoading + ? Center( + child: CircularProgressIndicator( + strokeWidth: 2, + color: HMSThemeColors.primaryDefault, + ), + ) + : isPermissionGranted + ? ListenableProvider.value( + value: _previewStore, + child: PreviewPage( + meetingLink: widget.roomCode, + name: "", + options: widget.options, + )) + : PreviewPermissions( + roomCode: widget.roomCode, + options: widget.options, + callback: _isPermissionGrantedCallback), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/service/app_debug_config.dart b/packages/hms_room_kit/lib/src/service/app_debug_config.dart new file mode 100644 index 000000000..e386e7527 --- /dev/null +++ b/packages/hms_room_kit/lib/src/service/app_debug_config.dart @@ -0,0 +1,36 @@ +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +/// The [AppDebugConfig] class contains the debug configuration for the UI +class AppDebugConfig { + /* + Setting these values to defaults and can be toggled from the application + This will not be shipped with the ui_kit package and only used for internal testing + */ + static bool joinWithMutedAudio = false; + static bool joinWithMutedVideo = false; + static bool skipPreview = false; + static bool mirrorCamera = true; + static bool showStats = false; + static bool isSoftwareDecoderDisabled = true; + static bool isAudioMixerDisabled = true; + static bool isAutoSimulcast = true; + + static bool isDebugMode = false; + static bool isMockLayoutAPIEnabled = false; + + /// The [iOSScreenshareConfig] contains the configuration for the iOS screenshare + static HMSIOSScreenshareConfig? iOSScreenshareConfig; + + /// Resets the debug configuration to default values + static void resetToDefault() { + joinWithMutedAudio = true; + joinWithMutedVideo = true; + skipPreview = false; + mirrorCamera = true; + showStats = false; + isSoftwareDecoderDisabled = true; + isAudioMixerDisabled = true; + isAutoSimulcast = true; + isMockLayoutAPIEnabled = false; + } +} diff --git a/packages/hms_room_kit/lib/src/service/app_secrets.dart b/packages/hms_room_kit/lib/src/service/app_secrets.dart new file mode 100644 index 000000000..d0e991e56 --- /dev/null +++ b/packages/hms_room_kit/lib/src/service/app_secrets.dart @@ -0,0 +1,13 @@ +import 'dart:io'; + +import 'package:hms_room_kit/src/service/app_debug_config.dart'; + +String qaTokenEndPoint = + "https://auth-nonprod.100ms.live${Platform.isIOS ? "/" : ""}"; +String qaInitEndPoint = "https://qa-init.100ms.live/init"; + +String getLayoutAPIEndpoint() { + return AppDebugConfig.isMockLayoutAPIEnabled + ? "https://demo8271564.mockable.io" + : "https://api-nonprod.100ms.live"; +} diff --git a/example/lib/service/room_service.dart b/packages/hms_room_kit/lib/src/service/room_service.dart similarity index 87% rename from example/lib/service/room_service.dart rename to packages/hms_room_kit/lib/src/service/room_service.dart index 9d3924007..c7259b469 100644 --- a/example/lib/service/room_service.dart +++ b/packages/hms_room_kit/lib/src/service/room_service.dart @@ -1,3 +1,5 @@ +///This class is only for 100ms internal usage +/// and should not be edited class RoomService { /// /// Let's understand the subdomain and code from the sample URL @@ -23,10 +25,11 @@ class RoomService { codeAndDomain = isProd ? url.split(".app.100ms.live") : url.split(".qa-app.100ms.live"); code = codeAndDomain[1]; - if (code.contains("meeting")) + if (code.contains("meeting")) { code = code.split("/meeting/")[1]; - else + } else { code = code.split("/preview/")[1]; + } return [code, isProd ? "true" : "false"]; } } diff --git a/example/lib/common/app_dialogs/audio_device_change_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/audio_device_change_dialog.dart similarity index 80% rename from example/lib/common/app_dialogs/audio_device_change_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/audio_device_change_dialog.dart index 124af9e38..21d48d004 100644 --- a/example/lib/common/app_dialogs/audio_device_change_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/audio_device_change_dialog.dart @@ -5,28 +5,28 @@ import 'package:google_fonts/google_fonts.dart'; //Project imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; class AudioDeviceChangeDialog extends StatefulWidget { final HMSAudioDevice currentAudioDevice; final List audioDevicesList; final Function(HMSAudioDevice) changeAudioDevice; - AudioDeviceChangeDialog( - {required this.audioDevicesList, + const AudioDeviceChangeDialog( + {super.key, + required this.audioDevicesList, required this.changeAudioDevice, required this.currentAudioDevice}); @override - _AudioDeviceChangeDialogState createState() => - _AudioDeviceChangeDialogState(); + AudioDeviceChangeDialogState createState() => AudioDeviceChangeDialogState(); } -class _AudioDeviceChangeDialogState extends State { +class AudioDeviceChangeDialogState extends State { HMSAudioDevice? valueChoose; void _updateDropDownValue(dynamic newValue) { @@ -44,23 +44,24 @@ class _AudioDeviceChangeDialogState extends State { String message = "Route the audio output to"; return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only(left: 20, right: 20, bottom: 10), + actionsPadding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: + const EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Change Audio Device", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText(text: message, textColor: themeSubHeadingColor), + HMSSubtitleText(text: message, textColor: themeSubHeadingColor), ], ), content: Column( @@ -68,7 +69,7 @@ class _AudioDeviceChangeDialogState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -80,17 +81,17 @@ class _AudioDeviceChangeDialogState extends State { dropDownItems: [ ...widget.audioDevicesList .map((device) => DropdownMenuItem( - child: TitleText( + value: device, + child: HMSTitleText( text: device.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: device, )) .toList(), ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, @@ -109,7 +110,7 @@ class _AudioDeviceChangeDialogState extends State { MaterialStateProperty.all(themeBottomSheetColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), ))), diff --git a/example/lib/common/app_dialogs/audio_mode_select_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/audio_mode_select_dialog.dart similarity index 73% rename from example/lib/common/app_dialogs/audio_mode_select_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/audio_mode_select_dialog.dart index 1b7c3e972..17a2dca27 100644 --- a/example/lib/common/app_dialogs/audio_mode_select_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/audio_mode_select_dialog.dart @@ -5,58 +5,72 @@ import 'package:google_fonts/google_fonts.dart'; //Project imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +/// The [AudioModeSelectDialog] is a dialog that allows the user to select the current audio output route class AudioModeSelectDialog extends StatefulWidget { + /// The current audio mode final HMSAudioMode currentAudioMode; + + /// The callback that is called when the audio mode is changed final Function(HMSAudioMode) changeAudioMode; - AudioModeSelectDialog( - {required this.currentAudioMode, required this.changeAudioMode}); + /// Constructs a new instance of [AudioModeSelectDialog] + const AudioModeSelectDialog( + {super.key, + required this.currentAudioMode, + required this.changeAudioMode}); + /// State of the [AudioModeSelectDialog] @override - _AudioModeSelectDialogState createState() => _AudioModeSelectDialogState(); + AudioModeSelectDialogState createState() => AudioModeSelectDialogState(); } -class _AudioModeSelectDialogState extends State { +/// The state of the [AudioModeSelectDialog] +class AudioModeSelectDialogState extends State { + /// The current audio mode HMSAudioMode? valueChoose; + /// The callback that is called when the audio mode is changed void _updateDropDownValue(dynamic newValue) { valueChoose = newValue; } + /// Initializes the state of the [AudioModeSelectDialog] @override void initState() { super.initState(); valueChoose = widget.currentAudioMode; } + /// Builds the UI of the [AudioModeSelectDialog] @override Widget build(BuildContext context) { String message = "Select the audio mode"; return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only(left: 20, right: 20, bottom: 10), + actionsPadding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: + const EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Change Audio Mode", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText(text: message, textColor: themeSubHeadingColor), + HMSSubtitleText(text: message, textColor: themeSubHeadingColor), ], ), content: Column( @@ -64,7 +78,7 @@ class _AudioModeSelectDialogState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -76,17 +90,17 @@ class _AudioModeSelectDialogState extends State { dropDownItems: [ ...HMSAudioMode.values .map((audioMode) => DropdownMenuItem( - child: TitleText( + value: audioMode, + child: HMSTitleText( text: audioMode.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: audioMode, )) .toList(), ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, @@ -105,7 +119,7 @@ class _AudioModeSelectDialogState extends State { MaterialStateProperty.all(themeBottomSheetColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), ))), diff --git a/example/lib/common/app_dialogs/change_role_option_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/change_role_option_dialog.dart similarity index 84% rename from example/lib/common/app_dialogs/change_role_option_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/change_role_option_dialog.dart index ad0de977b..fd93a2af4 100644 --- a/example/lib/common/app_dialogs/change_role_option_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/change_role_option_dialog.dart @@ -2,15 +2,16 @@ import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:collection/collection.dart'; //Project imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:collection/collection.dart'; + +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; class ChangeRoleOptionDialog extends StatefulWidget { final String peerName; @@ -18,7 +19,8 @@ class ChangeRoleOptionDialog extends StatefulWidget { final Function(HMSRole, bool) changeRole; final bool force; final HMSPeer peer; - ChangeRoleOptionDialog({ + const ChangeRoleOptionDialog({ + super.key, required this.peerName, required this.roles, required this.changeRole, @@ -27,10 +29,10 @@ class ChangeRoleOptionDialog extends StatefulWidget { }); @override - _ChangeRoleOptionDialogState createState() => _ChangeRoleOptionDialogState(); + ChangeRoleOptionDialogState createState() => ChangeRoleOptionDialogState(); } -class _ChangeRoleOptionDialogState extends State { +class ChangeRoleOptionDialogState extends State { late bool askPermission; HMSRole? valueChoose; @@ -51,23 +53,24 @@ class _ChangeRoleOptionDialogState extends State { double width = MediaQuery.of(context).size.width; return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only(left: 20, right: 20, bottom: 10), + actionsPadding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: + const EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Change Role", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText(text: message, textColor: themeSubHeadingColor), + HMSSubtitleText(text: message, textColor: themeSubHeadingColor), ], ), content: Column( @@ -75,7 +78,7 @@ class _ChangeRoleOptionDialogState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -88,23 +91,23 @@ class _ChangeRoleOptionDialogState extends State { ...widget.roles .sortedBy((element) => element.priority.toString()) .map((role) => DropdownMenuItem( - child: TitleText( + value: role, + child: HMSTitleText( text: role.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: role, )) .toList(), ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, updateSelectedValue: _updateDropDownValue)), ), - SizedBox( + const SizedBox( height: 15, ), if (!widget.peer.isLocal) @@ -123,7 +126,7 @@ class _ChangeRoleOptionDialogState extends State { } }), ), - SizedBox( + const SizedBox( width: 10.5, ), SizedBox( @@ -152,7 +155,7 @@ class _ChangeRoleOptionDialogState extends State { MaterialStateProperty.all(themeBottomSheetColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), ))), diff --git a/example/lib/common/app_dialogs/change_simulcast_layer_option_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/change_simulcast_layer_option_dialog.dart similarity index 78% rename from example/lib/common/app_dialogs/change_simulcast_layer_option_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/change_simulcast_layer_option_dialog.dart index 7cfb6db6a..d256efe3c 100644 --- a/example/lib/common/app_dialogs/change_simulcast_layer_option_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/change_simulcast_layer_option_dialog.dart @@ -5,28 +5,29 @@ import 'package:google_fonts/google_fonts.dart'; //Project imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; import 'package:collection/collection.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; class ChangeSimulcastLayerOptionDialog extends StatefulWidget { final List layerDefinitions; final HMSSimulcastLayer selectedLayer; final HMSRemoteVideoTrack track; - ChangeSimulcastLayerOptionDialog( - {required this.layerDefinitions, + const ChangeSimulcastLayerOptionDialog( + {super.key, + required this.layerDefinitions, required this.selectedLayer, required this.track}); @override - _ChangeSimulcastLayerOptionDialogState createState() => - _ChangeSimulcastLayerOptionDialogState(); + ChangeSimulcastLayerOptionDialogState createState() => + ChangeSimulcastLayerOptionDialogState(); } -class _ChangeSimulcastLayerOptionDialogState +class ChangeSimulcastLayerOptionDialogState extends State { HMSSimulcastLayer? valueChoose; @@ -45,23 +46,24 @@ class _ChangeSimulcastLayerOptionDialogState String message = "Current Layer: ${widget.selectedLayer.name}"; return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only(left: 20, right: 20, bottom: 10), + actionsPadding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: + const EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Change Streaming Quality", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText(text: message, textColor: themeSubHeadingColor), + HMSSubtitleText(text: message, textColor: themeSubHeadingColor), ], ), content: Column( @@ -69,7 +71,7 @@ class _ChangeSimulcastLayerOptionDialogState mainAxisSize: MainAxisSize.min, children: [ Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -83,27 +85,24 @@ class _ChangeSimulcastLayerOptionDialogState .sortedBy( (element) => element.hmsSimulcastLayer.toString()) .map((layer) => DropdownMenuItem( - child: TitleText( - text: layer.hmsSimulcastLayer.name + - " " + - layer.hmsResolution.width.toStringAsFixed(0) + - " x " + - layer.hmsResolution.height.toStringAsFixed(0), + value: layer.hmsSimulcastLayer, + child: HMSTitleText( + text: + "${layer.hmsSimulcastLayer.name} ${layer.hmsResolution.width.toStringAsFixed(0)} x ${layer.hmsResolution.height.toStringAsFixed(0)}", textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: layer.hmsSimulcastLayer, )) .toList(), ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, updateSelectedValue: _updateDropDownValue)), ), - SizedBox( + const SizedBox( height: 15, ), ], @@ -119,7 +118,7 @@ class _ChangeSimulcastLayerOptionDialogState MaterialStateProperty.all(themeBottomSheetColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), ))), diff --git a/example/lib/common/app_dialogs/hls_aspect_ratio_option_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/hls_aspect_ratio_option_dialog.dart similarity index 68% rename from example/lib/common/app_dialogs/hls_aspect_ratio_option_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/hls_aspect_ratio_option_dialog.dart index 0ed5c4639..3532468f7 100644 --- a/example/lib/common/app_dialogs/hls_aspect_ratio_option_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/hls_aspect_ratio_option_dialog.dart @@ -2,29 +2,28 @@ import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; //Project imports -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; class AspectRatioOptionDialog extends StatefulWidget { final List availableAspectRatios; final MeetingStore meetingStore; - AspectRatioOptionDialog({ + const AspectRatioOptionDialog({ + super.key, required this.availableAspectRatios, required this.meetingStore, }); @override - _AspectRatioOptionDialogState createState() => - _AspectRatioOptionDialogState(); + AspectRatioOptionDialogState createState() => AspectRatioOptionDialogState(); } -class _AspectRatioOptionDialogState extends State { +class AspectRatioOptionDialogState extends State { String? valueChoose; void _updateDropDownValue(dynamic newValue) { @@ -42,23 +41,24 @@ class _AspectRatioOptionDialogState extends State { String message = "Select aspect ratio of HLS player"; return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only(left: 20, right: 20, bottom: 10), + actionsPadding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: + const EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Change Aspect Ratio", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText(text: message, textColor: themeSubHeadingColor), + HMSSubtitleText(text: message, textColor: themeSubHeadingColor), ], ), content: Column( @@ -66,7 +66,7 @@ class _AspectRatioOptionDialogState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -78,23 +78,23 @@ class _AspectRatioOptionDialogState extends State { dropDownItems: [ ...widget.availableAspectRatios .map((aspectRatio) => DropdownMenuItem( - child: TitleText( + value: aspectRatio, + child: HMSTitleText( text: aspectRatio, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: aspectRatio, )) .toList(), ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, updateSelectedValue: _updateDropDownValue)), ), - SizedBox( + const SizedBox( height: 15, ), ], @@ -110,7 +110,7 @@ class _AspectRatioOptionDialogState extends State { MaterialStateProperty.all(themeBottomSheetColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), ))), @@ -134,26 +134,7 @@ class _AspectRatioOptionDialogState extends State { side: BorderSide(width: 1, color: hmsdefaultColor), borderRadius: BorderRadius.circular(8.0), ))), - onPressed: () { - if (valueChoose == null) { - Utilities.showToast("Please select a aspect ratio"); - } else { - double ratio; - if (valueChoose!.contains("Default")) { - widget.meetingStore.isDefaultAspectRatioSelected = true; - ratio = Utilities.getHLSPlayerDefaultRatio( - MediaQuery.of(context).size); - } else { - widget.meetingStore.isDefaultAspectRatioSelected = false; - List number = valueChoose!.split(":"); - ratio = double.parse(number[0]) / double.parse(number[1]); - } - Utilities.showToast( - "Player aspect ratio changed to $valueChoose"); - widget.meetingStore.setAspectRatio(ratio); - Navigator.pop(context); - } - }, + onPressed: () {}, child: Padding( padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 10), diff --git a/example/lib/common/app_dialogs/local_peer_tile_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/local_peer_tile_dialog.dart similarity index 50% rename from example/lib/common/app_dialogs/local_peer_tile_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/local_peer_tile_dialog.dart index 2b0f5f81d..dc80f66c5 100644 --- a/example/lib/common/app_dialogs/local_peer_tile_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/local_peer_tile_dialog.dart @@ -3,42 +3,38 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/constants.dart'; class LocalPeerTileDialog extends StatefulWidget { final String peerName; final bool isAudioMode; final bool roles; final bool isVideoOn; - final bool? isCaptureSnapshot; final Function() toggleCamera; final Function() changeName; final Function() changeRole; - final Function()? captureSnapshot; - final Function()? localImageCapture; final Function()? toggleFlash; final Function() setOnSpotlight; final bool isSpotlightedPeer; const LocalPeerTileDialog( - {required this.isAudioMode, + {super.key, + required this.isAudioMode, this.isVideoOn = false, required this.toggleCamera, required this.peerName, required this.changeRole, required this.roles, required this.changeName, - this.captureSnapshot, - this.isCaptureSnapshot, - this.localImageCapture, this.toggleFlash, required this.setOnSpotlight, this.isSpotlightedPeer = false}); @override - _LocalPeerTileDialogState createState() => _LocalPeerTileDialogState(); + LocalPeerTileDialogState createState() => LocalPeerTileDialogState(); } -class _LocalPeerTileDialogState extends State { +class LocalPeerTileDialogState extends State { @override Widget build(BuildContext context) { return AlertDialog( @@ -47,36 +43,11 @@ class _LocalPeerTileDialogState extends State { style: GoogleFonts.inter(color: iconColor, fontWeight: FontWeight.bold), ), backgroundColor: themeBottomSheetColor, - content: Container( + content: SizedBox( width: double.infinity, child: Column( mainAxisSize: MainAxisSize.min, children: [ - if (!widget.isAudioMode && widget.isVideoOn) - GestureDetector( - onTap: () { - Navigator.pop(context); - widget.toggleCamera(); - }, - child: Padding( - padding: const EdgeInsets.only(bottom: 20.0), - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/camera.svg", - color: iconColor, - ), - SizedBox( - width: 16, - ), - Text( - "Toggle Camera", - style: GoogleFonts.inter(color: iconColor), - ) - ], - ), - ), - ), GestureDetector( onTap: () { Navigator.pop(context); @@ -87,10 +58,10 @@ class _LocalPeerTileDialogState extends State { child: Row( children: [ SvgPicture.asset( - "assets/icons/pencil.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/pencil.svg", + colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( @@ -111,10 +82,11 @@ class _LocalPeerTileDialogState extends State { child: Row( children: [ SvgPicture.asset( - "assets/icons/role_change.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/role_change.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( @@ -125,7 +97,7 @@ class _LocalPeerTileDialogState extends State { ), ), ), - if (widget.isVideoOn) + if (widget.isVideoOn && Constant.debugMode) GestureDetector( onTap: () { Navigator.pop(context); @@ -135,8 +107,8 @@ class _LocalPeerTileDialogState extends State { padding: const EdgeInsets.only(bottom: 20.0), child: Row( children: [ - Icon(Icons.flashlight_on_outlined), - SizedBox( + const Icon(Icons.flashlight_on_outlined), + const SizedBox( width: 16, ), Text( @@ -147,82 +119,34 @@ class _LocalPeerTileDialogState extends State { ), ), ), - if (widget.isVideoOn && - widget.isCaptureSnapshot != null && - widget.isCaptureSnapshot!) + if (Constant.debugMode) GestureDetector( onTap: () { - widget.captureSnapshot!(); - }, - child: Padding( - padding: const EdgeInsets.only(bottom: 20.0), - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/snapshot.svg", - color: iconColor, - ), - SizedBox( - width: 16, - ), - Text( - "Capture Snapshot", - style: GoogleFonts.inter(color: iconColor), - ) - ], - ), - ), - ), - if (widget.isVideoOn) - GestureDetector( - onTap: () { - widget.localImageCapture!(); + Navigator.pop(context); + widget.setOnSpotlight(); }, child: Padding( padding: const EdgeInsets.only(bottom: 20.0), child: Row( children: [ SvgPicture.asset( - "assets/icons/local_capture.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/spotlight.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( - "Local Image Capture", + widget.isSpotlightedPeer + ? "Remove From Spotlight" + : "Spotlight Tile", style: GoogleFonts.inter(color: iconColor), ) ], ), ), ), - GestureDetector( - onTap: () { - Navigator.pop(context); - widget.setOnSpotlight(); - }, - child: Padding( - padding: const EdgeInsets.only(bottom: 20.0), - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/spotlight.svg", - color: iconColor, - ), - SizedBox( - width: 16, - ), - Text( - widget.isSpotlightedPeer - ? "Remove From Spotlight" - : "Spotlight Tile", - style: GoogleFonts.inter(color: iconColor), - ) - ], - ), - ), - ), ], ), ), diff --git a/example/lib/common/app_dialogs/remote_peer_tile_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/remote_peer_tile_dialog.dart similarity index 61% rename from example/lib/common/app_dialogs/remote_peer_tile_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/remote_peer_tile_dialog.dart index e6b92744a..bd1be8966 100644 --- a/example/lib/common/app_dialogs/remote_peer_tile_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/remote_peer_tile_dialog.dart @@ -2,7 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/constants.dart'; class RemotePeerTileDialog extends StatefulWidget { final String peerName; @@ -14,7 +15,6 @@ class RemotePeerTileDialog extends StatefulWidget { final bool roles; final bool simulcast; final bool pinTile; - final bool? isCaptureSnapshot; final bool isSpotlightedPeer; final Function(bool, bool) changeVideoTrack; final Function(bool, bool) changeAudioTrack; @@ -22,10 +22,10 @@ class RemotePeerTileDialog extends StatefulWidget { final Function() changeRole; final Function() changeLayer; final Function() changePinTileStatus; - final Function()? captureSnapshot; final Function() setOnSpotlight; const RemotePeerTileDialog( - {required this.isVideoMuted, + {super.key, + required this.isVideoMuted, required this.isAudioMuted, required this.changeVideoTrack, required this.changeAudioTrack, @@ -40,16 +40,14 @@ class RemotePeerTileDialog extends StatefulWidget { required this.changeLayer, required this.pinTile, required this.changePinTileStatus, - this.isCaptureSnapshot, - this.captureSnapshot, required this.setOnSpotlight, this.isSpotlightedPeer = false}); @override - _RemotePeerTileDialogState createState() => _RemotePeerTileDialogState(); + RemotePeerTileDialogState createState() => RemotePeerTileDialogState(); } -class _RemotePeerTileDialogState extends State { +class RemotePeerTileDialogState extends State { @override Widget build(BuildContext context) { return AlertDialog( @@ -58,7 +56,7 @@ class _RemotePeerTileDialogState extends State { widget.peerName, style: GoogleFonts.inter(color: iconColor, fontWeight: FontWeight.bold), ), - content: Container( + content: SizedBox( width: double.infinity, child: Column( mainAxisSize: MainAxisSize.min, @@ -66,7 +64,7 @@ class _RemotePeerTileDialogState extends State { if ((widget.isVideoMuted && widget.unMute) || (!widget.isVideoMuted && widget.mute)) Container( - padding: EdgeInsets.only(bottom: 20.0), + padding: const EdgeInsets.only(bottom: 20.0), child: GestureDetector( onTap: () { widget.changeVideoTrack(!widget.isVideoMuted, true); @@ -75,15 +73,17 @@ class _RemotePeerTileDialogState extends State { children: [ if (widget.isVideoMuted) SvgPicture.asset( - "assets/icons/cam_state_on.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ) else SvgPicture.asset( - "assets/icons/cam_state_off.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( @@ -94,7 +94,7 @@ class _RemotePeerTileDialogState extends State { ), ), ), - SizedBox( + const SizedBox( width: 20, ), if ((widget.isAudioMuted && widget.unMute) || @@ -109,15 +109,17 @@ class _RemotePeerTileDialogState extends State { children: [ if (widget.isAudioMuted) SvgPicture.asset( - "assets/icons/mic_state_on.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ) else SvgPicture.asset( - "assets/icons/mic_state_off.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( @@ -128,7 +130,7 @@ class _RemotePeerTileDialogState extends State { ), ), ), - SizedBox( + const SizedBox( width: 20, ), if (widget.removeOthers) @@ -141,10 +143,11 @@ class _RemotePeerTileDialogState extends State { child: Row( children: [ SvgPicture.asset( - "assets/icons/peer_remove.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/peer_remove.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( @@ -165,10 +168,11 @@ class _RemotePeerTileDialogState extends State { child: Row( children: [ SvgPicture.asset( - "assets/icons/role_change.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/role_change.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( @@ -179,100 +183,85 @@ class _RemotePeerTileDialogState extends State { ), ), ), - if (widget.simulcast) + if (Constant.debugMode) + if (widget.simulcast) + Padding( + padding: const EdgeInsets.only(bottom: 20.0), + child: GestureDetector( + onTap: () { + widget.changeLayer(); + }, + child: Row( + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/layers.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), + ), + const SizedBox( + width: 16, + ), + Text( + "Streaming Quality", + style: GoogleFonts.inter(color: iconColor), + ) + ], + ), + ), + ), + if (Constant.debugMode) Padding( padding: const EdgeInsets.only(bottom: 20.0), child: GestureDetector( onTap: () { - widget.changeLayer(); + widget.changePinTileStatus(); }, child: Row( children: [ SvgPicture.asset( - "assets/icons/layers.svg", - color: iconColor, + "packages/hms_room_kit/lib/src/assets/icons/pin.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( width: 16, ), Text( - "Streaming Quality", + widget.pinTile ? "Unpin Tile" : "Pin Tile", style: GoogleFonts.inter(color: iconColor), ) ], ), ), ), - if (widget.isCaptureSnapshot != null && widget.isCaptureSnapshot!) - Padding( - padding: const EdgeInsets.only(bottom: 20.0), - child: GestureDetector( - onTap: () { - widget.captureSnapshot!(); - }, + if (Constant.debugMode) + GestureDetector( + onTap: () { + Navigator.pop(context); + widget.setOnSpotlight(); + }, + child: Padding( + padding: const EdgeInsets.only(bottom: 20.0), child: Row( children: [ - Icon(Icons.camera_alt), - SizedBox( + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/spotlight.svg", + colorFilter: + ColorFilter.mode(iconColor, BlendMode.srcIn), + ), + const SizedBox( width: 16, ), Text( - "Capture Snapshot", + widget.isSpotlightedPeer + ? "Remove From Spotlight" + : "Spotlight Tile", style: GoogleFonts.inter(color: iconColor), ) ], ), ), ), - Padding( - padding: const EdgeInsets.only(bottom: 20.0), - child: GestureDetector( - onTap: () { - widget.changePinTileStatus(); - }, - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/pin.svg", - color: iconColor, - ), - SizedBox( - width: 16, - ), - Text( - widget.pinTile ? "Unpin Tile" : "Pin Tile", - style: GoogleFonts.inter(color: iconColor), - ) - ], - ), - ), - ), - GestureDetector( - onTap: () { - Navigator.pop(context); - widget.setOnSpotlight(); - }, - child: Padding( - padding: const EdgeInsets.only(bottom: 20.0), - child: Row( - children: [ - SvgPicture.asset( - "assets/icons/spotlight.svg", - color: iconColor, - ), - SizedBox( - width: 16, - ), - Text( - widget.isSpotlightedPeer - ? "Remove From Spotlight" - : "Spotlight Tile", - style: GoogleFonts.inter(color: iconColor), - ) - ], - ), - ), - ), ], ), ), diff --git a/example/lib/common/app_dialogs/role_change_request_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/role_change_request_dialog.dart similarity index 67% rename from example/lib/common/app_dialogs/role_change_request_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/role_change_request_dialog.dart index d1ed51f6e..f4837f9d8 100644 --- a/example/lib/common/app_dialogs/role_change_request_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/role_change_request_dialog.dart @@ -2,49 +2,42 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; // Project imports -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; class RoleChangeRequestDialog extends StatefulWidget { final HMSRoleChangeRequest roleChangeRequest; final MeetingStore meetingStore; const RoleChangeRequestDialog( - {required this.roleChangeRequest, required this.meetingStore}) - : super(); + {super.key, required this.roleChangeRequest, required this.meetingStore}); @override - _RoleChangeRequestDialogState createState() => - _RoleChangeRequestDialogState(); + RoleChangeRequestDialogState createState() => RoleChangeRequestDialogState(); } -class _RoleChangeRequestDialogState extends State { +class RoleChangeRequestDialogState extends State { @override Widget build(BuildContext context) { - String message = "‘" + - (widget.roleChangeRequest.suggestedBy?.name ?? "Anonymus") + - "’ requested to change your role to ‘" + - widget.roleChangeRequest.suggestedRole.name + - "’"; + String message = + "‘${widget.roleChangeRequest.suggestedBy?.name ?? "Anonymus"}’ requested to change your role to ‘${widget.roleChangeRequest.suggestedRole.name}’"; return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - actionsPadding: EdgeInsets.only(left: 10, right: 10, bottom: 10), + insetPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + actionsPadding: const EdgeInsets.only(left: 10, right: 10, bottom: 10), backgroundColor: themeBottomSheetColor, - content: Container( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - message, - style: GoogleFonts.inter( - color: iconColor, - ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + message, + style: GoogleFonts.inter( + color: iconColor, ), - ], - ), + ), + ], ), actions: [ Row( @@ -63,7 +56,8 @@ class _RoleChangeRequestDialogState extends State { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 30.0, vertical: 12), - child: TitleText(text: 'Reject', textColor: themeDefaultColor), + child: + HMSTitleText(text: 'Reject', textColor: themeDefaultColor), ), onPressed: () { Navigator.pop(context); @@ -81,7 +75,7 @@ class _RoleChangeRequestDialogState extends State { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 30.0, vertical: 12), - child: TitleText( + child: HMSTitleText( text: 'Accept', textColor: themeDefaultColor, ), diff --git a/example/lib/common/app_dialogs/stats_for_nerds.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/stats_for_nerds.dart similarity index 90% rename from example/lib/common/app_dialogs/stats_for_nerds.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/stats_for_nerds.dart index 9f85fd7b7..485664d66 100644 --- a/example/lib/common/app_dialogs/stats_for_nerds.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/stats_for_nerds.dart @@ -2,17 +2,18 @@ import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; class StatsForNerds extends StatefulWidget { final List peerTrackNode; - StatsForNerds({Key? key, required this.peerTrackNode}) : super(key: key); + const StatsForNerds({Key? key, required this.peerTrackNode}) + : super(key: key); @override State createState() => _StatsForNerdsState(); @@ -62,20 +63,21 @@ class _StatsForNerdsState extends State { Widget build(BuildContext context) { return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only(left: 20, right: 20, bottom: 10), + actionsPadding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: + const EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Stats for Nerds", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), Row( @@ -88,7 +90,7 @@ class _StatsForNerdsState extends State { }); context.read().changeStatsVisible(); }), - SubtitleText( + HMSSubtitleText( text: "Show Stats on Tiles", fontSize: 15, letterSpacing: 0.15, @@ -96,10 +98,10 @@ class _StatsForNerdsState extends State { ), ], ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText( + HMSSubtitleText( text: "Stats For", fontSize: 15, letterSpacing: 0.15, @@ -115,7 +117,7 @@ class _StatsForNerdsState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -129,33 +131,33 @@ class _StatsForNerdsState extends State { dropDownItems: [ ...widget.peerTrackNode .map((peerNode) => DropdownMenuItem( - child: TitleText( + value: peerNode, + child: HMSTitleText( text: peerNode.peer.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: peerNode, )) .toList(), ], - dropdownHint: TitleText( + dropdownHint: HMSTitleText( text: "Select Peer", textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, updateSelectedValue: _updateDropDownValue)), ), - SizedBox( + const SizedBox( height: 10, ), if (valueChoose != null) Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -170,39 +172,39 @@ class _StatsForNerdsState extends State { if (valueChoose!.stats?.hmsLocalAudioStats != null || valueChoose!.stats?.hmsRemoteAudioStats != null) DropdownMenuItem( - child: TitleText( + value: "Regular Audio", + child: HMSTitleText( text: "Regular Audio", textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: "Regular Audio", ), if (valueChoose!.stats?.hmsRemoteVideoStats != null) DropdownMenuItem( - child: TitleText( + value: "Regular Video", + child: HMSTitleText( text: "Regular Video", textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: "Regular Video", ), ...?valueChoose!.stats?.hmsLocalVideoStats ?.map( (localVideoStats) => DropdownMenuItem( - child: TitleText( + value: + "Regular Video - ${HMSSimulcastLayerValue.getValueFromHMSSimulcastLayer(localVideoStats.hmsLayer)}", + child: HMSTitleText( text: "Regular Video - ${HMSSimulcastLayerValue.getValueFromHMSSimulcastLayer(localVideoStats.hmsLayer)}", textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: - "Regular Video - ${HMSSimulcastLayerValue.getValueFromHMSSimulcastLayer(localVideoStats.hmsLayer)}", ), ) .toList() ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: statsType, @@ -210,7 +212,7 @@ class _StatsForNerdsState extends State { ), ], ), - SizedBox( + const SizedBox( height: 10, ), if (valueChoose != null && statsType != null) @@ -228,7 +230,7 @@ class _StatsForNerdsState extends State { MaterialStateProperty.all(themeBottomSheetColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), ))), @@ -255,12 +257,12 @@ class _StatsForNerdsState extends State { class StatsUI extends StatelessWidget { final PeerTrackNode peerNode; final String statsType; - StatsUI({Key? key, required this.peerNode, required this.statsType}) + const StatsUI({Key? key, required this.peerNode, required this.statsType}) : super(key: key); @override Widget build(BuildContext context) { - if (statsType.toLowerCase().contains("audio") && peerNode.peer.isLocal) + if (statsType.toLowerCase().contains("audio") && peerNode.peer.isLocal) { return Selector( selector: (_, peerTrackNode) => peerTrackNode.stats?.hmsLocalAudioStats, @@ -271,7 +273,7 @@ class StatsUI extends StatelessWidget { alignment: WrapAlignment.center, children: [ Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -290,7 +292,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -310,7 +312,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -332,7 +334,8 @@ class StatsUI extends StatelessWidget { ], ); }); - if (statsType.toLowerCase().contains("audio") && !peerNode.peer.isLocal) + } + if (statsType.toLowerCase().contains("audio") && !peerNode.peer.isLocal) { return Selector( selector: (_, peerTrackNode) => peerTrackNode.stats?.hmsRemoteAudioStats, @@ -343,7 +346,7 @@ class StatsUI extends StatelessWidget { alignment: WrapAlignment.center, children: [ Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -362,7 +365,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -382,7 +385,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -401,7 +404,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -421,7 +424,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -443,7 +446,8 @@ class StatsUI extends StatelessWidget { ], ); }); - if (statsType.toLowerCase().contains("video") && peerNode.peer.isLocal) + } + if (statsType.toLowerCase().contains("video") && peerNode.peer.isLocal) { return Selector( selector: (_, peerTrackNode) => peerTrackNode .stats?.hmsLocalVideoStats @@ -457,7 +461,7 @@ class StatsUI extends StatelessWidget { alignment: WrapAlignment.center, children: [ Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -476,7 +480,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -496,7 +500,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -516,7 +520,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -536,7 +540,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -558,7 +562,8 @@ class StatsUI extends StatelessWidget { ], ); }); - if (statsType.toLowerCase().contains("video") && !peerNode.peer.isLocal) + } + if (statsType.toLowerCase().contains("video") && !peerNode.peer.isLocal) { return Selector( selector: (_, peerTrackNode) => peerTrackNode.stats?.hmsRemoteVideoStats, @@ -569,7 +574,7 @@ class StatsUI extends StatelessWidget { alignment: WrapAlignment.center, children: [ Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -588,7 +593,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -608,7 +613,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -627,7 +632,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -647,7 +652,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -667,7 +672,7 @@ class StatsUI extends StatelessWidget { ), ), Container( - padding: EdgeInsets.all(5), + padding: const EdgeInsets.all(5), decoration: BoxDecoration( color: Colors.blueGrey, borderRadius: BorderRadius.circular(10)), @@ -689,9 +694,8 @@ class StatsUI extends StatelessWidget { ], ); }); + } - return Container( - child: Text("Stats not available"), - ); + return const Text("Stats not available"); } } diff --git a/example/lib/common/app_dialogs/track_change_request_dialog.dart b/packages/hms_room_kit/lib/src/widgets/app_dialogs/track_change_request_dialog.dart similarity index 64% rename from example/lib/common/app_dialogs/track_change_request_dialog.dart rename to packages/hms_room_kit/lib/src/widgets/app_dialogs/track_change_request_dialog.dart index 52151603d..5e413ab5d 100644 --- a/example/lib/common/app_dialogs/track_change_request_dialog.dart +++ b/packages/hms_room_kit/lib/src/widgets/app_dialogs/track_change_request_dialog.dart @@ -4,56 +4,46 @@ import 'package:google_fonts/google_fonts.dart'; // Project imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_mode.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/enums/meeting_mode.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; class TrackChangeRequestDialog extends StatefulWidget { final HMSTrackChangeRequest trackChangeRequest; final MeetingStore meetingStore; final bool isAudioModeOn; const TrackChangeRequestDialog( - {required this.trackChangeRequest, + {super.key, + required this.trackChangeRequest, required this.meetingStore, - this.isAudioModeOn = false}) - : super(); + this.isAudioModeOn = false}); @override - _TrackChangeRequestDialogState createState() => - _TrackChangeRequestDialogState(); + TrackChangeRequestDialogState createState() => + TrackChangeRequestDialogState(); } -class _TrackChangeRequestDialogState extends State { +class TrackChangeRequestDialogState extends State { @override Widget build(BuildContext context) { - String message = "‘" + - widget.trackChangeRequest.requestBy.name.toString() + - "’ requested to " + - ((widget.trackChangeRequest.mute) ? "mute" : "unmute") + - " your ‘" + - ((widget.trackChangeRequest.track.kind == - HMSTrackKind.kHMSTrackKindAudio) - ? "Audio’" - : "Video’") + - ((widget.isAudioModeOn) ? " and switch to video view" : ""); + String message = + "‘${widget.trackChangeRequest.requestBy.name}’ requested to ${(widget.trackChangeRequest.mute) ? "mute" : "unmute"} your ‘${(widget.trackChangeRequest.track.kind == HMSTrackKind.kHMSTrackKindAudio) ? "Audio’" : "Video’"}${(widget.isAudioModeOn) ? " and switch to video view" : ""}"; return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - insetPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), - actionsPadding: EdgeInsets.only(left: 10, right: 10, bottom: 10), + insetPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + actionsPadding: const EdgeInsets.only(left: 10, right: 10, bottom: 10), backgroundColor: themeBottomSheetColor, - content: Container( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - message, - style: GoogleFonts.inter( - color: iconColor, - ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + message, + style: GoogleFonts.inter( + color: iconColor, ), - ], - ), + ), + ], ), actions: [ Row( @@ -72,7 +62,8 @@ class _TrackChangeRequestDialogState extends State { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 30.0, vertical: 12), - child: TitleText(text: 'Reject', textColor: themeDefaultColor), + child: + HMSTitleText(text: 'Reject', textColor: themeDefaultColor), ), onPressed: () { Navigator.pop(context); @@ -90,7 +81,7 @@ class _TrackChangeRequestDialogState extends State { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 30.0, vertical: 12), - child: TitleText( + child: HMSTitleText( text: 'Accept', textColor: themeDefaultColor, ), @@ -99,7 +90,8 @@ class _TrackChangeRequestDialogState extends State { if (widget.trackChangeRequest.track.kind == HMSTrackKind.kHMSTrackKindVideo && widget.isAudioModeOn) { - widget.meetingStore.setMode(MeetingMode.ActiveSpeaker); + widget.meetingStore + .setMode(MeetingMode.activeSpeakerWithInset); } widget.meetingStore.changeTracks(widget.trackChangeRequest); Navigator.pop(context); diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart new file mode 100644 index 000000000..c93b522aa --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart @@ -0,0 +1,306 @@ +///Package imports +import 'package:badges/badges.dart' as badge; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/end_service_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/overlay_participants_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/tab_widgets/chat_participants_tab_bar.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/more_option_item.dart'; +import 'package:hms_room_kit/src/common/constants.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///This renders the app utilities bottom sheet for webRTC or broadcaster +///It contains the participants, screen share, brb, raise hand and recording +///options +class AppUtilitiesBottomSheet extends StatefulWidget { + const AppUtilitiesBottomSheet({Key? key}) : super(key: key); + @override + State createState() => + _AppUtilitiesBottomSheetState(); +} + +class _AppUtilitiesBottomSheetState extends State { + @override + Widget build(BuildContext context) { + MeetingStore meetingStore = context.read(); + return Padding( + padding: EdgeInsets.only(top: 16.0, left: MediaQuery.of(context).size.width * 0.04, right: MediaQuery.of(context).size.width * 0.04,bottom: 24), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ///This renders the title and close button + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + HMSTitleText( + text: "Options", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: const [ + HMSCrossButton(), + ], + ) + ], + ), + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 16), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + + ///This renders the participants, screen share, brb, raise hand and recording options + Wrap( + runSpacing: 24, + spacing: MediaQuery.of(context).size.width * 0.005, + children: [ + ///This renders the participants option if participants list is enabled + if(HMSRoomLayout.isParticipantsListEnabled) + MoreOptionItem( + onTap: () async { + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: meetingStore, + child: (HMSRoomLayout.chatData == null || (HMSRoomLayout.chatData?.isOverlay ?? true)) + ? const OverlayParticipantsBottomSheet() + : const ChatParticipantsTabBar( + tabIndex: 1, + )), + ); + }, + optionIcon: badge.Badge( + badgeStyle: badge.BadgeStyle( + badgeColor: HMSThemeColors.surfaceDefault, + padding: EdgeInsets.all( + context.read().peers.length < 1000 + ? 5 + : 8)), + badgeContent: HMSTitleText( + text: context + .read() + .peers + .length + .toString(), + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 10, + lineHeight: 16, + letterSpacing: 1.5, + ), + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: + (context.read().peers.length < + 1000 + ? 5 + : 10)), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/participants.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + ), + ), + optionText: "Participants"), + + ///This renders the screen share option + MoreOptionItem( + onTap: () async { + Navigator.pop(context); + if (meetingStore.isScreenShareOn) { + meetingStore.stopScreenShare(); + } else { + meetingStore.startScreenShare(); + } + }, + isActive: meetingStore.isScreenShareOn, + optionIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + optionText: meetingStore.isScreenShareOn + ? "Sharing Screen" + : "Share Screen", + ), + + ///This renders the brb option + if(HMSRoomLayout.isBRBEnabled) + MoreOptionItem( + onTap: () async { + meetingStore.changeMetadataBRB(); + Navigator.pop(context); + }, + isActive: meetingStore.isBRB, + optionIcon: Padding( + padding: const EdgeInsets.only(top:8.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/brb.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + ), + optionText: + meetingStore.isBRB ? "I'm Back" : "Be Right Back") + + ///This renders the raise hand option + ,MoreOptionItem( + onTap: () async { + context.read().changeMetadata(); + Navigator.pop(context); + }, + isActive: meetingStore.isRaisedHand, + optionIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + optionText: meetingStore.isRaisedHand + ? "Lower Hand" + : "Raise Hand"), + + ///This renders the recording option + ///This option is only rendered if the local peer has the permission to + ///start/stop browser recording + /// + ///The recording permission is checked using the role of the local peer + if (meetingStore + .localPeer?.role.permissions.browserRecording ?? + false) + ((meetingStore.streamingType["hls"] ?? false) || + (meetingStore.streamingType["rtmp"] ?? false)) + ? MoreOptionItem( + onTap: () {}, + isActive: false, + optionIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/record.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceLowEmphasis, + BlendMode.srcIn), + ), + optionText: "Start Recording", + optionTextColor: + HMSThemeColors.onSurfaceLowEmphasis, + ) + : MoreOptionItem( + onTap: () async { + bool isRecordingRunning = + ((meetingStore.recordingType["hls"] ?? + false) || + (meetingStore.recordingType["browser"] ?? + false) || + (meetingStore.recordingType["server"] ?? + false)); + if (isRecordingRunning) { + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => EndServiceBottomSheet( + onButtonPressed: () => + meetingStore.stopRtmpAndRecording(), + title: HMSTitleText( + text: "Stop Recording", + textColor: + HMSThemeColors.alertErrorDefault, + letterSpacing: 0.15, + fontSize: 20, + ), + bottomSheetTitleIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/alert.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, + BlendMode.srcIn), + ), + subTitle: HMSSubheadingText( + text: + "Are you sure you want to stop recording? You\n can’t undo this action.", + maxLines: 2, + textColor: HMSThemeColors + .onSurfaceMediumEmphasis, + ), + buttonText: "Stop Recording", + ), + ); + } else { + Navigator.pop(context); + meetingStore.startRtmpOrRecording( + meetingUrl: Constant.streamingUrl, + toRecord: true, + rtmpUrls: null); + } + }, + isActive: + ((meetingStore.recordingType["hls"] ?? false) || + (meetingStore.recordingType["browser"] ?? + false) || + (meetingStore.recordingType["server"] ?? + false)), + optionIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/record.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + optionText: ((meetingStore.recordingType["hls"] ?? + false) || + (meetingStore.recordingType["browser"] ?? + false) || + (meetingStore.recordingType["server"] ?? + false)) + ? "Stop Recording" + : "Start Recording", + ) + ], + ), + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/audio_settings_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/audio_settings_bottom_sheet.dart new file mode 100644 index 000000000..c9291beae --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/audio_settings_bottom_sheet.dart @@ -0,0 +1,226 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; + +///This renders the audio device selection bottom sheet only on android +///It contains the list of available audio devices +class AudioSettingsBottomSheet extends StatefulWidget { + const AudioSettingsBottomSheet({ + Key? key, + }) : super(key: key); + @override + State createState() => + _AudioSettingsBottomSheetState(); +} + +class _AudioSettingsBottomSheetState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return DraggableScrollableSheet( + maxChildSize: + (context.read().availableAudioOutputDevices.length + + 1.2) * + 0.1, + minChildSize: + (context.read().availableAudioOutputDevices.length + + 1) * + 0.1, + initialChildSize: + (context.read().availableAudioOutputDevices.length + + 1) * + 0.1, + builder: (context, ScrollController scrollController) { + return Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), topRight: Radius.circular(16)), + color: HMSThemeColors.backgroundDefault, + ), + + ///We are using the selector to rebuild the widget only when the available audio devices list changes + ///or the current audio device changes + child: Selector, int, HMSAudioDevice?>>( + selector: (_, meetingStore) => Tuple3( + meetingStore.availableAudioOutputDevices, + meetingStore.availableAudioOutputDevices.length, + meetingStore.currentAudioOutputDevice), + builder: (context, data, _) { + return Padding( + padding: + const EdgeInsets.only(top: 24.0, left: 16, right: 16), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + HMSTitleText( + text: "Audio Output", + textColor: + HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + ), + ], + ), + Row( + children: const [HMSCrossButton()], + ), + ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + Expanded( + child: ListView.builder( + controller: scrollController, + itemCount: data.item2, + itemBuilder: (context, index) { + return Column( + children: [ + GestureDetector( + onTap: () { + context + .read() + .switchAudioOutput( + audioDevice: data.item1[index]); + Navigator.pop(context); + }, + + ///Here we are checking if the current audio device is automatic or not + ///If it is automatic then we render the automatic icon + ///else we render the audio device icon + /// + ///If the current audio device is the selected audio device then we render the tick icon + ///else we render an empty container + child: data.item1[index] == + HMSAudioDevice.AUTOMATIC + ? ListTile( + horizontalTitleGap: 2, + enabled: false, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/${Utilities.getAudioDeviceIconName(data.item3)}.svg", + fit: BoxFit.scaleDown, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubtitleText( + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.10, + fontWeight: FontWeight.w600, + text: + "${Utilities.getAudioDeviceName(data.item1[index])} (${Utilities.getAudioDeviceName(data.item3)})", + textColor: HMSThemeColors + .onSurfaceHighEmphasis, + ), + trailing: context + .read() + .currentAudioDeviceMode == + HMSAudioDevice.AUTOMATIC + ? SizedBox( + height: 24, + width: 24, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/tick.svg", + fit: BoxFit.scaleDown, + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode + .srcIn), + ), + ) + : const SizedBox( + height: 24, + width: 24, + ), + ) + : ListTile( + horizontalTitleGap: 2, + enabled: false, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/${Utilities.getAudioDeviceIconName(data.item1[index])}.svg", + fit: BoxFit.scaleDown, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubtitleText( + text: Utilities + .getAudioDeviceName( + data.item1[index]), + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.10, + fontWeight: FontWeight.w600, + textColor: HMSThemeColors + .onSurfaceHighEmphasis, + ), + trailing: data.item1[index] == + context + .read() + .currentAudioDeviceMode + ? SizedBox( + height: 24, + width: 24, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/tick.svg", + fit: BoxFit.scaleDown, + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode + .srcIn), + ), + ) + : const SizedBox( + height: 24, + width: 24, + ), + ), + ), + Padding( + padding: const EdgeInsets.symmetric( + vertical: 5), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + )), + ], + ); + }), + ) + ], + ), + ); + }), + ); + }); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/change_name_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/change_name_bottom_sheet.dart new file mode 100644 index 000000000..0f53b6e26 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/change_name_bottom_sheet.dart @@ -0,0 +1,189 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_listenable_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///[ChangeNameBottomSheet] is a bottom sheet that is used to change the name of the local peer +///It has following parameters: +///[showPrivacyInfo] is a boolean that is used to show/hide the privacy info +class ChangeNameBottomSheet extends StatefulWidget { + final bool showPrivacyInfo; + const ChangeNameBottomSheet({super.key, this.showPrivacyInfo = true}); + + @override + State createState() => _ChangeNameBottomSheetState(); +} + +class _ChangeNameBottomSheetState extends State { + TextEditingController nameController = TextEditingController(); + + @override + void initState() { + super.initState(); + nameController.text = context.read().localPeer?.name ?? ""; + } + + @override + void dispose() { + nameController.dispose(); + super.dispose(); + } + + ///This function is called when the change name button is clicked + void _changeName() { + ///We only change the name + ///if the name is not empty + ///and the name is not same as the previous name + /// + ///we also trim to remove the spaces from beginning or end + if (nameController.text.trim().isNotEmpty && + nameController.text.trim() != + context.read().localPeer?.name) { + context.read().changeName(name: nameController.text.trim()); + Navigator.pop(context); + } + } + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.only(top: 16.0, left: 24, right: 24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + IconButton( + icon: Icon( + Icons.arrow_back_ios_new, + size: 24, + color: HMSThemeColors.onSurfaceHighEmphasis, + ), + onPressed: () { + Navigator.pop(context); + }, + ), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: "Change Name", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: const [HMSCrossButton()], + ) + ], + ), + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 16), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + + ///We show the privacy info only if the [showPrivacyInfo] is true + if (widget.showPrivacyInfo) + HMSSubheadingText( + text: + "Your name will be visible to other participants in\n the session.", + maxLines: 2, + textColor: HMSThemeColors.onSurfaceMediumEmphasis, + ), + if (widget.showPrivacyInfo) + const SizedBox( + height: 16, + ), + SizedBox( + height: 48, + child: TextField( + cursorColor: HMSThemeColors.onSurfaceHighEmphasis, + onTapOutside: (event) => + FocusManager.instance.primaryFocus?.unfocus(), + textInputAction: TextInputAction.done, + textCapitalization: TextCapitalization.words, + style: GoogleFonts.inter( + color: HMSThemeColors.onSurfaceHighEmphasis), + controller: nameController, + keyboardType: TextInputType.text, + onChanged: (value) { + setState(() {}); + }, + onSubmitted: (value) { + _changeName(); + }, + decoration: InputDecoration( + contentPadding: const EdgeInsets.symmetric( + vertical: 12, horizontal: 16), + fillColor: HMSThemeColors.surfaceDefault, + filled: true, + hintText: nameController.text.isEmpty + ? 'Enter Name...' + : nameController.text, + hintStyle: GoogleFonts.inter( + color: HMSThemeColors.onSurfaceLowEmphasis, + height: 1.5, + fontSize: 16, + letterSpacing: 0.5, + fontWeight: FontWeight.w400), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + width: 2, color: HMSThemeColors.primaryDefault), + borderRadius: + const BorderRadius.all(Radius.circular(8))), + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.all(Radius.circular(8))), + border: const OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(8)))), + ), + ), + const SizedBox( + height: 16, + ), + Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: HMSListenableButton( + width: MediaQuery.of(context).size.width - 48, + textController: nameController, + onPressed: () => {_changeName()}, + childWidget: Container( + height: 48, + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(8))), + child: Center( + child: HMSTitleText( + text: "Change", + textColor: (nameController.text.trim().isEmpty || + context.read().localPeer?.name == + nameController.text.trim()) + ? HMSThemeColors.onPrimaryLowEmphasis + : HMSThemeColors.onPrimaryHighEmphasis, + ), + ), + )), + ), + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_bottom_sheet.dart new file mode 100644 index 000000000..2122a1729 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_bottom_sheet.dart @@ -0,0 +1,389 @@ +//Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/enums/session_store_keys.dart'; +import 'package:hms_room_kit/src/widgets/chat_widgets/hms_empty_chat_widget.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/message_container.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +//Project imports +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class ChatBottomSheet extends StatefulWidget { + const ChatBottomSheet({super.key}); + + @override + State createState() => _ChatBottomSheetState(); +} + +class _ChatBottomSheetState extends State { + late double widthOfScreen; + TextEditingController messageTextController = TextEditingController(); + String valueChoose = "Everyone"; + final ScrollController _scrollController = ScrollController(); + final DateFormat formatter = DateFormat('hh:mm a'); + @override + void dispose() { + messageTextController.dispose(); + _scrollController.dispose(); + super.dispose(); + } + + void _updateDropDownValue(dynamic newValue) { + valueChoose = newValue; + } + + void _scrollToEnd() { + if (_scrollController.positions.isNotEmpty) { + WidgetsBinding.instance.addPostFrameCallback((_) => _scrollController + .animateTo(_scrollController.position.maxScrollExtent, + duration: const Duration(milliseconds: 200), + curve: Curves.easeInOut)); + } + } + + String sender(HMSMessageRecipient hmsMessageRecipient) { + if ((hmsMessageRecipient.recipientPeer != null) && + (hmsMessageRecipient.recipientRoles == null)) { + return "PRIVATE"; + } else if ((hmsMessageRecipient.recipientPeer == null) && + (hmsMessageRecipient.recipientRoles != null)) { + return hmsMessageRecipient.recipientRoles![0].name; + } + return ""; + } + + void sendMessage() async { + MeetingStore meetingStore = context.read(); + List hmsRoles = meetingStore.roles; + String message = messageTextController.text.trim(); + if (message.isEmpty) return; + + List rolesName = []; + for (int i = 0; i < hmsRoles.length; i++) { + rolesName.add(hmsRoles[i].name); + } + + if (valueChoose == "Everyone") { + meetingStore.sendBroadcastMessage(message); + } else if (rolesName.contains(valueChoose)) { + List selectedRoles = []; + selectedRoles + .add(hmsRoles.firstWhere((role) => role.name == valueChoose)); + meetingStore.sendGroupMessage(message, selectedRoles); + } else if (meetingStore.localPeer!.peerId != valueChoose) { + var peer = await meetingStore.getPeer(peerId: valueChoose); + meetingStore.sendDirectMessage(message, peer!); + } + messageTextController.clear(); + } + + @override + Widget build(BuildContext context) { + widthOfScreen = MediaQuery.of(context).size.width; + + return WillPopScope( + onWillPop: () async { + context.read().setNewMessageFalse(); + return true; + }, + child: SafeArea( + child: Padding( + padding: MediaQuery.of(context).viewInsets, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox( + height: 15, + ), + Selector, int, String?>>( + selector: (_, meetingStore) => Tuple3(meetingStore.messages, + meetingStore.messages.length, meetingStore.sessionMetadata), + builder: (context, data, _) { + _scrollToEnd(); + return + + ///If there are no chats and no pinned messages + (data.item2 == 0 && data.item3 == null) + ? const Expanded( + child: Center(child: HMSEmptyChatWidget())) + : Expanded( + child: Column(children: [ + ///If there is a pinned chat + if (data.item3 != null && data.item3 != "") + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Container( + constraints: + const BoxConstraints(maxHeight: 150), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(8), + color: HMSThemeColors.surfaceDefault), + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/pin.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceMediumEmphasis, + BlendMode.srcIn), + ), + const SizedBox(width: 8), + SizedBox( + width: + MediaQuery.of(context) + .size + .width * + 0.75, + child: SelectableLinkify( + text: data.item3!, + onOpen: (link) async { + Uri url = + Uri.parse(link.url); + if (await canLaunchUrl( + url)) { + await launchUrl(url, + mode: LaunchMode + .externalApplication); + } + }, + options: + const LinkifyOptions( + humanize: false), + style: GoogleFonts.inter( + fontSize: 14.0, + color: HMSThemeColors + .onSurfaceHighEmphasis, + letterSpacing: 0.25, + height: 20 / 14, + fontWeight: + FontWeight.w400, + ), + linkStyle: GoogleFonts.inter( + fontSize: 14.0, + color: HMSThemeColors + .primaryDefault, + letterSpacing: 0.25, + height: 20 / 14, + fontWeight: + FontWeight.w400), + ), + ), + ], + ), + Row( + children: [ + GestureDetector( + onTap: () { + context + .read< + MeetingStore>() + .setSessionMetadataForKey( + key: SessionStoreKeyValues + .getNameFromMethod( + SessionStoreKey + .pinnedMessageSessionKey), + metadata: null); + }, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/close.svg", + height: 20, + width: 20, + colorFilter: + ColorFilter.mode( + HMSThemeColors + .onSurfaceMediumEmphasis, + BlendMode + .srcIn), + )), + ], + ) + ], + ), + ), + ), + ), + ), + + /// List containing chats + Expanded( + child: SingleChildScrollView( + reverse: true, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + ListView.builder( + controller: _scrollController, + shrinkWrap: true, + itemCount: data.item1.length, + itemBuilder: (_, index) { + return MessageContainer( + message: data + .item1[index].message + .trim() + .toString(), + senderName: data.item1[index] + .sender?.name ?? + "Anonymous", + date: formatter.format( + data.item1[index].time), + role: data.item1[index] + .hmsMessageRecipient == + null + ? "" + : sender(data.item1[index] + .hmsMessageRecipient!), + ); + }), + ], + ), + ), + ) + ]), + ); + }, + ), + + ///Will be added later + /// + // Padding( + // padding: const EdgeInsets.only(bottom: 8.0, left: 16,top: 16), + // child: Row( + // children: [ + // HMSTitleText( + // text: "SEND TO ", + // textColor: HMSThemeColors.onSurfaceMediumEmphasis, + // fontSize: 10, + // lineHeight: 16, + // letterSpacing: 1.5, + // ), + // Container( + // width: 96, + // height: 24, + // decoration: BoxDecoration( + // border: Border.all( + // color: HMSThemeColors.borderBright, width: 1), + // borderRadius: + // const BorderRadius.all(Radius.circular(4)), + // color: + // HMSThemeColors.surfaceDim), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // HMSTitleText( + // text: "EVERYONE", + // fontSize: 10, + // lineHeight: 16, + // letterSpacing: 1.5, + // textColor: + // HMSThemeColors.onSurfaceHighEmphasis), + // Icon(Icons.keyboard_arrow_down,color: HMSThemeColors.onSurfaceMediumEmphasis,size: 16,), + // ], + // )) + // ], + // ), + // ), + ///Text Field + Padding( + padding: const EdgeInsets.only(top: 8.0), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: HMSThemeColors.surfaceDefault), + child: Row( + children: [ + Expanded( + child: TextField( + textCapitalization: TextCapitalization.sentences, + textInputAction: TextInputAction.send, + onTapOutside: (event) => + FocusManager.instance.primaryFocus?.unfocus(), + onSubmitted: (value) { + sendMessage(); + }, + onChanged: (value) { + setState(() {}); + }, + style: GoogleFonts.inter( + color: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w400, + height: 20 / 14, + fontSize: 14, + letterSpacing: 0.25), + controller: messageTextController, + decoration: InputDecoration( + suffixIcon: IconButton( + onPressed: () { + if (messageTextController.text + .trim() + .isEmpty) { + Utilities.showToast( + "Message can't be empty"); + } + sendMessage(); + }, + icon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/send_message.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + messageTextController + .text + .trim() + .isEmpty + ? HMSThemeColors + .onSurfaceLowEmphasis + : HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + )), + border: InputBorder.none, + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + width: 2, + color: HMSThemeColors.primaryDefault), + borderRadius: const BorderRadius.all( + Radius.circular(8))), + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + disabledBorder: InputBorder.none, + hintStyle: GoogleFonts.inter( + color: HMSThemeColors.onSurfaceLowEmphasis, + fontSize: 14, + height: 20 / 14, + letterSpacing: 0.25, + fontWeight: FontWeight.w400), + contentPadding: const EdgeInsets.only( + left: 16, bottom: 8, top: 12, right: 8), + hintText: "Send a message..."), + ), + ) + ], + ), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_only_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_only_bottom_sheet.dart new file mode 100644 index 000000000..f74a82eeb --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/chat_only_bottom_sheet.dart @@ -0,0 +1,44 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/chat_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[ChatOnlyBottomSheet] is a bottom sheet that is used to render the bottom sheet to show chat only when participants +///list is disabled from dashboard +class ChatOnlyBottomSheet extends StatelessWidget { + const ChatOnlyBottomSheet({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return SafeArea( + child: FractionallySizedBox( + heightFactor: 0.87, + child: Padding( + padding: const EdgeInsets.only(top: 12.0, left: 16, right: 16), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + HMSSubheadingText( + text: "Chat", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + ), + const HMSCrossButton(), + ], + ), + const Expanded(child:Padding( + padding: EdgeInsets.only(bottom:8.0), + child: ChatBottomSheet(), + )) + ], + ), + ), + )); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/end_service_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/end_service_bottom_sheet.dart new file mode 100644 index 000000000..c61e069f9 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/end_service_bottom_sheet.dart @@ -0,0 +1,101 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///[EndServiceBottomSheet] is a bottom sheet that is used to render the bottom sheet to stop services +///It has following parameters: +///[bottomSheetTitleIcon] is the icon that is shown on the top left of the bottom sheet +/// [title] is the title of the bottom sheet +/// [subTitle] is the subtitle of the bottom sheet +/// [buttonText] is the text of the button +/// [onButtonPressed] is the function that is called when the button is pressed +/// [buttonColor] is the color of the button +class EndServiceBottomSheet extends StatelessWidget { + final Widget? bottomSheetTitleIcon; + final Widget? title; + final Widget? subTitle; + final String? buttonText; + final Function? onButtonPressed; + final Color? buttonColor; + + const EndServiceBottomSheet( + {super.key, + this.bottomSheetTitleIcon, + this.title, + this.subTitle, + this.buttonText, + this.onButtonPressed, + this.buttonColor}); + + @override + Widget build(BuildContext context) { + return FractionallySizedBox( + heightFactor: 0.25, + child: Padding( + padding: const EdgeInsets.only(top: 16.0, left: 20, right: 20), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + bottomSheetTitleIcon ?? const SizedBox(), + const SizedBox( + width: 8, + ), + title ?? const SizedBox() + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: const [ + HMSCrossButton(), + ], + ) + ], + ), + const SizedBox( + height: 8, + ), + subTitle ?? const SizedBox(), + const SizedBox( + height: 16, + ), + ElevatedButton( + style: ButtonStyle( + shadowColor: + MaterialStateProperty.all(HMSThemeColors.surfaceDim), + backgroundColor: MaterialStateProperty.all( + buttonColor ?? HMSThemeColors.alertErrorDefault), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ))), + onPressed: () { + if (onButtonPressed != null) { + onButtonPressed!(); + } + Navigator.pop(context); + }, + child: SizedBox( + height: 48, + child: Center( + child: HMSTitleText( + text: buttonText ?? "", + textColor: HMSThemeColors.alertErrorBrighter), + ), + )) + ], + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/hls_more_options.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/hls_more_options.dart new file mode 100644 index 000000000..2d1954f96 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/hls_more_options.dart @@ -0,0 +1,168 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/overlay_participants_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/tab_widgets/chat_participants_tab_bar.dart'; +import 'package:provider/provider.dart'; +import 'package:badges/badges.dart' as badge; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/change_name_bottom_sheet.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/more_option_item.dart'; + +///[HLSMoreOptionsBottomSheet] is a bottom sheet that is used to show more options in the meeting +class HLSMoreOptionsBottomSheet extends StatefulWidget { + const HLSMoreOptionsBottomSheet({super.key}); + + @override + State createState() => + _HLSMoreOptionsBottomSheetBottomSheetState(); +} + +class _HLSMoreOptionsBottomSheetBottomSheetState + extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(top: 16.0, left: 20, right: 20,bottom: 24), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + HMSTitleText( + text: "Options", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: const [HMSCrossButton()], + ) + ], + ), + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 16), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + + ///Here we render the participants button and the change name button + Wrap( + spacing: 12, + runSpacing: 24, + children: [ + if(HMSRoomLayout.isParticipantsListEnabled) + MoreOptionItem( + onTap: () async { + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: (HMSRoomLayout.chatData == null || (HMSRoomLayout.chatData?.isOverlay ?? true)) + ? const OverlayParticipantsBottomSheet() + : const ChatParticipantsTabBar( + tabIndex: 1, + )), + ); + }, + optionIcon: badge.Badge( + badgeStyle: badge.BadgeStyle( + badgeColor: HMSThemeColors.surfaceDefault, + padding: EdgeInsets.all( + context.read().peers.length < 1000 + ? 5 + : 8)), + badgeContent: HMSTitleText( + text: context + .read() + .peers + .length + .toString(), + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 10, + lineHeight: 16, + letterSpacing: 1.5, + ), + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: + (context.read().peers.length < + 1000 + ? 5 + : 10)), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/participants.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + ), + ), + optionText: "Participants"), + MoreOptionItem( + onTap: () async { + var meetingStore = context.read(); + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: meetingStore, + child: Padding( + padding: EdgeInsets.only( + bottom: + MediaQuery.of(ctx).viewInsets.bottom), + child: const ChangeNameBottomSheet())), + ); + }, + optionIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/pencil.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + optionText: "Change Name") + ], + ), + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/leave_session_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/leave_session_bottom_sheet.dart new file mode 100644 index 000000000..5030a151e --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/leave_session_bottom_sheet.dart @@ -0,0 +1,196 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/end_service_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/leave_session_tile.dart'; + +class LeaveSessionBottomSheet extends StatelessWidget { + final MeetingStore meetingStore; + const LeaveSessionBottomSheet({super.key, required this.meetingStore}); + + @override + Widget build(BuildContext context) { + return ((meetingStore.localPeer?.role.permissions.endRoom ?? false) || + ((meetingStore.localPeer?.role.permissions.hlsStreaming ?? false) && + meetingStore.hasHlsStarted)) + ? Padding( + padding: const EdgeInsets.only(top: 12.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + LeaveSessionTile( + tilePadding: + const EdgeInsets.only(top: 12.0, left: 20, right: 20), + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/exit_room.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + semanticsLabel: "leave_room_button", + ), + title: "Leave", + titleColor: HMSThemeColors.onSurfaceHighEmphasis, + subTitle: + "Others will continue after you leave. You can join the session again.", + subTitleColor: HMSThemeColors.onSurfaceMediumEmphasis, + onTap: () => { + Navigator.pop(context), + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => EndServiceBottomSheet( + onButtonPressed: () => { + meetingStore.leave(), + }, + title: HMSTitleText( + text: "Leave Session", + textColor: HMSThemeColors.alertErrorDefault, + letterSpacing: 0.15, + fontSize: 20, + ), + bottomSheetTitleIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/end_warning.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, + BlendMode.srcIn), + ), + subTitle: HMSSubheadingText( + text: + "Others will continue after you leave. You can join\n the session again.", + maxLines: 2, + textColor: HMSThemeColors.onSurfaceMediumEmphasis, + ), + buttonText: "Leave Session", + ), + ) + }, + ), + LeaveSessionTile( + tileColor: HMSThemeColors.alertErrorDim, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/end.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorBrighter, BlendMode.srcIn), + semanticsLabel: "leave_room_button", + ), + title: + ((meetingStore.localPeer?.role.permissions.hlsStreaming ?? + false) && + meetingStore.hasHlsStarted) + ? "End Stream" + : "End Session", + titleColor: HMSThemeColors.alertErrorBrighter, + subTitle: ((meetingStore + .localPeer?.role.permissions.hlsStreaming ?? + false) && + meetingStore.hasHlsStarted) + ? "The stream will end for everyone after they’ve watched it." + : "The session will end for everyone in the room immediately.", + subTitleColor: HMSThemeColors.alertErrorBright, + onTap: () => { + Navigator.pop(context), + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => EndServiceBottomSheet( + onButtonPressed: () => { + if ((meetingStore.localPeer?.role.permissions + .hlsStreaming ?? + false) && + meetingStore.hasHlsStarted) + { + meetingStore.stopHLSStreaming(), + meetingStore.leave(), + } + else + { + meetingStore.endRoom( + false, "Room Ended From Flutter"), + }, + }, + title: HMSTitleText( + text: ((meetingStore.localPeer?.role.permissions + .hlsStreaming ?? + false) && + meetingStore.hasHlsStarted) + ? "End Stream" + : "End Session", + textColor: HMSThemeColors.alertErrorDefault, + letterSpacing: 0.15, + fontSize: 20, + ), + bottomSheetTitleIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/end_warning.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, + BlendMode.srcIn), + ), + subTitle: HMSSubheadingText( + text: ((meetingStore.localPeer?.role.permissions + .hlsStreaming ?? + false) && + meetingStore.hasHlsStarted) + ? "The stream will end for everyone after they’ve watched it." + : "The session will end for everyone in the room immediately.", + maxLines: 3, + textColor: HMSThemeColors.onSurfaceMediumEmphasis, + ), + buttonText: ((meetingStore.localPeer?.role.permissions + .hlsStreaming ?? + false) && + meetingStore.hasHlsStarted) + ? "End Stream" + : "End Session", + ), + ) + }, + ), + ], + ), + ) + : EndServiceBottomSheet( + onButtonPressed: () => { + meetingStore.leave(), + }, + title: HMSTitleText( + text: "Leave Session", + textColor: HMSThemeColors.alertErrorDefault, + letterSpacing: 0.15, + fontSize: 20, + ), + bottomSheetTitleIcon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/end_warning.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, BlendMode.srcIn), + ), + subTitle: HMSSubheadingText( + text: + "Others will continue after you leave. You can join\n the session again.", + maxLines: 2, + textColor: HMSThemeColors.onSurfaceMediumEmphasis, + ), + buttonText: "Leave Session", + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart new file mode 100644 index 000000000..48bf8e0fa --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart @@ -0,0 +1,222 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/change_name_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[LocalPeerBottomSheet] is a widget that is used to render the bottom sheet when the more option button is clicked on the local peer tile +///It has following parameters: +///[meetingStore] is the meetingStore of the meeting +///[peerTrackNode] is the peerTrackNode of the local peer +///[callbackFunction] is a function that is called when the more option button is clicked +class LocalPeerBottomSheet extends StatefulWidget { + final MeetingStore meetingStore; + final PeerTrackNode peerTrackNode; + final Function()? callbackFunction; + final bool isInsetTile; + + const LocalPeerBottomSheet( + {Key? key, + required this.meetingStore, + required this.peerTrackNode, + this.callbackFunction, + this.isInsetTile = true}) + : super(key: key); + @override + State createState() => _LocalPeerBottomSheetState(); +} + +class _LocalPeerBottomSheetState extends State { + @override + Widget build(BuildContext context) { + return FractionallySizedBox( + heightFactor: widget.isInsetTile?0.26:0.2, + child: Padding( + padding: const EdgeInsets.only(top: 16.0, left: 24, right: 24), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + constraints: BoxConstraints( + maxWidth: + MediaQuery.of(context).size.width - 100), + child: HMSTitleText( + text: + "${widget.meetingStore.localPeer?.name} (You)", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + ), + ), + const SizedBox( + height: 5, + ), + HMSSubtitleText( + text: widget.meetingStore.localPeer?.role.name ?? + "", + textColor: HMSThemeColors.onSurfaceMediumEmphasis) + ], + ), + ], + ), + Row( + children: const [HMSCrossButton()], + ), + ], + ), + Padding( + padding: const EdgeInsets.only(top: 10, bottom: 10), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + Expanded( + ///Here we use a listview to render the options + ///The list contains following item + ///1. Pin Tile for Myself + ///2. Spotlight Tile for Everyone + ///3. Change Name + ///4. Minimize Your Tile + child: ListView( + children: [ + // ListTile( + // horizontalTitleGap: 2, + // onTap: () async { + // widget.meetingStore + // .changePinTileStatus(widget.peerTrackNode); + // }, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/pin.svg", + // semanticsLabel: "fl_local_pin_tile", + // height: 20, + // width: 20, + // colorFilter: ColorFilter.mode( + // HMSThemeColors.onSurfaceHighEmphasis, + // BlendMode.srcIn), + // ), + // title: HMSSubheadingText( + // text: "Pin Tile for Myself", + // textColor: HMSThemeColors.onSurfaceHighEmphasis)), + // ListTile( + // horizontalTitleGap: 2, + // onTap: () async { + // if (widget.meetingStore.spotLightPeer?.uid == + // widget.peerTrackNode.uid) { + // widget.meetingStore.setSessionMetadataForKey( + // key: SessionStoreKeyValues.getNameFromMethod( + // SessionStoreKey.spotlight), + // metadata: null); + // return; + // } + + // ///Setting the metadata as audio trackId if it's not present + // ///then setting it as video trackId + // String? metadata = + // (widget.peerTrackNode.audioTrack == null) + // ? widget.peerTrackNode.track?.trackId + // : widget.peerTrackNode.audioTrack?.trackId; + // widget.meetingStore.setSessionMetadataForKey( + // key: SessionStoreKeyValues.getNameFromMethod( + // SessionStoreKey.spotlight), + // metadata: metadata); + // }, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/spotlight.svg", + // semanticsLabel: "fl_spotlight_local_tile", + // height: 20, + // width: 20, + // colorFilter: ColorFilter.mode( + // HMSThemeColors.onSurfaceHighEmphasis, + // BlendMode.srcIn), + // ), + // title: HMSSubheadingText( + // text: "Spotlight Tile for Everyone", + // textColor: HMSThemeColors.onSurfaceHighEmphasis)), + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: widget.meetingStore, + child: Padding( + padding: EdgeInsets.only( + bottom: MediaQuery.of(ctx) + .viewInsets + .bottom), + child: const ChangeNameBottomSheet( + showPrivacyInfo: false, + ))), + ); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/pencil.svg", + semanticsLabel: "fl_local_pin_tile", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Change Name", + textColor: HMSThemeColors.onSurfaceHighEmphasis)), + if(widget.isInsetTile) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + if (widget.callbackFunction != null) { + widget.callbackFunction!(); + } + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/minimize.svg", + semanticsLabel: "fl_minimize_local_tile", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + widget.meetingStore.peerTracks.length > 1 + ? HMSThemeColors.onSurfaceHighEmphasis + : HMSThemeColors.onSurfaceLowEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Minimize Your Tile", + textColor: widget.meetingStore.peerTracks.length > 1 + ? HMSThemeColors.onSurfaceHighEmphasis + : HMSThemeColors.onSurfaceLowEmphasis)), + ], + ), + ), + ], + )), + ); + } +} diff --git a/example/lib/common/bottom_sheets/meeting_mode_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/meeting_mode_bottom_sheet.dart similarity index 62% rename from example/lib/common/bottom_sheets/meeting_mode_bottom_sheet.dart rename to packages/hms_room_kit/lib/src/widgets/bottom_sheets/meeting_mode_bottom_sheet.dart index 689e41350..b89409775 100644 --- a/example/lib/common/bottom_sheets/meeting_mode_bottom_sheet.dart +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/meeting_mode_bottom_sheet.dart @@ -1,14 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_mode.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/enums/meeting_mode.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; class MeetingModeBottomSheet extends StatefulWidget { - MeetingModeBottomSheet({ + const MeetingModeBottomSheet({ Key? key, }) : super(key: key); @override @@ -26,7 +26,7 @@ class _MeetingModeBottomSheetState extends State { @override Widget build(BuildContext context) { - MeetingStore _meetingStore = context.read(); + MeetingStore meetingStore = context.read(); return FractionallySizedBox( heightFactor: 0.6, child: Padding( @@ -62,7 +62,7 @@ class _MeetingModeBottomSheetState extends State { ), IconButton( icon: SvgPicture.asset( - "assets/icons/close_button.svg", + "packages/hms_room_kit/lib/src/assets/icons/close_button.svg", width: 40, ), onPressed: () { @@ -72,7 +72,7 @@ class _MeetingModeBottomSheetState extends State { ], ), Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), + padding: const EdgeInsets.only(top: 15, bottom: 10), child: Divider( color: dividerColor, height: 5, @@ -84,63 +84,34 @@ class _MeetingModeBottomSheetState extends State { ListTile( horizontalTitleGap: 2, onTap: () async { - if (_meetingStore.meetingMode == MeetingMode.Grid) { + if (meetingStore.meetingMode == + MeetingMode.equalProminenceWithInset) { Utilities.showToast( "Meeting mode is already set to Grid View"); return; } - _meetingStore.setMode(MeetingMode.Grid); + meetingStore + .setMode(MeetingMode.equalProminenceWithInset); Navigator.pop(context); }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/role_change.svg", + "packages/hms_room_kit/lib/src/assets/icons/role_change.svg", semanticsLabel: "fl_normal_mode", - color: (_meetingStore.meetingMode == MeetingMode.Grid) - ? errorColor - : themeDefaultColor, + colorFilter: ColorFilter.mode( + (meetingStore.meetingMode == + MeetingMode.equalProminenceWithInset) + ? errorColor + : themeDefaultColor, + BlendMode.srcIn), fit: BoxFit.scaleDown, ), title: Text( "Normal Mode", style: GoogleFonts.inter( fontSize: 14, - color: - (_meetingStore.meetingMode == MeetingMode.Grid) - ? errorColor - : themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - ), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - if (_meetingStore.meetingMode == - MeetingMode.ActiveSpeaker) { - Utilities.showToast( - "Meeting mode is already set to Active Speaker"); - return; - } - _meetingStore.setMode(MeetingMode.ActiveSpeaker); - Navigator.pop(context); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/participants.svg", - semanticsLabel: "fl_active_speaker_mode", - color: (_meetingStore.meetingMode == - MeetingMode.ActiveSpeaker) - ? errorColor - : themeDefaultColor, - fit: BoxFit.scaleDown, - ), - title: Text( - "Active Speaker Mode", - style: GoogleFonts.inter( - fontSize: 14, - color: (_meetingStore.meetingMode == - MeetingMode.ActiveSpeaker) + color: (meetingStore.meetingMode == + MeetingMode.equalProminenceWithInset) ? errorColor : themeDefaultColor, letterSpacing: 0.25, @@ -150,30 +121,34 @@ class _MeetingModeBottomSheetState extends State { ListTile( horizontalTitleGap: 2, onTap: () async { - if (_meetingStore.meetingMode == MeetingMode.OneToOne) { + if (meetingStore.meetingMode == + MeetingMode.activeSpeakerWithInset) { Utilities.showToast( - "Meeting mode is already set to One to one Mode"); + "Meeting mode is already set to Active Speaker"); return; } - _meetingStore.setMode(MeetingMode.OneToOne); + meetingStore + .setMode(MeetingMode.activeSpeakerWithInset); Navigator.pop(context); }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/participants.svg", - semanticsLabel: "fl_one_to_one_mode", - color: - (_meetingStore.meetingMode == MeetingMode.OneToOne) + "packages/hms_room_kit/lib/src/assets/icons/participants.svg", + semanticsLabel: "fl_active_speaker_mode", + colorFilter: ColorFilter.mode( + (meetingStore.meetingMode == + MeetingMode.activeSpeakerWithInset) ? errorColor : themeDefaultColor, + BlendMode.srcIn), fit: BoxFit.scaleDown, ), title: Text( - "One to One Mode", + "Active Speaker Mode", style: GoogleFonts.inter( fontSize: 14, - color: (_meetingStore.meetingMode == - MeetingMode.OneToOne) + color: (meetingStore.meetingMode == + MeetingMode.activeSpeakerWithInset) ? errorColor : themeDefaultColor, letterSpacing: 0.25, @@ -183,20 +158,22 @@ class _MeetingModeBottomSheetState extends State { ListTile( horizontalTitleGap: 2, onTap: () async { - if (_meetingStore.meetingMode == MeetingMode.Audio) { + if (meetingStore.meetingMode == MeetingMode.audio) { Utilities.showToast( "Meeting mode is already set to Audio Mode"); return; } - _meetingStore.setMode(MeetingMode.Audio); + meetingStore.setMode(MeetingMode.audio); Navigator.pop(context); }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/mic_state_on.svg', - color: _meetingStore.meetingMode == MeetingMode.Audio - ? errorColor - : themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg', + colorFilter: ColorFilter.mode( + meetingStore.meetingMode == MeetingMode.audio + ? errorColor + : themeDefaultColor, + BlendMode.srcIn), semanticsLabel: "fl_audio_video_view", fit: BoxFit.scaleDown, ), @@ -205,10 +182,9 @@ class _MeetingModeBottomSheetState extends State { semanticsLabel: "fl_audio_video_mode", style: GoogleFonts.inter( fontSize: 14, - color: - _meetingStore.meetingMode == MeetingMode.Audio - ? errorColor - : themeDefaultColor, + color: meetingStore.meetingMode == MeetingMode.audio + ? errorColor + : themeDefaultColor, letterSpacing: 0.25, fontWeight: FontWeight.w600), ), @@ -216,28 +192,30 @@ class _MeetingModeBottomSheetState extends State { ListTile( horizontalTitleGap: 2, onTap: () async { - if (_meetingStore.meetingMode == MeetingMode.Hero) { + if (meetingStore.meetingMode == MeetingMode.hero) { Utilities.showToast( "Meeting mode is already set to Hero Mode"); return; } - _meetingStore.setMode(MeetingMode.Hero); + meetingStore.setMode(MeetingMode.hero); Navigator.pop(context); }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/participants.svg", + "packages/hms_room_kit/lib/src/assets/icons/participants.svg", semanticsLabel: "fl_hero_mode", - color: _meetingStore.meetingMode == MeetingMode.Hero - ? errorColor - : themeDefaultColor, + colorFilter: ColorFilter.mode( + meetingStore.meetingMode == MeetingMode.hero + ? errorColor + : themeDefaultColor, + BlendMode.srcIn), fit: BoxFit.scaleDown, ), title: Text( "Hero Mode", style: GoogleFonts.inter( fontSize: 14, - color: _meetingStore.meetingMode == MeetingMode.Hero + color: meetingStore.meetingMode == MeetingMode.hero ? errorColor : themeDefaultColor, letterSpacing: 0.25, @@ -247,21 +225,23 @@ class _MeetingModeBottomSheetState extends State { ListTile( horizontalTitleGap: 2, onTap: () async { - if (_meetingStore.meetingMode == MeetingMode.Single) { + if (meetingStore.meetingMode == MeetingMode.single) { Utilities.showToast( "Meeting mode is already set to Single Mode"); return; } - _meetingStore.setMode(MeetingMode.Single); + meetingStore.setMode(MeetingMode.single); Navigator.pop(context); }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/single_tile.svg", + "packages/hms_room_kit/lib/src/assets/icons/single_tile.svg", semanticsLabel: "fl_single_mode", - color: _meetingStore.meetingMode == MeetingMode.Single - ? errorColor - : themeDefaultColor, + colorFilter: ColorFilter.mode( + meetingStore.meetingMode == MeetingMode.single + ? errorColor + : themeDefaultColor, + BlendMode.srcIn), fit: BoxFit.scaleDown, ), title: Text( @@ -269,7 +249,7 @@ class _MeetingModeBottomSheetState extends State { style: GoogleFonts.inter( fontSize: 14, color: - _meetingStore.meetingMode == MeetingMode.Single + meetingStore.meetingMode == MeetingMode.single ? errorColor : themeDefaultColor, letterSpacing: 0.25, diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/more_settings_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/more_settings_bottom_sheet.dart new file mode 100644 index 000000000..09291a469 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/more_settings_bottom_sheet.dart @@ -0,0 +1,737 @@ +import 'dart:io'; + +import 'package:badges/badges.dart' as badge; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/constants.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/widgets/app_dialogs/stats_for_nerds.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/audio_settings_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/meeting_mode_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/participants_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/start_hls_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/share_link_option.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:provider/provider.dart'; + +class MoreSettingsBottomSheet extends StatefulWidget { + final bool isAudioMixerDisabled; + + const MoreSettingsBottomSheet({Key? key, this.isAudioMixerDisabled = true}) + : super(key: key); + @override + State createState() => + _MoreSettingsBottomSheetState(); +} + +class _MoreSettingsBottomSheetState extends State { + void _showRoleList( + {required List roles, required MeetingStore meetingStore}) { + UtilityComponents.showRoleListForMute(context, roles, meetingStore); + } + + void _showDialogForBulkRoleChange( + {required List roles, required MeetingStore meetingStore}) { + UtilityComponents.showDialogForBulkRoleChange(context, roles, meetingStore); + } + + @override + Widget build(BuildContext context) { + MeetingStore meetingStore = context.read(); + return FractionallySizedBox( + heightFactor: 0.6, + child: Padding( + padding: const EdgeInsets.only(top: 20.0, left: 15, right: 15), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + HMSTitleText( + text: "Settings", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 20, + lineHeight: 24 / 20, + letterSpacing: 0.15, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + icon: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/close_button.svg", + width: 40, + ), + onPressed: () { + Navigator.pop(context); + }, + ), + ], + ) + ], + ), + Padding( + padding: const EdgeInsets.only(top: 15, bottom: 10), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + Expanded( + child: ListView( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + InkWell( + onTap: () async { + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: themeBottomSheetColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: const ParticipantsBottomSheet()), + ); + }, + child: Container( + decoration: BoxDecoration( + color: moreSettingsButtonColor, + borderRadius: BorderRadius.circular(10)), + height: 100, + width: 150, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + badge.Badge( + badgeStyle: badge.BadgeStyle( + badgeColor: hmsdefaultColor), + badgeContent: Text( + context + .read() + .peers + .length + .toString(), + style: TextStyle( + color: + HMSThemeColors.onSurfaceHighEmphasis), + ), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/participants.svg", + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), + ), + ), + ), + const SizedBox(height: 10), + Text( + "Participants", + semanticsLabel: "participants_button", + style: GoogleFonts.inter( + fontSize: 14, + color: themeDefaultColor, + letterSpacing: 0.25, + fontWeight: FontWeight.w600), + ) + ], + ), + ), + ), + InkWell( + onTap: () async { + Navigator.pop(context); + if (Platform.isAndroid) { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: meetingStore, + child: const AudioSettingsBottomSheet()), + ); + } else { + meetingStore.switchAudioOutputUsingiOSUI(); + } + }, + child: Container( + decoration: BoxDecoration( + color: moreSettingsButtonColor, + borderRadius: BorderRadius.circular(10)), + height: 100, + width: 150, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/settings.svg", + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), + ), + const SizedBox( + height: 10, + ), + Text( + "Audio Settings", + semanticsLabel: "fl_audio_settings", + style: GoogleFonts.inter( + fontSize: 14, + color: themeDefaultColor, + letterSpacing: 0.25, + fontWeight: FontWeight.w600), + ), + ], + ), + ), + ) + ], + ), + const SizedBox( + height: 10, + ), + if (Constant.debugMode) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: meetingStore, + child: const MeetingModeBottomSheet()), + ); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/participants.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Meeting mode", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + if (meetingStore.localPeer?.role.publishSettings?.allowed + .contains("screen") ?? + false) + Selector( + selector: ((_, meetingStore) => + meetingStore.isScreenShareOn), + builder: (_, isScreenShareOn, __) { + return ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + if (isScreenShareOn) { + meetingStore.stopScreenShare(); + } else { + meetingStore.startScreenShare(); + } + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: isScreenShareOn + ? "Stop Screen Share" + : "Share Screen", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ); + }), + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + FocusManager.instance.primaryFocus?.unfocus(); + String name = + await UtilityComponents.showNameChangeDialog( + context: context, + placeholder: "Enter Name", + prefilledValue: context + .read() + .localPeer + ?.name ?? + ""); + if (name.isNotEmpty) { + meetingStore.changeName(name: name); + } + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/pencil.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Change Name", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + ListTile( + horizontalTitleGap: 2, + onTap: () { + meetingStore.toggleSpeaker(); + Navigator.pop(context); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + meetingStore.isSpeakerOn + ? "packages/hms_room_kit/lib/src/assets/icons/speaker_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/speaker_state_off.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: meetingStore.isSpeakerOn + ? "Mute Room" + : "Unmute Room", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + ListTile( + horizontalTitleGap: 2, + onTap: () async { + context.read().changeMetadata(); + Navigator.pop(context); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: meetingStore.isRaisedHand + ? "Lower Hand" + : "Raise Hand", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + )), + ListTile( + horizontalTitleGap: 2, + onTap: () async { + meetingStore.changeMetadataBRB(); + Navigator.pop(context); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/brb.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "BRB", + textColor: meetingStore.isBRB + ? HMSThemeColors.alertErrorDefault + : HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + if (Constant.debugMode) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + showDialog( + barrierDismissible: false, + context: context, + builder: (_) => ListenableProvider.value( + value: meetingStore, + child: StatsForNerds( + peerTrackNode: meetingStore.peerTracks, + ))); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/stats.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Stats for nerds", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + if (Constant.debugMode) + if ((meetingStore.localPeer?.role.permissions.mute ?? + false) && + (meetingStore.localPeer?.role.permissions.unMute ?? + false)) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + List roles = await meetingStore.getRoles(); + _showRoleList( + roles: roles, meetingStore: meetingStore); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Mute Role", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + if (Constant.debugMode) + if (meetingStore.localPeer?.role.permissions.changeRole ?? + false) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + List roles = await meetingStore.getRoles(); + _showDialogForBulkRoleChange( + roles: roles, meetingStore: meetingStore); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/role_change.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Bulk Role Change", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + if (Constant.debugMode) + if (meetingStore + .localPeer?.role.permissions.rtmpStreaming ?? + false) + Selector( + selector: (_, meetingStore) => + meetingStore.streamingType["rtmp"] ?? false, + builder: (_, isRTMPRunning, __) { + return ListTile( + horizontalTitleGap: 2, + onTap: () async { + if (isRTMPRunning) { + meetingStore.stopRtmpAndRecording(); + Navigator.pop(context); + } else { + Navigator.pop(context); + Map data = + await UtilityComponents.showRTMPInputDialog( + context: context, + placeholder: + "Enter Comma separated RTMP Urls", + isRecordingEnabled: meetingStore + .recordingType["browser"] == + true); + List? urls; + if (data["url"]!.isNotEmpty) { + urls = data["url"]!.split(","); + } + if (urls != null) { + meetingStore.startRtmpOrRecording( + meetingUrl: Constant.streamingUrl, + toRecord: data["toRecord"] ?? false, + rtmpUrls: urls); + } else if (data["toRecord"] ?? false) { + meetingStore.startRtmpOrRecording( + meetingUrl: Constant.streamingUrl, + toRecord: data["toRecord"] ?? false, + rtmpUrls: null); + } + } + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/stream.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + isRTMPRunning + ? HMSThemeColors.alertErrorDefault + : HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: + isRTMPRunning ? "Stop RTMP" : "Start RTMP", + textColor: isRTMPRunning + ? HMSThemeColors.alertErrorDefault + : HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ); + }), + if (Constant.debugMode) + if (meetingStore + .localPeer?.role.permissions.browserRecording ?? + false) + Selector( + selector: (_, meetingStore) => + meetingStore.recordingType["browser"] ?? false, + builder: (_, isBrowserRecording, __) { + return ListTile( + horizontalTitleGap: 2, + onTap: () async { + if (isBrowserRecording) { + meetingStore.stopRtmpAndRecording(); + } else { + meetingStore.startRtmpOrRecording( + meetingUrl: Constant.streamingUrl, + toRecord: true, + rtmpUrls: []); + } + Navigator.pop(context); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/record.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + isBrowserRecording + ? HMSThemeColors.alertErrorDefault + : HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: isBrowserRecording + ? "Stop Recording" + : "Start Recording", + textColor: isBrowserRecording + ? HMSThemeColors.alertErrorDefault + : HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ); + }), + if (Constant.debugMode) + if (meetingStore.localPeer?.role.permissions.hlsStreaming ?? + false) + Selector( + selector: ((_, meetingStore) => + meetingStore.hasHlsStarted), + builder: (_, hasHLSStarted, __) { + return ListTile( + horizontalTitleGap: 2, + onTap: () async { + if (hasHLSStarted) { + meetingStore.stopHLSStreaming(); + Navigator.pop(context); + return; + } + Navigator.pop(context); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: themeBottomSheetColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + context: context, + builder: (ctx) => + ChangeNotifierProvider.value( + value: meetingStore, + child: const StartHLSBottomSheet()), + ); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/hls.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + hasHLSStarted + ? HMSThemeColors.alertErrorDefault + : HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn)), + title: HMSSubheadingText( + text: hasHLSStarted ? "Stop HLS" : "Start HLS", + textColor: hasHLSStarted + ? HMSThemeColors.alertErrorDefault + : HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ); + }), + if (Platform.isAndroid) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + // context.read().enterPipModeOnAndroid(); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Enter Pip Mode", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + if (Constant.debugMode) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + showDialog( + context: context, + builder: (_) => ShareLinkOptionDialog( + roles: meetingStore.roles, + roomID: meetingStore.hmsRoom!.id)); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/share.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Share Link", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + /** + * This has been turned OFF by default for now + * Needs some discussion around the toasts + */ + // ListTile( + // horizontalTitleGap: 2, + // onTap: () async { + // Navigator.pop(context); + // showModalBottomSheet( + // isScrollControlled: true, + // backgroundColor: themeBottomSheetColor, + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadius.circular(20), + // ), + // context: context, + // builder: (ctx) => + // const NotificationSettingsBottomSheet()); + // }, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/notification.svg", + // height: 20, + // width: 20, + // color: HMSThemeColors.onSurfaceHighEmphasis, + // ), + // title: Text( + // "Modify Notifications", + // semanticsLabel: "fl_notification_setting", + // style: GoogleFonts.inter( + // fontSize: 14, + // colorFilter: ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), + // letterSpacing: 0.25, + // fontWeight: FontWeight.w600), + // )), + if (meetingStore.localPeer?.role.permissions.endRoom ?? false) + ListTile( + horizontalTitleGap: 2, + onTap: () async { + UtilityComponents.onEndRoomPressed(context); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/end_room.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "End Room", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ) + ], + ), + ), + ); + } +} diff --git a/example/lib/common/bottom_sheets/notification_settings_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/notification_settings_bottom_sheet.dart similarity index 85% rename from example/lib/common/bottom_sheets/notification_settings_bottom_sheet.dart rename to packages/hms_room_kit/lib/src/widgets/bottom_sheets/notification_settings_bottom_sheet.dart index cca6da01d..ceb27dbf3 100644 --- a/example/lib/common/bottom_sheets/notification_settings_bottom_sheet.dart +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/notification_settings_bottom_sheet.dart @@ -1,11 +1,13 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +import 'package:google_fonts/google_fonts.dart' show GoogleFonts; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; class NotificationSettingsBottomSheet extends StatefulWidget { + const NotificationSettingsBottomSheet({super.key}); + @override State createState() => _NotificationSettingsBottomSheetState(); @@ -69,7 +71,7 @@ class _NotificationSettingsBottomSheetState children: [ IconButton( icon: SvgPicture.asset( - "assets/icons/close_button.svg", + "packages/hms_room_kit/lib/src/assets/icons/close_button.svg", width: 40, // color: defaultColor, ), @@ -82,7 +84,7 @@ class _NotificationSettingsBottomSheetState ], ), Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), + padding: const EdgeInsets.only(top: 15, bottom: 10), child: Divider( color: dividerColor, height: 5, @@ -96,9 +98,10 @@ class _NotificationSettingsBottomSheetState enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/person.svg", + "packages/hms_room_kit/lib/src/assets/icons/person.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Peer Joined", @@ -124,9 +127,10 @@ class _NotificationSettingsBottomSheetState enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/end_room.svg", + "packages/hms_room_kit/lib/src/assets/icons/end_room.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Peer Left", @@ -152,9 +156,10 @@ class _NotificationSettingsBottomSheetState enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/message_badge_off.svg", + "packages/hms_room_kit/lib/src/assets/icons/message_badge_off.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "New Message", @@ -180,8 +185,9 @@ class _NotificationSettingsBottomSheetState enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/hand_outline.svg', - color: themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg', + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Hand Raise", @@ -207,8 +213,9 @@ class _NotificationSettingsBottomSheetState enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/warning.svg', - color: themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/warning.svg', + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Error", diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/overlay_participants_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/overlay_participants_bottom_sheet.dart new file mode 100644 index 000000000..837145ea4 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/overlay_participants_bottom_sheet.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/participants_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:provider/provider.dart'; + +class OverlayParticipantsBottomSheet extends StatelessWidget { + const OverlayParticipantsBottomSheet({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return SafeArea( + child: FractionallySizedBox( + heightFactor: 0.87, + child: Padding( + padding: const EdgeInsets.only(top: 12.0, left: 16, right: 16), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Selector( + selector: (_, meetingStore) => + meetingStore.participantsInMeeting, + builder: (_, participantsInMeeting, __) { + return HMSSubheadingText( + text: "Participants ($participantsInMeeting)", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + ); + }), + const HMSCrossButton(), + ], + ), + const Expanded(child: ParticipantsBottomSheet()) + ], + ), + ), + )); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/participants_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/participants_bottom_sheet.dart new file mode 100644 index 000000000..9a64d668e --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/participants_bottom_sheet.dart @@ -0,0 +1,461 @@ +///Package imports +import 'dart:convert'; +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/src/widgets/toasts/hms_toasts_type.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/participant_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///[ParticipantsBottomSheet] is the bottom sheet that is shown when the user +///clicks on the participants button +class ParticipantsBottomSheet extends StatefulWidget { + const ParticipantsBottomSheet({super.key}); + + @override + State createState() => + _ParticipantsBottomSheetState(); +} + +class _ParticipantsBottomSheetState extends State { + Widget _kebabMenu(HMSPeer peer) { + final meetingStore = context.read(); + PeerTrackNode? peerTrackNode; + try { + peerTrackNode = meetingStore.peerTracks + .firstWhere((element) => element.uid == "${peer.peerId}mainVideo"); + } catch (e) { + peerTrackNode = null; + } + + bool mutePermission = + meetingStore.localPeer?.role.permissions.mute ?? false; + bool removePeerPermission = + meetingStore.localPeer?.role.permissions.removeOthers ?? false; + bool changeRolePermission = + meetingStore.localPeer?.role.permissions.changeRole ?? false; + + bool isHandRaised = + peer.metadata?.contains("\"isHandRaised\":true") ?? false; + bool isOnStageRole = meetingStore.getOnStageRole()?.name == peer.role.name; + bool isOnStageExpPresent = HMSRoomLayout.peerType == PeerRoleType.hlsViewer + ? HMSRoomLayout.roleLayoutData?.screens?.conferencing?.hlsLiveStreaming + ?.elements?.onStageExp != + null + : HMSRoomLayout.roleLayoutData?.screens?.conferencing?.defaultConf + ?.elements?.onStageExp != + null; + bool isOffStageRole = meetingStore.isOffStageRole(peer.role.name); + return (!peer.isLocal && + (changeRolePermission || removePeerPermission || mutePermission)) + ? PopupMenuButton( + padding: EdgeInsets.zero, + position: PopupMenuPosition.under, + color: HMSThemeColors.surfaceDefault, + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), + onSelected: (int value) async { + switch (value) { + case 1: + if (isOnStageRole) { + if (peer.metadata != null) { + String? peerMetadata = peer.metadata; + if (peerMetadata?.contains("prevRole") ?? false) { + String? previousRole = + jsonDecode(peer.metadata!)["prevRole"]; + if (previousRole != null) { + try { + HMSRole? offStageRole = meetingStore.roles + .firstWhere( + (element) => element.name == previousRole); + meetingStore.changeRoleOfPeer( + peer: peer, + roleName: offStageRole, + forceChange: true); + return; + } catch (e) { + log(e.toString()); + } + } + } + } + } + HMSRole? onStageRole = meetingStore.getOnStageRole(); + if (onStageRole != null) { + meetingStore.changeRoleOfPeer( + peer: peer, roleName: onStageRole, forceChange: false); + meetingStore.removeToast(HMSToastsType.roleChangeToast, + data: peer); + } + break; + case 2: + if (peerTrackNode?.track == null) { + return; + } + meetingStore.changeTrackState( + peerTrackNode!.track!, !peerTrackNode.track!.isMute); + break; + case 3: + if (peerTrackNode?.audioTrack == null) { + return; + } + meetingStore.changeTrackState(peerTrackNode!.audioTrack!, + !peerTrackNode.audioTrack!.isMute); + break; + case 4: + meetingStore.removePeerFromRoom(peer); + break; + default: + break; + } + }, + child: Icon( + Icons.more_vert_rounded, + size: 20, + color: HMSThemeColors.onSurfaceHighEmphasis, + ), + itemBuilder: (context) => [ + if (changeRolePermission && + isOnStageExpPresent && + ((isHandRaised && isOffStageRole) || isOnStageRole)) + PopupMenuItem( + value: 1, + child: Row(children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/change_role.svg", + width: 20, + height: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn)), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: isOnStageRole + ? "Remove from Stage" + : "Bring on Stage", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + ), + ]), + ), + if (mutePermission && + peerTrackNode != null && + !peerTrackNode.peer.isLocal && + isOnStageRole) + PopupMenuItem( + value: 2, + child: Row(children: [ + SvgPicture.asset( + peerTrackNode.track?.isMute ?? false + ? "packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + width: 20, + height: 20, + ), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: + "${peerTrackNode.track?.isMute ?? false ? "Unmute" : "Mute"} Video", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + ), + ]), + ), + if (mutePermission && + peerTrackNode != null && + !peerTrackNode.peer.isLocal && + isOnStageRole) + PopupMenuItem( + value: 3, + child: Row(children: [ + SvgPicture.asset( + peerTrackNode.audioTrack?.isMute ?? false + ? "packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + width: 20, + height: 20, + ), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: + "${peerTrackNode.audioTrack?.isMute ?? false ? "Unmute" : "Mute"} Audio", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + ), + ]), + ), + if (removePeerPermission) + PopupMenuItem( + value: 4, + child: Row(children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/peer_remove.svg", + width: 20, + height: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, + BlendMode.srcIn)), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: "Remove Participant", + textColor: HMSThemeColors.alertErrorDefault, + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + ), + ]), + ), + ]) + : const SizedBox(); + } + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Padding( + padding: const EdgeInsets.only(top: 16), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ///Need to add search bar + // Padding( + // padding: const EdgeInsets.symmetric(vertical: 16.0), + // child: Container( + // height: 40, + // width: MediaQuery.of(context).size.width - 32, + // color: HMSThemeColors.surfaceDefault, + // child: TextField(), + // ), + // ), + Selector>, int>>( + selector: (_, meetingStore) => Tuple2( + meetingStore.participantsInMeetingMap, + meetingStore.participantsInMeeting), + builder: (_, data, __) { + return ListView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: data.item1.keys.length, + itemBuilder: (context, index) { + String role = data.item1.keys.elementAt(index); + return (data.item1[role]?.isNotEmpty ?? false) + ? Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8), + child: ExpansionTile( + childrenPadding: EdgeInsets.zero, + tilePadding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 0), + shape: RoundedRectangleBorder( + side: BorderSide( + color: HMSThemeColors + .borderDefault, + width: 1), + borderRadius: + BorderRadius.circular(8)), + collapsedShape: RoundedRectangleBorder( + side: BorderSide( + color: HMSThemeColors + .borderDefault, + width: 1), + borderRadius: + BorderRadius.circular(8)), + collapsedIconColor: HMSThemeColors + .onSurfaceHighEmphasis, + iconColor: HMSThemeColors + .onSurfaceHighEmphasis, + title: HMSSubheadingText( + text: + "${data.item1.keys.elementAt(index)} (${data.item1[role]?.length})", + textColor: HMSThemeColors + .onSurfaceMediumEmphasis, + letterSpacing: 0.1, + ), + children: [ + SizedBox( + height: data.item1[role] == null + ? 0 + : (data.item1[role]!.length) * + 60, + child: Center( + child: ListView.builder( + physics: + const NeverScrollableScrollPhysics(), + itemCount: data.item1[role] + ?.length ?? + 0, + itemBuilder: + (context, peerIndex) { + ParticipantsStore + currentPeer = + data.item1[role]![ + peerIndex]; + return Padding( + padding: + const EdgeInsets.only( + top: 8.0), + child: Column( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + peerIndex != 0 + ? const SizedBox() + : Divider( + height: 5, + color: HMSThemeColors + .borderDefault, + ), + Padding( + padding: + const EdgeInsets + .fromLTRB( + 16, + 8, + 16, + 16), + child: + ListenableProvider + .value( + value: + currentPeer, + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Selector< + ParticipantsStore, + String>( + selector: (_, + participantsStore) => + participantsStore + .peer + .name, + builder: (_, + peerName, + __) { + return HMSTitleText( + text: + peerName + ((data.item1[role]![peerIndex].peer.isLocal) ? " (You)" : ""), + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + textColor: HMSThemeColors.onSurfaceHighEmphasis); + }), + Row( + children: [ + Selector< + ParticipantsStore, + int>( + selector: (_, participantsStore) => (participantsStore.peer.networkQuality?.quality ?? + -1), + builder: (_, + networkQuality, + __) { + return networkQuality != -1 && networkQuality < 3 + ? Padding( + padding: const EdgeInsets.only(right: 16.0), + child: CircleAvatar( + radius: 16, + backgroundColor: HMSThemeColors.surfaceDefault, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/network_$networkQuality.svg", + height: 16, + width: 16, + ), + ), + ) + : Container(); + }), + Selector< + ParticipantsStore, + bool>( + selector: (_, participantsStore) => (participantsStore.peer.metadata?.contains("\"isHandRaised\":true") ?? + false), + builder: (_, + isHandRaised, + __) { + return isHandRaised + ? Padding( + padding: const EdgeInsets.only(right: 16.0), + child: CircleAvatar( + radius: 16, + backgroundColor: HMSThemeColors.surfaceDefault, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg", + height: 16, + width: 16, + colorFilter: ColorFilter.mode(HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + ), + ) + : Container(); + }), + _kebabMenu( + currentPeer + .peer) + ], + ) + ], + ), + ), + ), + ], + ), + ); + }), + ), + ) + ], + ), + ), + const SizedBox( + height: 16, + ) + ], + ) + : const SizedBox(); + }); + }) + ], + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/remote_peer_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/remote_peer_bottom_sheet.dart new file mode 100644 index 000000000..9dbb83d0a --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/remote_peer_bottom_sheet.dart @@ -0,0 +1,246 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[RemotePeerBottomSheet] is a widget that is used to render the bottom sheet for remote peers +///This bottom sheet is shown when the more option button is clicked on a remote peer tile +class RemotePeerBottomSheet extends StatefulWidget { + final MeetingStore meetingStore; + final PeerTrackNode peerTrackNode; + + const RemotePeerBottomSheet( + {Key? key, required this.meetingStore, required this.peerTrackNode}) + : super(key: key); + @override + State createState() => _RemotePeerBottomSheetState(); +} + +class _RemotePeerBottomSheetState extends State { + @override + Widget build(BuildContext context) { + return FractionallySizedBox( + heightFactor: 0.35, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.only(left: 24.0, right: 24.0, top: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + ///We render a Column with the name and role of the peer + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + constraints: BoxConstraints( + maxWidth: + MediaQuery.of(context).size.width - 100), + child: HMSTitleText( + text: widget.peerTrackNode.peer.name, + textColor: HMSThemeColors.onSurfaceHighEmphasis, + letterSpacing: 0.15, + ), + ), + const SizedBox( + height: 5, + ), + HMSSubtitleText( + text: widget.peerTrackNode.peer.role.name, + textColor: HMSThemeColors.onSurfaceMediumEmphasis) + ], + ), + ], + ), + Row( + children: const [HMSCrossButton()], + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.only(top: 10, bottom: 10), + child: Divider( + color: HMSThemeColors.borderDefault, + height: 5, + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + + ///We render a list view with the following options + ///1. Pin Tile for Myself + ///2. Spotlight Tile for Everyone + ///3. Mute/Unmute Audio + ///4. Mute/Unmute Video + ///5. Volume + ///6. Remove Participant + child: ListView( + children: [ + // ListTile( + // horizontalTitleGap: 1, + // onTap: () async { + // widget.meetingStore + // .changePinTileStatus(widget.peerTrackNode); + // }, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/pin.svg", + // semanticsLabel: "fl_local_pin_tile", + // height: 20, + // width: 20, + // colorFilter: ColorFilter.mode( + // HMSThemeColors.onSurfaceHighEmphasis, + // BlendMode.srcIn), + // ), + // title: HMSSubheadingText( + // text: "Pin Tile for Myself", + // textColor: HMSThemeColors.onSurfaceHighEmphasis)), + // ListTile( + // horizontalTitleGap: 2, + // onTap: () async { + // if (widget.meetingStore.spotLightPeer?.uid == + // widget.peerTrackNode.uid) { + // widget.meetingStore.setSessionMetadataForKey( + // key: SessionStoreKeyValues.getNameFromMethod( + // SessionStoreKey.spotlight), + // metadata: null); + // return; + // } + + // ///Setting the metadata as audio trackId if it's not present + // ///then setting it as video trackId + // String? metadata = + // (widget.peerTrackNode.audioTrack == null) + // ? widget.peerTrackNode.track?.trackId + // : widget.peerTrackNode.audioTrack?.trackId; + // widget.meetingStore.setSessionMetadataForKey( + // key: SessionStoreKeyValues.getNameFromMethod( + // SessionStoreKey.spotlight), + // metadata: metadata); + // }, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/spotlight.svg", + // semanticsLabel: "fl_spotlight_local_tile", + // height: 20, + // width: 20, + // colorFilter: ColorFilter.mode( + // HMSThemeColors.onSurfaceHighEmphasis, + // BlendMode.srcIn), + // ), + // title: HMSSubheadingText( + // text: "Spotlight Tile for Everyone", + // textColor: HMSThemeColors.onSurfaceHighEmphasis)), + + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + if (widget.peerTrackNode.audioTrack != null) { + widget.meetingStore.changeTrackState( + widget.peerTrackNode.audioTrack!, + !(widget.peerTrackNode.audioTrack!.isMute)); + } + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/${(widget.peerTrackNode.audioTrack?.isMute ?? true) ? "mic_state_on" : "mic_state_off"}.svg", + semanticsLabel: "fl_mic_toggle", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + widget.peerTrackNode.audioTrack == null + ? HMSThemeColors.onSurfaceLowEmphasis + : HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: + "${(widget.peerTrackNode.audioTrack?.isMute ?? true) ? "Unmute" : "Mute"} Audio", + textColor: widget.peerTrackNode.audioTrack == null + ? HMSThemeColors.onSurfaceLowEmphasis + : HMSThemeColors.onSurfaceHighEmphasis)), + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + if (widget.peerTrackNode.track != null) { + widget.meetingStore.changeTrackState( + widget.peerTrackNode.track!, + !(widget.peerTrackNode.track!.isMute)); + } + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/${(widget.peerTrackNode.track?.isMute ?? true) ? "cam_state_on" : "cam_state_off"}.svg", + semanticsLabel: "fl_camera_toggle", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + widget.peerTrackNode.track == null + ? HMSThemeColors.onSurfaceLowEmphasis + : HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: + "${(widget.peerTrackNode.track?.isMute ?? true) ? "Unmute" : "Mute"} Video", + textColor: widget.peerTrackNode.track == null + ? HMSThemeColors.onSurfaceLowEmphasis + : HMSThemeColors.onSurfaceHighEmphasis)), + // ListTile( + // horizontalTitleGap: 2, + // onTap: () async { + // Navigator.pop(context); + // }, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/speaker_state_on.svg", + // semanticsLabel: "fl_change_volume", + // height: 20, + // width: 20, + // colorFilter: ColorFilter.mode( + // HMSThemeColors.onSurfaceHighEmphasis, + // BlendMode.srcIn), + // ), + // title: HMSSubheadingText( + // text: "Volume", + // textColor: HMSThemeColors.onSurfaceHighEmphasis)), + ListTile( + horizontalTitleGap: 2, + onTap: () async { + Navigator.pop(context); + widget.meetingStore + .removePeerFromRoom(widget.peerTrackNode.peer); + }, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/peer_remove.svg", + semanticsLabel: "fl_remove_peer", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.alertErrorDefault, BlendMode.srcIn), + ), + title: HMSSubheadingText( + text: "Remove Participant", + textColor: HMSThemeColors.alertErrorDefault)), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/start_hls_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/start_hls_bottom_sheet.dart new file mode 100644 index 000000000..2da21b150 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/start_hls_bottom_sheet.dart @@ -0,0 +1,223 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:provider/provider.dart'; + +class StartHLSBottomSheet extends StatefulWidget { + @override + const StartHLSBottomSheet({key}) : super(key: key); + + @override + State createState() => _StartHLSBottomSheetState(); +} + +class _StartHLSBottomSheetState extends State { + bool _isRecordingOn = false; + @override + Widget build(BuildContext context) { + return FractionallySizedBox( + heightFactor: 0.75, + child: Padding( + padding: const EdgeInsets.only(top: 20.0, left: 20, right: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + CircleAvatar( + radius: 18, + backgroundColor: borderColor, + child: IconButton( + icon: Icon( + Icons.arrow_back_ios_new, + size: 16, + color: hmsWhiteColor, + ), + onPressed: () { + Navigator.pop(context); + }, + ), + ), + const SizedBox( + width: 16, + ), + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HMSTitleText( + text: "START STREAMING", + textColor: themeSubHeadingColor, + fontSize: 10, + lineHeight: 16, + ), + HMSTitleText( + text: "HLS", + textColor: themeDefaultColor, + fontSize: 20, + letterSpacing: 0.15, + lineHeight: 24, + ) + ], + ) + ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 20), + child: Divider( + height: 5, + color: dividerColor, + ), + ), + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/live.svg", + colorFilter: ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), + width: 33, + ), + const SizedBox( + height: 20, + ), + HMSTitleText( + text: "HLS Streaming", + textColor: themeDefaultColor, + fontSize: 20, + letterSpacing: 0.15, + lineHeight: 24, + ), + const SizedBox( + height: 8, + ), + Text( + "Stream directly from the browser using any device with multiple hosts and real-time messaging, all within this platform.", + maxLines: 2, + style: GoogleFonts.inter( + color: themeSubHeadingColor, + fontSize: 14, + height: 20 / 14, + letterSpacing: 0.25, + fontWeight: FontWeight.w600), + ), + const SizedBox( + height: 20, + ), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: themeSurfaceColor), + height: 56, + child: Padding( + padding: + const EdgeInsets.symmetric(vertical: 7, horizontal: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/record.svg", + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), + ), + const SizedBox( + width: 10, + ), + HMSTitleText( + text: "Record the stream", + textColor: themeDefaultColor, + fontSize: 14, + letterSpacing: 0.25, + lineHeight: 20, + ) + ], + ), + Row( + children: [ + Transform.scale( + scale: 0.6, + transformHitTests: false, + child: CupertinoSwitch( + activeColor: hmsdefaultColor, + value: _isRecordingOn, + onChanged: (bool newValue) { + setState(() { + _isRecordingOn = newValue; + }); + })) + ], + ), + ], + ), + ), + ), + const SizedBox( + height: 20, + ), + HMSButton( + width: MediaQuery.of(context).size.width - 30, + onPressed: () => { + context + .read() + .startHLSStreaming(_isRecordingOn, false), + Navigator.pop(context) + }, + childWidget: Padding( + padding: const EdgeInsets.symmetric(vertical: 16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/live.svg", + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), + width: 24, + ), + const SizedBox( + width: 11, + ), + HMSTitleText( + text: "Go Live", textColor: themeDefaultColor) + ], + ), + )), + const SizedBox( + height: 20, + ), + SizedBox( + width: MediaQuery.of(context).size.width - 30, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/info.svg", + colorFilter: + ColorFilter.mode(themeSubHeadingColor, BlendMode.srcIn), + width: 15, + ), + const SizedBox( + width: 18.5, + ), + SizedBox( + width: MediaQuery.of(context).size.width - 65, + child: Text( + "If recording has to be enabled later, streaming has to be stopped first.", + style: GoogleFonts.inter( + fontSize: 12, + color: themeSubHeadingColor, + letterSpacing: 0.4, + fontWeight: FontWeight.w400), + ), + ) + ], + ), + ) + ], + ), + ), + ); + } +} diff --git a/example/lib/common/bottom_sheets/viewer_settings_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/viewer_settings_bottom_sheet.dart similarity index 79% rename from example/lib/common/bottom_sheets/viewer_settings_bottom_sheet.dart rename to packages/hms_room_kit/lib/src/widgets/bottom_sheets/viewer_settings_bottom_sheet.dart index 188af5036..62a9f5197 100644 --- a/example/lib/common/bottom_sheets/viewer_settings_bottom_sheet.dart +++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/viewer_settings_bottom_sheet.dart @@ -1,20 +1,21 @@ import 'dart:io'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/hls_aspect_ratio_option_dialog.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_components.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/participants_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_components.dart'; +import 'package:hms_room_kit/src/widgets/app_dialogs/hls_aspect_ratio_option_dialog.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/participants_bottom_sheet.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; import 'package:badges/badges.dart' as badge; import 'notification_settings_bottom_sheet.dart'; class ViewerSettingsBottomSheet extends StatefulWidget { + const ViewerSettingsBottomSheet({super.key}); + @override State createState() => _ViewerSettingsBottomSheetState(); @@ -25,7 +26,6 @@ class _ViewerSettingsBottomSheetState extends State { @override void initState() { super.initState(); - isStatsEnabled = context.read().isHLSStatsEnabled; } @override @@ -58,7 +58,7 @@ class _ViewerSettingsBottomSheetState extends State { children: [ IconButton( icon: SvgPicture.asset( - "assets/icons/close_button.svg", + "packages/hms_room_kit/lib/src/assets/icons/close_button.svg", width: 40, ), onPressed: () { @@ -70,7 +70,7 @@ class _ViewerSettingsBottomSheetState extends State { ], ), Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), + padding: const EdgeInsets.only(top: 15, bottom: 10), child: Divider( color: dividerColor, height: 5, @@ -91,7 +91,7 @@ class _ViewerSettingsBottomSheetState extends State { context: context, builder: (ctx) => ChangeNotifierProvider.value( value: context.read(), - child: ParticipantsBottomSheet()), + child: const ParticipantsBottomSheet()), ); }, child: Container( @@ -123,12 +123,13 @@ class _ViewerSettingsBottomSheetState extends State { ? 5 : 10)), child: SvgPicture.asset( - "assets/icons/participants.svg", - color: themeDefaultColor, + "packages/hms_room_kit/lib/src/assets/icons/participants.svg", + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), ), ), ), - SizedBox(height: 10), + const SizedBox(height: 10), Text( "Participants", semanticsLabel: "participants_button", @@ -150,7 +151,7 @@ class _ViewerSettingsBottomSheetState extends State { builder: (_) => AspectRatioOptionDialog( //Default mode takes the height and width of the device and //sets up the player according to device height and width - availableAspectRatios: [ + availableAspectRatios: const [ "Default", "16:9", "4:3", @@ -171,10 +172,11 @@ class _ViewerSettingsBottomSheetState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - "assets/icons/aspect_ratio.svg", - color: themeDefaultColor, + "packages/hms_room_kit/lib/src/assets/icons/aspect_ratio.svg", + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), ), - SizedBox( + const SizedBox( height: 10, ), Text( @@ -192,7 +194,7 @@ class _ViewerSettingsBottomSheetState extends State { ) ], ), - SizedBox( + const SizedBox( height: 10, ), ListTile( @@ -204,14 +206,17 @@ class _ViewerSettingsBottomSheetState extends State { placeholder: "Enter Name", prefilledValue: context.read().localPeer?.name ?? ""); - if (name.isNotEmpty) { + + if (name.isNotEmpty && mounted) { context.read().changeName(name: name); } - Navigator.pop(context); + if (mounted) { + Navigator.pop(context); + } }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/pencil.svg", + "packages/hms_room_kit/lib/src/assets/icons/pencil.svg", fit: BoxFit.scaleDown, ), title: Text( @@ -231,11 +236,13 @@ class _ViewerSettingsBottomSheetState extends State { }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/hand_outline.svg", + "packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg", fit: BoxFit.scaleDown, - color: context.read().isRaisedHand - ? errorColor - : themeDefaultColor, + colorFilter: ColorFilter.mode( + context.read().isRaisedHand + ? errorColor + : themeDefaultColor, + BlendMode.srcIn), ), title: Text( "Raise Hand", @@ -259,13 +266,15 @@ class _ViewerSettingsBottomSheetState extends State { borderRadius: BorderRadius.circular(20), ), context: context, - builder: (ctx) => NotificationSettingsBottomSheet()); + builder: (ctx) => + const NotificationSettingsBottomSheet()); }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/notification.svg", + "packages/hms_room_kit/lib/src/assets/icons/notification.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Modify Notifications", @@ -281,13 +290,14 @@ class _ViewerSettingsBottomSheetState extends State { horizontalTitleGap: 2, onTap: () async { Navigator.pop(context); - context.read().enterPipModeOnAndroid(); + // context.read().enterPipModeOnAndroid(); }, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/screen_share.svg", + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Enter Pip Mode", @@ -298,30 +308,6 @@ class _ViewerSettingsBottomSheetState extends State { letterSpacing: 0.25, fontWeight: FontWeight.w600), )), - ListTile( - horizontalTitleGap: 2, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/stats.svg", - fit: BoxFit.scaleDown, - ), - title: Text( - "Show Player Stats", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - ), - trailing: CupertinoSwitch( - activeColor: hmsdefaultColor, - value: isStatsEnabled, - onChanged: (value) => { - isStatsEnabled = value, - context.read().setHLSPlayerStats(value), - setState(() {}), - }), - ), ], ), ), diff --git a/packages/hms_room_kit/lib/src/widgets/chat_widgets/hms_empty_chat_widget.dart b/packages/hms_room_kit/lib/src/widgets/chat_widgets/hms_empty_chat_widget.dart new file mode 100644 index 000000000..1f190b52e --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/chat_widgets/hms_empty_chat_widget.dart @@ -0,0 +1,45 @@ +///Package imports +import 'package:flutter/cupertino.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +///[HMSEmptyChatWidget] is the widget that is shown when there are no messages in the webRTC chat +class HMSEmptyChatWidget extends StatelessWidget { + const HMSEmptyChatWidget({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/empty_chat.svg", + fit: BoxFit.scaleDown, + ), + const SizedBox( + height: 16, + ), + HMSTitleText( + text: "Start a conversation", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 20, + letterSpacing: 0.15, + ), + const SizedBox( + height: 8, + ), + HMSSubheadingText( + text: + "There are no messages here yet. Start a\n conversation by sending a message.", + maxLines: 2, + textAlign: TextAlign.center, + textColor: HMSThemeColors.onSurfaceMediumEmphasis) + ], + )); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/audio_tile.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/audio_tile.dart new file mode 100644 index 000000000..a84fb9cca --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/audio_tile.dart @@ -0,0 +1,80 @@ +// Package imports +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/audio_level_avatar.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/audio_mute_status.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/brb_tag.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/hand_raise.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/more_option.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/network_icon_widget.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/rtc_stats_view.dart'; +import 'package:provider/provider.dart'; + +// Project imports + +import '../peer_widgets/peer_name.dart'; + +class AudioTile extends StatelessWidget { + final double itemHeight; + final double itemWidth; + AudioTile({this.itemHeight = 200.0, this.itemWidth = 200.0, Key? key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return LayoutBuilder(builder: (context, BoxConstraints constraints) { + return Container( + key: key, + height: itemHeight + 110, + width: itemWidth, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: themeBottomSheetColor, + ), + child: Semantics( + label: "${context.read().peer.name}_audio", + child: Stack( + children: [ + const Center(child: AudioLevelAvatar()), + Positioned( + //Bottom left + bottom: 5, + left: 5, + child: Container( + decoration: BoxDecoration( + color: HMSThemeColors.backgroundDim.withOpacity(0.64), + borderRadius: BorderRadius.circular(8)), + child: Center( + child: Padding( + padding: const EdgeInsets.all(4), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + PeerName( + maxWidth: constraints.maxWidth, + ), + const SizedBox( + width: 4, + ), + const NetworkIconWidget(), + ], + ), + ), + ), + ), + ), + const HandRaise(), //bottom left + const BRBTag(), //top right + const AudioMuteStatus(), + RTCStatsView(isLocal: context.read().peer.isLocal), + const MoreOption(), //bottom center + ], + ), + ), + ); + }); + } +} diff --git a/example/lib/common/peer_widgets/peer_name.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/degrade_text.dart similarity index 52% rename from example/lib/common/peer_widgets/peer_name.dart rename to packages/hms_room_kit/lib/src/widgets/common_widgets/degrade_text.dart index c48dcc948..1c8a5fe70 100644 --- a/example/lib/common/peer_widgets/peer_name.dart +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/degrade_text.dart @@ -1,36 +1,30 @@ -//Package imports import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; import 'package:provider/provider.dart'; -import 'package:tuple/tuple.dart'; -//Project imports -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; +///This returns the text (Degraded) if the video track is degraded +class DegradeText extends StatelessWidget { + const DegradeText({Key? key}) : super(key: key); -class PeerName extends StatefulWidget { - @override - State createState() => _PeerNameState(); -} - -class _PeerNameState extends State { @override Widget build(BuildContext context) { - return Selector>( + return Selector( selector: (_, peerTrackNode) => - Tuple2(peerTrackNode.peer.name, peerTrackNode.peer.isLocal), - builder: (_, data, __) { + peerTrackNode.track?.isDegraded ?? false, + builder: (_, isDegraded, __) { return Container( constraints: BoxConstraints( maxWidth: MediaQuery.of(context).size.width * 0.3), child: Text( - "${data.item2 ? "You (" : ""}${data.item1.trim()}${data.item2 ? ")" : ""}", + isDegraded ? " (Degraded)" : "", maxLines: 1, softWrap: true, overflow: TextOverflow.ellipsis, style: GoogleFonts.inter( fontWeight: FontWeight.w400, - color: themeDefaultColor, + color: HMSThemeColors.onSurfaceLowEmphasis, fontSize: 14, letterSpacing: 0.25, height: 20 / 14), diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/degrade_tile.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/degrade_tile.dart new file mode 100644 index 000000000..433b48d15 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/degrade_tile.dart @@ -0,0 +1,84 @@ +///Dart imports +import 'dart:ui'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +//Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/name_and_network.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; + +///[DegradeTile] is used to show the degrade tile +///when the connection is poor +///The tile is shown when the track is degraded +///The tile is hidden when the track is not degraded +class DegradeTile extends StatefulWidget { + const DegradeTile({Key? key}) : super(key: key); + + @override + State createState() => _DegradeTileState(); +} + +class _DegradeTileState extends State { + @override + Widget build(BuildContext context) { + return Selector( + builder: (_, data, __) { + return Visibility( + visible: data, + child: + LayoutBuilder(builder: (context, BoxConstraints constraints) { + return Container( + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(10))), + child: Stack( + children: [ + ClipRRect( + ///Here we are using a backdrop filter to blur the background + ///when the connection is poor + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), + child: Container( + color: Colors.transparent, + alignment: Alignment.center, + child: Align( + alignment: Alignment.center, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + HMSSubheadingText( + text: "Poor connection", + textColor: + HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + letterSpacing: 0.1, + ), + const SizedBox( + height: 4, + ), + HMSSubtitleText( + text: + "The video will resume\n automatically when the\n connection improves", + textColor: + HMSThemeColors.onSurfaceHighEmphasis, + ) + ], + ), + ), + ), + ), + ), + NameAndNetwork(maxWidth: constraints.maxWidth), + ], + ), + ); + })); + }, + selector: (_, peerTrackNode) => + peerTrackNode.track?.isDegraded ?? false); + } +} diff --git a/example/lib/common/widgets/hms_button.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_button.dart similarity index 69% rename from example/lib/common/widgets/hms_button.dart rename to packages/hms_room_kit/lib/src/widgets/common_widgets/hms_button.dart index ac139bed5..c091f4fac 100644 --- a/example/lib/common/widgets/hms_button.dart +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_button.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; class HMSButton extends StatelessWidget { final double width; @@ -7,8 +7,9 @@ class HMSButton extends StatelessWidget { final Function() onPressed; final Widget childWidget; final Color? buttonBackgroundColor; - HMSButton( - {required this.width, + const HMSButton( + {super.key, + required this.width, this.shadowColor, required this.onPressed, required this.childWidget, @@ -19,12 +20,10 @@ class HMSButton extends StatelessWidget { width: width, child: ElevatedButton( style: ButtonStyle( - shadowColor: MaterialStateProperty.all( - shadowColor == null ? themeSurfaceColor : shadowColor), + shadowColor: + MaterialStateProperty.all(shadowColor ?? themeSurfaceColor), backgroundColor: MaterialStateProperty.all( - buttonBackgroundColor == null - ? hmsdefaultColor - : buttonBackgroundColor), + buttonBackgroundColor ?? hmsdefaultColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_circular_avatar.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_circular_avatar.dart new file mode 100644 index 000000000..fd2a488d7 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_circular_avatar.dart @@ -0,0 +1,49 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; + +///[HMSCircularAvatar] is a widget that is used to render the circular avatar +///It takes following parameters: +///[name] is the name of the peer +///[avatarRadius] is the radius of the avatar +///[avatarTitleFontSize] is the font size of the avatar title +///[avatarTitleTextColor] is the color of the avatar title +///[avatarTitleTextLineHeight] is the line height of the avatar title +///If the name is empty, we render the default user icon +class HMSCircularAvatar extends StatelessWidget { + final String name; + final double? avatarRadius; + final double? avatarTitleFontSize; + final Color? avatarTitleTextColor; + final double avatarTitleTextLineHeight; + const HMSCircularAvatar( + {super.key, + required this.name, + this.avatarRadius = 34, + this.avatarTitleFontSize = 34, + this.avatarTitleTextColor, + this.avatarTitleTextLineHeight = 32}); + + @override + Widget build(BuildContext context) { + return CircleAvatar( + backgroundColor: Utilities.getBackgroundColour(name), + radius: avatarRadius, + child: name.isEmpty + ? SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/user.svg', + fit: BoxFit.contain, + semanticsLabel: "fl_user_icon_label", + ) + : HMSTitleText( + text: Utilities.getAvatarTitle(name), + textColor: avatarTitleTextColor ?? + HMSThemeColors.onSurfaceHighEmphasis, + fontSize: avatarTitleFontSize, + lineHeight: avatarTitleTextLineHeight, + )); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_cross_button.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_cross_button.dart new file mode 100644 index 000000000..d4b1e6b11 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_cross_button.dart @@ -0,0 +1,28 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; + +///This renders the cross button +class HMSCrossButton extends StatelessWidget { + final Function? onPressed; + const HMSCrossButton({super.key, this.onPressed}); + + @override + Widget build(BuildContext context) { + return IconButton( + icon: Icon( + Icons.close, + color: HMSThemeColors.onSurfaceHighEmphasis, + size: 24, + ), + onPressed: () { + if (onPressed != null) { + onPressed!(); + } + Navigator.pop(context); + }, + ); + } +} diff --git a/example/lib/common/widgets/hms_dropdown.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_dropdown.dart similarity index 90% rename from example/lib/common/widgets/hms_dropdown.dart rename to packages/hms_room_kit/lib/src/widgets/common_widgets/hms_dropdown.dart index 0ad8b36a0..41380e833 100644 --- a/example/lib/common/widgets/hms_dropdown.dart +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_dropdown.dart @@ -1,6 +1,6 @@ import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; class HMSDropDown extends StatefulWidget { final Key? dropdownKey; @@ -14,8 +14,9 @@ class HMSDropDown extends StatefulWidget { final dynamic selectedValue; final Function(dynamic) updateSelectedValue; final bool isExpanded; - HMSDropDown( - {this.dropdownKey, + const HMSDropDown( + {super.key, + this.dropdownKey, this.dropdownHint, this.dropdownButton, this.buttonStyleData, @@ -62,12 +63,12 @@ class _HMSDropDownState extends State { borderRadius: BorderRadius.circular(8), color: themeSurfaceColor, border: Border.all(color: borderColor)), - offset: Offset(-10, -10), + offset: const Offset(-10, -10), ) : widget.dropdownStyleData!, iconStyleData: widget.iconStyleData == null ? IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: iconColor) : widget.iconStyleData!, buttonStyleData: widget.buttonStyleData == null @@ -80,7 +81,7 @@ class _HMSDropDownState extends State { ) : widget.buttonStyleData!, menuItemStyleData: widget.menuItemStyleData == null - ? MenuItemStyleData( + ? const MenuItemStyleData( height: 48, ) : widget.menuItemStyleData!, diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_embedded_button.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_embedded_button.dart new file mode 100644 index 000000000..89803ee88 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_embedded_button.dart @@ -0,0 +1,75 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; + +///[HMSEmbeddedButton] is a button that is used to render the buttons with embedded style +///The button takes following parameters: +///[onTap] - The function that is called when the button is pressed +///[offColor] - The color of the button when it's not active, the default color is [HMSThemeColors.surfaceBrighter] +///[onColor] - The color of the button when it's active, the default color is [HMSThemeColors.backgroundDefault] +///[isActive] - The property that determines whether the button is active or not +///[child] - The child widget of the button +///[height] - The height of the button, the default height is 40 +///[width] - The width of the button, the default width is 40 +///[enabledBorderColor] - The border color of the button when it's active, the default color is [HMSThemeColors.borderBright] +///[disabledBorderColor] - The border color of the button when it's not active, the default color is [HMSThemeColors.surfaceBrighter] +///[borderRadius] - The border radius of the button, the default value is 8 +class HMSEmbeddedButton extends StatelessWidget { + final Function() onTap; + final Color? offColor; + final Color? onColor; + final bool isActive; + final Widget child; + final double? height; + final double? width; + final Color? enabledBorderColor; + final Color? disabledBorderColor; + final double borderRadius; + + const HMSEmbeddedButton( + {super.key, + required this.onTap, + this.offColor, + this.onColor, + required this.isActive, + required this.child, + this.height = 40, + this.width = 40, + this.enabledBorderColor, + this.disabledBorderColor, + this.borderRadius = 8}); + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: Container( + width: width, + height: height, + decoration: BoxDecoration( + /** + * Here we set the border color based on whether the button is active or not + * If the button is active, we use the enabledBorderColor if it's not null + * If it's null, we use the default color which is borderBright + * + * Similarly if the button is not active, we use the disabledBorderColor if it's not null + */ + border: isActive + ? Border.all( + color: enabledBorderColor ?? HMSThemeColors.borderBright, + width: 1) + : Border.all( + color: + disabledBorderColor ?? HMSThemeColors.surfaceBrighter, + width: 1), + borderRadius: BorderRadius.all(Radius.circular(borderRadius)), + /** + * The color of icon is set using the iconColor property + * If the iconColor is not set, we use the default color which is onSurfaceHighEmphasis + */ + color: isActive + ? (onColor ?? (HMSThemeColors.backgroundDefault)) + : (offColor ?? HMSThemeColors.surfaceBrighter)), + child: child), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_left_room_screen.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_left_room_screen.dart new file mode 100644 index 000000000..3cc229724 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_left_room_screen.dart @@ -0,0 +1,166 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart' as roomlayout; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[HMSLeftRoomScreen] is the screen that is shown after a user leaves the room +class HMSLeftRoomScreen extends StatelessWidget { + final bool isEndRoomCalled; + final bool doesRoleHasStreamPermission; + const HMSLeftRoomScreen( + {super.key, + this.isEndRoomCalled = false, + this.doesRoleHasStreamPermission = false}); + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + backgroundColor: HMSThemeColors.backgroundDim, + body: Theme( + data: ThemeData( + brightness: Brightness.dark, + primaryColor: HMSThemeColors.primaryDefault, + scaffoldBackgroundColor: HMSThemeColors.backgroundDim), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + InkWell( + onTap: () => { + ///Here we reset the layout colors and pop the leave screen + HMSThemeColors.resetLayoutColors(), + Navigator.pop(context) + }, + child: CircleAvatar( + radius: 24, + backgroundColor: HMSThemeColors.surfaceDefault, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/close.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + ), + ), + ], + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/wave_hand.svg", + height: 64, + width: 64, + ), + const SizedBox( + height: 16, + ), + HMSTitleText( + ///The text is different if the room is ended by you or by someone else + ///If the room end is called, and peer role type is hlsViewer the text is "Stream ended" + ///If the room end is called, and peer role type is conferencing the text is "Session ended" + ///If you leave the room, and peer role type is hlsViewer the text is "You left the stream" + ///If tyou leave the room, and peer role type is conferencing the text is "You left the meeting" + text: (doesRoleHasStreamPermission || roomlayout.HMSRoomLayout.peerType == roomlayout.PeerRoleType.hlsViewer) + ? "You left the stream" + : isEndRoomCalled + ? "Session ended" + : "You left the meeting", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 24, + lineHeight: 32, + ), + const SizedBox( + height: 4, + ), + HMSTitleText( + text: "Have a nice day!", + textColor: HMSThemeColors.onSurfaceMediumEmphasis, + fontWeight: FontWeight.w400, + ), + const SizedBox( + height: 48, + ), + + ///If the room is ended and peer role type is hlsViewer, we don't show the text + HMSSubheadingText( + + ///The text is different if the room is ended by you or by someone else + ///If the room end is called, and peer role type is conferencing the text is "Ended by mistake?" + ///If you leave the room, the text is "Left by mistake?" + text: (doesRoleHasStreamPermission || !(isEndRoomCalled)) + ? "Left by mistake?" + : "Ended by mistake?", + textColor: HMSThemeColors.onSurfaceMediumEmphasis), + const SizedBox( + height: 16, + ), + + ElevatedButton( + style: ButtonStyle( + shadowColor: MaterialStateProperty.all( + HMSThemeColors.surfaceDim), + backgroundColor: MaterialStateProperty.all( + HMSThemeColors.primaryDefault), + shape: + MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ))), + onPressed: () => { + HMSThemeColors.resetLayoutColors(), + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (_) => HMSPrebuilt( + roomCode: Constant.meetingUrl, + options: Constant.prebuiltOptions))), + }, + child: SizedBox( + height: 48, + width: + (doesRoleHasStreamPermission || !(isEndRoomCalled)) + ? 91 + : 100, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/login.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.onPrimaryHighEmphasis, + BlendMode.srcIn), + ), + const SizedBox( + width: 8, + ), + HMSTitleText( + ///The text is different if the room is ended or not + ///If the room end is called, the text is "Restart" + ///If you leave the room, the text is "Rejoin" + text: (doesRoleHasStreamPermission || !(isEndRoomCalled)) ? "Rejoin":"Restart", + textColor: HMSThemeColors.onPrimaryHighEmphasis, + ) + ], + ), + )) + ], + )), + ], + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_listenable_button.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_listenable_button.dart new file mode 100644 index 000000000..57283b4dc --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_listenable_button.dart @@ -0,0 +1,62 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; + +///[HMSListenableButton] is a button that listens to the changes in the text field +///and changes the color of the button accordingly +///If the text field is empty, the button is disabled +///The button is disabled if the [isDisabled] property is set to true +///If the text field is not empty, the button is enabled +/// +///The button takes following parameters: +///[width] - The width of the button +///[shadowColor] - The shadow color of the button +///[onPressed] - The function that is called when the button is pressed +///[childWidget] - The child widget of the button +///[textController] - The text controller of the text field +///[isDisabled] - The property that determines whether the button is disabled or not +class HMSListenableButton extends StatelessWidget { + final double width; + final Color? shadowColor; + final Function() onPressed; + final Widget childWidget; + final TextEditingController textController; + final bool isDisabled; + + const HMSListenableButton( + {super.key, + required this.width, + this.shadowColor, + required this.onPressed, + required this.childWidget, + required this.textController, + this.isDisabled = false}); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: width, + child: ValueListenableBuilder( + valueListenable: textController, + builder: (context, value, child) { + return ElevatedButton( + style: ButtonStyle( + shadowColor: MaterialStateProperty.all( + shadowColor ?? HMSThemeColors.surfaceDim), + backgroundColor: (textController.text.isEmpty || isDisabled) + ? MaterialStateProperty.all( + HMSThemeColors.primaryDisabled) + : MaterialStateProperty.all( + HMSThemeColors.primaryDefault), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ))), + onPressed: onPressed, + child: childWidget); + }), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_loader.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_loader.dart new file mode 100644 index 000000000..292a64367 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_loader.dart @@ -0,0 +1,30 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; + +///[HMSLoader] returns a loader with the default theme +///The height of the loader is the height of the screen +///The default color of the loader is [HMSThemeColors.primaryDefault] +///The default strokeWidth(thickness) of the loader is 2 +class HMSLoader extends StatelessWidget { + final double? height; + final double? strokeWidth; + final Color? loaderColor; + const HMSLoader({super.key, this.height, this.loaderColor, this.strokeWidth}); + + @override + Widget build(BuildContext context) { + return Container( + color: HMSThemeColors.backgroundDefault, + height: height ?? (MediaQuery.of(context).size.height), + child: Center( + child: CircularProgressIndicator( + strokeWidth: strokeWidth ?? 2, + color: loaderColor ?? HMSThemeColors.primaryDefault, + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subheading_text.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subheading_text.dart new file mode 100644 index 000000000..9572b8ade --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subheading_text.dart @@ -0,0 +1,55 @@ +///Package imports +import 'package:flutter/cupertino.dart'; +import 'package:google_fonts/google_fonts.dart'; + +///[HMSSubheadingText] returns a text widget with the default theme +///The paramters and their default values are as follows: +///[text] - The text to be displayed, this is a required parameter +///[textColor] - The color of the text, this is a required parameter +///[letterSpacing] - The spacing between the letters, default value is 0.25 +///[lineHeight] - The height of the line, default value is 20 +///[fontSize] - The size of the font, default value is 14 +///[fontWeight] - The weight of the font, default value is FontWeight.w400 +///[textOverflow] - The overflow of the text, default value is TextOverflow.ellipsis +///[maxLines] - The maximum number of lines, default value is 1 +///[textOverflow] - The overflow of the text, default value is TextOverflow.ellipsis +///[maxLines] - The maximum number of lines, default value is 1 +///[textAlign] - The alignment of the text, default value is TextAlign.start +class HMSSubheadingText extends StatelessWidget { + final String text; + final Color textColor; + final double? letterSpacing; + final double? lineHeight; + final double? fontSize; + final FontWeight? fontWeight; + final TextOverflow? textOverflow; + final TextAlign? textAlign; + final int maxLines; + const HMSSubheadingText( + {Key? key, + required this.text, + required this.textColor, + this.letterSpacing = 0.25, + this.lineHeight = 20, + this.fontSize = 14, + this.maxLines = 1, + this.fontWeight = FontWeight.w400, + this.textOverflow = TextOverflow.ellipsis, + this.textAlign = TextAlign.start}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Text(text, + overflow: textOverflow, + softWrap: true, + textAlign: textAlign, + maxLines: maxLines, + style: GoogleFonts.inter( + height: lineHeight! / fontSize!, + fontSize: fontSize, + letterSpacing: letterSpacing, + color: textColor, + fontWeight: fontWeight)); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subtitle_text.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subtitle_text.dart new file mode 100644 index 000000000..d0e674e5a --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subtitle_text.dart @@ -0,0 +1,50 @@ +///Package imports +import 'package:flutter/cupertino.dart'; +import 'package:google_fonts/google_fonts.dart'; + +///[HMSSubtitleText] returns a text widget with the default theme +///The paramters and their default values are as follows: +///[text] - The text to be displayed, this is a required parameter +///[textColor] - The color of the text, this is a required parameter +///[letterSpacing] - The spacing between the letters, default value is 0.4 +///[lineHeight] - The height of the line, default value is 16 +///[fontSize] - The size of the font, default value is 14 +///[fontWeight] - The weight of the font, default value is FontWeight.w400 +///[textOverflow] - The overflow of the text, default value is TextOverflow.ellipsis +///[textAlign] - The alignment of the text, default value is TextAlign.left +class HMSSubtitleText extends StatelessWidget { + final String text; + final Color textColor; + final double? letterSpacing; + final double? lineHeight; + final double? fontSize; + final FontWeight? fontWeight; + final TextOverflow? textOverflow; + final TextAlign? textAlign; + + const HMSSubtitleText( + {Key? key, + required this.text, + required this.textColor, + this.letterSpacing = 0.4, + this.lineHeight = 16, + this.fontSize = 12, + this.fontWeight = FontWeight.w400, + this.textOverflow = TextOverflow.ellipsis, + this.textAlign}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Text(text, + overflow: textOverflow, + softWrap: true, + textAlign: textAlign, + style: GoogleFonts.inter( + height: lineHeight! / fontSize!, + fontSize: fontSize, + letterSpacing: letterSpacing, + color: textColor, + fontWeight: fontWeight)); + } +} diff --git a/example/lib/common/widgets/title_text.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_title_text.dart similarity index 56% rename from example/lib/common/widgets/title_text.dart rename to packages/hms_room_kit/lib/src/widgets/common_widgets/hms_title_text.dart index 60b0e2a8a..0a814eb16 100644 --- a/example/lib/common/widgets/title_text.dart +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_title_text.dart @@ -1,7 +1,17 @@ +///Package imports import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; -class TitleText extends StatelessWidget { +///[HMSTitleText] is a widget that is used to render the title text +///It takes following parameters: +///[text] is the text to be rendered, this is a required parameter +///[textColor] is the color of the text, this is a required parameter +///[letterSpacing] is the spacing between the letters, default value is 0.5 +///[lineHeight] is the height of the line, default value is 24 +///[fontSize] is the size of the font, default value is 16 +///[fontWeight] is the weight of the font, default value is FontWeight.w600 +///[textOverflow] is the overflow of the text, default value is TextOverflow.ellipsis +class HMSTitleText extends StatelessWidget { final String text; final Color textColor; final double? letterSpacing; @@ -10,7 +20,7 @@ class TitleText extends StatelessWidget { final FontWeight? fontWeight; final TextOverflow? textOverflow; - const TitleText( + const HMSTitleText( {Key? key, required this.text, required this.textColor, diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/inset_tile.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/inset_tile.dart new file mode 100644 index 000000000..d73311b67 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/inset_tile.dart @@ -0,0 +1,128 @@ +///Dart imports +import 'dart:async'; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:focus_detector/focus_detector.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/inset_tile_more_option.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/video_view.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/audio_mute_status.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/brb_tag.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/hand_raise.dart'; + +///[InsetTile] is a widget that is used to render the local peer tile in the inset view +class InsetTile extends StatefulWidget { + final double itemHeight; + final double itemWidth; + final ScaleType scaleType; + final double avatarRadius; + final double avatarTitleFontSize; + final double avatarTitleTextLineHeight; + final Function()? callbackFunction; + const InsetTile( + {Key? key, + this.itemHeight = 186, + this.itemWidth = 104, + this.scaleType = ScaleType.SCALE_ASPECT_FILL, + this.avatarRadius = 30, + this.avatarTitleFontSize = 24, + this.avatarTitleTextLineHeight = 32, + this.callbackFunction}) + : super(key: key); + + @override + State createState() => _InsetTileState(); +} + +class _InsetTileState extends State { + String name = ""; + GlobalKey key = GlobalKey(); + bool isButtonVisible = true; + + @override + void initState() { + super.initState(); + _autoHideOption(); + } + + ///This function is used to auto hide the more option button + void _autoHideOption() { + Timer(const Duration(seconds: 3), () { + if (isButtonVisible && mounted) { + setState(() { + isButtonVisible = !isButtonVisible; + }); + } + }); + } + + ///This function is used to toggle the visibility of the more option button + void _toggleButtonVisibility() { + if (!isButtonVisible) { + setState(() { + isButtonVisible = !isButtonVisible; + }); + _autoHideOption(); + } + } + + @override + Widget build(BuildContext context) { + return Semantics( + label: "fl_${context.read().peer.name}_video_tile", + child: FocusDetector( + onFocusLost: () { + if (mounted) { + Provider.of(context, listen: false) + .setOffScreenStatus(true); + } + }, + onFocusGained: () { + Provider.of(context, listen: false) + .setOffScreenStatus(false); + }, + key: Key(context.read().uid), + child: InkWell( + onTap: () => _toggleButtonVisibility(), + child: Container( + key: key, + height: widget.itemHeight, + width: widget.itemWidth, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: HMSThemeColors.surfaceDefault, + ), + child: Semantics( + label: "fl_${context.read().peer.name}_video_on", + child: Stack( + children: [ + IgnorePointer( + child: VideoView( + uid: context.read().uid, + scaleType: widget.scaleType, + avatarRadius: widget.avatarRadius, + avatarTitleFontSize: widget.avatarTitleFontSize, + avatarTitleTextLineHeight: + widget.avatarTitleTextLineHeight), + ), + const HandRaise(), //top left + const BRBTag(), //top left + const AudioMuteStatus(), //top right + if (isButtonVisible) + LocalPeerMoreOption( + callbackFunction: widget.callbackFunction, + ), //bottom right + ], + ), + ), + ), + )), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/leave_session_tile.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/leave_session_tile.dart new file mode 100644 index 000000000..01aaac2ca --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/leave_session_tile.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; + +class LeaveSessionTile extends StatelessWidget { + final EdgeInsets? tilePadding; + final Widget? leading; + final String? title; + final String? subTitle; + final Color? titleColor; + final Color? subTitleColor; + final Function? onTap; + final Color? tileColor; + + const LeaveSessionTile( + {super.key, + this.leading, + this.title, + this.subTitle, + this.titleColor, + this.subTitleColor, + this.onTap, + this.tileColor, + this.tilePadding}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () => { + if (onTap != null) {onTap!()} + }, + child: Container( + height: 116, + color: tileColor ?? HMSThemeColors.surfaceDim, + child: Padding( + padding: tilePadding ?? + const EdgeInsets.only(top: 24.0, left: 20, right: 20), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + leading ?? const SizedBox(), + const SizedBox( + width: 16, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + HMSTitleText( + text: title ?? "Leave", + textColor: + titleColor ?? HMSThemeColors.onSurfaceHighEmphasis, + fontSize: 20, + letterSpacing: 0.15, + ), + const SizedBox( + height: 4, + ), + SizedBox( + width: MediaQuery.of(context).size.width * 0.78, + child: HMSSubheadingText( + text: subTitle ?? + "Others will continue after you leave. You can join the session again.", + maxLines: 2, + textColor: subTitleColor ?? + HMSThemeColors.onSurfaceMediumEmphasis), + ) + ], + ) + ], + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/message_container.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/message_container.dart new file mode 100644 index 000000000..7fb2f56b5 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/message_container.dart @@ -0,0 +1,150 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/src/enums/session_store_keys.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class MessageContainer extends StatelessWidget { + final String message; + final String? senderName; + final String date; + final String role; + const MessageContainer({ + Key? key, + required this.message, + required this.senderName, + required this.date, + required this.role, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + double width = MediaQuery.of(context).size.width; + return Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + constraints: BoxConstraints( + maxWidth: role != "" ? width * 0.25 : width * 0.5), + child: HMSTitleText( + text: senderName ?? "Anonymous", + fontSize: 14, + letterSpacing: 0.1, + lineHeight: 20, + textColor: HMSThemeColors.onSurfaceHighEmphasis, + ), + ), + const SizedBox( + width: 4, + ), + HMSSubtitleText( + text: date, + textColor: HMSThemeColors.onSurfaceMediumEmphasis, + ), + ], + ), + if(HMSRoomLayout.chatData?.allowPinningMessages??true) + Row( + children: [ + if (role == "") + PopupMenuButton( + position: PopupMenuPosition.under, + color: HMSThemeColors.surfaceDefault, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8)), + itemBuilder: (context) { + return List.generate(1, (index) { + return PopupMenuItem( + height: 52, + child: Row( + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/pin.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceMediumEmphasis, + BlendMode.srcIn), + ), + const SizedBox( + width: 8, + ), + HMSTitleText( + text: "Pin Message", + fontSize: 14, + lineHeight: 20, + letterSpacing: 0.1, + textColor: + HMSThemeColors.onSurfaceHighEmphasis, + ) + ], + ), + onTap: () => context + .read() + .setSessionMetadataForKey( + key: + SessionStoreKeyValues.getNameFromMethod( + SessionStoreKey + .pinnedMessageSessionKey), + metadata: "${senderName!}: $message"), + ); + }); + }, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/more.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceMediumEmphasis, + BlendMode.srcIn), + ), + ) + ], + ) + ], + ), + const SizedBox( + height: 8, + ), + SelectableLinkify( + text: message, + onOpen: (link) async { + Uri url = Uri.parse(link.url); + if (await canLaunchUrl(url)) { + await launchUrl(url, mode: LaunchMode.externalApplication); + } + }, + options: const LinkifyOptions(humanize: false), + style: GoogleFonts.inter( + fontSize: 14.0, + color: HMSThemeColors.onSurfaceHighEmphasis, + height: 20 / 14, + letterSpacing: 0.25, + fontWeight: FontWeight.w400), + linkStyle: GoogleFonts.inter( + fontSize: 14.0, + color: HMSThemeColors.primaryDefault, + letterSpacing: 0.25, + height: 20 / 14, + fontWeight: FontWeight.w400), + ), + ], + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/more_option_item.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/more_option_item.dart new file mode 100644 index 000000000..7a5dfd018 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/more_option_item.dart @@ -0,0 +1,53 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; + +///[MoreOptionItem] is a widget that is used to render the more option items +class MoreOptionItem extends StatelessWidget { + final Function onTap; + final Widget optionIcon; + final String optionText; + final bool isActive; + final Color? optionTextColor; + const MoreOptionItem( + {super.key, + required this.onTap, + required this.optionIcon, + required this.optionText, + this.isActive = false, + this.optionTextColor}); + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () { + onTap(); + }, + child: Container( + decoration: BoxDecoration( + color: isActive + ? HMSThemeColors.surfaceBright + : HMSThemeColors.surfaceDim, + borderRadius: BorderRadius.circular(4)), + height: 60, + width: 109, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + optionIcon, + const SizedBox(height: 8), + HMSSubtitleText( + text: optionText, + textColor: + optionTextColor ?? HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + ), + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/name_and_network.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/name_and_network.dart new file mode 100644 index 000000000..cc0f5cbe1 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/name_and_network.dart @@ -0,0 +1,49 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/network_icon_widget.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/peer_name.dart'; + +///[NameAndNetwork] is a widget that is used to render the name and network of the peer +///The widget takes following parameters: +///[maxWidth] - The maximum width of the widget, this is taken to calculate the maximum width for the name to be rendered such that it doesn't overflow +class NameAndNetwork extends StatelessWidget { + final double maxWidth; + + const NameAndNetwork({Key? key, required this.maxWidth}) : super(key: key); + @override + Widget build(BuildContext context) { + return Positioned( + //Bottom left + bottom: 5, + left: 5, + child: Container( + decoration: BoxDecoration( + color: HMSThemeColors.backgroundDim.withOpacity(0.64), + borderRadius: BorderRadius.circular(8)), + child: Center( + child: Padding( + padding: + const EdgeInsets.only(left: 8.0, right: 4, top: 4, bottom: 4), + child: Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + PeerName( + maxWidth: maxWidth, + ), + const SizedBox( + width: 4, + ), + const NetworkIconWidget(), + ], + ), + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/peer_tile.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/peer_tile.dart new file mode 100644 index 000000000..91e29d913 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/peer_tile.dart @@ -0,0 +1,366 @@ +// Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:focus_detector/focus_detector.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; + +// Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/inset_tile_more_option.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/name_and_network.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/screen_share_tile_name.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/degrade_tile.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/video_view.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/audio_mute_status.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/brb_tag.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/hand_raise.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/more_option.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/rtc_stats_view.dart'; + +///This widget is used to render the peer tile +///It contains following parameters +///[scaleType] is used to set the scale type of the video view +///[islongPressEnabled] is used to enable or disable the long press on the video view +///[avatarRadius] is used to set the radius of the avatar +///[avatarTitleFontSize] is used to set the font size of the avatar title +///[avatarTitleTextLineHeight] is used to set the line height of the avatar title +///[PeerTile] is a stateful widget because it uses [FocusDetector] +class PeerTile extends StatefulWidget { + final ScaleType scaleType; + final bool islongPressEnabled; + final double avatarRadius; + final double avatarTitleFontSize; + final double avatarTitleTextLineHeight; + const PeerTile( + {Key? key, + this.scaleType = ScaleType.SCALE_ASPECT_FILL, + this.islongPressEnabled = true, + this.avatarRadius = 34, + this.avatarTitleFontSize = 34, + this.avatarTitleTextLineHeight = 40}) + : super(key: key); + + @override + State createState() => _PeerTileState(); +} + +class _PeerTileState extends State { + String name = ""; + GlobalKey key = GlobalKey(); + + @override + Widget build(BuildContext context) { + return Semantics( + label: "fl_${context.read().peer.name}_video_tile", + child: FocusDetector( + onFocusLost: () { + if (mounted) { + Provider.of(context, listen: false) + .setOffScreenStatus(true); + } + }, + onFocusGained: () { + Provider.of(context, listen: false) + .setOffScreenStatus(false); + }, + key: Key(context.read().uid), + //Here we check whether the video track is a regular + //video track or a screen share track + //We check this by checking the uid of the track + //If it contains `mainVideo` then it is a regular video track + //else it is a screen share track + child: LayoutBuilder(builder: (context, BoxConstraints constraints) { + return context.read().uid.contains("mainVideo") + ? Container( + key: key, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: HMSThemeColors.backgroundDefault, + ), + child: Semantics( + label: + "fl_${context.read().peer.name}_video_on", + child: Stack( + children: [ + VideoView( + uid: context.read().uid, + scaleType: widget.scaleType, + avatarTitleFontSize: widget.avatarTitleFontSize, + avatarRadius: widget.avatarRadius, + avatarTitleTextLineHeight: + widget.avatarTitleTextLineHeight, + ), + Semantics( + label: + "fl_${context.read().peer.name}_degraded_tile", + child: const DegradeTile(), + ), + NameAndNetwork(maxWidth: constraints.maxWidth), + const HandRaise(), //top left + const BRBTag(), //top left + const AudioMuteStatus(), //top right + context.read().peer.isLocal + ? const LocalPeerMoreOption(isInsetTile: false,) + : const MoreOption(), //bottom right + Semantics( + label: "fl_stats_on_tile", + child: RTCStatsView( + isLocal: + context.read().peer.isLocal), + ) + ], + ), + ), + ) + : Semantics( + label: + "fl_${context.read().peer.name}_screen_share_tile", + child: LayoutBuilder( + builder: (context, BoxConstraints constraints) { + return Container( + decoration: BoxDecoration( + border: Border.all( + color: HMSThemeColors.surfaceDim, width: 1.0), + color: Colors.transparent, + borderRadius: + const BorderRadius.all(Radius.circular(10))), + key: key, + child: Stack( + children: [ + VideoView( + uid: context.read().uid, + scaleType: widget.scaleType, + ), + Positioned( + top: 5, + right: 5, + child: GestureDetector( + ///This is to show the screenshare in full screen + onTap: () { + showGeneralDialog( + context: context, + transitionBuilder: (dialogContext, + animation, + secondaryAnimation, + value) { + if (mounted) { + ///Setting the screenshare context + ///in the meeting store to store the current context + ///so that we can pop the dialog from the meeting store when screenshare is stopped + context + .read() + .screenshareContext = + dialogContext; + } + + ///Here we check whether the full screen screenshare is mounted or not + return context.mounted + ? Transform.scale( + scale: animation.value, + child: Opacity( + opacity: animation.value, + child: ListenableProvider + .value( + value: context.read< + PeerTrackNode>(), + child: Scaffold( + body: SafeArea( + child: Container( + color: HMSThemeColors + .backgroundDim, + height: + MediaQuery.of( + context) + .size + .height, + width: + MediaQuery.of( + context) + .size + .width, + child: Stack( + children: [ + InteractiveViewer( + child: ListenableProvider + .value( + value: context + .read< + MeetingStore>(), + child: + VideoView( + uid: context + .read() + .uid, + scaleType: + widget.scaleType, + ), + ), + ), + Positioned( + top: 5, + right: 5, + child: + GestureDetector( + onTap: + () { + Navigator.pop( + dialogContext); + context + .read() + .screenshareContext = null; + }, + child: + Container( + height: + 40, + width: + 40, + decoration: BoxDecoration( + color: HMSThemeColors.backgroundDim.withAlpha(64), + borderRadius: BorderRadius.circular(8)), + child: + Center( + child: + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/minimize.svg", + height: 16, + width: 16, + semanticsLabel: "minimize_label", + colorFilter: ColorFilter.mode(HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + ), + ), + )), + Positioned( + //Bottom left + bottom: 5, + left: 5, + child: + Container( + decoration: BoxDecoration( + color: HMSThemeColors.backgroundDim.withOpacity( + 0.64), + borderRadius: + BorderRadius.circular(8)), + child: + Center( + child: + Padding( + padding: const EdgeInsets.only( + left: 8.0, + right: 4, + top: 4, + bottom: 4), + child: + Row( + mainAxisSize: + MainAxisSize.min, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode(HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + const SizedBox( + width: 6, + ), + ScreenshareTileName(maxWidth: constraints.maxWidth) + ], + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + )), + ) + : Container(); + }, + pageBuilder: (ctx, animation, + secondaryAnimation) { + return Container(); + }); + }, + child: Container( + height: 40, + width: 40, + decoration: BoxDecoration( + color: HMSThemeColors.backgroundDim + .withAlpha(64), + borderRadius: BorderRadius.circular(8)), + child: Center( + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/maximize.svg", + height: 16, + width: 16, + semanticsLabel: "maximize_label", + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + ), + ), + )), + Positioned( + //Bottom left + bottom: 5, + left: 5, + child: Container( + decoration: BoxDecoration( + color: HMSThemeColors.backgroundDim + .withOpacity(0.64), + borderRadius: BorderRadius.circular(8)), + child: Center( + child: Padding( + padding: const EdgeInsets.only( + left: 8.0, right: 4, top: 4, bottom: 4), + child: Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors + .onSurfaceHighEmphasis, + BlendMode.srcIn), + ), + const SizedBox( + width: 6, + ), + ScreenshareTileName( + maxWidth: constraints.maxWidth) + ], + ), + ), + ), + ), + ), + const RTCStatsView(isLocal: false), + ], + ), + ); + }), + ); + })), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/pip_view.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/pip_view.dart new file mode 100644 index 000000000..75569d211 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/pip_view.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/audio_level_avatar.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +class PipView extends StatefulWidget { + const PipView({super.key}); + + @override + State createState() => _PipViewState(); +} + +class _PipViewState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + body: Selector>( + selector: (_, meetingStore) => meetingStore.peerTracks, + builder: (_, data, __) { + return data.isNotEmpty + ? ChangeNotifierProvider.value( + key: ValueKey("${data[0].uid}video_view"), + value: data[0], + child: + Selector>( + selector: (_, peerTrackNode) => Tuple2( + peerTrackNode.track, + peerTrackNode.track?.isMute ?? true), + builder: (_, peerTrackToDisplay, __) { + return (peerTrackToDisplay.item1 == null || + peerTrackToDisplay.item2 || + peerTrackToDisplay.item1?.isDegraded == true) + ? Semantics( + label: "fl_video_off", + child: const AudioLevelAvatar()) + : HMSVideoView( + key: Key( + "${peerTrackToDisplay.item1!.trackId}pipView"), + track: peerTrackToDisplay.item1!, + scaleType: (peerTrackToDisplay.item1!.source != + "REGULAR") + ? ScaleType.SCALE_ASPECT_FIT + : ScaleType.SCALE_ASPECT_FILL, + setMirror: false); + }, + )) + : Container(); + }), + ); + } +} diff --git a/example/lib/common/widgets/share_link_option.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/share_link_option.dart similarity index 79% rename from example/lib/common/widgets/share_link_option.dart rename to packages/hms_room_kit/lib/src/widgets/common_widgets/share_link_option.dart index d26203553..c37dc097e 100644 --- a/example/lib/common/widgets/share_link_option.dart +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/share_link_option.dart @@ -5,24 +5,25 @@ import 'package:google_fonts/google_fonts.dart'; //Project imports import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_dropdown.dart'; -import 'package:hmssdk_flutter_example/common/widgets/subtitle_text.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; import 'package:collection/collection.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_dropdown.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subtitle_text.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; import 'package:share_plus/share_plus.dart'; class ShareLinkOptionDialog extends StatefulWidget { final List roles; final String roomID; - ShareLinkOptionDialog({required this.roles, required this.roomID}); + const ShareLinkOptionDialog( + {super.key, required this.roles, required this.roomID}); @override - _ShareLinkOptionDialogState createState() => _ShareLinkOptionDialogState(); + ShareLinkOptionDialogState createState() => ShareLinkOptionDialogState(); } -class _ShareLinkOptionDialogState extends State { +class ShareLinkOptionDialogState extends State { late bool askPermission; HMSRole? valueChoose; @@ -40,23 +41,24 @@ class _ShareLinkOptionDialogState extends State { Widget build(BuildContext context) { return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - actionsPadding: EdgeInsets.only(left: 20, right: 20, bottom: 10), + actionsPadding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), backgroundColor: themeBottomSheetColor, - insetPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 8), - contentPadding: EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), + insetPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + contentPadding: + const EdgeInsets.only(top: 20, bottom: 15, left: 24, right: 24), title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TitleText( + HMSTitleText( text: "Share Link", fontSize: 20, letterSpacing: 0.15, textColor: themeDefaultColor, ), - SizedBox( + const SizedBox( height: 8, ), - SubtitleText( + HMSSubtitleText( text: "Generate Share Link for the following role:", textColor: themeSubHeadingColor), ], @@ -66,7 +68,7 @@ class _ShareLinkOptionDialogState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - padding: EdgeInsets.only(left: 10, right: 5), + padding: const EdgeInsets.only(left: 10, right: 5), decoration: BoxDecoration( color: themeSurfaceColor, borderRadius: BorderRadius.circular(10.0), @@ -79,23 +81,23 @@ class _ShareLinkOptionDialogState extends State { ...widget.roles .sortedBy((element) => element.priority.toString()) .map((role) => DropdownMenuItem( - child: TitleText( + value: role, + child: HMSTitleText( text: role.name, textColor: themeDefaultColor, fontWeight: FontWeight.w400, ), - value: role, )) .toList(), ], iconStyleData: IconStyleData( - icon: Icon(Icons.keyboard_arrow_down), + icon: const Icon(Icons.keyboard_arrow_down), iconEnabledColor: themeDefaultColor, ), selectedValue: valueChoose, updateSelectedValue: _updateDropDownValue)), ), - SizedBox( + const SizedBox( height: 15, ), ], @@ -111,7 +113,7 @@ class _ShareLinkOptionDialogState extends State { MaterialStateProperty.all(themeBottomSheetColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide( + side: const BorderSide( width: 1, color: Color.fromRGBO(107, 125, 153, 1)), borderRadius: BorderRadius.circular(8.0), ))), @@ -143,16 +145,13 @@ class _ShareLinkOptionDialogState extends State { String meetingLink = await Utilities.getStringData(key: "meetingLink"); List codeDomain; - if (meetingLink.contains("/meeting/")) + if (meetingLink.contains("/meeting/")) { codeDomain = meetingLink.split("/meeting/"); - else + } else { codeDomain = meetingLink.split("/preview/"); - print(meetingLink); - meetingLink = codeDomain[0] + - "/" + - widget.roomID + - "/" + - valueChoose!.name; + } + meetingLink = + "${codeDomain[0]}/${widget.roomID}/${valueChoose!.name}"; await Share.share( meetingLink, subject: "Join Meet", diff --git a/example/lib/common/widgets/video_view.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/video_view.dart similarity index 53% rename from example/lib/common/widgets/video_view.dart rename to packages/hms_room_kit/lib/src/widgets/common_widgets/video_view.dart index b9ddb4199..9bcc19af0 100644 --- a/example/lib/common/widgets/video_view.dart +++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/video_view.dart @@ -1,32 +1,48 @@ //Package imports import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/peer_widgets/audio_level_avatar.dart'; import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; //Project imports -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/audio_level_avatar.dart'; +///[VideoView] is a widget that renders the video of a peer +///It renders the video of the peer if the peer is not muted +///If the peer is muted it renders the avatar +///If the peer is offscreen it renders the avatar +/// +///It takes following parameters +///[matchParent] - If true, the video will take the size of the parent widget +///[viewSize] - The size of the video +///[setMirror] - If true, the video will be mirrored +///[scaleType] - The scale type of the video +///[uid] - The uid of the peer +///[avatarRadius] - The radius of the avatar +///[avatarTitleFontSize] - The font size of the avatar title +///[avatarTitleTextLineHeight] - The line height of the avatar title class VideoView extends StatefulWidget { - final matchParent; + final bool matchParent; final Size? viewSize; final bool setMirror; - final double itemHeight; final ScaleType scaleType; - final double itemWidth; final String uid; - VideoView( + final double avatarRadius; + final double avatarTitleFontSize; + final double avatarTitleTextLineHeight; + const VideoView( {Key? key, this.viewSize, this.setMirror = false, this.matchParent = true, - this.itemHeight = 200, - this.itemWidth = 200, required this.uid, - this.scaleType = ScaleType.SCALE_ASPECT_FILL}) + this.scaleType = ScaleType.SCALE_ASPECT_FILL, + this.avatarRadius = 34, + this.avatarTitleFontSize = 34, + this.avatarTitleTextLineHeight = 32}) : super(key: key); @override @@ -36,14 +52,31 @@ class VideoView extends StatefulWidget { class _VideoViewState extends State { @override Widget build(BuildContext context) { + ///We use the [Selector] widget to rebuild the widget when the peer track node changes return Selector>( builder: (_, data, __) { + ///If the peer track node is null or the peer is muted or the peer is offscreen + ///We render the avatar if ((data.item1 == null) || data.item2 || data.item3) { - return Semantics(label: "fl_video_off", child: AudioLevelAvatar()); + return Semantics( + label: "fl_video_off", + child: AudioLevelAvatar( + avatarRadius: widget.avatarRadius, + avatarTitleFontSize: widget.avatarTitleFontSize, + avatarTitleTextLineHeight: widget.avatarTitleTextLineHeight, + )); } else { + ///If the peer is not muted and not offscreen + ///We render the video + /// + ///If we the video track source is not REGULAR i.e. it is a screen share or someother video track + ///we set the scaletype as FIT + /// + ///If the video track source is REGULAR i.e. it is a camera video track + ///we set the scaletype as FILL return (data.item1?.source != "REGULAR") ? ClipRRect( - borderRadius: BorderRadius.all(Radius.circular(10)), + borderRadius: const BorderRadius.all(Radius.circular(10)), child: InteractiveViewer( // [key] property can be used to forcefully rebuild the video widget by setting a unique key everytime. // Similarly to avoid rebuilding the key should be kept the same for particular HMSVideoView. @@ -58,22 +91,17 @@ class _VideoViewState extends State { ), ) : ClipRRect( - borderRadius: BorderRadius.all( + borderRadius: const BorderRadius.all( Radius.circular(10), ), - child: Container( - height: widget.itemHeight, - width: widget.itemWidth, + child: SizedBox( // [key] property can be used to forcefully rebuild the video widget by setting a unique key everytime. // Similarly to avoid rebuilding the key should be kept the same for particular HMSVideoView. - child: HMSVideoView( key: Key(data.item1!.trackId), scaleType: ScaleType.SCALE_ASPECT_FILL, track: data.item1!, - setMirror: data.item1.runtimeType == HMSLocalVideoTrack - ? context.read().isMirror - : false, + setMirror: data.item1.runtimeType == HMSLocalVideoTrack, disableAutoSimulcastLayerSelect: !(context.read().isAutoSimulcast), ), diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/five_tile_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/five_tile_layout.dart new file mode 100644 index 000000000..acd1d9a9f --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/five_tile_layout.dart @@ -0,0 +1,80 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; + +///This widget renders five tiles on a page +///The five tiles are rendered in a 2x2 grid with fifth tile at the bottom center +///The tiles look like this +/// ╔═══════â•Ļ═══════╗ +/// ║ 0 ║ 1 ║ +/// ╠═══════â•Ŧ═══════â•Ŗ +/// ║ 2 ║ 3 ║ +/// ╠═══════â•Ŧ═══════â•Ŗ +/// ║ 4 ║ +/// ╚═══════╝ +class FiveTileLayout extends StatelessWidget { + final int startIndex; + final List peerTracks; + const FiveTileLayout( + {super.key, required this.peerTracks, required this.startIndex}); + + @override + Widget build(BuildContext context) { + ///Here we render two rows with two tiles in each row and last a center tile + ///The first row contains the tiles with index [startIndex] and [startIndex+1] + ///The second row contains the tiles with index [startIndex+2] and [startIndex+3] + ///The third row contains the center tile with index [startIndex+4] + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: startIndex, peerTracks: peerTracks), + ), + const SizedBox( + width: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 1, peerTracks: peerTracks), + ), + ]), + ), + const SizedBox( + height: 2, + ), + Expanded( + child: Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: startIndex + 2, peerTracks: peerTracks), + ), + const SizedBox( + width: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 3, peerTracks: peerTracks), + ), + ]), + ), + const SizedBox( + height: 2, + ), + Expanded( + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: MediaQuery.of(context).size.width / 4), + child: ListenablePeerWidget( + index: startIndex + 4, peerTracks: peerTracks), + ), + ), + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/four_tile_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/four_tile_layout.dart new file mode 100644 index 000000000..345dbc3c0 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/four_tile_layout.dart @@ -0,0 +1,66 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; + +///This widget renders four tiles on a page +///The four tiles are rendered in a 2x2 grid +///The tiles look like this +// ╔═══════â•Ļ═══════╗ +// ║ 0 ║ 1 ║ +// ╠═══════â•Ŧ═══════â•Ŗ +// ║ 2 ║ 3 ║ +// ╚═══════╩═══════╝ +class FourTileLayout extends StatelessWidget { + final int startIndex; + final List peerTracks; + const FourTileLayout( + {super.key, required this.peerTracks, required this.startIndex}); + + @override + Widget build(BuildContext context) { + ///Here we render two rows with two tiles in each row + ///The first row contains the tiles with index [startIndex] and [startIndex+1] + ///The second row contains the tiles with index [startIndex+2] and [startIndex+3] + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: startIndex, peerTracks: peerTracks), + ), + const SizedBox( + width: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 1, peerTracks: peerTracks), + ), + ]), + ), + const SizedBox( + height: 2, + ), + Expanded( + child: Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: startIndex + 2, peerTracks: peerTracks), + ), + const SizedBox( + width: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 3, peerTracks: peerTracks), + ), + ]), + ), + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/grid_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/grid_layout.dart new file mode 100644 index 000000000..5d28da444 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/grid_layout.dart @@ -0,0 +1,92 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/five_tile_layout.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/four_tile_layout.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/six_tile_layout.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/three_tile_layout.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/two_tile_layout.dart'; + +///This renders the tile layout for different peers based on the number of peers in the room +class GridLayout extends StatefulWidget { + final int numberOfTiles; + final int index; + final List peerTracks; + + const GridLayout( + {super.key, + required this.numberOfTiles, + required this.index, + required this.peerTracks}); + + @override + State createState() => _GridLayoutState(); +} + +class _GridLayoutState extends State { + int tilesToBeRendered = 0; + int tileStartingIndex = 0; + + @override + Widget build(BuildContext context) { + ///Here we check how many tiles we need to render + ///So if still there are 6 or more tiles to be rendered then we render 6 tiles + ///else we render the remaining tiles + /// + ///This is done to decide which layout we need to render + if ((6 * (widget.index + 1) > widget.numberOfTiles)) { + tilesToBeRendered = widget.numberOfTiles - 6 * (widget.index); + } else { + tilesToBeRendered = 6; + } + + ///This contains the starting index of tile to be rendered + tileStartingIndex = 6 * widget.index; + + ///Here we render the tile layout based on how many tiles we need to render + ///If we need to render 1 tile then we render the [ListenablePeerWidget] + ///If we need to render 2 tiles then we render the [TwoTileLayout] + ///If we need to render 3 tiles then we render the [ThreeTileLayout] + ///If we need to render 4 tiles then we render the [FourTileLayout] + ///If we need to render 5 tiles then we render the [FiveTileLayout] + ///If we need to render 6 tiles then we render the [SixTileLayout] + if (tilesToBeRendered == 6) { + return SixTileLayout( + peerTracks: widget.peerTracks, + startIndex: tileStartingIndex, + ); + } + switch (tilesToBeRendered % 6) { + case 1: + return ListenablePeerWidget( + peerTracks: widget.peerTracks, + index: tileStartingIndex, + ); + + case 2: + return TwoTileLayout( + peerTracks: widget.peerTracks, + startIndex: tileStartingIndex, + ); + + case 3: + return ThreeTileLayout( + peerTracks: widget.peerTracks, + startIndex: tileStartingIndex, + ); + + case 4: + return FourTileLayout( + peerTracks: widget.peerTracks, startIndex: tileStartingIndex); + + case 5: + return FiveTileLayout( + peerTracks: widget.peerTracks, startIndex: tileStartingIndex); + } + return SixTileLayout( + peerTracks: widget.peerTracks, startIndex: tileStartingIndex); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/listenable_peer_widget.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/listenable_peer_widget.dart new file mode 100644 index 000000000..557f4a512 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/listenable_peer_widget.dart @@ -0,0 +1,32 @@ +///Package imports +import 'package:flutter/cupertino.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/peer_tile.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///This widget is used to render the peer tile +class ListenablePeerWidget extends StatelessWidget { + final int index; + final List peerTracks; + final ScaleType scaleType; + + const ListenablePeerWidget( + {super.key, + required this.index, + required this.peerTracks, + this.scaleType = ScaleType.SCALE_ASPECT_FILL}); + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider.value( + key: ValueKey("${peerTracks[index].uid}video_view"), + value: peerTracks[index], + child: PeerTile( + key: ValueKey("${peerTracks[index].uid}audio_view"), + scaleType: scaleType, + )); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/screen_share_grid_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/screen_share_grid_layout.dart new file mode 100644 index 000000000..b85c5796a --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/screen_share_grid_layout.dart @@ -0,0 +1,155 @@ +///Package imports +import 'package:dots_indicator/dots_indicator.dart'; +import 'package:flutter/material.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/side_by_side_layout.dart'; + +///This renders the tile layout when a remote peer is sharing the screen +/// +///So we show the screenshare in the top half of the screen +///and the other peers in the bottom half of the screen with two peers or a single peer in a scrollable page +class ScreenshareGridLayout extends StatefulWidget { + final List peerTracks; + final int screenshareCount; + const ScreenshareGridLayout( + {super.key, required this.peerTracks, required this.screenshareCount}); + + @override + State createState() => _ScreenshareGridLayoutState(); +} + +class _ScreenshareGridLayoutState extends State { + int tilesToBeRendered = 0; + int tileStartingIndex = 0; + + @override + Widget build(BuildContext context) { + ///Here we render screenshare and peer tiles in a Column + return Column( + children: [ + ///This renders the screenshare at the top half of the screen + Flexible( + flex: 2, + child: Column( + children: [ + Expanded( + child: PageView.builder( + physics: const PageScrollPhysics(), + allowImplicitScrolling: true, + itemCount: widget.screenshareCount, + onPageChanged: (newPage) { + context + .read() + .setCurrentScreenSharePage(newPage); + }, + + ///Setting the scale type for screenshare widget as fit + itemBuilder: (context, index) { + return ListenablePeerWidget( + peerTracks: widget.peerTracks, + index: index, + scaleType: ScaleType.SCALE_ASPECT_FIT, + ); + }, + ), + ), + + ///This renders the dots at the bottom of the grid view + ///This is only rendered if the number of pages is greater than 1 + ///The number of dots is equal to [number of screens being shared] + ///The active dot is the current page + ///The inactive dots are the pages other than the current page + if (widget.screenshareCount > 1) + Selector( + selector: (_, meetingStore) => + meetingStore.currentScreenSharePage, + builder: (_, currentScreenSharePage, __) { + return Padding( + padding: const EdgeInsets.only(top: 8.0), + child: DotsIndicator( + dotsCount: widget.screenshareCount, + position: currentScreenSharePage, + decorator: DotsDecorator( + activeColor: + HMSThemeColors.onSurfaceHighEmphasis, + color: HMSThemeColors.onSurfaceLowEmphasis), + ), + ); + }) + ], + )), + + ///This renders the peer tiles at the bottom half of the screen + Flexible( + flex: 1, + child: Padding( + padding: const EdgeInsets.only(top: 8.0), + child: Column( + children: [ + Expanded( + child: PageView.builder( + physics: const PageScrollPhysics(), + allowImplicitScrolling: true, + onPageChanged: (newPage) { + context.read().setCurrentPage(newPage); + }, + itemCount: (((widget.peerTracks.length - + widget.screenshareCount) ~/ + 2) + + (widget.peerTracks.length - widget.screenshareCount) % + 2), + itemBuilder: (context, index) { + return SideBySideLayout( + numberOfTiles: widget.peerTracks.length - + widget.screenshareCount, + index: index, + peerTracks: widget.peerTracks + .sublist(widget.screenshareCount)); + }, + ), + ), + + ///This renders the dots at the bottom of the grid view + ///This is only rendered if the number of pages is greater than 1 + ///The number of dots is equal to [number of peers/2 and if number of peers is not divisible by 2 then we add 1 else we add 0] + ///The active dot is the current page + ///The inactive dots are the pages other than the current page + if (((widget.peerTracks.length - widget.screenshareCount) ~/ + 2 + + (widget.peerTracks.length - widget.screenshareCount) % + 2) > + 1) + Selector( + selector: (_, meetingStore) => meetingStore.currentPage, + builder: (_, currentPage, __) { + return Padding( + padding: const EdgeInsets.only(top: 8.0), + child: DotsIndicator( + dotsCount: (((widget.peerTracks.length - + widget.screenshareCount) ~/ + 2) + + (widget.peerTracks.length - + widget.screenshareCount) % + 2), + position: currentPage, + decorator: DotsDecorator( + activeColor: + HMSThemeColors.onSurfaceHighEmphasis, + color: HMSThemeColors.onSurfaceLowEmphasis), + ), + ); + }) + ], + ), + )) + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/side_by_side_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/side_by_side_layout.dart new file mode 100644 index 000000000..7b2c05709 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/side_by_side_layout.dart @@ -0,0 +1,65 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; + +///This widget renders the side by side layout +///The side by side layout renders two peers in a row +///If there are more than two peers then it renders two peers in a scrollable Pageview +///If there is only one peer then it renders the peer in the center of the screen +class SideBySideLayout extends StatelessWidget { + final int numberOfTiles; + final int index; + final List peerTracks; + const SideBySideLayout( + {super.key, + required this.numberOfTiles, + required this.index, + required this.peerTracks}); + + @override + Widget build(BuildContext context) { + int tilesToBeRendered = 0; + int tileStartingIndex = 0; + + ///Here we check how many tiles we need to render + ///So if still there are 2 or more tiles to be rendered then we render 2 tiles + ///else we render a single tile + /// + ///This is done to decide which layout we need to render + if (2 * (index + 1) > numberOfTiles) { + tilesToBeRendered = numberOfTiles - 2 * (index); + } else { + tilesToBeRendered = 2; + } + + ///This contains the starting index of tile to be rendered + tileStartingIndex = 2 * index; + + ///Here we render the tile layout based on how many tiles we need to render + ///If we need to render 1 tile then we render the [ListenablePeerWidget] + ///If we need to render 2 tiles then we render the two tiles in a row + return tilesToBeRendered == 2 + ? Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: tileStartingIndex, peerTracks: peerTracks), + ), + const SizedBox( + width: 4, + ), + Expanded( + child: ListenablePeerWidget( + index: tileStartingIndex + 1, peerTracks: peerTracks), + ) + ]) + : Padding( + padding: EdgeInsets.symmetric( + horizontal: MediaQuery.of(context).size.width / 4), + child: ListenablePeerWidget( + index: tileStartingIndex, peerTracks: peerTracks), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/six_tile_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/six_tile_layout.dart new file mode 100644 index 000000000..9f49ca271 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/six_tile_layout.dart @@ -0,0 +1,87 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; + +///This widget renders six tiles on a page +///The six tiles are rendered in a 3x2 grid +///The tiles look like this +// ╔═══════â•Ļ═══════╗ +// ║ 0 ║ 1 ║ +// ╠═══════â•Ŧ═══════â•Ŗ +// ║ 2 ║ 3 ║ +// ╠═══════â•Ŧ═══════â•Ŗ +// ║ 4 ║ 5 ║ +// ╚═══════╩═══════╝ +class SixTileLayout extends StatelessWidget { + final int startIndex; + final List peerTracks; + const SixTileLayout( + {super.key, required this.peerTracks, required this.startIndex}); + + @override + Widget build(BuildContext context) { + ///Here we render three rows with two tiles in each row + ///The first row contains the tiles with index [startIndex] and [startIndex+1] + ///The second row contains the tiles with index [startIndex+2] and [startIndex+3] + ///The third row contains the tiles with index [startIndex+4] and [startIndex+5] + ///The [ListenablePeerWidget] is used to render the tile + return Column( + children: [ + Expanded( + child: Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: startIndex, peerTracks: peerTracks), + ), + const SizedBox( + width: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 1, peerTracks: peerTracks), + ) + ]), + ), + const SizedBox( + height: 2, + ), + Expanded( + child: Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: startIndex + 2, peerTracks: peerTracks), + ), + const SizedBox( + width: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 3, peerTracks: peerTracks), + ) + ]), + ), + const SizedBox( + height: 2, + ), + Expanded( + child: Row(children: [ + Expanded( + child: ListenablePeerWidget( + index: startIndex + 4, peerTracks: peerTracks), + ), + const SizedBox( + width: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 5, peerTracks: peerTracks), + ) + ]), + ), + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/three_tile_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/three_tile_layout.dart new file mode 100644 index 000000000..da90efba9 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/three_tile_layout.dart @@ -0,0 +1,52 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; + +///This widget renders three tiles on a page +///The three tiles are rendered in a 3x1 grid +///The tiles look like this +/// ┌─────┐ +/// │ 0 │ +/// ├─────┤ +/// │ 1 │ +/// ├─────┤ +/// │ 2 │ +/// └─────┘ +class ThreeTileLayout extends StatelessWidget { + final int startIndex; + final List peerTracks; + const ThreeTileLayout( + {super.key, required this.peerTracks, required this.startIndex}); + + @override + Widget build(BuildContext context) { + ///Here we render three rows with one tile in each row + ///The first row contains the tile with index [startIndex] + ///The second row contains the tile with index [startIndex+1] + ///The third row contains the tile with index [startIndex+2] + return Column( + children: [ + Expanded( + child: + ListenablePeerWidget(index: startIndex, peerTracks: peerTracks), + ), + const SizedBox( + height: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 1, peerTracks: peerTracks)), + const SizedBox( + height: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 2, peerTracks: peerTracks), + ), + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/grid_layouts/two_tile_layout.dart b/packages/hms_room_kit/lib/src/widgets/grid_layouts/two_tile_layout.dart new file mode 100644 index 000000000..6c8de446e --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/grid_layouts/two_tile_layout.dart @@ -0,0 +1,45 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; + +///This widget renders two tiles on a page +///The two tiles are rendered in a 2x1 grid +///The tiles look like this +/// ┌─────┐ +/// │ 0 │ +/// ├─────┤ +/// │ 1 │ +/// └─────┘ +class TwoTileLayout extends StatelessWidget { + final int startIndex; + final List peerTracks; + + const TwoTileLayout( + {super.key, required this.peerTracks, required this.startIndex}); + + @override + Widget build(BuildContext context) { + ///Here we render two rows with one tile in each row + ///The first row contains the tile with index [startIndex] + ///The second row contains the tile with index [startIndex+1] + return Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Expanded( + child: + ListenablePeerWidget(index: startIndex, peerTracks: peerTracks), + ), + const SizedBox( + height: 2, + ), + Expanded( + child: ListenablePeerWidget( + index: startIndex + 1, peerTracks: peerTracks), + ), + ], + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/hms_buttons/hms_back_button.dart b/packages/hms_room_kit/lib/src/widgets/hms_buttons/hms_back_button.dart new file mode 100644 index 000000000..517ab196b --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/hms_buttons/hms_back_button.dart @@ -0,0 +1,30 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; + +///[HMSBackButton] is a button that is used to navigate back +class HMSBackButton extends StatelessWidget { + final Function() onPressed; + + const HMSBackButton({super.key, required this.onPressed}); + + @override + Widget build(BuildContext context) { + return CircleAvatar( + radius: 18, + backgroundColor: HMSThemeColors.surfaceDefault, + child: IconButton( + icon: Icon( + Icons.arrow_back_ios_new, + size: 16, + color: HMSThemeColors.onSurfaceHighEmphasis, + ), + onPressed: () { + onPressed(); + }, + ), + ); + } +} diff --git a/example/lib/meeting_modes/audio_mode.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/audio_mode.dart similarity index 88% rename from example/lib/meeting_modes/audio_mode.dart rename to packages/hms_room_kit/lib/src/widgets/meeting_modes/audio_mode.dart index 8be759264..6f4538928 100644 --- a/example/lib/meeting_modes/audio_mode.dart +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/audio_mode.dart @@ -1,12 +1,12 @@ //Package imports import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/widgets/audio_tile.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/audio_tile.dart'; import 'package:provider/provider.dart'; //Project imports import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; //Widget for Audio View Widget audioMode( @@ -19,10 +19,10 @@ Widget audioMode( itemCount: itemCount, itemBuilder: (context, index) { return ChangeNotifierProvider.value( - key: ValueKey(peerTracks[index].uid + "audio_view"), + key: ValueKey("${peerTracks[index].uid}audio_view"), value: peerTracks[index], child: AudioTile( - key: ValueKey(peerTracks[index].uid + "audio_tile"), + key: ValueKey("${peerTracks[index].uid}audio_tile"), itemHeight: size.height, itemWidth: size.width, )); @@ -32,7 +32,7 @@ Widget audioMode( pattern: isPortrait ? portraitPattern(peerTracks, size, context) : landscapePattern(itemCount, size, context)), - physics: PageScrollPhysics(), + physics: const PageScrollPhysics(), scrollDirection: Axis.horizontal, ); } diff --git a/example/lib/meeting_modes/basic_grid_view.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/basic_grid_view.dart similarity index 74% rename from example/lib/meeting_modes/basic_grid_view.dart rename to packages/hms_room_kit/lib/src/widgets/meeting_modes/basic_grid_view.dart index ec947add0..e14d51e21 100644 --- a/example/lib/meeting_modes/basic_grid_view.dart +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/basic_grid_view.dart @@ -2,18 +2,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/peer_tile.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/peer_tile.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; //Project imports import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; Widget basicGridView( {required List peerTracks, @@ -26,28 +27,31 @@ Widget basicGridView( shrinkWrap: true, itemCount: itemCount, scrollDirection: Axis.horizontal, - physics: PageScrollPhysics(), + physics: const PageScrollPhysics(), itemBuilder: (context, index) { if (peerTracks[index].track != null && peerTracks[index].track?.source != "REGULAR") { return ChangeNotifierProvider.value( - key: ValueKey(peerTracks[index].uid + "video_view"), + key: ValueKey("${peerTracks[index].uid}video_view"), value: peerTracks[index], child: peerTracks[index].peer.isLocal ? Container( - margin: EdgeInsets.all(2), + margin: const EdgeInsets.all(2), decoration: BoxDecoration( + color: HMSThemeColors.surfaceDim, border: Border.all(color: Colors.grey, width: 1.0), - borderRadius: BorderRadius.all(Radius.circular(10))), + borderRadius: + const BorderRadius.all(Radius.circular(10))), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - "assets/icons/screen_share.svg", - color: Colors.white, + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + colorFilter: const ColorFilter.mode( + Colors.white, BlendMode.srcIn), height: 55.2, ), - SizedBox( + const SizedBox( height: 18, ), Text("You are sharing your screen", @@ -59,7 +63,7 @@ Widget basicGridView( height: 24 / 20, fontWeight: FontWeight.w600, )), - SizedBox( + const SizedBox( height: 40, ), HMSButton( @@ -72,11 +76,12 @@ Widget basicGridView( padding: const EdgeInsets.symmetric(vertical: 12), child: Row( children: [ - SvgPicture.asset("assets/icons/close.svg"), - SizedBox( + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/close.svg"), + const SizedBox( width: 10, ), - TitleText( + HMSTitleText( text: "Stop Screenshare", textColor: enabledTextColor) ], @@ -87,20 +92,20 @@ Widget basicGridView( ) : PeerTile( islongPressEnabled: false, - key: Key(peerTracks[index].uid + "video_tile"), + key: Key("${peerTracks[index].uid}video_tile"), scaleType: ScaleType.SCALE_ASPECT_FIT, - itemHeight: size.height, - itemWidth: size.width, + // itemHeight: size.height, + // itemWidth: size.width, ), ); } return ChangeNotifierProvider.value( - key: ValueKey(peerTracks[index].uid + "video_view"), + key: ValueKey("${peerTracks[index].uid}video_view"), value: peerTracks[index], child: PeerTile( - key: ValueKey(peerTracks[index].uid + "audio_view"), - itemHeight: size.height, - itemWidth: size.width, + key: ValueKey("${peerTracks[index].uid}audio_view"), + // itemHeight: size.height, + // itemWidth: size.width, )); }, gridDelegate: SliverStairedGridDelegate( diff --git a/packages/hms_room_kit/lib/src/widgets/meeting_modes/custom_grid_view.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/custom_grid_view.dart new file mode 100644 index 000000000..9d236c242 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/custom_grid_view.dart @@ -0,0 +1,314 @@ +///Package imports +import 'package:dots_indicator/dots_indicator.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/peer_tile.dart'; + +///This widget renders the grid view of the meeting screen without inset tile +///The grid view is rendered based on the number of peers in the meeting +///The grid view is rendered using the [PageView] widget +class CustomGridView extends StatefulWidget { + const CustomGridView({super.key}); + + @override + State createState() => _CustomGridViewState(); +} + +class _CustomGridViewState extends State { + PageController controller = PageController(); + int tileNumber = 0; + + @override + Widget build(BuildContext context) { + ///The grid view is rendered using the [PageView] widget + ///The number of pages in the [PageView] is equal to [numberOfPeers/6 + (if number of peers is not divisible by 6 then we add 1 else we add 0)] + return Selector, int, int>>( + selector: (_, meetingStore) => Tuple3(meetingStore.peerTracks, + meetingStore.peerTracks.length, meetingStore.currentPage), + builder: (_, data, __) { + int pageCount = (data.item2 ~/ 6) + (data.item2 % 6 == 0 ? 0 : 1); + return Column( + children: [ + Expanded( + child: PageView.builder( + clipBehavior: Clip.none, + physics: const PageScrollPhysics(), + scrollDirection: Axis.horizontal, + controller: controller, + allowImplicitScrolling: true, + itemCount: pageCount, + onPageChanged: (newPage) { + context.read().setCurrentPage(newPage); + }, + itemBuilder: (context, index) => + _generateGrid(data.item2, index, data.item1)), + ), + + ///This renders the dots at the bottom of the grid view + ///This is only rendered if the number of pages is greater than 1 + ///The number of dots is equal to [numberOfPeers/6 + (if number of peers is not divisible by 6 then we add 1 else we add 0)] + ///The active dot is the current page + ///The inactive dots are the pages other than the current page + if (pageCount > 1) + Padding( + padding: const EdgeInsets.only(top: 8.0), + child: DotsIndicator( + dotsCount: + (data.item2 ~/ 6) + (data.item2 % 6 == 0 ? 0 : 1), + position: data.item3, + decorator: DotsDecorator( + activeColor: HMSThemeColors.onSurfaceHighEmphasis, + color: HMSThemeColors.onSurfaceLowEmphasis), + ), + ) + ], + ); + }); + } + + ///This function generates the grid view based on the number of peers in the meeting + Widget _generateGrid( + int numberOfTiles, int index, List peerTrackNode) { + int tileToBeRendered = 0; + + ///Here we check how many tiles we need to render + ///So if still there are 6 or more tiles to be rendered then we render 6 tiles + ///else we render the remaining tiles + /// + ///This is done to decide which layout we need to render + if ((6 * (index + 1) > numberOfTiles)) { + tileToBeRendered = numberOfTiles - 6 * (index); + } else { + tileToBeRendered = 6; + } + + ///This contains the starting index of tile to be rendered + tileNumber = 6 * index; + + ///Here we render the tile layout based on how many tiles we need to render + ///If we need to render 1 tile then we render the [ListenablePeerWidget] + ///If we need to render 2 tiles then we render the [TwoTileLayout] + ///If we need to render 3 tiles then we render the [ThreeTileLayout] + ///If we need to render 4 tiles then we render the [FourTileLayout] + ///If we need to render 5 tiles then we render the [FiveTileLayout] + ///If we need to render 6 tiles then we render the [SixTileLayout] + if (tileToBeRendered == 6) { + return sixTileLayout(peerTrackNode); + } + switch (tileToBeRendered % 6) { + case 1: + return singleTileLayout(peerTrackNode); + + case 2: + return twoTileLayout(peerTrackNode); + + case 3: + return threeTileLayout(peerTrackNode); + + case 4: + return fourTileLayout(peerTrackNode); + + case 5: + return fiveTileLayout(peerTrackNode); + } + return sixTileLayout(peerTrackNode); + } + + Widget sixTileLayout(List peerTracks) { + return Column( + children: [ + Expanded( + child: Row(children: [ + Expanded( + child: Container(child: peerWidget(tileNumber, peerTracks)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 1, peerTracks)), + ) + ]), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Row(children: [ + Expanded( + child: Container(child: peerWidget(tileNumber + 2, peerTracks)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 3, peerTracks)), + ) + ]), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Row(children: [ + Expanded( + child: Container(child: peerWidget(tileNumber + 4, peerTracks)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 5, peerTracks)), + ) + ]), + ), + ], + ); + } + + Widget fiveTileLayout(List peerTracks) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: Row(children: [ + Expanded( + child: Container(child: peerWidget(tileNumber, peerTracks)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 1, peerTracks)), + ), + ]), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Row(children: [ + Expanded( + child: Container(child: peerWidget(tileNumber + 2, peerTracks)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 3, peerTracks)), + ), + ]), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: MediaQuery.of(context).size.width / 4), + child: Container( + child: peerWidget(tileNumber + 4, peerTracks), + ), + ), + ), + ], + ); + } + + Widget fourTileLayout(List peerTracks) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: Row(children: [ + Expanded( + child: Container(child: peerWidget(tileNumber, peerTracks)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 1, peerTracks)), + ), + ]), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Row(children: [ + Expanded( + child: Container(child: peerWidget(tileNumber + 2, peerTracks)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 3, peerTracks)), + ), + ]), + ), + ], + ); + } + + Widget threeTileLayout(List peerTracks) { + return Column( + children: [ + Expanded( + child: Container(child: peerWidget(tileNumber, peerTracks)), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 1, peerTracks)), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 2, peerTracks)), + ), + ], + ); + } + + Widget twoTileLayout(List peerTracks) { + return SizedBox( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Expanded( + child: Container(child: peerWidget(tileNumber, peerTracks)), + ), + const SizedBox( + height: 8, + ), + Expanded( + child: Container(child: peerWidget(tileNumber + 1, peerTracks)), + ), + ], + ), + ); + } + + Widget singleTileLayout(List peerTracks) { + return Container(child: peerWidget(tileNumber, peerTracks)); + } + + Widget peerWidget(int index, List peerTracks) { + return ChangeNotifierProvider.value( + key: ValueKey("${peerTracks[index].uid}video_view"), + value: peerTracks[index], + child: PeerTile( + key: ValueKey("${peerTracks[index].uid}audio_view"), + )); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/meeting_modes/custom_one_to_one_grid.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/custom_one_to_one_grid.dart new file mode 100644 index 000000000..d4e87d87d --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/custom_one_to_one_grid.dart @@ -0,0 +1,116 @@ +///Package imports +import 'package:dots_indicator/dots_indicator.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/grid_layout.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/screen_share_grid_layout.dart'; + +///This widget renders the grid view of the meeting screen with inset tile +///The grid view is rendered based on the number of peers in the meeting +///The grid view is rendered using the [PageView] widget +///This has following parameters: +///[isLocalInsetPresent] is used to check if the local inset tile is present or not +class CustomOneToOneGrid extends StatefulWidget { + final bool isLocalInsetPresent; + const CustomOneToOneGrid({super.key, this.isLocalInsetPresent = true}); + + @override + State createState() => _CustomOneToOneGridState(); +} + +class _CustomOneToOneGridState extends State { + PageController controller = PageController(); + + @override + Widget build(BuildContext context) { + ///The grid view is rendered using the [PageView] widget + ///The number of pages in the [PageView] is equal to [numberOfPeers/6 + (if number of peers is not divisible by 6 then we add 1 else we add 0)] + ///One thing to note here is that in this view we filter out the local peer since we are rendering the local peer in the inset tile + ///The inset tile is rendered at the top of the grid view + return Selector, int, int, PeerTrackNode, int>>( + selector: (_, meetingStore) => Tuple5( + meetingStore.peerTracks, + meetingStore.peerTracks.length, + meetingStore.currentPage, + meetingStore.peerTracks[0], + meetingStore.screenShareCount), + builder: (_, data, __) { + int numberOfPeers = data.item2 - (widget.isLocalInsetPresent ? 1 : 0); + int pageCount = + (numberOfPeers ~/ 6) + (numberOfPeers % 6 == 0 ? 0 : 1); + + ///If the remote peer is sharing screen then we render the [ScreenshareGridLayout] with inset tile + ///Else we render the normal layout with inset tile + return data.item5 > 0 + ? ScreenshareGridLayout( + peerTracks: widget.isLocalInsetPresent + ? data.item1 + .where((element) => + !element.peer.isLocal || + element.track?.source == "SCREEN") + .toList() + : data.item1, + screenshareCount: data.item5, + ) + : + + ///If no screen is being shared we render the normal layout with inset tile + Column( + children: [ + Expanded( + child: PageView.builder( + physics: const PageScrollPhysics(), + controller: controller, + allowImplicitScrolling: true, + itemCount: pageCount, + onPageChanged: (newPage) { + context + .read() + .setCurrentPage(newPage); + }, + itemBuilder: (context, index) => GridLayout( + numberOfTiles: numberOfPeers, + index: index, + + ///Here we filter out the local peer since we are rendering the local peer in the inset tile iff isLocalInsetPresent is true + ///We only take the screenshare or remote peers + /// + ///If isLocalInsetPresent is false we render all the peers in grid layout + ///Since the screenshare case is already handled above the code never reaches here + peerTracks: widget.isLocalInsetPresent + ? data.item1 + .where((element) => + !(element.peer.isLocal) || + element.track?.source == "SCREEN") + .toList() + : data.item1)), + ), + + ///This renders the dots at the bottom of the grid view + ///This is only rendered if the number of pages is greater than 1 + ///The number of dots is equal to [numberOfPeers/6 + (if number of peers is not divisible by 6 then we add 1 else we add 0)] + ///The active dot is the current page + ///The inactive dots are the pages other than the current page + if (pageCount > 1) + Padding( + padding: const EdgeInsets.only(top: 8.0), + child: DotsIndicator( + dotsCount: pageCount, + position: data.item3, + decorator: DotsDecorator( + activeColor: HMSThemeColors.onSurfaceHighEmphasis, + color: HMSThemeColors.onSurfaceLowEmphasis), + ), + ) + ], + ); + }); + } +} diff --git a/example/lib/meeting_modes/full_screen_mode.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/full_screen_mode.dart similarity index 69% rename from example/lib/meeting_modes/full_screen_mode.dart rename to packages/hms_room_kit/lib/src/widgets/meeting_modes/full_screen_mode.dart index 3693285bc..cbb1707c0 100644 --- a/example/lib/meeting_modes/full_screen_mode.dart +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/full_screen_mode.dart @@ -2,18 +2,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/peer_tile.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/peer_tile.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; //Project imports import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; Widget fullScreenMode( {required List peerTracks, @@ -27,7 +28,7 @@ Widget fullScreenMode( cacheExtent: size.width, itemCount: itemCount, scrollDirection: Axis.horizontal, - physics: PageScrollPhysics(), + physics: const PageScrollPhysics(), itemBuilder: (context, index) { if (peerTracks[index].track?.source != "REGULAR") { return ChangeNotifierProvider.value( @@ -35,16 +36,19 @@ Widget fullScreenMode( value: peerTracks[index], child: peerTracks[index].peer.isLocal ? Container( - margin: EdgeInsets.all(2), + margin: const EdgeInsets.all(2), decoration: BoxDecoration( + color: HMSThemeColors.surfaceDim, border: Border.all(color: Colors.grey, width: 1.0), - borderRadius: BorderRadius.all(Radius.circular(10))), + borderRadius: + const BorderRadius.all(Radius.circular(10))), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - "assets/icons/screen_share.svg", - color: Colors.white, + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + colorFilter: const ColorFilter.mode( + Colors.white, BlendMode.srcIn), height: 55.2, ), Text( @@ -64,11 +68,12 @@ Widget fullScreenMode( }, childWidget: Row( children: [ - SvgPicture.asset("assets/icons/close.svg"), - SizedBox( + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/close.svg"), + const SizedBox( width: 10, ), - TitleText( + HMSTitleText( text: "Stop Screenshare", textColor: enabledTextColor) ], @@ -79,8 +84,8 @@ Widget fullScreenMode( : PeerTile( key: Key(peerTracks[index].uid), scaleType: ScaleType.SCALE_ASPECT_FIT, - itemHeight: size.height, - itemWidth: size.width, + // itemHeight: size.height, + // itemWidth: size.width, ), ); } @@ -89,8 +94,8 @@ Widget fullScreenMode( value: peerTracks[index], child: PeerTile( key: ValueKey(peerTracks[index].uid), - itemHeight: size.height, - itemWidth: size.width, + // itemHeight: size.height, + // itemWidth: size.width, )); }, gridDelegate: SliverStairedGridDelegate( diff --git a/example/lib/meeting_modes/hero_mode.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/hero_mode.dart similarity index 79% rename from example/lib/meeting_modes/hero_mode.dart rename to packages/hms_room_kit/lib/src/widgets/meeting_modes/hero_mode.dart index 8bbe73233..027f9f2f1 100644 --- a/example/lib/meeting_modes/hero_mode.dart +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/hero_mode.dart @@ -2,18 +2,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/widgets/hms_button.dart'; -import 'package:hmssdk_flutter_example/common/widgets/peer_tile.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/peer_tile.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; //Project imports import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; Widget heroMode( {required List peerTracks, @@ -25,7 +26,7 @@ Widget heroMode( return GridView.builder( shrinkWrap: true, cacheExtent: 600, - physics: PageScrollPhysics(), + physics: const PageScrollPhysics(), itemCount: itemCount, scrollDirection: isPortrait ? Axis.vertical : Axis.horizontal, itemBuilder: (context, index) { @@ -35,19 +36,22 @@ Widget heroMode( value: peerTracks[index], child: peerTracks[index].peer.isLocal ? Container( - margin: EdgeInsets.all(2), + margin: const EdgeInsets.all(2), decoration: BoxDecoration( + color: HMSThemeColors.surfaceDim, border: Border.all(color: Colors.grey, width: 1.0), - borderRadius: BorderRadius.all(Radius.circular(10))), + borderRadius: + const BorderRadius.all(Radius.circular(10))), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - "assets/icons/screen_share.svg", - color: Colors.white, + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + colorFilter: const ColorFilter.mode( + Colors.white, BlendMode.srcIn), height: 55.2, ), - SizedBox( + const SizedBox( height: 18, ), Text("You are sharing your screen", @@ -59,7 +63,7 @@ Widget heroMode( height: 24 / 20, fontWeight: FontWeight.w600, )), - SizedBox( + const SizedBox( height: 40, ), HMSButton( @@ -72,11 +76,12 @@ Widget heroMode( padding: const EdgeInsets.symmetric(vertical: 12), child: Row( children: [ - SvgPicture.asset("assets/icons/close.svg"), - SizedBox( + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/close.svg"), + const SizedBox( width: 10, ), - TitleText( + HMSTitleText( text: "Stop Screenshare", textColor: enabledTextColor) ], @@ -88,8 +93,8 @@ Widget heroMode( : PeerTile( key: Key(peerTracks[index].uid), scaleType: ScaleType.SCALE_ASPECT_FIT, - itemHeight: size.height, - itemWidth: size.width, + // itemHeight: size.height, + // itemWidth: size.width, ), ); } @@ -98,8 +103,8 @@ Widget heroMode( value: peerTracks[index], child: PeerTile( key: ValueKey(peerTracks[index].uid), - itemHeight: size.height, - itemWidth: size.width, + // itemHeight: size.height, + // itemWidth: size.width, )); }, gridDelegate: SliverStairedGridDelegate( diff --git a/packages/hms_room_kit/lib/src/widgets/meeting_modes/inset_grid_view.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/inset_grid_view.dart new file mode 100644 index 000000000..769b112c4 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/inset_grid_view.dart @@ -0,0 +1,185 @@ +//Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/common/utility_functions.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/peer_tile.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:provider/provider.dart'; + +//Project imports +import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +/// Returns the Grid for inset mode +Widget insetGridView( + {required List peerTracks, + required int itemCount, + required int screenShareCount, + required BuildContext context, + required bool isPortrait, + required Size size}) { + return GridView.builder( + shrinkWrap: true, + itemCount: itemCount, + scrollDirection: Axis.horizontal, + physics: const PageScrollPhysics(), + itemBuilder: (context, index) { + if (peerTracks[index].track != null && + peerTracks[index].track?.source != "REGULAR") { + return ChangeNotifierProvider.value( + key: ValueKey("${peerTracks[index].uid}video_view"), + value: peerTracks[index], + + ///Here we check whether the screen shared is local or remote + child: peerTracks[index].peer.isLocal + + ///If this is true we render the local screen share tile which says "You are sharing your screen" + ? Container( + margin: const EdgeInsets.all(2), + decoration: BoxDecoration( + color: HMSThemeColors.surfaceDim, + border: Border.all(color: Colors.grey, width: 1.0), + borderRadius: + const BorderRadius.all(Radius.circular(10))), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + colorFilter: const ColorFilter.mode( + Colors.white, BlendMode.srcIn), + height: 55.2, + ), + const SizedBox( + height: 18, + ), + Text("You are sharing your screen", + textAlign: TextAlign.center, + style: GoogleFonts.inter( + color: themeDefaultColor, + fontSize: 20, + letterSpacing: 0.15, + height: 24 / 20, + fontWeight: FontWeight.w600, + )), + const SizedBox( + height: 40, + ), + HMSButton( + buttonBackgroundColor: errorColor, + width: MediaQuery.of(context).size.width * 0.6, + onPressed: () { + context.read().stopScreenShare(); + }, + childWidget: Padding( + padding: const EdgeInsets.symmetric(vertical: 12), + child: Row( + children: [ + SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/close.svg"), + const SizedBox( + width: 10, + ), + HMSTitleText( + text: "Stop Screenshare", + textColor: enabledTextColor) + ], + ), + )) + ], + ), + ) + + ///Here we render the remote peer screen with the screen share + : PeerTile( + islongPressEnabled: false, + key: Key("${peerTracks[index].uid}video_tile"), + scaleType: ScaleType.SCALE_ASPECT_FIT, + // itemHeight: size.height, + // itemWidth: size.width, + ), + ); + } + return (!peerTracks[index].peer.isLocal) + ? ChangeNotifierProvider.value( + key: ValueKey("${peerTracks[index].uid}video_view"), + value: peerTracks[index], + child: const PeerTile( + // itemHeight: size.height, + // itemWidth: size.width, + )) + : Container(); + }, + gridDelegate: SliverStairedGridDelegate( + startCrossAxisDirectionReversed: true, + pattern: isPortrait + ? portraitPattern(peerTracks, screenShareCount, size, context) + : landscapePattern(itemCount, screenShareCount, size, context))); +} + +///This returns the grid pattern for the grid view +///The logic is as below: +///1. We first check the screen share count and add the tiles for screen share +///2. Then we check the pinned tile count and add the tiles for pinned tiles +///3. Then we check the normal tile count and add the tiles for normal tiles until the count is divisible by 3 +///4. For remaining tiles if count is 1 we add a tile of complete screen width +///5. For remaining tiles if count is 2 we add a tile of half screen width +List portraitPattern(List peerTrack, + int screenShareCount, Size size, BuildContext context) { + double ratio = (size.height - 3) / size.width; + List tiles = []; + for (int i = 0; i < screenShareCount; i++) { + tiles.add(StairedGridTile(1, ratio)); + } + int pinTileCount = 0; + while ((pinTileCount + screenShareCount < peerTrack.length) && + peerTrack[pinTileCount + screenShareCount].pinTile) { + tiles.add(StairedGridTile(1, ratio)); + pinTileCount++; + } + + ///Checking the number of tiles left after adding screen share and pinned tiles + int normalTile = peerTrack.length - screenShareCount - pinTileCount; + + ///Checking the remainder when divided by 3 + int tileLeft = normalTile % 3; + + ///Here we add the tiles with 1/3 of the screen height + for (int i = 0; i < (normalTile - tileLeft); i++) { + tiles.add(StairedGridTile(0.33, ratio / 3)); + } + + ///Here if the remainder is 1 we add a tile with full screen height + if (tileLeft == 1) { + tiles.add(StairedGridTile(1, ratio)); + } else { + ///Here if the remainder is 2 we add a tile with half screen height + tiles.add(StairedGridTile(0.5, ratio / 2)); + tiles.add(StairedGridTile(0.5, ratio / 2)); + } + return tiles; +} + +List landscapePattern( + int itemCount, int screenShareCount, Size size, BuildContext context) { + double ratio = Utilities.getHLSRatio(size, context); + List tiles = []; + for (int i = 0; i < screenShareCount; i++) { + tiles.add(StairedGridTile(1, ratio)); + } + int normalTile = (itemCount - screenShareCount); + int gridView = normalTile ~/ 2; + int tileLeft = normalTile - (gridView * 2); + for (int i = 0; i < (normalTile - tileLeft); i++) { + tiles.add(StairedGridTile(1, ratio / 0.5)); + } + if (tileLeft == 1) tiles.add(StairedGridTile(1, ratio)); + + return tiles; +} diff --git a/packages/hms_room_kit/lib/src/widgets/meeting_modes/one_to_one_mode.dart b/packages/hms_room_kit/lib/src/widgets/meeting_modes/one_to_one_mode.dart new file mode 100644 index 000000000..df926fd70 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/meeting_modes/one_to_one_mode.dart @@ -0,0 +1,128 @@ +///Dart imports +import 'dart:io'; + +///Package imports +import 'package:draggable_widget/draggable_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/inset_tile.dart'; +import 'package:hms_room_kit/src/widgets/grid_layouts/listenable_peer_widget.dart'; +import 'package:hms_room_kit/src/widgets/meeting_modes/custom_one_to_one_grid.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/inset_collapsed_view.dart'; + +///[OneToOneMode] is used to render the meeting screen in inset Tile mode +class OneToOneMode extends StatefulWidget { + final List peerTracks; + final BuildContext context; + final Size size; + final int screenShareCount; + final double bottomMargin; + const OneToOneMode( + {Key? key, + required this.peerTracks, + required this.context, + required this.size, + required this.screenShareCount, + this.bottomMargin = 272}) + : super(key: key); + + @override + State createState() => _OneToOneModeState(); +} + +class _OneToOneModeState extends State { + PeerTrackNode? oneToOnePeer; + PeerTrackNode? screenPeer; + bool isMinimized = false; + + @override + void initState() { + super.initState(); + if (widget.peerTracks.isNotEmpty) { + int index = + widget.peerTracks.indexWhere((element) => element.peer.isLocal); + if (index != -1) { + oneToOnePeer = widget.peerTracks[index]; + oneToOnePeer?.setOffScreenStatus(false); + } + } + } + + void toggleMinimizedView() { + setState(() { + isMinimized = !isMinimized; + }); + } + + @override + void didUpdateWidget(covariant OneToOneMode oldWidget) { + ///This is used to find the local peer for inset tile + if (widget.peerTracks.isNotEmpty) { + int index = + widget.peerTracks.indexWhere((element) => element.peer.isLocal); + if (index != -1) { + oneToOnePeer = widget.peerTracks[index]; + oneToOnePeer?.setOffScreenStatus(false); + } + } + super.didUpdateWidget(oldWidget); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: + + ///This case is added to handle the case when there is only one peer(local peer) in the room + ///Since we cannot create a draggable widget for single peer. + /// + ///This is the case when the local peer is null or it doesn't have audio or videotrack + (oneToOnePeer == null) + ? const CustomOneToOneGrid( + isLocalInsetPresent: false, + ) + + ///This handles the case where local peer is the only peer in the room with audio or video track + : (oneToOnePeer != null && widget.peerTracks.length == 1) + ? ListenablePeerWidget( + peerTracks: [oneToOnePeer!], + index: 0, + ) + + ///This handles when the local peer is also present as well as the other peers are also there. + ///i.e. this handles the normal flow + : Stack( + children: [ + const CustomOneToOneGrid(), + DraggableWidget( + dragAnimationScale: 1, + topMargin: 10, + bottomMargin: Platform.isIOS + ? widget.bottomMargin + 20 + : widget.bottomMargin, + horizontalSpace: 8, + child: isMinimized + ? InsetCollapsedView( + callbackFunction: toggleMinimizedView, + ) + : ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: ChangeNotifierProvider.value( + key: ValueKey(oneToOnePeer?.uid ?? + "" "video_view"), + value: oneToOnePeer, + child: InsetTile( + callbackFunction: toggleMinimizedView, + ), + ), + )) + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/audio_level_avatar.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/audio_level_avatar.dart new file mode 100644 index 000000000..8ce9bef95 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/audio_level_avatar.dart @@ -0,0 +1,44 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_circular_avatar.dart'; + +///[AudioLevelAvatar] is a widget that is used to render the audio level avatar +///It is used to render the audio level of the peer +class AudioLevelAvatar extends StatefulWidget { + final double avatarRadius; + final double avatarTitleFontSize; + final double avatarTitleTextLineHeight; + + const AudioLevelAvatar( + {Key? key, + this.avatarRadius = 34, + this.avatarTitleFontSize = 34, + this.avatarTitleTextLineHeight = 32}) + : super(key: key); + + @override + State createState() => _AudioLevelAvatarState(); +} + +class _AudioLevelAvatarState extends State { + @override + Widget build(BuildContext context) { + return Center( + + ///[Selector] is used to rebuild the widget when the audio level changes + child: Selector( + selector: (_, peerTrackNode) => peerTrackNode.peer.name, + builder: (_, peerName, __) { + return HMSCircularAvatar( + name: peerName, + avatarRadius: widget.avatarRadius, + avatarTitleFontSize: widget.avatarTitleFontSize, + avatarTitleTextLineHeight: widget.avatarTitleTextLineHeight, + ); + })); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/audio_mute_status.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/audio_mute_status.dart new file mode 100644 index 000000000..b7eb593a5 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/audio_mute_status.dart @@ -0,0 +1,79 @@ +//Package imports +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:lottie/lottie.dart'; +import 'package:provider/provider.dart'; +import 'package:flutter/material.dart'; + +//Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:tuple/tuple.dart'; + +///[AudioMuteStatus] is a widget that is used to render the audio mute status +class AudioMuteStatus extends StatefulWidget { + const AudioMuteStatus({super.key}); + + @override + State createState() => _AudioMuteStatusState(); +} + +class _AudioMuteStatusState extends State { + @override + Widget build(BuildContext context) { + ///Here we either render the mute icon or the audio level based on whether + ///the mic is mute or the audio levels + return Selector>( + selector: (_, peerTrackNode) => Tuple2( + peerTrackNode.audioTrack?.isMute ?? true, peerTrackNode.audioLevel), + builder: (_, data, __) { + return Positioned( + top: 5, + right: 5, + child: Semantics( + label: + "fl_${context.read().peer.name}_audio_mute", + child: data.item1 + ? Container( + height: 32, + width: 32, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: HMSThemeColors.secondaryDim), + child: Padding( + padding: const EdgeInsets.all(8), + child: SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg', + width: 16, + height: 16, + semanticsLabel: "audio_mute_label", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSecondaryHighEmphasis, + BlendMode.srcIn), + )), + ) + + ///We render the animation only when the audio level is greater than zero + ///else we show the ellipsis icon + : Container( + height: 32, + width: 32, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: HMSThemeColors.secondaryDim), + child: data.item2 > 0 + ? Lottie.asset( + "packages/hms_room_kit/lib/src/assets/icons/audio-level.json", + height: 24, + width: 24) + : SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/zero_audio_level.svg', + fit: BoxFit.scaleDown, + semanticsLabel: "audio_mute_label", + colorFilter: ColorFilter.mode( + HMSThemeColors.onSecondaryHighEmphasis, + BlendMode.srcIn), + )), + )); + }); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/brb_tag.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/brb_tag.dart new file mode 100644 index 000000000..d7302f80f --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/brb_tag.dart @@ -0,0 +1,48 @@ +//Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:provider/provider.dart'; + +//Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; + +///[BRBTag] is a widget that is used to render the BRB tag +///BRB stands for Be Right Back +class BRBTag extends StatelessWidget { + const BRBTag({super.key}); + + @override + Widget build(BuildContext context) { + return Selector( + builder: (_, metadata, __) { + return metadata?.contains("\"isBRBOn\":true") ?? false + ? Positioned( + top: 5.0, + left: 5, + child: Semantics( + label: + "fl_${context.read().peer.name}_brb_tag", + child: Container( + height: 32, + width: 32, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: HMSThemeColors.secondaryDim), + child: Padding( + padding: const EdgeInsets.all(8), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/brb.svg", + width: 19.25, + height: 11, + semanticsLabel: "brb_label", + ), + ), + ), + ), + ) + : Container(); + }, + selector: (_, peerTrackNode) => peerTrackNode.peer.metadata); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/hand_raise.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/hand_raise.dart new file mode 100644 index 000000000..39a991484 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/hand_raise.dart @@ -0,0 +1,50 @@ +//Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:provider/provider.dart'; + +//Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; + +///[HandRaise] is a widget that is used to render the hand raise icon on peer tile +class HandRaise extends StatelessWidget { + const HandRaise({super.key}); + + @override + Widget build(BuildContext context) { + return Selector( + builder: (_, metadata, __) { + return metadata?.contains("\"isHandRaised\":true") ?? false + ? Positioned( + top: 5, + left: 5, + child: Semantics( + label: + "fl_${context.read().peer.name}_hand_raise", + child: Container( + height: 32, + width: 32, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: HMSThemeColors.secondaryDim), + child: Padding( + padding: const EdgeInsets.all(8), + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg", + height: 25, + width: 25, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSecondaryHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "hand_raise_label", + ), + ), + ), + ), + ) + : Container(); + }, + selector: (_, peerTrackNode) => peerTrackNode.peer.metadata); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_collapsed_view.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_collapsed_view.dart new file mode 100644 index 000000000..8f56114c6 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_collapsed_view.dart @@ -0,0 +1,138 @@ +///Package imports +import 'package:flutter/widgets.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_embedded_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[InsetCollapsedView] is a widget that is used to render the collapsed view of the inset +///It has following parameters: +///[callbackFunction] is a function that is called when the maximize button is clicked +class InsetCollapsedView extends StatefulWidget { + final Function()? callbackFunction; + + const InsetCollapsedView({super.key, this.callbackFunction}); + + @override + State createState() => _InsetCollapsedViewState(); +} + +class _InsetCollapsedViewState extends State { + @override + Widget build(BuildContext context) { + return Container( + height: 36, + width: 126, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: HMSThemeColors.surfaceDefault), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + ///We only show the mic and video mute buttons if the local peer is allowed to publish audio or video + if (Provider.of(context) + .localPeer + ?.role + .publishSettings + ?.allowed + .contains("audio") ?? + false) + Selector( + selector: (_, meetingStore) => meetingStore.isMicOn, + builder: (_, isMicOn, __) { + return HMSEmbeddedButton( + height: 20, + width: 20, + onTap: () => {}, + isActive: false, + borderRadius: 4, + offColor: HMSThemeColors.surfaceBright, + disabledBorderColor: HMSThemeColors.surfaceBright, + child: SvgPicture.asset( + isMicOn + ? "packages/hms_room_kit/lib/src/assets/icons/mic_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", + height: 16, + width: 16, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "audio_mute_button", + ), + ); + }), + const SizedBox( + width: 8, + ), + if (Provider.of(context) + .localPeer + ?.role + .publishSettings + ?.allowed + .contains("video") ?? + false) + Selector( + selector: (_, meetingStore) => meetingStore.isVideoOn, + builder: (_, isMicOn, __) { + return HMSEmbeddedButton( + height: 20, + width: 20, + onTap: () => {}, + isActive: false, + borderRadius: 4, + offColor: HMSThemeColors.surfaceBright, + disabledBorderColor: HMSThemeColors.surfaceBright, + child: SvgPicture.asset( + isMicOn + ? "packages/hms_room_kit/lib/src/assets/icons/cam_state_on.svg" + : "packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg", + height: 16, + width: 16, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, + BlendMode.srcIn), + semanticsLabel: "video_mute_button", + ), + ); + }), + const SizedBox( + width: 8, + ), + HMSSubheadingText( + text: "You", + textColor: HMSThemeColors.onSurfaceHighEmphasis), + ], + ), + Row( + children: [ + GestureDetector( + onTap: () { + if (widget.callbackFunction != null) { + widget.callbackFunction!(); + } + }, + child: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/maximize.svg", + height: 20, + width: 20, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + semanticsLabel: "maximize_button", + ), + ), + ], + ) + ], + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_tile_more_option.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_tile_more_option.dart new file mode 100644 index 000000000..5652f782d --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_tile_more_option.dart @@ -0,0 +1,70 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart'; + +///[LocalPeerMoreOption] is a widget that is used to render the more option button on a local peer(inset) tile +///This is used in the [LocalPeerTile] +///It has following parameters: +///[callbackFunction] is a function that is called when the more option button is clicked +class LocalPeerMoreOption extends StatelessWidget { + final Function()? callbackFunction; + final bool isInsetTile; + const LocalPeerMoreOption( + {super.key, this.callbackFunction, this.isInsetTile = true}); + + @override + Widget build(BuildContext context) { + return Positioned( + bottom: 5, + right: 5, + child: GestureDetector( + onTap: () { + ///[peerTrackNode] is the peerTrackNode of the peer whose more option is clicked + ///We only show the modal bottom sheet if the peer is the local peer + var peerTrackNode = context.read(); + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: LocalPeerBottomSheet( + isInsetTile: isInsetTile, + meetingStore: context.read(), + peerTrackNode: peerTrackNode, + callbackFunction: callbackFunction, + )), + ); + }, + child: Semantics( + label: "fl_${context.read().peer.name}more_option", + child: Container( + height: 28, + width: 28, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: HMSThemeColors.backgroundDim.withOpacity(0.64), + ), + child: Center( + child: Icon( + Icons.more_vert, + color: HMSThemeColors.onSurfaceHighEmphasis, + size: 20, + ), + ), + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/more_option.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/more_option.dart new file mode 100644 index 000000000..3bdce2dfe --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/more_option.dart @@ -0,0 +1,74 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/remote_peer_bottom_sheet.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; + +///[MoreOption] is a widget that is used to render the more option button on peer tile +class MoreOption extends StatefulWidget { + const MoreOption({ + Key? key, + }) : super(key: key); + + @override + State createState() => _MoreOptionState(); +} + +class _MoreOptionState extends State { + @override + Widget build(BuildContext context) { + MeetingStore meetingStore = context.read(); + + return Positioned( + bottom: 5, + right: 5, + child: GestureDetector( + onTap: () { + ///[peerTrackNode] is the peerTrackNode of the peer whose more option is clicked + ///We only show the modal bottom sheet if the peer is not the local peer + var peerTrackNode = context.read(); + if (peerTrackNode.peer.peerId != meetingStore.localPeer!.peerId) { + showModalBottomSheet( + isScrollControlled: true, + backgroundColor: HMSThemeColors.surfaceDim, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16)), + ), + context: context, + builder: (ctx) => ChangeNotifierProvider.value( + value: context.read(), + child: RemotePeerBottomSheet( + meetingStore: meetingStore, + peerTrackNode: peerTrackNode, + )), + ); + } + }, + child: Semantics( + label: "fl_${context.read().peer.name}more_option", + child: Container( + height: 28, + width: 28, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: HMSThemeColors.backgroundDim.withOpacity(0.64), + ), + child: Center( + child: Icon( + Icons.more_vert, + color: HMSThemeColors.onSurfaceHighEmphasis, + size: 20, + ), + ), + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/name_and_network.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/name_and_network.dart new file mode 100644 index 000000000..dbf4a4575 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/name_and_network.dart @@ -0,0 +1,50 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/network_icon_widget.dart'; +import 'package:hms_room_kit/src/widgets/peer_widgets/peer_name.dart'; + +///[NameAndNetwork] is a widget that is used to render the name and network icon +///of the peer +class NameAndNetwork extends StatelessWidget { + final double maxWidth; + + const NameAndNetwork({Key? key, required this.maxWidth}) : super(key: key); + @override + Widget build(BuildContext context) { + return Positioned( + //Bottom left + bottom: 5, + left: 5, + child: Container( + decoration: BoxDecoration( + color: HMSThemeColors.backgroundDim.withOpacity(0.64), + borderRadius: BorderRadius.circular(8)), + child: Center( + child: Padding( + padding: + const EdgeInsets.only(left: 8.0, right: 4, top: 4, bottom: 4), + + ///We render name and network in a row + child: Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + PeerName( + maxWidth: maxWidth, + ), + const SizedBox( + width: 4, + ), + const NetworkIconWidget(), + ], + ), + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/network_icon_widget.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/network_icon_widget.dart new file mode 100644 index 000000000..266fce857 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/network_icon_widget.dart @@ -0,0 +1,41 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/src/model/peer_track_node.dart'; + +///[NetworkIconWidget] is a widget that is used to render the network icon +class NetworkIconWidget extends StatelessWidget { + const NetworkIconWidget({super.key}); + + @override + Widget build(BuildContext context) { + ///[Selector] is used to rebuild the widget when the network quality changes + ///[networkQuality] is a tuple of [int] and [bool] + ///[int] represents the network quality + ///[bool] represents whether the track is degraded or not + return Selector>( + builder: (_, networkQuality, __) { + ///If the track is degraded, we render the degraded network icon + ///If the network quality is not null and not -1, we render the network icon + return networkQuality.item2 + ? SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/degraded_network.svg', + height: 20, + semanticsLabel: "fl_network_icon_label", + ) + : (networkQuality.item1 != null && networkQuality.item1 != -1) + ? SvgPicture.asset( + 'packages/hms_room_kit/lib/src/assets/icons/network_${networkQuality.item1}.svg', + height: 20, + semanticsLabel: "fl_network_icon_label", + ) + : Container(); + }, + selector: (_, peerTrackNode) => Tuple2(peerTrackNode.networkQuality, + peerTrackNode.track?.isDegraded ?? false)); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/peer_name.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/peer_name.dart new file mode 100644 index 000000000..1fd0a3bad --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/peer_name.dart @@ -0,0 +1,30 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[PeerName] is a widget that is used to render the name of the peer +class PeerName extends StatelessWidget { + final double maxWidth; + const PeerName({super.key, required this.maxWidth}); + + @override + Widget build(BuildContext context) { + return Selector>( + selector: (_, peerTrackNode) => + Tuple2(peerTrackNode.peer.name, peerTrackNode.peer.isLocal), + builder: (_, data, __) { + return Container( + constraints: BoxConstraints(maxWidth: maxWidth - 80), + child: HMSSubheadingText( + text: "${data.item1.trim()}${data.item2 ? " (You)" : ""}", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + )); + }); + } +} diff --git a/example/lib/common/peer_widgets/rtc_stats_view.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/rtc_stats_view.dart similarity index 84% rename from example/lib/common/peer_widgets/rtc_stats_view.dart rename to packages/hms_room_kit/lib/src/widgets/peer_widgets/rtc_stats_view.dart index 9433e1172..f1f1dd335 100644 --- a/example/lib/common/peer_widgets/rtc_stats_view.dart +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/rtc_stats_view.dart @@ -1,33 +1,32 @@ //Package imports import 'package:google_fonts/google_fonts.dart'; import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; +import 'package:hms_room_kit/src/common/app_color.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/model/rtc_stats.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; import 'package:flutter/material.dart'; //Project imports -import 'package:hmssdk_flutter_example/meeting/meeting_store.dart'; -import 'package:hmssdk_flutter_example/model/peer_track_node.dart'; -import 'package:hmssdk_flutter_example/model/rtc_stats.dart'; - class RTCStatsView extends StatelessWidget { final bool isLocal; - RTCStatsView({required this.isLocal}); + const RTCStatsView({super.key, required this.isLocal}); @override Widget build(BuildContext context) { return Selector( builder: (_, statsVisible, __) { - return statsVisible ? Stats(isLocal: isLocal) : SizedBox(); + return statsVisible ? Stats(isLocal: isLocal) : const SizedBox(); }, - selector: (_, _meetingStore) => _meetingStore.isStatsVisible); + selector: (_, meetingStore) => meetingStore.isStatsVisible); } } class Stats extends StatelessWidget { - final isLocal; - Stats({Key? key, required this.isLocal}) : super(key: key); + final bool isLocal; + const Stats({Key? key, required this.isLocal}) : super(key: key); @override Widget build(BuildContext context) { @@ -43,18 +42,19 @@ class Stats extends StatelessWidget { peerTrackNode.networkQuality), builder: (_, data, __) { return Container( - padding: EdgeInsets.all(5), - margin: EdgeInsets.all(2), + padding: const EdgeInsets.all(5), + margin: const EdgeInsets.all(2), decoration: BoxDecoration( color: Colors.black38.withOpacity(0.3), - borderRadius: BorderRadius.all(Radius.circular(10))), + borderRadius: + const BorderRadius.all(Radius.circular(10))), child: ListView( shrinkWrap: true, children: [ if ((data.item3 != null) && (data.item3!.hmsLocalVideoStats != null)) localVideoStats(data.item3!.hmsLocalVideoStats!), - SizedBox( + const SizedBox( height: 10, ), Text("Downlink\t ${data.item4 ?? "-1"}", @@ -75,11 +75,11 @@ class Stats extends StatelessWidget { peerTrackNode.networkQuality), builder: (_, data, __) { return Container( - padding: EdgeInsets.all(5), - margin: EdgeInsets.all(2), + padding: const EdgeInsets.all(5), + margin: const EdgeInsets.all(2), decoration: BoxDecoration( color: Colors.black38.withOpacity(0.3), - borderRadius: BorderRadius.all(Radius.circular(10))), + borderRadius: const BorderRadius.all(Radius.circular(10))), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, @@ -123,7 +123,7 @@ class Stats extends StatelessWidget { } Widget localVideoStats(List videoStats) { - Map columnWidth = {0: FixedColumnWidth(50)}; + Map columnWidth = {0: const FixedColumnWidth(50)}; return Table( columnWidths: columnWidth, @@ -150,7 +150,7 @@ class Stats extends StatelessWidget { ...videoStats .map( (layerStats) => Text( - "${layerStats?.resolution.width.toStringAsFixed(2) ?? "0.00"}", + layerStats?.resolution.width.toStringAsFixed(2) ?? "0.00", style: GoogleFonts.inter(color: iconColor, fontSize: 10), ), ) @@ -163,7 +163,7 @@ class Stats extends StatelessWidget { ...videoStats .map( (layerStats) => Text( - "${layerStats?.resolution.height.toStringAsFixed(2) ?? "0.00"}", + layerStats?.resolution.height.toStringAsFixed(2) ?? "0.00", style: GoogleFonts.inter(color: iconColor, fontSize: 10), ), ) @@ -176,7 +176,7 @@ class Stats extends StatelessWidget { ...videoStats .map( (layerStats) => Text( - "${layerStats?.frameRate.toStringAsFixed(2) ?? "0.00"}", + layerStats?.frameRate.toStringAsFixed(2) ?? "0.00", style: GoogleFonts.inter(color: iconColor, fontSize: 10), ), ) @@ -191,7 +191,7 @@ class Stats extends StatelessWidget { ...videoStats .map( (layerStats) => Text( - "${layerStats?.bitrate.toStringAsFixed(2) ?? "0.00"}", + layerStats?.bitrate.toStringAsFixed(2) ?? "0.00", style: GoogleFonts.inter(color: iconColor, fontSize: 10), ), ) @@ -206,7 +206,7 @@ class Stats extends StatelessWidget { ...videoStats .map( (layerStats) => Text( - "${layerStats?.hmsQualityLimitationReasons?.reason.name ?? ""}", + layerStats?.hmsQualityLimitationReasons?.reason.name ?? "", style: GoogleFonts.inter(color: iconColor, fontSize: 10), ), ) diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/screen_share_tile_name.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/screen_share_tile_name.dart new file mode 100644 index 000000000..4c856bee7 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/screen_share_tile_name.dart @@ -0,0 +1,30 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/model/peer_track_node.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[ScreenshareTileName] is a widget that is used to render the name of the peer when it's a screenshare tile +class ScreenshareTileName extends StatelessWidget { + final double maxWidth; + const ScreenshareTileName({super.key, required this.maxWidth}); + + @override + Widget build(BuildContext context) { + return Selector>( + selector: (_, peerTrackNode) => + Tuple2(peerTrackNode.peer.name, peerTrackNode.peer.isLocal), + builder: (_, data, __) { + return Container( + constraints: BoxConstraints(maxWidth: maxWidth - 80), + child: HMSSubheadingText( + text: "${data.item1.trim()}'s Screen", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + )); + }); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/tab_widgets/chat_participants_tab_bar.dart b/packages/hms_room_kit/lib/src/widgets/tab_widgets/chat_participants_tab_bar.dart new file mode 100644 index 000000000..3672ed008 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/tab_widgets/chat_participants_tab_bar.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/chat_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/bottom_sheets/participants_bottom_sheet.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_cross_button.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:provider/provider.dart'; + +class ChatParticipantsTabBar extends StatefulWidget { + final int tabIndex; + const ChatParticipantsTabBar({super.key, this.tabIndex = 0}); + + @override + State createState() => _ChatParticipantsTabBarState(); +} + +class _ChatParticipantsTabBarState extends State + with TickerProviderStateMixin { + late TabController _controller; + + @override + void initState() { + super.initState(); + _controller = + TabController(length: 2, vsync: this, initialIndex: widget.tabIndex); + + _controller.addListener(() { + setState(() {}); + }); + } + + @override + Widget build(BuildContext context) { + return SafeArea( + child: FractionallySizedBox( + heightFactor: 0.87, + child: Padding( + padding: const EdgeInsets.only(top: 12.0, left: 16, right: 16), + child: SingleChildScrollView( + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + width: MediaQuery.of(context).size.width * 0.78, + height: 36, + decoration: BoxDecoration( + color: HMSThemeColors.surfaceDefault, + borderRadius: BorderRadius.circular(8)), + child: TabBar( + controller: _controller, + tabs: [ + Tab( + child: HMSSubheadingText( + text: "Chat", + fontWeight: FontWeight.w600, + textColor: _controller.index == 0 + ? HMSThemeColors.onSurfaceHighEmphasis + : HMSThemeColors.onSurfaceLowEmphasis), + ), + Tab( + child: HMSSubheadingText( + text: "Participants", + fontWeight: FontWeight.w600, + textColor: _controller.index == 1 + ? HMSThemeColors.onSurfaceHighEmphasis + : HMSThemeColors.onSurfaceLowEmphasis), + ), + ], + indicatorPadding: const EdgeInsets.all(4), + indicator: BoxDecoration( + color: HMSThemeColors.surfaceBright, + borderRadius: BorderRadius.circular(4)), + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + HMSCrossButton( + onPressed: () => + context.read().setNewMessageFalse(), + ), + ], + ), + ], + ), + SizedBox( + height: MediaQuery.of(context).size.height * 0.78, + child: TabBarView(controller: _controller, children: const [ + ChatBottomSheet(), + ParticipantsBottomSheet() + ]), + ) + ], + ), + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_bring_on_stage_toast.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_bring_on_stage_toast.dart new file mode 100644 index 000000000..0b77cb457 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_bring_on_stage_toast.dart @@ -0,0 +1,102 @@ +///Dart imports +import "dart:math" as math; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toasts_type.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast_button.dart'; + +///[HMSBringOnStageToast] renders the toast when a user requests to be on stage +///It takes the following parameters: +///[peer] is the peer that requested to be on stage +///[meetingStore] is the meetingStore of the meeting +///[toastColor] is the color of the toast +///[toastPosition] is the position of the toast from the bottom +class HMSBringOnStageToast extends StatelessWidget { + final HMSPeer peer; + final MeetingStore meetingStore; + final Color? toastColor; + final double? toastPosition; + + const HMSBringOnStageToast( + {super.key, + required this.peer, + required this.meetingStore, + this.toastColor, + this.toastPosition}); + + String? _getButtonText() { + if (HMSRoomLayout.peerType == PeerRoleType.conferencing) { + if (HMSRoomLayout.roleLayoutData?.screens?.conferencing?.defaultConf + ?.elements?.onStageExp?.offStageRoles + ?.contains(peer.role.name) ?? + false) { + return HMSRoomLayout.roleLayoutData?.screens?.conferencing?.defaultConf + ?.elements?.onStageExp?.bringToStageLabel; + } else { + return HMSRoomLayout.roleLayoutData?.screens?.conferencing + ?.hlsLiveStreaming?.elements?.onStageExp?.bringToStageLabel; + } + } + return null; + } + + @override + Widget build(BuildContext context) { + return HMSToast( + toastColor: toastColor, + toastPosition: toastPosition, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/hand_outline.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + subtitle: SizedBox( + width: MediaQuery.of(context).size.width * 0.32, + child: HMSSubheadingText( + text: + "${peer.name.substring(0, math.min(15, peer.name.length))} raised hand", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + maxLines: 3, + letterSpacing: 0.1, + ), + ), + action: HMSToastButton( + buttonTitle: _getButtonText() ?? "", + action: () { + HMSRole? onStageRole = meetingStore.getOnStageRole(); + if (onStageRole != null) { + meetingStore.changeRoleOfPeer(peer: peer, roleName: onStageRole); + meetingStore.removeToast(HMSToastsType.roleChangeToast, data: peer); + } + }, + height: 36, + width: 135, + buttonColor: HMSThemeColors.secondaryDefault, + textColor: HMSThemeColors.onSecondaryHighEmphasis, + ), + cancelToastButton: IconButton( + icon: Icon( + Icons.close, + color: HMSThemeColors.onSurfaceHighEmphasis, + size: 24, + ), + onPressed: () { + meetingStore.removeToast(HMSToastsType.roleChangeToast, data: peer); + }, + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_disconnected_toast.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_disconnected_toast.dart new file mode 100644 index 000000000..ff1e4b84c --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_disconnected_toast.dart @@ -0,0 +1,53 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast_button.dart'; + +///[HMSDisconnectedToast] renders the toast when a user gets disconnected and the user needs to rejoin +class HMSDisconnectedToast extends StatelessWidget { + final String errorDescription; + final Function? onLeavePressed; + const HMSDisconnectedToast( + {super.key, + this.onLeavePressed, + this.errorDescription = "Reconnection Failed"}); + + @override + Widget build(BuildContext context) { + return HMSToast( + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/end_warning.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + subtitle: SizedBox( + width: MediaQuery.of(context).size.width * 0.6, + child: HMSSubheadingText( + maxLines: 2, + text: errorDescription, + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + letterSpacing: 0.1, + ), + ), + action: HMSToastButton( + buttonTitle: "Leave", + action: () { + if (onLeavePressed != null) { + onLeavePressed!(); + } + Navigator.popUntil(context, (route) => route.isFirst); + }, + buttonColor: HMSThemeColors.alertErrorDefault, + textColor: HMSThemeColors.alertErrorBrighter, + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_local_screen_share_toast.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_local_screen_share_toast.dart new file mode 100644 index 000000000..a50e92ad0 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_local_screen_share_toast.dart @@ -0,0 +1,56 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +///Project imports +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast_button.dart'; + +///[HMSLocalScreenShareToast] is a toast that is shown when the user is sharing the screen +///It takes the following parameters: +///[meetingStore] is the meetingStore of the meeting +///[toastColor] is the color of the toast +///[toastPosition] is the position of the toast from the bottom +class HMSLocalScreenShareToast extends StatelessWidget { + final MeetingStore meetingStore; + final Color? toastColor; + final double? toastPosition; + + const HMSLocalScreenShareToast( + {super.key, + required this.meetingStore, + this.toastColor, + this.toastPosition}); + + @override + Widget build(BuildContext context) { + return HMSToast( + toastColor: toastColor, + toastPosition: toastPosition, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + subtitle: HMSSubheadingText( + text: "You are sharing your screen", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + letterSpacing: 0.1, + ), + action: HMSToastButton( + buttonTitle: "Stop", + action: () { + meetingStore.stopScreenShare(); + }, + buttonColor: HMSThemeColors.alertErrorDefault, + textColor: HMSThemeColors.alertErrorBrighter, + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_reconnection_toast.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_reconnection_toast.dart new file mode 100644 index 000000000..2715fd9c3 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_reconnection_toast.dart @@ -0,0 +1,34 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast.dart'; + +///[HMSReconnectionToast] renders the toast when a user loses network connection +///The screen is non-tappable during this toast +class HMSReconnectionToast extends StatelessWidget { + const HMSReconnectionToast({super.key}); + + @override + Widget build(BuildContext context) { + return HMSToast( + leading: SizedBox( + height: 18, + width: 18, + child: CircularProgressIndicator( + strokeWidth: 1, + color: HMSThemeColors.onSurfaceHighEmphasis, + ), + ), + subtitle: HMSSubheadingText( + text: "You lost your network connection.\nTrying to reconnect. ", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + letterSpacing: 0.1, + maxLines: 2, + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_recording_error_toast.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_recording_error_toast.dart new file mode 100644 index 000000000..b7a94f937 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_recording_error_toast.dart @@ -0,0 +1,67 @@ +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast_button.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toasts_type.dart'; + +///[HMSRecordingErrorToast] renders the toast when recording fails to start +class HMSRecordingErrorToast extends StatelessWidget { + final HMSException recordingError; + final MeetingStore meetingStore; + final Color? toastColor; + final double? toastPosition; + const HMSRecordingErrorToast( + {super.key, + required this.recordingError, + required this.meetingStore, + this.toastColor, + this.toastPosition}); + + @override + Widget build(BuildContext context) { + return HMSToast( + toastColor: toastColor, + toastPosition: toastPosition, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/recording_error.svg", + height: 24, + width: 24, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + subtitle: HMSSubheadingText( + text: "Recording failed to start", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + letterSpacing: 0.1, + ), + action: HMSToastButton( + buttonTitle: "Retry", + action: () { + meetingStore.startRtmpOrRecording(toRecord: true); + meetingStore.removeToast(HMSToastsType.errorToast); + }, + height: 36, + buttonColor: HMSThemeColors.secondaryDefault, + textColor: HMSThemeColors.onSecondaryHighEmphasis, + ), + cancelToastButton: IconButton( + icon: Icon( + Icons.close, + color: HMSThemeColors.onSurfaceHighEmphasis, + size: 24, + ), + onPressed: () { + meetingStore.removeToast(HMSToastsType.errorToast); + }, + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_role_change_decline_toast.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_role_change_decline_toast.dart new file mode 100644 index 000000000..7276412c9 --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_role_change_decline_toast.dart @@ -0,0 +1,71 @@ +///Dart imports +import "dart:math" as math; + +///Package imports +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toasts_type.dart'; +import 'package:hmssdk_flutter/hmssdk_flutter.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; +import 'package:hms_room_kit/src/meeting/meeting_store.dart'; +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; +import 'package:hms_room_kit/src/widgets/toasts/hms_toast.dart'; + +///[HMSRoleChangeDeclineToast] is a toast that is shown when a peer declines the request to join the stage +///It takes the following parameters: +///[peer] is the peer that declined the request +///[meetingStore] is the meetingStore of the meeting +///[toastColor] is the color of the toast +///[toastPosition] is the position of the toast from the bottom +class HMSRoleChangeDeclineToast extends StatelessWidget { + final HMSPeer peer; + final MeetingStore meetingStore; + final Color? toastColor; + final double? toastPosition; + + const HMSRoleChangeDeclineToast( + {super.key, + required this.peer, + required this.meetingStore, + this.toastColor, + this.toastPosition}); + + @override + Widget build(BuildContext context) { + return HMSToast( + toastColor: toastColor, + toastPosition: toastPosition, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/role_change_decline.svg", + height: 17, + width: 15, + colorFilter: ColorFilter.mode( + HMSThemeColors.onSurfaceHighEmphasis, BlendMode.srcIn), + ), + subtitle: SizedBox( + width: MediaQuery.of(context).size.width * 0.65, + child: HMSSubheadingText( + text: + "${peer.name.substring(0, math.min(15, peer.name.length))} declined the request to join the stage", + textColor: HMSThemeColors.onSurfaceHighEmphasis, + fontWeight: FontWeight.w600, + maxLines: 3, + letterSpacing: 0.1, + ), + ), + cancelToastButton: IconButton( + icon: Icon( + Icons.close, + color: HMSThemeColors.onSurfaceHighEmphasis, + size: 24, + ), + onPressed: () { + meetingStore.removeToast(HMSToastsType.roleChangeDeclineToast, + data: peer); + }, + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast.dart new file mode 100644 index 000000000..814d1cd5e --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast.dart @@ -0,0 +1,86 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart'; + +///[HMSToast] is a widget that is used to render the toast +///[leading] is a widget that is used to render the leading widget +///[subtitle] is a widget that is used to render the subtitle widget +///[action] is a widget that is used to render the action widget +///[cancelToastButton] is a widget that is used to render the cancel toast button +///[toastColor] is the color of the toast +///[toastPosition] is the position of the toast from the bottom +class HMSToast extends StatefulWidget { + final Widget? leading; + final Widget? subtitle; + final Widget? action; + final Widget? cancelToastButton; + final Color? toastColor; + final double? toastPosition; + const HMSToast( + {super.key, + this.leading, + this.subtitle, + this.action, + this.cancelToastButton, + this.toastPosition, + this.toastColor}); + + @override + State createState() => _HMSToastState(); +} + +class _HMSToastState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.only(bottom: widget.toastPosition ?? 68), + child: AlertDialog( + insetPadding: const EdgeInsets.all(0), + alignment: Alignment.bottomCenter, + contentPadding: const EdgeInsets.all(0), + elevation: 0, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), + content: Container( + decoration: BoxDecoration( + color: widget.toastColor ?? HMSThemeColors.surfaceDim, + borderRadius: BorderRadius.circular(8)), + height: 52, + width: MediaQuery.of(context).size.width - 10, + child: Padding( + padding: const EdgeInsets.only(left: 16.0, right: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + widget.leading ?? Container(), + widget.leading != null + ? const SizedBox( + width: 8, + ) + : Container(), + widget.subtitle ?? Container() + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + widget.action ?? Container(), + widget.cancelToastButton != null + ? const SizedBox( + width: 6, + ) + : Container(), + widget.cancelToastButton ?? Container() + ], + ) + ], + ), + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast_button.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast_button.dart new file mode 100644 index 000000000..66afa308f --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast_button.dart @@ -0,0 +1,52 @@ +///Package imports +import 'package:flutter/material.dart'; + +///Project imports +import 'package:hms_room_kit/src/widgets/common_widgets/hms_subheading_text.dart'; + +///[HMSToastButton] is a button that is used in the toast +///It takes the following parameters: +///[buttonTitle] is the title of the button +///[action] is the function that is called when the button is clicked +///[height] is the height of the button +///[width] is the width of the button +///[buttonColor] is the color of the button +///[textColor] is the color of the text of the button +class HMSToastButton extends StatelessWidget { + final String buttonTitle; + final Function action; + final double height; + final double width; + final Color buttonColor; + final Color textColor; + const HMSToastButton( + {super.key, + required this.buttonTitle, + required this.action, + this.height = 36, + this.width = 65, + required this.buttonColor, + required this.textColor}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + action(); + }, + child: Container( + width: width, + height: height, + decoration: BoxDecoration( + color: buttonColor, borderRadius: BorderRadius.circular(8)), + child: Center( + child: HMSSubheadingText( + text: buttonTitle, + textColor: textColor, + fontWeight: FontWeight.w600, + ), + ), + ), + ); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast_model.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast_model.dart new file mode 100644 index 000000000..c74f1907c --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toast_model.dart @@ -0,0 +1,21 @@ +///Package imports +import 'package:flutter/cupertino.dart'; + +///Project imports +import 'package:hms_room_kit/src/widgets/toasts/hms_toasts_type.dart'; + +///[HMSToastModel] is a model that is used to store the toasts data +///It takes the following parameters: +///[toastData] is the data that is to be shown in the toast +///[hmsToastType] is the type of toast to be shown +class HMSToastModel extends ChangeNotifier { + final HMSToastsType hmsToastType; + dynamic toastData; + + HMSToastModel(this.toastData, {required this.hmsToastType}); + + void updateToast(dynamic toastData) { + this.toastData = toastData; + notifyListeners(); + } +} diff --git a/packages/hms_room_kit/lib/src/widgets/toasts/hms_toasts_type.dart b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toasts_type.dart new file mode 100644 index 000000000..7b6f011fa --- /dev/null +++ b/packages/hms_room_kit/lib/src/widgets/toasts/hms_toasts_type.dart @@ -0,0 +1,7 @@ +///[HMSToastsType] is used to define the type of toast to be shown. +enum HMSToastsType { + roleChangeToast, + errorToast, + localScreenshareToast, + roleChangeDeclineToast +} diff --git a/packages/hms_room_kit/pubspec.yaml b/packages/hms_room_kit/pubspec.yaml new file mode 100644 index 000000000..737da2d7c --- /dev/null +++ b/packages/hms_room_kit/pubspec.yaml @@ -0,0 +1,80 @@ +name: hms_room_kit +description: 100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps. +version: 0.2.0 +homepage: https://www.100ms.live/ +repository: https://github.com/100mslive/100ms-flutter +issue_tracker: https://github.com/100mslive/100ms-flutter/issues +documentation: https://www.100ms.live/docs + +environment: + sdk: ">=2.17.0 <4.0.0" + flutter: ">=2.10.0" + +dependencies: + flutter: + sdk: flutter + + hmssdk_flutter: + path: ../hmssdk_flutter + intl: ^0.18.1 + permission_handler: ^10.4.3 + provider: ^6.0.5 + flutter_staggered_grid_view: ^0.6.2 + google_fonts: ^4.0.4 + bot_toast: ^4.0.4 + draggable_widget: ^2.0.0 + badges: ^3.1.1 + shared_preferences: ^2.2.0 + lottie: ^2.3.2 + flutter_svg: ^2.0.5 + path_provider: ^2.0.15 + dropdown_button2: ^2.1.4 + focus_detector: ^2.0.1 + flutter_linkify: ^6.0.0 + tuple: ^2.0.2 + url_launcher: ^6.1.11 + share_plus: ^7.0.2 + flutter_foreground_task: ^6.0.0+1 + collection: ^1.17.0 + dots_indicator: 3.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + # To add assets to your package, add an assets section, like this: + assets: + - lib/src/assets/ + - lib/src/assets/icons/ + # + # For details regarding assets in packages, see + # https://flutter.dev/assets-and-images/#from-packages + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # To add custom fonts to your package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/custom-fonts/#from-packages diff --git a/test/hmssdk_flutter_test.dart b/packages/hms_room_kit/test/hmssdk_uikit_test.dart similarity index 100% rename from test/hmssdk_flutter_test.dart rename to packages/hms_room_kit/test/hmssdk_uikit_test.dart diff --git a/packages/hmssdk_flutter/.gitignore b/packages/hmssdk_flutter/.gitignore new file mode 100644 index 000000000..32a76060d --- /dev/null +++ b/packages/hmssdk_flutter/.gitignore @@ -0,0 +1,42 @@ +.DS_Store +.dart_tool/ + +.packages +.pub/ +build/ + +*.g.dart +*.idea +private_key.pepk +# ./example/android/app/100msKeyStore +# 100msKeyStore +# example/ios/Runner.app.dSYM.zip +# example/ios/Runner.ipa +# example/lib/app_secrets.dart +# launch.json +./documentation + +# example/android/app/google-services.json +# example/android/fastlane/Appfile +# example/android/fastlane/Fastfile +# example/android/fastlane/Pluginfile +# example/android/fastlane/README.md +example/android/flutter-hms-4aea6d38fd2a.json +# /example/android/fastlane/report.xml + +# example/ios/fastlane/Appfile +# example/ios/fastlane/Fastfile +# example/ios/fastlane/Pluginfile +example/ios/flutter-hms-4aea6d38fd2a.json +# example/ios/fastlane/README.md +# /example/ios/fastlane/report.xml +# example/ios/Runner/GoogleService-Info.plist +# example/ios/config/GoogleService-Info.plist +# *.p8 +# sample apps/hms-callkit-app/.flutter-plugins +# sample apps/hms-callkit-app/.flutter-plugins-dependencies +# sample apps/flutter-quickstart-app/.flutter-plugins +# sample apps/flutter-quickstart-app/.flutter-plugins-dependencies +# ui_kit/.flutter-plugins +# ui_kit/.flutter-plugins-dependencies +# ui_kit/lib/service/app_secrets.dart \ No newline at end of file diff --git a/.pubignore b/packages/hmssdk_flutter/.pubignore similarity index 100% rename from .pubignore rename to packages/hmssdk_flutter/.pubignore diff --git a/CHANGELOG.md b/packages/hmssdk_flutter/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to packages/hmssdk_flutter/CHANGELOG.md diff --git a/packages/hmssdk_flutter/LICENSE b/packages/hmssdk_flutter/LICENSE new file mode 100644 index 000000000..89aa722d5 --- /dev/null +++ b/packages/hmssdk_flutter/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 100ms + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/hmssdk_flutter/README.md b/packages/hmssdk_flutter/README.md new file mode 100644 index 000000000..4cb384de8 --- /dev/null +++ b/packages/hmssdk_flutter/README.md @@ -0,0 +1,590 @@ +[![100ms-svg](https://user-images.githubusercontent.com/93931528/205858417-8c0a0d1b-2d46-4710-9316-7418092fd3d6.svg)](https://100ms.live/) + +[![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) +[![License](https://img.shields.io/github/license/100mslive/100ms-flutter)](https://www.100ms.live/) +[![Documentation](https://img.shields.io/badge/Read-Documentation-blue)](https://docs.100ms.live/flutter/v2/foundation/basics) +[![Discord](https://img.shields.io/discord/843749923060711464?label=Join%20on%20Discord)](https://100ms.live/discord) +[![Firebase](https://img.shields.io/badge/Download%20Android-Firebase-green)](https://appdistribution.firebase.dev/i/b623e5310929ab70) +[![TestFlight](https://img.shields.io/badge/Download%20iOS-TestFlight-blue)](https://testflight.apple.com/join/Uhzebmut) +[![Activity](https://img.shields.io/github/commit-activity/m/100mslive/100ms-flutter.svg)](https://github.com/100mslive/100ms-flutter/projects/1) +[![Register](https://img.shields.io/badge/Contact-Know%20More-blue)](https://dashboard.100ms.live/register) + +# 100ms Flutter SDK 🎉 + +Integrate Real Time Audio and Video conferencing, Interactive Live Streaming, and Chat in your apps with 100ms Flutter SDK. + +With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture (PiP), CallKit, VoIP, one-to-one Video Call Modes, Audio Rooms, Video Player and much more, add immersive real-time communications to your apps. + +📖 Read the Complete Documentation here: https://www.100ms.live/docs/flutter/v2/guides/quickstart + +📲 Download the Sample iOS app here: + +🤖 Download the Sample Android app here: + +100ms Flutter apps are also released on the App Stores, you can download them here: + +📲 iOS app on Apple App Store: + +🤖 Android app on Google Play Store: + +## 🚂 Setup Guide + +1. Sign up on & visit the Developer tab to access your credentials. + +2. Get familiarized with [Tokens & Security here](https://www.100ms.live/docs/flutter/v2/foundation/security-and-tokens) + +3. Complete the steps in [Auth Token Quick Start Guide](https://www.100ms.live/docs/flutter/v2/guides/token) + +4. Get the HMSSDK via [pub.dev](https://pub.dev/packages/hmssdk_flutter). Add the `hmssdk_flutter` to your pubspec.yaml. + +📖 Do refer the Complete [Installation Guide here](https://www.100ms.live/docs/flutter/v2/features/integration). + +## 🏃‍♀ī¸ How to run the Example App + +The fully fledged Example app is [available here](https://github.com/100mslive/100ms-flutter/tree/main/example). + +🚀 We have added explanations & recommended usage guide for different features, UI Layouts, Data Store, etc in [Example app ReadMe](https://github.com/100mslive/100ms-flutter/blob/main/example/README.md). + +To run the Example App on your system follow these steps - + +1. Clone the 100ms Flutter [Github Repo](https://github.com/100mslive/100ms-flutter.git) + +2. In project root, run `flutter pub get` to build the Flutter package +3. Change directory to `example` folder +4. Now, to run the app, simply execute the `flutter run` command to run the app on a connected device, or iOS simulator, or Android Emulator. +5. For running on an iOS Device (iPhone or iPad), ensure you have set the Correct Development Team in Xcode Signing & Capabilities section. + +The default [Example app](https://github.com/100mslive/100ms-flutter/tree/main/example) uses Provider State Management library. For other implementations please check out - + +- [Bloc](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/bloc) +- [Getx](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/getx) +- [Riverpod](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/riverpod) +- [Mobx](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/mobx) +- [Simple QuickStart](https://github.com/100mslive/100ms-flutter/tree/main/sample%20apps/flutter-quickstart-app) + +## ☝ī¸ Minimum Configuration + +- Support for Flutter 3.3.0 or above +- Support for Android API level 21 or above +- Support for Java 8 or above +- Support for iOS 12 or above +- Xcode 12 or above + +## 🤝 Recommended Configuration + +- Flutter 3.7.0 or above +- Android API level 33 or above +- Java 11 or above +- iOS 16 or above +- Xcode 14 or above + +## 📱 Supported Devices + +- The Android SDK supports Android API level 21 and above. It is built for armeabi-v7a, arm64-v8a, x86, and x86_64 architectures. Devices running Android OS 12 or above is recommended. + +- iPhone & iPads with iOS version 12 or above are supported. Devices running iOS 16 or above is recommended. + +## 🤖 [Android Permissions](https://www.100ms.live/docs/flutter/v2/features/integration#android) + +Complete Permissions Guide is [available here](https://www.100ms.live/docs/flutter/v2/features/integration). + +Add the following permissions in the Android's `AndroidManifest.xml` file - + +```xml + + + + + + + + + + + + + + + + + + + + + +``` + +## 🍎 [iOS Permissions](https://www.100ms.live/docs/flutter/v2/features/integration#i-os) + +Add following permissions in iOS Info.plist file + +```xml +NSMicrophoneUsageDescription +{YourAppName} wants to use your microphone + +NSCameraUsageDescription +{YourAppName} wants to use your camera + +NSLocalNetworkUsageDescription +{YourAppName} App wants to use your local network +``` + +## 🧐 [Key Concepts](https://www.100ms.live/docs/flutter/v2/foundation/basics) + +- `Room` A room is the basic object that 100ms SDKs return on successful connection. This contains references to peers, tracks and everything you need to render a live a/v or live streaming app. + +- `Peer` A peer is the object returned by 100ms SDKs that contains all information about a user - name, role, video track etc. + +- `Track` A track is a segment of media (audio/video) captured from the peer's camera and microphone. Peers in a session publish local tracks and subscribe to remote tracks from other peers. + +- `Role` A role defines who can a peer see/hear, the quality at which they publish their video, whether they have permissions to publish video/screenshare, mute someone, change someone's role. + +## â™ģī¸ [Setup Update Listeners](https://www.100ms.live/docs/flutter/v2/features/update-listeners) + +100ms SDK provides callbacks to the client app about any change or update happening in the room after a user has joined by implementing `HMSUpdateListener`. These updates can be used to render the video on the screen or to display other info regarding the room. + +```dart + +/// 100ms SDK provides callbacks to the client app about any change or update happening in the room after a user has joined by implementing HMSUpdateListener. +/// These updates can be used to render the video on the screen or to display other info regarding the room. +abstract class HMSUpdateListener { + + + /// This will be called on a successful JOIN of the room by the user + /// + /// This is the point where applications can stop showing their loading state + /// [room]: the room which was joined + void onJoin({required HMSRoom room}); + + + /// This will be called whenever there is an update on an existing peer + /// or a new peer got added/existing peer is removed. + /// + /// This callback can be used to keep a track of all the peers in the room + /// [peer]: the peer who joined/left or was updated + /// [update]: the triggered update type. Should be used to perform different UI Actions + void onPeerUpdate({required HMSPeer peer, required HMSPeerUpdate update}); + + + /// This is called when there are updates on an existing track + /// or a new track got added/existing track is removed + /// + /// This callback can be used to render the video on screen whenever a track gets added + /// [track]: the track which was added, removed or updated + /// [trackUpdate]: the triggered update type + /// [peer]: the peer for which track was added, removed or updated + void onTrackUpdate({required HMSTrack track, required HMSTrackUpdate trackUpdate, required HMSPeer peer}); + + + /// This will be called when there is an error in the system + /// and SDK has already retried to fix the error + /// [error]: the error that occurred + void onHMSError({required HMSException error}); + + + /// This is called when there is a new broadcast message from any other peer in the room + /// + /// This can be used to implement chat is the room + /// [message]: the received broadcast message + void onMessage({required HMSMessage message}); + + + /// This is called every 1 second with a list of active speakers + /// + /// ## A HMSSpeaker object contains - + /// - peerId: the peer identifier of HMSPeer who is speaking + /// - trackId: the track identifier of HMSTrack which is emitting audio + /// - audioLevel: a number within range 1-100 indicating the audio volume + /// + /// A peer who is not present in the list indicates that the peer is not speaking + /// + /// This can be used to highlight currently speaking peers in the room + /// [speakers] the list of speakers + void onUpdateSpeakers({required List updateSpeakers}); + + + /// This is called when there is a change in any property of the Room + /// + /// [room]: the room which was joined + /// [update]: the triggered update type. Should be used to perform different UI Actions + void onRoomUpdate({required HMSRoom room, required HMSRoomUpdate update}); + + + /// when network or some other error happens it will be called + void onReconnecting(); + + + /// when you are back in the room after reconnection + void onReconnected(); + + + /// This is called when someone asks for a change or role + /// + /// for eg. admin can ask a peer to become host from guest. + /// this triggers this call on peer's app + void onRoleChangeRequest({required HMSRoleChangeRequest roleChangeRequest}); + + + /// when someone requests for track change of yours be it video or audio this will be triggered + /// [hmsTrackChangeRequest] request instance consisting of all the required info about track change + void onChangeTrackStateRequest({required HMSTrackChangeRequest hmsTrackChangeRequest}); + + + /// when someone kicks you out or when someone ends the room at that time it is triggered + /// [hmsPeerRemovedFromPeer] it consists of info about who removed you and why. + void onRemovedFromRoom({required HMSPeerRemovedFromPeer hmsPeerRemovedFromPeer}); + + + /// whenever a new audio device is plugged in or audio output is changed we + /// get the onAudioDeviceChanged update + /// This callback is only fired on Android devices. On iOS, this callback will not be triggered. + /// - Parameters: + /// - currentAudioDevice: Current audio output route + /// - availableAudioDevice: List of available audio output devices + void onAudioDeviceChanged( + {HMSAudioDevice? currentAudioDevice, + List? availableAudioDevice}); + + + /// Whenever a user joins a room [onSessionStoreAvailable] is fired to get an instance of [HMSSessionStore] + /// which can be used to perform session metadata operations + /// - Parameters: + /// - hmsSessionStore: An instance of HMSSessionStore which will be used to call session metadata methods + void onSessionStoreAvailable( + {HMSSessionStore? hmsSessionStore}); +} +``` + +## 🤔 [How to listen to Peer & Track updates?](https://www.100ms.live/docs/flutter/v2/features/update-listener-enums) + +The 100ms SDK sends updates to the application about any change in HMSPeer, HMSTrack, HMSRoom, etc via the callbacks in `HMSUpdateListener`. + +The methods of HMSUpdateListener are invoked to notify updates happening in the room like a peer join/leave, track mute/unmute etc. + +More information about Update Listeners is [available here](https://www.100ms.live/docs/flutter/v2/features/update-listeners). + +The following are the different types of updates that are emitted by the SDK - + +```txt +HMSPeerUpdate + .peerJoined: A new peer joins the Room + .peerLeft: An existing peer leaves the Room + .roleUpdated: When a peer's Role has changed + .metadataChanged: When a peer's metadata has changed + .nameChanged: When a peer's name has changed + + +HMSTrackUpdate + .trackAdded: A new track (audio or video) is added to the Room + .trackRemoved: An existing track is removed from the Room + .trackMuted: A track of a peer is muted + .trackUnMuted: A muted track of a peer was unmuted + .trackDegraded: When track is degraded due to bad network conditions + .trackRestored: When a degraded track is restored when optimal network conditions are available again + + +HMSRoomUpdate + .roomMuted: When room is muted to due external interruption like a Phone Call + .roomUnmuted: When a muted room is unmuted when external interruption has ended + .serverRecordingStateUpdated: When Server recording state is updated + .browserRecordingStateUpdated: When Browser recording state is changed + .rtmpStreamingStateUpdated: When RTMP is started or stopped + .hlsStreamingStateUpdated: When HLS is started or stopped + .hlsRecordingStateUpdated: When HLS recording state is updated +``` + +## 🙏 [Join a Room](https://www.100ms.live/docs/flutter/v2/features/join) + +To join and interact with others in audio or video call, the user needs to `join` a `room`. + +To join a Room, your app should have - + +1. User Name - The name which should be displayed to other peers in the room. +2. [Authentication Token](https://www.100ms.live/docs/flutter/v2/foundation/security-and-tokens) - The Client side Authentication Token generated by the Token Service. + +### 🔑 [Get Authentication token](https://www.100ms.live/docs/flutter/v2/get-started/quickstart#fetch-token-to-join-the-room) + +To join a room we need an authentication token as mentioned above. There are two methods to get the token: + +#### Fetch token using room-code method (Recommended) + +We can get the authentication token using room-code from meeting URL. + +Let's understand the subdomain and code from the sample URL +In this URL: `http://100ms-rocks.app.100ms.live/meeting/abc-defg-hij` + +- Subdomain is `100ms-rocks` +- Room code is `abc-defg-ghi` + +Now to get the room-code from meeting URL we can write our own logic or use the `getCode` method from [here](https://github.com/100mslive/100ms-flutter/blob/main/example/lib/service/room_service.dart) + +To generate token we will be using `getAuthTokenByRoomCode` method of `HMSSDK`. This method has `roomCode` as a required +parameter, `userId` & `endPoint` as optional parameter. + +> This method should be called after calling the `build` method. + +Let's checkout the implementation: + +```dart + //This returns an object of Future which can be either + //of HMSException type or String? type based on whether + //method execution is completed successfully or not + + dynamic authToken = await hmsSDK.getAuthTokenByRoomCode(roomCode: 'YOUR_ROOM_CODE'); + + if(authToken is String){ + HMSConfig roomConfig = HMSConfig( + authToken: authToken, + userName: userName, + ); + + hmsSDK.join(config: roomConfig); + } + else if(authToken is HMSException){ + // Handle the error + } +``` + +#### Get temporary token from dashboard + +To test audio/video functionality, you need to connect to a 100ms room; please check the following steps for the same: + +1. Navigate to your [100ms dashboard](https://dashboard.100ms.live/dashboard) or [create an account](https://dashboard.100ms.live/register) if you don't have one. +2. Use the `Video Conferencing Starter Kit` to create a room with a default template assigned to it to test this app quickly. +3. Go to the [Rooms page](https://dashboard.100ms.live/rooms) in your dashboard, click on the `Room Id` of the room you created above, and click on the `Join Room` button on the top right. +4. In the Join with SDK section you can find the `Auth Token for role` ; you can click on the 'copy' icon to copy the authentication token. + +> Token from 100ms dashboard is for testing purposes only, For production applications you must generate tokens on your own server. +> Refer to the [Management Token section](/flutter/v2/foundation/security-and-tokens#management-token) in Authentication and Tokens guide for more information. + +You can also optionally pass these fields in the HMSSDK constructor - + +1. Track Settings - Such as joining a Room with Muted Audio or Video using the `HMSTrackSetting` object. More information is [available here](https://www.100ms.live/docs/flutter/v2/features/join#join-with-muted-audio-video). + +2. User Metadata - This can be used to pass any additional metadata associated with the user using `metadata` of `HMSConfig` object. For Eg: user-id mapping at the application side. More information is available [here](https://www.100ms.live/docs/flutter/v2/advanced-features/peer-metadata-update). + +More information about Joining a Room is [available here](https://www.100ms.live/docs/flutter/v2/features/join). + +```dart +// create a class that implements `HMSUpdateListener` and acts as a data source for our UI +class Meeting implements HMSUpdateListener { + + late HMSSDK hmsSDK; + + Meeting() { + initHMSSDK(); + } + + void initHMSSDK() async { + hmsSDK = HMSSDK(); // create an instance of `HMSSDK` by invoking it's constructor + await hmsSDK.build(); // ensure to await while invoking the `build` method + hmsSDK.addUpdateListener(this); // `this` value corresponds to the instance implementing HMSUpdateListener + HMSConfig config = HMSConfig(authToken: 'eyJH5c', // client-side token generated from your token service + userName: 'John Appleseed'); + hmsSDK.join(config: config); // Now, we are primed to join the room. All you have to do is call `join` by passing the `config` object. + } + + ... // implement methods of HMSUpdateListener +} +``` + +## 🎞 [Display a Track](https://www.100ms.live/docs/flutter/v2/features/render-video) + +It all comes down to this. All the setup so far has been done so that we can show live-streaming videos in our beautiful app. + +100ms Flutter Package provides the `HMSVideoView` widget that renders the video on the screen. + +We simply have to pass a Video Track object to the `HMSVideoView` to begin automatic rendering of Live Video Stream. + +We can also optionally pass props like `key`, `scaleType`, `mirror` to customize the `HMSVideoView` widget. + +```dart +HMSVideoView( + track: videoTrack, + key: Key(videoTrack.trackId), +), +``` + +More information about displaying a Video is [available here](https://www.100ms.live/docs/react-native/v2/features/render-video). + +## 👋 [Leave Room](https://www.100ms.live/docs/flutter/v2/features/leave) + +Once you're done with the meeting and want to exit, call leave on the HMSSDK instance that you created to join the room. + +Before calling leave, remove the `HMSUpdateListener` instance as: + +```dart +// updateListener is the instance of class in which HMSUpdateListener is implemented +hmsSDK.removeUpdateListener(updateListener); +``` + +To leave the meeting, call the `leave` method of `HMSSDK` and pass the `hmsActionResultListener` parameter to get a success callback from SDK in the `onSuccess` override method as follow. + +> You will need to implement the `HMSActionResultListener` interface in a class to get `onSuccess` and `onException` callback. +> To know about how to implement `HMSActionResultListener` check the docs [here](https://www.100ms.live/docs/flutter/v2/features/action-result-listeners) + +```dart +class Meeting implements HMSActionResultListener{ +//this is the instance of class implementing HMSActionResultListener +await hmsSDK.leave(hmsActionResultListener: this); + +@override + void onSuccess( + {HMSActionResultListenerMethod methodType = HMSActionResultListenerMethod.unknown, Map? arguments}) { + switch (methodType) { + case HMSActionResultListenerMethod.leave: + // Room leaved successfully + // Clear the local room state + break; + ... + } + } +} +``` + +More information about Leaving a Room is [available here](https://www.100ms.live/docs/flutter/v2/features/leave). + +## 🛤 HMSTracks Explained + +`HMSTrack` is the super-class of all the tracks that are used inside `HMSSDK`. Its hierarchy looks like this - + +```dart +HMSTrack + - AudioTrack + - LocalAudioTrack + - RemoteAudioTrack + - VideoTrack + - LocalVideoTrack + - RemoteVideoTrack +``` + +## 🛤 How to know the type and source of Track? + +HMSTrack contains a field called source which denotes the source of the Track. + +`Source` can have the following values - + +- `regular` For normal Audio or Video being published by peers +- `screen` For Screenshare track whenver a peer starts Broadcasting their Screen in a Room +- `plugin` For a custom Audio or Video plugin being used in Room + +To know the type of track, check the value of type which would be one of the enum values - `AUDIO` or `VIDEO` + +## 📨 [Chat Messaging](https://www.100ms.live/docs/flutter/v2/features/chat) + +You can send a chat or any other kind of message from a local peer to all remote peers in the room. + +To send a message first create an instance of `HMSMessage` object. + +Add the information to be sent in the `message` property of `HMSMessage`. + +Then use the `sendBroadcastMessage` function on the instance of HMSSDK for broadcast message, `sendGroupMessage` for group message and `sendDirectMessage` for direct message. + +When you(the local peer) receives a message from others(any remote peer), `void onMessage({required HMSMessage message})` function of `HMSUpdateListener` is invoked. + +More information about Chat Messaging is [available here](https://www.100ms.live/docs/flutter/v2/features/chat). + +```dart +// onMessage is HMSUpdateListener method called when a new message is received +@override +void onMessage({required HMSMessage message}) { + //Here we will receive messages sent by other peers +} + + +///[message]: Message to be sent +///[type]: Message type(More about this at the end) +///[hmsActionResultListener]: instance of class implementing HMSActionResultListener +//Here this is an instance of class that implements HMSActionResultListener i.e. Meeting +hmsSDK.sendBroadcastMessage( + message: message, + type: type, + hmsActionResultListener: this); + + +///[message]: Message to be sent +///[peerTo]: Peer to whom message needs to be sent +///[type]: Message type(More about this at the end) +///[hmsActionResultListener]: instance of class implementing HMSActionResultListener +//Here this is an instance of class that implements HMSActionResultListener i.e. Meeting +hmsSDK.sendDirectMessage( + message: message, + peerTo: peerTo, + type: type, + hmsActionResultListener: this); + + +///[message]: Message to be sent +///[hmsRolesTo]: Roles to which this message needs to be sent +///[type]: Message type(More about this at the end) +///[hmsActionResultListener]: instance of class implementing HMSActionResultListener +//Here this is an instance of class that implements HMSActionResultListener i.e. Meeting +hmsSDK.sendGroupMessage( + message: message, + hmsRolesTo: rolesToSendMessage, + type: type, + hmsActionResultListener: this); + + + +@override +void onSuccess( + {HMSActionResultListenerMethod methodType = + HMSActionResultListenerMethod.unknown, + Map? arguments}) { + + switch (methodType) { + + case HMSActionResultListenerMethod.sendBroadcastMessage: + //Broadcast Message sent successfully + break; + + case HMSActionResultListenerMethod.sendGroupMessage: + //Group Message sent successfully + break; + + case HMSActionResultListenerMethod.sendDirectMessage: + //Direct Message sent successfully + break; + ... + } + } + + +@override +void onException( + {HMSActionResultListenerMethod methodType = + HMSActionResultListenerMethod.unknown, + Map? arguments, + required HMSException hmsException}) { + + switch (methodType) { + + case HMSActionResultListenerMethod.sendBroadcastMessage: + // Check the HMSException object for details about the error + break; + + case HMSActionResultListenerMethod.sendGroupMessage: + // Check the HMSException object for details about the error + break; + + case HMSActionResultListenerMethod.sendDirectMessage: + // Check the HMSException object for details about the error + break; + ... + } + + } +``` + +📖 Do refer the Complete Documentation Guide [available here](https://www.100ms.live/docs/flutter/v2/guides/quickstart). + +🏃‍♀ī¸ Checkout the Example app implementation [available here](https://github.com/100mslive/100ms-flutter/tree/main/example). + +🚀 We have added explanations & recommended usage guide for different features, UI Layouts, Data Store, etc in [Example app ReadMe](https://github.com/100mslive/100ms-flutter/blob/main/example/README.md). + +100ms Flutter apps are released on the App Stores, you can download them here: + +📲 iOS app on Apple App Store: + +🤖 Android app on Google Play Store: diff --git a/android/.gitignore b/packages/hmssdk_flutter/android/.gitignore similarity index 100% rename from android/.gitignore rename to packages/hmssdk_flutter/android/.gitignore diff --git a/android/build.gradle b/packages/hmssdk_flutter/android/build.gradle similarity index 75% rename from android/build.gradle rename to packages/hmssdk_flutter/android/build.gradle index 2ac0b37ec..7f96d2ac5 100644 --- a/android/build.gradle +++ b/packages/hmssdk_flutter/android/build.gradle @@ -41,9 +41,12 @@ android { } dependencies { - implementation "live.100ms:android-sdk:${sdkVersions['android']}" - implementation "live.100ms:video-view:${sdkVersions['android']}" - implementation "live.100ms:hls-player:${sdkVersions['android']}" +// implementation "live.100ms:android-sdk:${sdkVersions['android']}" +// implementation "live.100ms:video-view:${sdkVersions['android']}" +// implementation "live.100ms:hls-player:${sdkVersions['android']}" + implementation "com.github.100mslive.android-sdk:videoview:dev-v2-SNAPSHOT" + implementation "com.github.100mslive.android-sdk:hls-player:dev-v2-SNAPSHOT" + implementation 'com.github.100mslive.android-sdk:lib:dev-v2-SNAPSHOT' implementation 'com.google.code.gson:gson:2.9.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' diff --git a/example/android/gradle.properties b/packages/hmssdk_flutter/android/gradle.properties similarity index 100% rename from example/android/gradle.properties rename to packages/hmssdk_flutter/android/gradle.properties diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/packages/hmssdk_flutter/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from android/gradle/wrapper/gradle-wrapper.properties rename to packages/hmssdk_flutter/android/gradle/wrapper/gradle-wrapper.properties diff --git a/android/settings.gradle b/packages/hmssdk_flutter/android/settings.gradle similarity index 100% rename from android/settings.gradle rename to packages/hmssdk_flutter/android/settings.gradle diff --git a/android/src/main/AndroidManifest.xml b/packages/hmssdk_flutter/android/src/main/AndroidManifest.xml similarity index 100% rename from android/src/main/AndroidManifest.xml rename to packages/hmssdk_flutter/android/src/main/AndroidManifest.xml diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/Constants.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/Constants.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/Constants.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/Constants.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSAudioTrackSettingsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSAudioTrackSettingsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSAudioTrackSettingsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSAudioTrackSettingsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSChangeTrackStateRequestExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSChangeTrackStateRequestExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSChangeTrackStateRequestExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSChangeTrackStateRequestExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSErrorLogger.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSErrorLogger.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSErrorLogger.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSErrorLogger.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSExceptionExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSExceptionExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSExceptionExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSExceptionExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSKeyChangeObserver.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSKeyChangeObserver.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSKeyChangeObserver.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSKeyChangeObserver.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogSettings.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogSettings.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogSettings.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogSettings.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSLogsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageRecipientExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageRecipientExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageRecipientExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSMessageRecipientExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSNetworkQualityExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSNetworkQualityExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSNetworkQualityExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSNetworkQualityExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerUpdateExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerUpdateExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerUpdateExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPeerUpdateExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPreviewExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPreviewExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPreviewExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSPreviewExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRemovedFromRoomExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRemovedFromRoomExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRemovedFromRoomExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRemovedFromRoomExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSResultExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSResultExtension.kt similarity index 74% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSResultExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSResultExtension.kt index a47c31344..7c43464d0 100644 --- a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSResultExtension.kt +++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSResultExtension.kt @@ -3,7 +3,7 @@ package live.hms.hmssdk_flutter class HMSResultExtension { companion object { - fun toDictionary(success: Boolean, data: Any?): HashMap { + fun toDictionary(success: Boolean, data: Any? = null): HashMap { val hashMap = HashMap() hashMap["success"] = success hashMap["data"] = data diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleChangedExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleChangedExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleChangedExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleChangedExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoleExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomUpdateExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomUpdateExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomUpdateExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRoomUpdateExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtcStatsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtcStatsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtcStatsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtcStatsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSessionMetadataExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSessionMetadataExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSessionMetadataExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSessionMetadataExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerDefinitionExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerDefinitionExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerDefinitionExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerDefinitionExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerSettingsPolicyExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerSettingsPolicyExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerSettingsPolicyExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastLayerSettingsPolicyExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsPolicyExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsPolicyExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsPolicyExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSimulcastSettingsPolicyExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSpeakerExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSpeakerExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSpeakerExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSpeakerExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSubscribeDegradationParams.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSubscribeDegradationParams.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSubscribeDegradationParams.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSSubscribeDegradationParams.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackInitStateExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackInitStateExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackInitStateExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackInitStateExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackSettingsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackSettingsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackSettingsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackSettingsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackUpdateExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackUpdateExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackUpdateExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSTrackUpdateExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoResolutionExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoResolutionExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoResolutionExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoResolutionExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoTrackSettingsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoTrackSettingsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoTrackSettingsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSVideoTrackSettingsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt similarity index 96% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt index f6d292f96..9e64045bc 100644 --- a/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt +++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt @@ -71,6 +71,8 @@ class HmssdkFlutterPlugin : private lateinit var hmsVideoFactory: HMSVideoViewFactory private lateinit var hmsHLSPlayerFactory: HMSHLSPlayerFactory private var requestChange: HMSRoleChangeRequest? = null + var previewForRoleVideoTrack: HMSLocalVideoTrack? = null + var previewForRoleAudioTrack: HMSLocalAudioTrack? = null var hmssdkFlutterPlugin: HmssdkFlutterPlugin? = null private var hmsSessionStore: HmsSessionStore? = null private var hmsKeyChangeObserverList = ArrayList() @@ -139,12 +141,12 @@ class HmssdkFlutterPlugin : // MARK: Audio Helpers "switch_audio", "is_audio_mute", "mute_room_audio_locally", "un_mute_room_audio_locally", "set_volume", "toggle_mic_mute_state" -> { - HMSAudioAction.audioActions(call, result, hmssdk!!) + HMSAudioAction.audioActions(call, result, hmssdk!!, hmssdkFlutterPlugin) } // MARK: Video Helpers "switch_video", "switch_camera", "is_video_mute", "mute_room_video_locally", "un_mute_room_video_locally", "toggle_camera_mute_state" -> { - HMSVideoAction.videoActions(call, result, hmssdk!!) + HMSVideoAction.videoActions(call, result, hmssdk!!, hmssdkFlutterPlugin) } // MARK: Messaging @@ -153,7 +155,7 @@ class HmssdkFlutterPlugin : } // MARK: Role based Actions - "get_roles", "change_role", "accept_change_role", "end_room", "remove_peer", "on_change_track_state_request", "change_track_state_for_role", "change_role_of_peers_with_roles", "change_role_of_peer" -> { + "get_roles", "change_role", "accept_change_role", "end_room", "remove_peer", "on_change_track_state_request", "change_track_state_for_role", "change_role_of_peers_with_roles", "change_role_of_peer", "preview_for_role", "cancel_preview" -> { roleActions(call, result) } @@ -298,6 +300,12 @@ class HmssdkFlutterPlugin : "change_role_of_peer" -> { changeRoleOfPeer(call, result) } + "preview_for_role" -> { + previewForRole(call, result) + } + "cancel_preview" -> { + cancelPreview(result) + } else -> { result.notImplemented() } @@ -655,6 +663,47 @@ class HmssdkFlutterPlugin : ) } + private fun previewForRole(call: MethodCall, result: Result) { + val roleName = call.argument("role_name") + val role = hmssdk?.getRoles()?.first { + it.name == roleName + } + + role?.let { hmsRole -> + hmssdk + ?.preview( + hmsRole, + object : RolePreviewListener { + override fun onError(error: HMSException) { + result.success(HMSResultExtension.toDictionary(false, HMSExceptionExtension.toDictionary(error))) + } + + override fun onTracks(localTracks: Array) { + val tracks = ArrayList() + localTracks.forEach { track -> + + // /Assigning values to preview for role tracks + if (track.type == HMSTrackType.AUDIO) { + previewForRoleAudioTrack = track as HMSLocalAudioTrack + } else if (track.type == HMSTrackType.VIDEO && track.source == "regular") { + previewForRoleVideoTrack = track as HMSLocalVideoTrack + } + HMSTrackExtension.toDictionary(track)?.let { tracks.add(it) } + } + result.success(HMSResultExtension.toDictionary(true, tracks)) + } + }, + ) + } + } + + private fun cancelPreview(result: Result) { + hmssdk?.cancelPreview() + previewForRoleVideoTrack = null + previewForRoleAudioTrack = null + result.success(HMSResultExtension.toDictionary(true)) + } + private fun getRoles(result: Result) { val args = HashMap() @@ -673,6 +722,8 @@ class HmssdkFlutterPlugin : hmsActionResultListener = HMSCommonAction.getActionListener(result), ) requestChange = null + previewForRoleVideoTrack = null + previewForRoleAudioTrack = null } else { val hmsException = HMSException( action = "Resend Role Change Request", diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HLSStatsHandler.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HLSStatsHandler.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HLSStatsHandler.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HLSStatsHandler.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSCueExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSCueExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSCueExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSCueExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlaybackStateExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlaybackStateExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlaybackStateExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlaybackStateExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlayerAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlayerAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlayerAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSHLSPlayerAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSPlayerStatsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSPlayerStatsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSPlayerStatsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hls_player/HMSPlayerStatsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/AudioParamsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/AudioParamsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/AudioParamsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/AudioParamsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PermissionParamsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PermissionParamsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PermissionParamsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PermissionParamsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PublishParamsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PublishParamsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PublishParamsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/PublishParamsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/SubscribeSettings.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/SubscribeSettings.kt similarity index 90% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/SubscribeSettings.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/SubscribeSettings.kt index 502ec09fc..c11f3e06e 100644 --- a/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/SubscribeSettings.kt +++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/SubscribeSettings.kt @@ -4,8 +4,8 @@ import live.hms.video.sdk.models.role.SubscribeParams class SubscribeSettings { companion object { - fun toDictionary(subscribeSettings: SubscribeParams?): HashMap? { - val args = HashMap() + fun toDictionary(subscribeSettings: SubscribeParams?): HashMap? { + val args = HashMap() if (subscribeSettings == null)return null args["max_subs_bit_rate"] = subscribeSettings.maxSubsBitRate args["subscribe_to_roles"] = subscribeSettings.subscribeTo diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/VideoParamsExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/VideoParamsExtension.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/VideoParamsExtension.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/hms_role_components/VideoParamsExtension.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioAction.kt similarity index 86% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioAction.kt index 67ad1e3a7..66ba6c2e1 100644 --- a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioAction.kt +++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioAction.kt @@ -8,7 +8,7 @@ import live.hms.video.utils.HmsUtilities class HMSAudioAction { companion object { - fun audioActions(call: MethodCall, result: Result, hmssdk: HMSSDK) { + fun audioActions(call: MethodCall, result: Result, hmssdk: HMSSDK, hmssdkFlutterPlugin: HmssdkFlutterPlugin?) { when (call.method) { "switch_audio" -> { switchAudio(call, result, hmssdk) @@ -26,7 +26,7 @@ class HMSAudioAction { setVolume(call, result, hmssdk) } "toggle_mic_mute_state" -> { - toggleMicMuteState(result, hmssdk) + toggleMicMuteState(result, hmssdk, hmssdkFlutterPlugin) } else -> { result.notImplemented() @@ -46,14 +46,21 @@ class HMSAudioAction { } } - private fun toggleMicMuteState(result: Result, hmssdk: HMSSDK) { + private fun toggleMicMuteState(result: Result, hmssdk: HMSSDK, hmssdkFlutterPlugin: HmssdkFlutterPlugin?) { val peer = hmssdk.getLocalPeer() val audioTrack = peer?.audioTrack if (audioTrack != null) { audioTrack?.setMute(!(audioTrack.isMute)) result.success(true) } else { - result.success(false) + // /Checking whether preview for role audio track exist or not + if (hmssdkFlutterPlugin?.previewForRoleAudioTrack != null) { + val previewTrack = hmssdkFlutterPlugin.previewForRoleAudioTrack + previewTrack?.setMute(!(previewTrack.isMute)) + result.success(true) + } else { + result.success(false) + } } } diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioDeviceAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioDeviceAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioDeviceAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSAudioDeviceAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCameraControlsAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCameraControlsAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCameraControlsAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCameraControlsAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCommonAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCommonAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCommonAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSCommonAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSHLSAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSHLSAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSHLSAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSHLSAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSMessageAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSMessageAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSMessageAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSMessageAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSPipAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSPipAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSPipAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSPipAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRecordingAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRecordingAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRecordingAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRecordingAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRemoteVideoTrackAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRemoteVideoTrackAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRemoteVideoTrackAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRemoteVideoTrackAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRoomAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRoomAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRoomAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSRoomAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSSessionStoreAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSSessionStoreAction.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSSessionStoreAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSSessionStoreAction.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSVideoAction.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSVideoAction.kt similarity index 72% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSVideoAction.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSVideoAction.kt index 8735f748e..c56079c2d 100644 --- a/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSVideoAction.kt +++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/methods/HMSVideoAction.kt @@ -11,14 +11,14 @@ import live.hms.video.utils.HmsUtilities class HMSVideoAction { companion object { - fun videoActions(call: MethodCall, result: Result, hmssdk: HMSSDK) { + fun videoActions(call: MethodCall, result: Result, hmssdk: HMSSDK, hmssdkFlutterPlugin: HmssdkFlutterPlugin?) { when (call.method) { "switch_video" -> { switchVideo(call, result, hmssdk) } "switch_camera" -> { - switchCamera(result, hmssdk) + switchCamera(result, hmssdk, hmssdkFlutterPlugin) } "is_video_mute" -> { @@ -34,7 +34,7 @@ class HMSVideoAction { } "toggle_camera_mute_state" -> { - toggleCameraMuteState(result, hmssdk) + toggleCameraMuteState(result, hmssdk, hmssdkFlutterPlugin) } else -> { @@ -55,20 +55,35 @@ class HMSVideoAction { } } - private fun toggleCameraMuteState(result: Result, hmssdk: HMSSDK) { + private fun toggleCameraMuteState(result: Result, hmssdk: HMSSDK, hmssdkFlutterPlugin: HmssdkFlutterPlugin?) { val peer = hmssdk.getLocalPeer() val videoTrack = peer?.videoTrack if (videoTrack != null) { videoTrack.setMute(!(videoTrack.isMute)) result.success(true) } else { - result.success(false) + // /Checking whether preview for role audio track exist or not + if (hmssdkFlutterPlugin?.previewForRoleVideoTrack != null) { + val previewTrack = hmssdkFlutterPlugin.previewForRoleVideoTrack + previewTrack?.setMute(!(previewTrack.isMute)) + result.success(true) + } else { + result.success(false) + } } } - private fun switchCamera(result: Result, hmssdk: HMSSDK) { + private fun switchCamera(result: Result, hmssdk: HMSSDK, hmssdkFlutterPlugin: HmssdkFlutterPlugin?) { val peer = hmssdk.getLocalPeer() - val videoTrack = peer?.videoTrack + var videoTrack = peer?.videoTrack + if (videoTrack == null) { + // /Checking whether preview for role audio track exist or not + if (hmssdkFlutterPlugin?.previewForRoleVideoTrack != null) { + videoTrack = hmssdkFlutterPlugin.previewForRoleVideoTrack + } else { + return + } + } CoroutineScope(Dispatchers.Default).launch { videoTrack?.switchCamera(onAction = HMSCommonAction.getActionListener(result)) } diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayer.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayer.kt similarity index 90% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayer.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayer.kt index 94ef9df2a..21aac0819 100644 --- a/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayer.kt +++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayer.kt @@ -1,12 +1,18 @@ package live.hms.hmssdk_flutter.views +import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.util.Log import android.view.LayoutInflater +import android.view.View import android.widget.FrameLayout +import androidx.media3.common.Player +import androidx.media3.common.VideoSize +import androidx.media3.ui.AspectRatioFrameLayout.RESIZE_MODE_FIT +import androidx.media3.ui.AspectRatioFrameLayout.RESIZE_MODE_ZOOM import androidx.media3.ui.PlayerView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -58,6 +64,28 @@ class HMSHLSPlayer( // Set the native player of the HLS player view. it.player = hlsPlayer?.getNativePlayer() + + it.player?.addListener(object : Player.Listener { + override fun onSurfaceSizeChanged(width: Int, height: Int) { + super.onSurfaceSizeChanged(width, height) + + } + override fun onVideoSizeChanged(videoSize: VideoSize) { + super.onVideoSizeChanged(videoSize) + + if (videoSize.height !=0 && videoSize.width !=0) { + val width = videoSize.width + val height = videoSize.height + + //landscape play + if (width >= height) { + hlsPlayerView?.resizeMode = RESIZE_MODE_FIT + } else { + hlsPlayerView?.resizeMode = RESIZE_MODE_ZOOM + } + } + } + }) } ?: run { HMSErrorLogger.logError("init HMSHLSPlayer", "hlsPlayerView is null", "NULL_ERROR") } diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayerFactory.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayerFactory.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayerFactory.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSHLSPlayerFactory.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoView.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoView.kt similarity index 100% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoView.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoView.kt diff --git a/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoViewFactory.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoViewFactory.kt similarity index 77% rename from android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoViewFactory.kt rename to packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoViewFactory.kt index e19f8cd4d..f5d52cbac 100644 --- a/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoViewFactory.kt +++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/views/HMSVideoViewFactory.kt @@ -59,13 +59,19 @@ class HMSVideoViewFactory(private val plugin: HmssdkFlutterPlugin) : val room = plugin.hmssdk!!.getRoom() - val track = HmsUtilities.getVideoTrack(trackId!!, room!!) + var track = HmsUtilities.getVideoTrack(trackId!!, room!!) if (track == null) { - plugin.onVideoViewError( - methodName = "HMSVideoView", - error = "There is no track corresponding to the given trackId", - errorMessage = "Video track is null for corresponding trackId", - ) + // /Checking here for preview for role video track is any + // /Otherwise return the error + if (plugin.previewForRoleVideoTrack != null && trackId == plugin.previewForRoleVideoTrack?.trackId) { + track = plugin.previewForRoleVideoTrack + } else { + plugin.onVideoViewError( + methodName = "HMSVideoView", + error = "There is no track corresponding to the given trackId", + errorMessage = "Video track is null for corresponding trackId", + ) + } } val disableAutoSimulcastLayerSelect = args!!["disable_auto_simulcast_layer_select"] as? Boolean ?: false diff --git a/android/src/main/res/layout/hms_hls_player.xml b/packages/hmssdk_flutter/android/src/main/res/layout/hms_hls_player.xml similarity index 73% rename from android/src/main/res/layout/hms_hls_player.xml rename to packages/hmssdk_flutter/android/src/main/res/layout/hms_hls_player.xml index 3e4db7483..22d2d783a 100644 --- a/android/src/main/res/layout/hms_hls_player.xml +++ b/packages/hmssdk_flutter/android/src/main/res/layout/hms_hls_player.xml @@ -1,11 +1,14 @@ - \ No newline at end of file + diff --git a/android/src/main/res/layout/hms_video_view.xml b/packages/hmssdk_flutter/android/src/main/res/layout/hms_video_view.xml similarity index 100% rename from android/src/main/res/layout/hms_video_view.xml rename to packages/hmssdk_flutter/android/src/main/res/layout/hms_video_view.xml diff --git a/example/.gitignore b/packages/hmssdk_flutter/example/.gitignore similarity index 100% rename from example/.gitignore rename to packages/hmssdk_flutter/example/.gitignore diff --git a/example/.metadata b/packages/hmssdk_flutter/example/.metadata similarity index 100% rename from example/.metadata rename to packages/hmssdk_flutter/example/.metadata diff --git a/packages/hmssdk_flutter/example/ExampleAppChangelog.txt b/packages/hmssdk_flutter/example/ExampleAppChangelog.txt new file mode 100644 index 000000000..ae3e74484 --- /dev/null +++ b/packages/hmssdk_flutter/example/ExampleAppChangelog.txt @@ -0,0 +1,17 @@ +Board: https://github.com/100mslive/100ms-flutter/projects/30 + +- Setting the HLS Player aspect ratio as per video stream content +https://github.com/100mslive/100ms-flutter/pull/1556 + +- Error Toasts as per Figma design +https://github.com/100mslive/100ms-flutter/issues/1489 + +- Added layout honouring of Layout API config +https://github.com/100mslive/100ms-flutter/pull/1557 + +- Updated to Android SDK version to 2.7.3 and iOS SDK version to 0.9.11 + +Room Kit: 0.2.0 +Core SDK: 1.7.6 +Android SDK: 2.7.4 +iOS SDK: 0.9.12 \ No newline at end of file diff --git a/example/README.md b/packages/hmssdk_flutter/example/README.md similarity index 99% rename from example/README.md rename to packages/hmssdk_flutter/example/README.md index 76a24dc29..d1c815fa8 100644 --- a/example/README.md +++ b/packages/hmssdk_flutter/example/README.md @@ -867,7 +867,7 @@ Error codes and their description can be found [here](https://www.100ms.live/doc There are two ways in which SDK provides error callbacks as: -- `onHMSError` method of ` HMSUpdateListener``onHMSError ` callbacks is received when there is some issue with the methods like join, connection errors or errors related to SDK. +- `onHMSError` method of `HMSUpdateListener``onHMSError` callbacks is received when there is some issue with the methods like join, connection errors or errors related to SDK. ```dart @override diff --git a/packages/hmssdk_flutter/example/android/.gitignore b/packages/hmssdk_flutter/example/android/.gitignore new file mode 100644 index 000000000..c5760b888 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/.gitignore @@ -0,0 +1,11 @@ +# 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 diff --git a/example/android/Gemfile b/packages/hmssdk_flutter/example/android/Gemfile similarity index 100% rename from example/android/Gemfile rename to packages/hmssdk_flutter/example/android/Gemfile diff --git a/example/android/Gemfile.lock b/packages/hmssdk_flutter/example/android/Gemfile.lock similarity index 89% rename from example/android/Gemfile.lock rename to packages/hmssdk_flutter/example/android/Gemfile.lock index fa29a7505..cd6faaea2 100644 --- a/example/android/Gemfile.lock +++ b/packages/hmssdk_flutter/example/android/Gemfile.lock @@ -3,25 +3,25 @@ GEM specs: CFPropertyList (3.0.6) rexml - addressable (2.8.4) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.781.0) - aws-sdk-core (3.175.0) + aws-partitions (1.816.0) + aws-sdk-core (3.181.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.67.0) - aws-sdk-core (~> 3, >= 3.174.0) + aws-sdk-kms (1.71.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.126.0) - aws-sdk-core (~> 3, >= 3.174.0) + aws-sdk-s3 (1.134.0) + aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.2) + aws-sigv4 (~> 1.6) + aws-sigv4 (1.6.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) @@ -30,13 +30,13 @@ GEM commander (4.6.0) highline (~> 2.0.0) declarative (0.0.20) - digest-crc (0.6.4) + digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.100.0) + excon (0.102.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -66,7 +66,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.7) - fastlane (2.213.0) + fastlane (2.214.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -105,11 +105,12 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - fastlane-plugin-firebase_app_distribution (0.6.1) + fastlane-plugin-firebase_app_distribution (0.7.3) + google-apis-firebaseappdistribution_v1 (~> 0.3.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.44.0) + google-apis-androidpublisher_v3 (0.49.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.0) + google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -138,10 +139,9 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.5.2) + googleauth (1.8.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) @@ -152,9 +152,8 @@ GEM jmespath (1.6.2) json (2.6.3) jwt (2.7.1) - memoist (0.16.2) mini_magick (4.12.0) - mini_mime (1.1.2) + mini_mime (1.1.5) multi_json (1.15.0) multipart-post (2.3.0) nanaimo (0.3.0) @@ -162,19 +161,19 @@ GEM optparse (0.1.1) os (1.1.4) plist (3.7.0) - public_suffix (5.0.1) + public_suffix (5.0.3) rake (13.0.6) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.17.0) + signet (0.18.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -215,7 +214,6 @@ PLATFORMS DEPENDENCIES fastlane - fastlane-plugin-firebase_app_distribution BUNDLED WITH - 2.4.14 + 2.4.17 diff --git a/packages/hmssdk_flutter/example/android/app/100msKeyStore b/packages/hmssdk_flutter/example/android/app/100msKeyStore new file mode 100644 index 000000000..da753811c Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/100msKeyStore differ diff --git a/example/android/app/build.gradle b/packages/hmssdk_flutter/example/android/app/build.gradle similarity index 95% rename from example/android/app/build.gradle rename to packages/hmssdk_flutter/example/android/app/build.gradle index eb05542b9..33ff86be2 100644 --- a/example/android/app/build.gradle +++ b/packages/hmssdk_flutter/example/android/app/build.gradle @@ -32,8 +32,8 @@ android { applicationId "live.hms.flutter" minSdkVersion 21 targetSdkVersion 33 - versionCode 307 - versionName "1.5.7" + versionCode 348 + versionName "1.5.48" } signingConfigs { @@ -61,6 +61,10 @@ android { checkDependencies true } android.buildTypes.release.ndk.debugSymbolLevel "FULL" + + lintOptions { + abortOnError false + } } flutter { diff --git a/packages/hmssdk_flutter/example/android/app/google-services.json b/packages/hmssdk_flutter/example/android/app/google-services.json new file mode 100644 index 000000000..4c2070d0e --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/google-services.json @@ -0,0 +1,46 @@ +{ + "project_info": { + "project_number": "19544678223", + "project_id": "flutter-hms", + "storage_bucket": "flutter-hms.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:19544678223:android:a33d9b410e9a290db32f3a", + "android_client_info": { + "package_name": "live.hms.flutter" + } + }, + "oauth_client": [ + { + "client_id": "19544678223-966jfvbl9j8d0ks7oigke8ogfp8i4i02.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAbz0cfK5hi-Hi4xVhVkmwAhaaqRgOdoHo" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "19544678223-966jfvbl9j8d0ks7oigke8ogfp8i4i02.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "19544678223-lisp1tlhj2es8id94te05r4ss4n7og2f.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "live.100ms.flutter" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/example/android/app/proguard-rules.pro b/packages/hmssdk_flutter/example/android/app/proguard-rules.pro similarity index 77% rename from example/android/app/proguard-rules.pro rename to packages/hmssdk_flutter/example/android/app/proguard-rules.pro index 5f6821f1a..c8ad7b134 100644 --- a/example/android/app/proguard-rules.pro +++ b/packages/hmssdk_flutter/example/android/app/proguard-rules.pro @@ -29,4 +29,11 @@ # Video libs -keep class org.webrtc.** { *; } --keep class live.hms.video.** { *; } \ No newline at end of file +-keep class live.hms.video.** { *; } + +-dontwarn org.bouncycastle.jsse.BCSSLParameters +-dontwarn org.bouncycastle.jsse.BCSSLSocket +-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider +-dontwarn org.openjsse.javax.net.ssl.SSLParameters +-dontwarn org.openjsse.javax.net.ssl.SSLSocket +-dontwarn org.openjsse.net.ssl.OpenJSSE diff --git a/example/android/app/src/debug/AndroidManifest.xml b/packages/hmssdk_flutter/example/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from example/android/app/src/debug/AndroidManifest.xml rename to packages/hmssdk_flutter/example/android/app/src/debug/AndroidManifest.xml diff --git a/example/android/app/src/main/AndroidManifest.xml b/packages/hmssdk_flutter/example/android/app/src/main/AndroidManifest.xml similarity index 100% rename from example/android/app/src/main/AndroidManifest.xml rename to packages/hmssdk_flutter/example/android/app/src/main/AndroidManifest.xml diff --git a/packages/hmssdk_flutter/example/android/app/src/main/ic_launcher-playstore.png b/packages/hmssdk_flutter/example/android/app/src/main/ic_launcher-playstore.png new file mode 100644 index 000000000..1b90cc8a4 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/ic_launcher-playstore.png differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/packages/hmssdk_flutter/example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java new file mode 100644 index 000000000..deda7756c --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java @@ -0,0 +1,94 @@ +package io.flutter.plugins; + +import androidx.annotation.Keep; +import androidx.annotation.NonNull; +import io.flutter.Log; + +import io.flutter.embedding.engine.FlutterEngine; + +/** + * Generated file. Do not edit. + * This file is generated by the Flutter tool based on the + * plugins that support the Android platform. + */ +@Keep +public final class GeneratedPluginRegistrant { + private static final String TAG = "GeneratedPluginRegistrant"; + public static void registerWith(@NonNull FlutterEngine flutterEngine) { + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.analytics.FlutterFirebaseAnalyticsPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_analytics, io.flutter.plugins.firebase.analytics.FlutterFirebaseAnalyticsPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_core, io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.crashlytics.FlutterFirebaseCrashlyticsPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_crashlytics, io.flutter.plugins.firebase.crashlytics.FlutterFirebaseCrashlyticsPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.dynamiclinks.FlutterFirebaseDynamicLinksPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_dynamic_links, io.flutter.plugins.firebase.dynamiclinks.FlutterFirebaseDynamicLinksPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.performance.FlutterFirebasePerformancePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin firebase_performance, io.flutter.plugins.firebase.performance.FlutterFirebasePerformancePlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.pravera.flutter_foreground_task.FlutterForegroundTaskPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin flutter_foreground_task, com.pravera.flutter_foreground_task.FlutterForegroundTaskPlugin", e); + } + try { + flutterEngine.getPlugins().add(new live.hms.hmssdk_flutter.HmssdkFlutterPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin hmssdk_flutter, live.hms.hmssdk_flutter.HmssdkFlutterPlugin", e); + } + try { + flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.packageinfo.PackageInfoPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin package_info_plus, dev.fluttercommunity.plus.packageinfo.PackageInfoPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.baseflow.permissionhandler.PermissionHandlerPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin permission_handler_android, com.baseflow.permissionhandler.PermissionHandlerPlugin", e); + } + try { + flutterEngine.getPlugins().add(new net.touchcapture.qr.flutterqr.FlutterQrPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin qr_code_scanner, net.touchcapture.qr.flutterqr.FlutterQrPlugin", e); + } + try { + flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.share.SharePlusPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin share_plus, dev.fluttercommunity.plus.share.SharePlusPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin shared_preferences_android, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e); + } + try { + flutterEngine.getPlugins().add(new name.avioli.unilinks.UniLinksPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin uni_links, name.avioli.unilinks.UniLinksPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin url_launcher_android, io.flutter.plugins.urllauncher.UrlLauncherPlugin", e); + } + } +} diff --git a/packages/hmssdk_flutter/example/android/app/src/main/kotlin/live/hms/flutter/MainActivity.kt b/packages/hmssdk_flutter/example/android/app/src/main/kotlin/live/hms/flutter/MainActivity.kt new file mode 100644 index 000000000..588d34855 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/src/main/kotlin/live/hms/flutter/MainActivity.kt @@ -0,0 +1,50 @@ +package live.hms.flutter + +import android.app.Activity +import android.content.Intent +import android.content.res.Configuration +import android.os.Build +import android.util.Log +import io.flutter.embedding.android.FlutterActivity +import live.hms.hmssdk_flutter.Constants +import live.hms.hmssdk_flutter.methods.HMSPipAction + +class MainActivity : FlutterActivity() { + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + + if (requestCode == Constants.SCREEN_SHARE_INTENT_REQUEST_CODE && resultCode == Activity.RESULT_OK) { + data?.action = Constants.HMSSDK_RECEIVER + activity.sendBroadcast(data?.putExtra(Constants.METHOD_CALL, Constants.SCREEN_SHARE_REQUEST)) + } + + if (requestCode == Constants.AUDIO_SHARE_INTENT_REQUEST_CODE && resultCode == Activity.RESULT_OK) { + data?.action = Constants.HMSSDK_RECEIVER + activity.sendBroadcast(data?.putExtra(Constants.METHOD_CALL, Constants.AUDIO_SHARE_REQUEST)) + } + } + + // override fun onPictureInPictureModeChanged( + // isInPictureInPictureMode: Boolean, + // newConfig: Configuration?, + // ) { + // if (isInPictureInPictureMode) { + // if (HMSPipAction.pipResult != null) { + // HMSPipAction.pipResult?.success(true) + // HMSPipAction.pipResult = null + // } + // } else { + // Log.i("PIP Mode", "Exited PIP Mode") + // } + // } + + // override fun onUserLeaveHint() { + // super.onUserLeaveHint() + // // This should only work for android version above 8 since PIP is only supported after + // // android 8 and will not be called after android 12 since it automatically gets handled by android. + // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + // HMSPipAction.autoEnterPipMode(this) + // } + // } +} diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/hmssdk_flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/drawable/launch_background.xml b/packages/hmssdk_flutter/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..036d09bc5 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..036d09bc5 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 000000000..0b034505c Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 000000000..6bb51b668 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 000000000..5e6289099 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 000000000..7a24eb7e6 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 000000000..21d1c57c1 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 000000000..d6d371c06 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 000000000..7833f0794 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 000000000..3ef567e2f Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 000000000..6c2d86421 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 000000000..64526c89a Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 000000000..f7549c81e Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 000000000..8ae7f0e1b Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 000000000..4419efc2e Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 000000000..fe13ae9c8 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 000000000..98b35b8c8 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/example/android/app/src/main/res/values-night/styles.xml b/packages/hmssdk_flutter/example/android/app/src/main/res/values-night/styles.xml similarity index 100% rename from example/android/app/src/main/res/values-night/styles.xml rename to packages/hmssdk_flutter/example/android/app/src/main/res/values-night/styles.xml diff --git a/packages/hmssdk_flutter/example/android/app/src/main/res/values/ic_launcher_background.xml b/packages/hmssdk_flutter/example/android/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 000000000..c5d5899fd --- /dev/null +++ b/packages/hmssdk_flutter/example/android/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/example/android/app/src/main/res/values/styles.xml b/packages/hmssdk_flutter/example/android/app/src/main/res/values/styles.xml similarity index 100% rename from example/android/app/src/main/res/values/styles.xml rename to packages/hmssdk_flutter/example/android/app/src/main/res/values/styles.xml diff --git a/example/android/app/src/profile/AndroidManifest.xml b/packages/hmssdk_flutter/example/android/app/src/profile/AndroidManifest.xml similarity index 100% rename from example/android/app/src/profile/AndroidManifest.xml rename to packages/hmssdk_flutter/example/android/app/src/profile/AndroidManifest.xml diff --git a/example/android/build.gradle b/packages/hmssdk_flutter/example/android/build.gradle similarity index 94% rename from example/android/build.gradle rename to packages/hmssdk_flutter/example/android/build.gradle index 9a20f1434..326e273ee 100755 --- a/example/android/build.gradle +++ b/packages/hmssdk_flutter/example/android/build.gradle @@ -9,7 +9,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.5' + classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.8' classpath 'com.google.gms:google-services:4.3.15' classpath 'com.google.firebase:perf-plugin:1.4.2' } @@ -29,6 +29,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/packages/hmssdk_flutter/example/android/fastlane/Appfile b/packages/hmssdk_flutter/example/android/fastlane/Appfile new file mode 100644 index 000000000..a749b8e3c --- /dev/null +++ b/packages/hmssdk_flutter/example/android/fastlane/Appfile @@ -0,0 +1,2 @@ +json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one +package_name("live.hms.flutter") # e.g. com.krausefx.app diff --git a/packages/hmssdk_flutter/example/android/fastlane/Fastfile b/packages/hmssdk_flutter/example/android/fastlane/Fastfile new file mode 100644 index 000000000..5daab7f96 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/fastlane/Fastfile @@ -0,0 +1,62 @@ + +# ENV["FIREBASE_TOKEN"] = "1//0g3a4KhTy3aRQCgYIARAAGBASNwF-L9Ir1HiwwxhpeRAMjV6oZjk8niOYLV-Ytmbwnx0GCvJEbgPoV9RPXaLDEr2Tse8S1tM-Zzo" + +update_fastlane + +default_platform(:android) + +platform :android do + + desc "Update version & release Android build on Firebase" + lane :release_on_firebase do + + path = '../app/build.gradle' + re = /versionCode\s+(\d+)/ + vn = /versionName\s+"\d.\d.(\d+)"/ + s = File.read(path) + versionCode = s[re, 1].to_i + versionName = s[vn, 1].to_i + s[re, 1] = (versionCode+1).to_s + s[vn, 1] = (versionName+1).to_s + + updatedVersionCode = s[re, 1] + updatedVersionName = s[/versionName\s+"(\d.\d.\d+)"/, 1] + + f = File.new(path, 'w') + f.write(s) + f.close + + build_android_app( + task: 'assemble', + # flavor: "hmsInternal", + build_type: 'Release' + ) + + firebase_app_distribution( + app: "1:19544678223:android:a33d9b410e9a290db32f3a", + groups: "internal, External", + # android_artifact_path: lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], + service_credentials_file: ENV['FLUTTER_HMS_JSON'], + android_artifact_path: "../build/app/outputs/apk/release/app-release.apk", #"../build/app/outputs/apk/hmsInternal/release/app-hmsInternal-release.apk", + release_notes_file: "../ExampleAppChangelog.txt" + ) + + slack( + message: ":flutter: 🎉 Flutter Android App released! 🎊 :flutter:", + slack_url: ENV['SLACK_URL'], + payload: { + "📲 Download from Firebase 🤖" => "https://appdistribution.firebase.dev/i/b623e5310929ab70", + "📝 Changelog" => File.read("../../ExampleAppChangelog.txt") + }, + default_payloads: ["git_branch"], + attachment_properties: { + fields: [{ + title: "🤖🎊 App Version", + value: updatedVersionName + " (" + updatedVersionCode + ")", + short: false + }] + } + ) + end + +end diff --git a/packages/hmssdk_flutter/example/android/fastlane/Pluginfile b/packages/hmssdk_flutter/example/android/fastlane/Pluginfile new file mode 100644 index 000000000..b18539bc9 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/fastlane/Pluginfile @@ -0,0 +1,5 @@ +# Autogenerated by fastlane +# +# Ensure this file is checked in to source control! + +gem 'fastlane-plugin-firebase_app_distribution' diff --git a/packages/hmssdk_flutter/example/android/fastlane/README.md b/packages/hmssdk_flutter/example/android/fastlane/README.md new file mode 100644 index 000000000..3a76a3be4 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/fastlane/README.md @@ -0,0 +1,32 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## Android + +### android release_on_firebase + +```sh +[bundle exec] fastlane android release_on_firebase +``` + +Update version & release Android build on Firebase + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/packages/hmssdk_flutter/example/android/gradle.properties b/packages/hmssdk_flutter/example/android/gradle.properties new file mode 100644 index 000000000..94adc3a3f --- /dev/null +++ b/packages/hmssdk_flutter/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/hmssdk_flutter/example/android/gradle/wrapper/gradle-wrapper.jar b/packages/hmssdk_flutter/example/android/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 000000000..7454180f2 Binary files /dev/null and b/packages/hmssdk_flutter/example/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/packages/hmssdk_flutter/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/hmssdk_flutter/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100755 index 000000000..2e6e5897b --- /dev/null +++ b/packages/hmssdk_flutter/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/packages/hmssdk_flutter/example/android/gradlew b/packages/hmssdk_flutter/example/android/gradlew new file mode 100755 index 000000000..1b6c78733 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright Š 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions ÂĢ$varÂģ, ÂĢ${var}Âģ, ÂĢ${var:-default}Âģ, ÂĢ${var+SET}Âģ, +# ÂĢ${var#prefix}Âģ, ÂĢ${var%suffix}Âģ, and ÂĢ$( cmd )Âģ; +# * compound commands having a testable exit status, especially ÂĢcaseÂģ; +# * various built-in commands including ÂĢcommandÂģ, ÂĢsetÂģ, and ÂĢulimitÂģ. +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/packages/hmssdk_flutter/example/android/gradlew.bat b/packages/hmssdk_flutter/example/android/gradlew.bat new file mode 100755 index 000000000..ac1b06f93 --- /dev/null +++ b/packages/hmssdk_flutter/example/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/packages/hmssdk_flutter/example/android/key.properties b/packages/hmssdk_flutter/example/android/key.properties new file mode 100644 index 000000000..f802e1e7c --- /dev/null +++ b/packages/hmssdk_flutter/example/android/key.properties @@ -0,0 +1,4 @@ +storePassword=100msflutter +keyPassword=100msflutter +keyAlias=key0 +storeFile=100msKeyStore \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/android/settings.gradle b/packages/hmssdk_flutter/example/android/settings.gradle new file mode 100644 index 000000000..44e62bcf0 --- /dev/null +++ b/packages/hmssdk_flutter/example/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/packages/hmssdk_flutter/example/assets/icons/airplay.svg b/packages/hmssdk_flutter/example/assets/icons/airplay.svg new file mode 100644 index 000000000..5bb9ee8f8 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/airplay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/arrow.svg b/packages/hmssdk_flutter/example/assets/icons/arrow.svg new file mode 100644 index 000000000..40cd50ff7 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/aspect_ratio.svg b/packages/hmssdk_flutter/example/assets/icons/aspect_ratio.svg new file mode 100644 index 000000000..5ab9d934d --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/aspect_ratio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/audio_mode.svg b/packages/hmssdk_flutter/example/assets/icons/audio_mode.svg new file mode 100644 index 000000000..52e94c02c --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/audio_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/brb.svg b/packages/hmssdk_flutter/example/assets/icons/brb.svg new file mode 100644 index 000000000..3b2eb7a53 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/brb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/bug.svg b/packages/hmssdk_flutter/example/assets/icons/bug.svg new file mode 100644 index 000000000..f75263197 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/cam_state_off.svg b/packages/hmssdk_flutter/example/assets/icons/cam_state_off.svg new file mode 100644 index 000000000..6bd5b31c2 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/cam_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/cam_state_on.svg b/packages/hmssdk_flutter/example/assets/icons/cam_state_on.svg new file mode 100644 index 000000000..56598b538 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/cam_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/camera.svg b/packages/hmssdk_flutter/example/assets/icons/camera.svg new file mode 100644 index 000000000..9c3e819b6 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/clock.svg b/packages/hmssdk_flutter/example/assets/icons/clock.svg new file mode 100644 index 000000000..9dc1c7fc7 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/close.svg b/packages/hmssdk_flutter/example/assets/icons/close.svg new file mode 100644 index 000000000..e25802976 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/close_button.svg b/packages/hmssdk_flutter/example/assets/icons/close_button.svg new file mode 100644 index 000000000..38d7c50c7 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/close_button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/dark_mode.svg b/packages/hmssdk_flutter/example/assets/icons/dark_mode.svg new file mode 100644 index 000000000..013e30526 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/dark_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/decoder.svg b/packages/hmssdk_flutter/example/assets/icons/decoder.svg new file mode 100644 index 000000000..f84aa8878 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/decoder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/degrade.svg b/packages/hmssdk_flutter/example/assets/icons/degrade.svg new file mode 100644 index 000000000..78f24a832 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/degrade.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/assets/icons/emoji.svg b/packages/hmssdk_flutter/example/assets/icons/emoji.svg similarity index 100% rename from example/assets/icons/emoji.svg rename to packages/hmssdk_flutter/example/assets/icons/emoji.svg diff --git a/packages/hmssdk_flutter/example/assets/icons/end.svg b/packages/hmssdk_flutter/example/assets/icons/end.svg new file mode 100644 index 000000000..ef49975c0 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/end.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/end_room.svg b/packages/hmssdk_flutter/example/assets/icons/end_room.svg new file mode 100644 index 000000000..8ff587c9d --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/end_room.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/end_warning.svg b/packages/hmssdk_flutter/example/assets/icons/end_warning.svg new file mode 100644 index 000000000..49e4b421b --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/end_warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/event.svg b/packages/hmssdk_flutter/example/assets/icons/event.svg new file mode 100644 index 000000000..76ed2a908 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/event.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/hand.svg b/packages/hmssdk_flutter/example/assets/icons/hand.svg new file mode 100644 index 000000000..fb2f9db78 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/hand_outline.svg b/packages/hmssdk_flutter/example/assets/icons/hand_outline.svg new file mode 100644 index 000000000..1648dcffc --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/hand_outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/hls.svg b/packages/hmssdk_flutter/example/assets/icons/hls.svg new file mode 100644 index 000000000..280fd5d2c --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/hls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/hms_icon_1024.png b/packages/hmssdk_flutter/example/assets/icons/hms_icon_1024.png new file mode 100644 index 000000000..df281e975 Binary files /dev/null and b/packages/hmssdk_flutter/example/assets/icons/hms_icon_1024.png differ diff --git a/packages/hmssdk_flutter/example/assets/icons/hms_icon_loading.png b/packages/hmssdk_flutter/example/assets/icons/hms_icon_loading.png new file mode 100644 index 000000000..d0ab37557 Binary files /dev/null and b/packages/hmssdk_flutter/example/assets/icons/hms_icon_loading.png differ diff --git a/packages/hmssdk_flutter/example/assets/icons/info.svg b/packages/hmssdk_flutter/example/assets/icons/info.svg new file mode 100644 index 000000000..42bd1d150 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/layers.svg b/packages/hmssdk_flutter/example/assets/icons/layers.svg new file mode 100644 index 000000000..edb3a94ab --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/layers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/leave.svg b/packages/hmssdk_flutter/example/assets/icons/leave.svg new file mode 100644 index 000000000..86235f059 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/leave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/leave_hls.svg b/packages/hmssdk_flutter/example/assets/icons/leave_hls.svg new file mode 100644 index 000000000..a626a427d --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/leave_hls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/light_mode.svg b/packages/hmssdk_flutter/example/assets/icons/light_mode.svg new file mode 100644 index 000000000..51a3d9789 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/light_mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/live.svg b/packages/hmssdk_flutter/example/assets/icons/live.svg new file mode 100644 index 000000000..3e8f5b3d3 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/live.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/live_stream.svg b/packages/hmssdk_flutter/example/assets/icons/live_stream.svg new file mode 100644 index 000000000..4682e6716 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/live_stream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/local_capture.svg b/packages/hmssdk_flutter/example/assets/icons/local_capture.svg new file mode 100644 index 000000000..451113631 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/local_capture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/message_badge_off.svg b/packages/hmssdk_flutter/example/assets/icons/message_badge_off.svg new file mode 100644 index 000000000..8c635ce61 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/message_badge_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/message_badge_on.svg b/packages/hmssdk_flutter/example/assets/icons/message_badge_on.svg new file mode 100644 index 000000000..429f973d2 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/message_badge_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/mic.svg b/packages/hmssdk_flutter/example/assets/icons/mic.svg new file mode 100644 index 000000000..b76aff7ff --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/mic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/mic_state_off.svg b/packages/hmssdk_flutter/example/assets/icons/mic_state_off.svg new file mode 100644 index 000000000..893b5871e --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/mic_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/mic_state_on.svg b/packages/hmssdk_flutter/example/assets/icons/mic_state_on.svg new file mode 100644 index 000000000..5d16484ba --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/mic_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/more.svg b/packages/hmssdk_flutter/example/assets/icons/more.svg new file mode 100644 index 000000000..a57732952 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/music_wave.svg b/packages/hmssdk_flutter/example/assets/icons/music_wave.svg new file mode 100644 index 000000000..baef9782e --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/music_wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/network_0.svg b/packages/hmssdk_flutter/example/assets/icons/network_0.svg new file mode 100644 index 000000000..447dd2be8 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/network_0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/network_1.svg b/packages/hmssdk_flutter/example/assets/icons/network_1.svg new file mode 100644 index 000000000..410cdad4f --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/network_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/network_2.svg b/packages/hmssdk_flutter/example/assets/icons/network_2.svg new file mode 100644 index 000000000..57fbf7c5a --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/network_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/network_3.svg b/packages/hmssdk_flutter/example/assets/icons/network_3.svg new file mode 100644 index 000000000..2612ba62f --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/network_3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/network_4.svg b/packages/hmssdk_flutter/example/assets/icons/network_4.svg new file mode 100644 index 000000000..9ac316f61 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/network_4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/network_5.svg b/packages/hmssdk_flutter/example/assets/icons/network_5.svg new file mode 100644 index 000000000..9ac316f61 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/network_5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/no_network.png b/packages/hmssdk_flutter/example/assets/icons/no_network.png new file mode 100644 index 000000000..3199decb9 Binary files /dev/null and b/packages/hmssdk_flutter/example/assets/icons/no_network.png differ diff --git a/packages/hmssdk_flutter/example/assets/icons/notification.svg b/packages/hmssdk_flutter/example/assets/icons/notification.svg new file mode 100644 index 000000000..f46b78953 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/notification.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/participants.svg b/packages/hmssdk_flutter/example/assets/icons/participants.svg new file mode 100644 index 000000000..267e5f25e --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/participants.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/peer_remove.svg b/packages/hmssdk_flutter/example/assets/icons/peer_remove.svg new file mode 100644 index 000000000..b0362007e --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/peer_remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/pencil.svg b/packages/hmssdk_flutter/example/assets/icons/pencil.svg new file mode 100644 index 000000000..4b413aa7e --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/person.svg b/packages/hmssdk_flutter/example/assets/icons/person.svg new file mode 100644 index 000000000..424939ff1 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/pin.svg b/packages/hmssdk_flutter/example/assets/icons/pin.svg new file mode 100644 index 000000000..d6e4e79b1 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/preview_state_off.svg b/packages/hmssdk_flutter/example/assets/icons/preview_state_off.svg new file mode 100644 index 000000000..ccdbff26c --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/preview_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/preview_state_on.svg b/packages/hmssdk_flutter/example/assets/icons/preview_state_on.svg new file mode 100644 index 000000000..20c5af76b --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/preview_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/record.svg b/packages/hmssdk_flutter/example/assets/icons/record.svg new file mode 100644 index 000000000..0d23a3e6e --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/record.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/role_change.svg b/packages/hmssdk_flutter/example/assets/icons/role_change.svg new file mode 100644 index 000000000..100ba2a04 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/role_change.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/rotate.svg b/packages/hmssdk_flutter/example/assets/icons/rotate.svg new file mode 100644 index 000000000..01325d3a6 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/screen_share.svg b/packages/hmssdk_flutter/example/assets/icons/screen_share.svg new file mode 100644 index 000000000..1e0c81e9b --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/screen_share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/send.svg b/packages/hmssdk_flutter/example/assets/icons/send.svg new file mode 100644 index 000000000..f30f6b924 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/send_message.svg b/packages/hmssdk_flutter/example/assets/icons/send_message.svg new file mode 100644 index 000000000..a849c0cc1 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/send_message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/settings.svg b/packages/hmssdk_flutter/example/assets/icons/settings.svg new file mode 100644 index 000000000..6b2540f8f --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/share.svg b/packages/hmssdk_flutter/example/assets/icons/share.svg new file mode 100644 index 000000000..abe619b50 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/simulcast.svg b/packages/hmssdk_flutter/example/assets/icons/simulcast.svg new file mode 100644 index 000000000..edb3a94ab --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/simulcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/single_tile.svg b/packages/hmssdk_flutter/example/assets/icons/single_tile.svg new file mode 100644 index 000000000..424939ff1 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/single_tile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/snapshot.svg b/packages/hmssdk_flutter/example/assets/icons/snapshot.svg new file mode 100644 index 000000000..603371984 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/snapshot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/speaker_state_off.svg b/packages/hmssdk_flutter/example/assets/icons/speaker_state_off.svg new file mode 100644 index 000000000..1076daee2 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/speaker_state_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/speaker_state_on.svg b/packages/hmssdk_flutter/example/assets/icons/speaker_state_on.svg new file mode 100644 index 000000000..a4e75fa9c --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/speaker_state_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/spotlight.svg b/packages/hmssdk_flutter/example/assets/icons/spotlight.svg new file mode 100644 index 000000000..034d62311 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/spotlight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/stats.svg b/packages/hmssdk_flutter/example/assets/icons/stats.svg new file mode 100644 index 000000000..71b3569d4 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/stats.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/stream.svg b/packages/hmssdk_flutter/example/assets/icons/stream.svg new file mode 100644 index 000000000..57a1adde1 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/stream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/tile_mute.svg b/packages/hmssdk_flutter/example/assets/icons/tile_mute.svg new file mode 100644 index 000000000..83b2b8cf1 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/tile_mute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/assets/icons/timed_metadata.svg b/packages/hmssdk_flutter/example/assets/icons/timed_metadata.svg similarity index 100% rename from example/assets/icons/timed_metadata.svg rename to packages/hmssdk_flutter/example/assets/icons/timed_metadata.svg diff --git a/packages/hmssdk_flutter/example/assets/icons/user-music.svg b/packages/hmssdk_flutter/example/assets/icons/user-music.svg new file mode 100644 index 000000000..76f167312 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/user-music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/warning.svg b/packages/hmssdk_flutter/example/assets/icons/warning.svg new file mode 100644 index 000000000..5e6c7eaa5 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/icons/watching.svg b/packages/hmssdk_flutter/example/assets/icons/watching.svg new file mode 100644 index 000000000..f5408fb33 --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/icons/watching.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/assets/welcome.svg b/packages/hmssdk_flutter/example/assets/welcome.svg new file mode 100644 index 000000000..9ea7b3f3c --- /dev/null +++ b/packages/hmssdk_flutter/example/assets/welcome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/flutter_launcher_icons.yaml b/packages/hmssdk_flutter/example/flutter_launcher_icons.yaml new file mode 100644 index 000000000..8ed1a799f --- /dev/null +++ b/packages/hmssdk_flutter/example/flutter_launcher_icons.yaml @@ -0,0 +1,4 @@ +flutter_icons: + android: true + ios: true + image_path: "assets/icons/hms_icon_1024.png" diff --git a/example/ios/.gitignore b/packages/hmssdk_flutter/example/ios/.gitignore similarity index 100% rename from example/ios/.gitignore rename to packages/hmssdk_flutter/example/ios/.gitignore diff --git a/packages/hmssdk_flutter/example/ios/AuthKey_BY94A5BH9T.p8 b/packages/hmssdk_flutter/example/ios/AuthKey_BY94A5BH9T.p8 new file mode 100644 index 000000000..3930938ac --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/AuthKey_BY94A5BH9T.p8 @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgMeHYone2ZTkcGDHf +TVwW/wEkaYYIiNVCvoX1T0c07zCgCgYIKoZIzj0DAQehRANCAAQgdq+CQE+DaEtf +Sd4Br87zX9v4o7Ow6S3QerFKiLx/c9yUTuyijul84V3MKsjBztHgx5nW3T9oxLb6 +u9Xxe6Do +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/packages/hmssdk_flutter/example/ios/Flutter/AppFrameworkInfo.plist b/packages/hmssdk_flutter/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..9625e105d --- /dev/null +++ b/packages/hmssdk_flutter/example/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/packages/hmssdk_flutter/example/ios/Flutter/Debug.xcconfig b/packages/hmssdk_flutter/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..ec97fc6f3 --- /dev/null +++ b/packages/hmssdk_flutter/example/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/packages/hmssdk_flutter/example/ios/Flutter/Release.xcconfig b/packages/hmssdk_flutter/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..c4855bfe2 --- /dev/null +++ b/packages/hmssdk_flutter/example/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/example/ios/FlutterBroadcastUploadExtension/FlutterBroadcastUploadExtension.entitlements b/packages/hmssdk_flutter/example/ios/FlutterBroadcastUploadExtension/FlutterBroadcastUploadExtension.entitlements similarity index 100% rename from example/ios/FlutterBroadcastUploadExtension/FlutterBroadcastUploadExtension.entitlements rename to packages/hmssdk_flutter/example/ios/FlutterBroadcastUploadExtension/FlutterBroadcastUploadExtension.entitlements diff --git a/example/ios/FlutterBroadcastUploadExtension/Info.plist b/packages/hmssdk_flutter/example/ios/FlutterBroadcastUploadExtension/Info.plist similarity index 100% rename from example/ios/FlutterBroadcastUploadExtension/Info.plist rename to packages/hmssdk_flutter/example/ios/FlutterBroadcastUploadExtension/Info.plist diff --git a/example/ios/FlutterBroadcastUploadExtension/SampleHandler.swift b/packages/hmssdk_flutter/example/ios/FlutterBroadcastUploadExtension/SampleHandler.swift similarity index 100% rename from example/ios/FlutterBroadcastUploadExtension/SampleHandler.swift rename to packages/hmssdk_flutter/example/ios/FlutterBroadcastUploadExtension/SampleHandler.swift diff --git a/example/ios/Gemfile b/packages/hmssdk_flutter/example/ios/Gemfile similarity index 100% rename from example/ios/Gemfile rename to packages/hmssdk_flutter/example/ios/Gemfile diff --git a/example/ios/Gemfile.lock b/packages/hmssdk_flutter/example/ios/Gemfile.lock similarity index 88% rename from example/ios/Gemfile.lock rename to packages/hmssdk_flutter/example/ios/Gemfile.lock index 989119458..ea6aef50d 100644 --- a/example/ios/Gemfile.lock +++ b/packages/hmssdk_flutter/example/ios/Gemfile.lock @@ -3,25 +3,25 @@ GEM specs: CFPropertyList (3.0.6) rexml - addressable (2.8.4) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.781.0) - aws-sdk-core (3.175.0) + aws-partitions (1.816.0) + aws-sdk-core (3.181.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.67.0) - aws-sdk-core (~> 3, >= 3.174.0) + aws-sdk-kms (1.71.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.126.0) - aws-sdk-core (~> 3, >= 3.174.0) + aws-sdk-s3 (1.134.0) + aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.2) + aws-sigv4 (~> 1.6) + aws-sigv4 (1.6.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) @@ -30,13 +30,13 @@ GEM commander (4.6.0) highline (~> 2.0.0) declarative (0.0.20) - digest-crc (0.6.4) + digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.100.0) + excon (0.102.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -66,7 +66,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.7) - fastlane (2.213.0) + fastlane (2.214.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -105,12 +105,13 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - fastlane-plugin-firebase_app_distribution (0.6.1) - fastlane-plugin-versioning (0.5.1) + fastlane-plugin-firebase_app_distribution (0.7.3) + google-apis-firebaseappdistribution_v1 (~> 0.3.0) + fastlane-plugin-versioning (0.5.2) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.44.0) + google-apis-androidpublisher_v3 (0.49.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.0) + google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -139,10 +140,9 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.5.2) + googleauth (1.8.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) @@ -153,9 +153,8 @@ GEM jmespath (1.6.2) json (2.6.3) jwt (2.7.1) - memoist (0.16.2) mini_magick (4.12.0) - mini_mime (1.1.2) + mini_mime (1.1.5) multi_json (1.15.0) multipart-post (2.3.0) nanaimo (0.3.0) @@ -163,19 +162,19 @@ GEM optparse (0.1.1) os (1.1.4) plist (3.7.0) - public_suffix (5.0.1) + public_suffix (5.0.3) rake (13.0.6) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.17.0) + signet (0.18.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -217,8 +216,6 @@ PLATFORMS DEPENDENCIES fastlane - fastlane-plugin-firebase_app_distribution - fastlane-plugin-versioning BUNDLED WITH - 2.4.14 + 2.4.17 diff --git a/example/ios/Podfile b/packages/hmssdk_flutter/example/ios/Podfile similarity index 83% rename from example/ios/Podfile rename to packages/hmssdk_flutter/example/ios/Podfile index 57daa976a..b2636e014 100644 --- a/example/ios/Podfile +++ b/packages/hmssdk_flutter/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -48,6 +48,17 @@ post_install do |installer| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" config.build_settings['ENABLE_BITCODE'] = 'NO' + config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ + '$(inherited)', + ## dart: PermissionGroup.camera + 'PERMISSION_CAMERA=1', + + ## dart: PermissionGroup.microphone + 'PERMISSION_MICROPHONE=1', + + ## dart: PermissionGroup.bluetooth + 'PERMISSION_BLUETOOTH=1', + ] end end system('sed -i \'\' \'44s/readlink/readlink -f/\' \'Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\'') diff --git a/example/ios/Podfile.lock b/packages/hmssdk_flutter/example/ios/Podfile.lock similarity index 59% rename from example/ios/Podfile.lock rename to packages/hmssdk_flutter/example/ios/Podfile.lock index 872cb5bb4..a06940505 100644 --- a/example/ios/Podfile.lock +++ b/packages/hmssdk_flutter/example/ios/Podfile.lock @@ -1,43 +1,4 @@ PODS: - - DKImagePickerController/Core (4.3.4): - - DKImagePickerController/ImageDataManager - - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.4) - - DKImagePickerController/PhotoGallery (4.3.4): - - DKImagePickerController/Core - - DKPhotoGallery - - DKImagePickerController/Resource (4.3.4) - - DKPhotoGallery (0.0.17): - - DKPhotoGallery/Core (= 0.0.17) - - DKPhotoGallery/Model (= 0.0.17) - - DKPhotoGallery/Preview (= 0.0.17) - - DKPhotoGallery/Resource (= 0.0.17) - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Core (0.0.17): - - DKPhotoGallery/Model - - DKPhotoGallery/Preview - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Model (0.0.17): - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Preview (0.0.17): - - DKPhotoGallery/Model - - DKPhotoGallery/Resource - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Resource (0.0.17): - - SDWebImage - - SwiftyGif - - file_picker (0.0.1): - - DKImagePickerController/PhotoGallery - - Flutter - - Firebase/Analytics (10.9.0): - - Firebase/Core - - Firebase/Core (10.9.0): - - Firebase/CoreOnly - - FirebaseAnalytics (~> 10.9.0) - Firebase/CoreOnly (10.9.0): - FirebaseCore (= 10.9.0) - Firebase/Crashlytics (10.9.0): @@ -49,10 +10,6 @@ PODS: - Firebase/Performance (10.9.0): - Firebase/CoreOnly - FirebasePerformance (~> 10.9.0) - - firebase_analytics (10.4.2): - - Firebase/Analytics (= 10.9.0) - - firebase_core - - Flutter - firebase_core (2.13.1): - Firebase/CoreOnly (= 10.9.0) - Flutter @@ -68,33 +25,15 @@ PODS: - Firebase/Performance (= 10.9.0) - firebase_core - Flutter - - FirebaseABTesting (10.13.0): - - FirebaseCore (~> 10.0) - - FirebaseAnalytics (10.9.0): - - FirebaseAnalytics/AdIdSupport (= 10.9.0) + - FirebaseABTesting (10.15.0): - FirebaseCore (~> 10.0) - - FirebaseInstallations (~> 10.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - - GoogleUtilities/MethodSwizzler (~> 7.11) - - GoogleUtilities/Network (~> 7.11) - - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (10.9.0): - - FirebaseCore (~> 10.0) - - FirebaseInstallations (~> 10.0) - - GoogleAppMeasurement (= 10.9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - - GoogleUtilities/MethodSwizzler (~> 7.11) - - GoogleUtilities/Network (~> 7.11) - - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - FirebaseCore (10.9.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreExtension (10.13.0): + - FirebaseCoreExtension (10.15.0): - FirebaseCore (~> 10.0) - - FirebaseCoreInternal (10.13.0): + - FirebaseCoreInternal (10.15.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - FirebaseCrashlytics (10.9.0): - FirebaseCore (~> 10.5) @@ -106,7 +45,7 @@ PODS: - PromisesObjC (~> 2.1) - FirebaseDynamicLinks (10.9.0): - FirebaseCore (~> 10.0) - - FirebaseInstallations (10.13.0): + - FirebaseInstallations (10.15.0): - FirebaseCore (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) @@ -121,13 +60,13 @@ PODS: - GoogleUtilities/ISASwizzler (~> 7.8) - GoogleUtilities/MethodSwizzler (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseRemoteConfig (10.13.0): + - FirebaseRemoteConfig (10.15.0): - FirebaseABTesting (~> 10.0) - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseSessions (10.13.0): + - FirebaseSessions (10.15.0): - FirebaseCore (~> 10.5) - FirebaseCoreExtension (~> 10.0) - FirebaseInstallations (~> 10.0) @@ -138,34 +77,10 @@ PODS: - Flutter (1.0.0) - flutter_foreground_task (0.0.1): - Flutter - - GoogleAppMeasurement (10.9.0): - - GoogleAppMeasurement/AdIdSupport (= 10.9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - - GoogleUtilities/MethodSwizzler (~> 7.11) - - GoogleUtilities/Network (~> 7.11) - - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (10.9.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 10.9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - - GoogleUtilities/MethodSwizzler (~> 7.11) - - GoogleUtilities/Network (~> 7.11) - - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (10.9.0): - - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - - GoogleUtilities/MethodSwizzler (~> 7.11) - - GoogleUtilities/Network (~> 7.11) - - "GoogleUtilities/NSData+zlib (~> 7.11)" - - nanopb (< 2.30910.0, >= 2.30908.0) - GoogleDataTransport (9.2.5): - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/AppDelegateSwizzler (7.11.5): - - GoogleUtilities/Environment - - GoogleUtilities/Logger - - GoogleUtilities/Network - GoogleUtilities/Environment (7.11.5): - PromisesObjC (< 3.0, >= 1.2) - GoogleUtilities/ISASwizzler (7.11.5) @@ -173,30 +88,22 @@ PODS: - GoogleUtilities/Environment - GoogleUtilities/MethodSwizzler (7.11.5): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.11.5): - - GoogleUtilities/Logger - - "GoogleUtilities/NSData+zlib" - - GoogleUtilities/Reachability - "GoogleUtilities/NSData+zlib (7.11.5)" - - GoogleUtilities/Reachability (7.11.5): - - GoogleUtilities/Logger - GoogleUtilities/UserDefaults (7.11.5): - GoogleUtilities/Logger - HMSAnalyticsSDK (0.0.2) - HMSBroadcastExtensionSDK (0.0.9) - HMSHLSPlayerSDK (0.0.2): - HMSAnalyticsSDK (= 0.0.2) - - HMSSDK (0.9.8): + - HMSSDK (0.9.12): - HMSAnalyticsSDK (= 0.0.2) - HMSWebRTC (= 1.0.5116) - - hmssdk_flutter (1.7.4): + - hmssdk_flutter (1.7.5): - Flutter - HMSBroadcastExtensionSDK (= 0.0.9) - HMSHLSPlayerSDK (= 0.0.2) - - HMSSDK (= 0.9.8) + - HMSSDK (= 0.9.12) - HMSWebRTC (1.0.5116) - - image_gallery_saver (2.0.2): - - Flutter - MTBBarcodeScanner (5.0.11) - nanopb (2.30909.0): - nanopb/decode (= 2.30909.0) @@ -216,23 +123,17 @@ PODS: - qr_code_scanner (0.2.0): - Flutter - MTBBarcodeScanner - - SDWebImage (5.17.0): - - SDWebImage/Core (= 5.17.0) - - SDWebImage/Core (5.17.0) - share_plus (0.0.1): - Flutter - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - SwiftyGif (5.4.4) - uni_links (0.0.1): - Flutter - url_launcher_ios (0.0.1): - Flutter DEPENDENCIES: - - file_picker (from `.symlinks/plugins/file_picker/ios`) - - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`) - firebase_dynamic_links (from `.symlinks/plugins/firebase_dynamic_links/ios`) @@ -241,23 +142,19 @@ DEPENDENCIES: - flutter_foreground_task (from `.symlinks/plugins/flutter_foreground_task/ios`) - HMSBroadcastExtensionSDK - hmssdk_flutter (from `.symlinks/plugins/hmssdk_flutter/ios`) - - image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`) - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`) - uni_links (from `.symlinks/plugins/uni_links/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) SPEC REPOS: trunk: - - DKImagePickerController - - DKPhotoGallery - Firebase - FirebaseABTesting - - FirebaseAnalytics - FirebaseCore - FirebaseCoreExtension - FirebaseCoreInternal @@ -267,7 +164,6 @@ SPEC REPOS: - FirebasePerformance - FirebaseRemoteConfig - FirebaseSessions - - GoogleAppMeasurement - GoogleDataTransport - GoogleUtilities - HMSAnalyticsSDK @@ -279,14 +175,8 @@ SPEC REPOS: - nanopb - PromisesObjC - PromisesSwift - - SDWebImage - - SwiftyGif EXTERNAL SOURCES: - file_picker: - :path: ".symlinks/plugins/file_picker/ios" - firebase_analytics: - :path: ".symlinks/plugins/firebase_analytics/ios" firebase_core: :path: ".symlinks/plugins/firebase_core/ios" firebase_crashlytics: @@ -301,12 +191,10 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_foreground_task/ios" hmssdk_flutter: :path: ".symlinks/plugins/hmssdk_flutter/ios" - image_gallery_saver: - :path: ".symlinks/plugins/image_gallery_saver/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: - :path: ".symlinks/plugins/path_provider_foundation/darwin" + :path: ".symlinks/plugins/path_provider_foundation/ios" permission_handler_apple: :path: ".symlinks/plugins/permission_handler_apple/ios" qr_code_scanner: @@ -314,45 +202,38 @@ EXTERNAL SOURCES: share_plus: :path: ".symlinks/plugins/share_plus/ios" shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + :path: ".symlinks/plugins/shared_preferences_foundation/ios" uni_links: :path: ".symlinks/plugins/uni_links/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" SPEC CHECKSUMS: - DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac - DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 - file_picker: ce3938a0df3cc1ef404671531facef740d03f920 Firebase: bd152f0f3d278c4060c5c71359db08ebcfd5a3e2 - firebase_analytics: 48ed4a230abf9f585f7e7b477791effe96f5a791 firebase_core: ce64b0941c6d87c6ef5022ae9116a158236c8c94 firebase_crashlytics: 9b80d1944507cc07fa1c4455797f7d2eb7c8873f firebase_dynamic_links: db9f2ebcc3ea646e76a1d3ee37e9e57890ff0a83 firebase_performance: d11d1fd9591547f6b75f325aaadd6550eaf7e090 - FirebaseABTesting: 86ac5a4fc749088bb4d55a1cbfb2c4cb42c6d5de - FirebaseAnalytics: 5ea0db4893825e7b0149d575352cd838236313dc + FirebaseABTesting: 7fa3bca17f79ac433301d20d5cd33401f7738dca FirebaseCore: b68d3616526ec02e4d155166bbafb8eca64af557 - FirebaseCoreExtension: ce60f9db46d83944cf444664d6d587474128eeca - FirebaseCoreInternal: b342e37cd4f5b4454ec34308f073420e7920858e + FirebaseCoreExtension: d3f1ea3725fb41f56e8fbfb29eeaff54e7ffb8f6 + FirebaseCoreInternal: 2f4bee5ed00301b5e56da0849268797a2dd31fb4 FirebaseCrashlytics: b60329455285aff853e54139d8ddbfe1e5f2b9f9 FirebaseDynamicLinks: 8cb66c4f403aa6ddf86ff3bc3c383a652f344ce9 - FirebaseInstallations: b28af1b9f997f1a799efe818c94695a3728c352f + FirebaseInstallations: cae95cab0f965ce05b805189de1d4c70b11c76fb FirebasePerformance: eee2f5da94fd7e5d15487649f8fe10a90c87c174 - FirebaseRemoteConfig: 33e0dcf43899fbb4f8ef2d84200bf5f5e32eaf05 - FirebaseSessions: 991fb4c20b3505eef125f7cbfa20a5b5b189c2a4 + FirebaseRemoteConfig: 64b6ada098c649304114a817effd7e5f87229b11 + FirebaseSessions: ee59a7811bef4c15f65ef6472f3210faa293f9c8 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_foreground_task: 21ef182ab0a29a3005cc72cd70e5f45cb7f7f817 - GoogleAppMeasurement: 373bcbead1bb6a85be7a64d5d8f96284b762ea9c GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2 GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084 HMSAnalyticsSDK: 4d2a88a729b1eb42f3d25f217c28937ec318a5b7 HMSBroadcastExtensionSDK: d80fe325f6c928bd8e5176290b5a4b7ae15d6fbb HMSHLSPlayerSDK: 6a54ad4d12f3dc2270d1ecd24019d71282a4f6a3 - HMSSDK: 19df8bd7bb2ef517b3364983d96941996fdc65a0 - hmssdk_flutter: c22b108b34b5cfe000f6625fc670da6bf36de8cb + HMSSDK: 65c1445ad2aac04deb127fe7611f65b8e7447752 + hmssdk_flutter: 034439e3033cd9579e02b1de43dd9e42ba3aac70 HMSWebRTC: ae54e9dd91b869051b283b43b14f57d43b7bf8e1 - image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 package_info_plus: fd030dabf36271f146f1f3beacd48f564b0f17f7 @@ -361,13 +242,11 @@ SPEC CHECKSUMS: PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265 qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e - SDWebImage: 750adf017a315a280c60fde706ab1e552a3ae4e9 share_plus: 599aa54e4ea31d4b4c0e9c911bcc26c55e791028 shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 - SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f uni_links: d97da20c7701486ba192624d99bffaaffcfc298a url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 -PODFILE CHECKSUM: 576bcfbc69c41c8e1c7e04a8ea0da7225b4b2db0 +PODFILE CHECKSUM: 919064996fff867cd85dbf9e7730ff45bac23884 COCOAPODS: 1.12.1 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.pbxproj similarity index 97% rename from example/ios/Runner.xcodeproj/project.pbxproj rename to packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.pbxproj index b52e636de..604654b08 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -75,6 +75,7 @@ 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 = ""; }; B0623F8FBD08D7EF79FF5844 /* Pods-FlutterBroadcastUploadExtension.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.profile.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.profile.xcconfig"; sourceTree = ""; }; + B44CF4C02A83BCF0003B3D5E /* RunnerRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerRelease.entitlements; sourceTree = ""; }; CD3C8BA7497CF5A349499EE7 /* Pods-FlutterBroadcastUploadExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.release.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.release.xcconfig"; sourceTree = ""; }; EC1052B02858A77D005EAB9E /* FlutterBroadcastUploadExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FlutterBroadcastUploadExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; EC1052B12858A77D005EAB9E /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; }; @@ -152,6 +153,7 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + B44CF4C02A83BCF0003B3D5E /* RunnerRelease.entitlements */, EC9BCD2A26B1CFDB00D378A0 /* GoogleService-Info.plist */, EC3386D4296EBF6B00F565A8 /* Runner.entitlements */, 97C146FA1CF9000F007C117D /* Main.storyboard */, @@ -242,7 +244,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1340; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = 100ms; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -501,7 +503,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -522,10 +524,11 @@ CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 185; DEVELOPMENT_TEAM = 5N85PP82A9; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 5N85PP82A9; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -535,6 +538,7 @@ "PRODUCT_BUNDLE_IDENTIFIER[sdk=macosx*]" = ""; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = FlutterAppStore; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = FlutterAppStore; SUPPORTS_MACCATALYST = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -592,7 +596,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -643,7 +647,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -670,7 +674,7 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -696,15 +700,16 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 185; DEVELOPMENT_TEAM = 5N85PP82A9; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 5N85PP82A9; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -714,6 +719,7 @@ "PRODUCT_BUNDLE_IDENTIFIER[sdk=macosx*]" = ""; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = FlutterAppStore; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = FlutterAppStore; SUPPORTS_MACCATALYST = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -739,12 +745,13 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 5N85PP82A9; ENABLE_BITCODE = NO; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "i386 arm64"; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = FlutterBroadcastUploadExtension/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = FlutterBroadcastUploadExtension; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright Š 2022 100ms. All rights reserved."; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -787,7 +794,7 @@ INFOPLIST_FILE = FlutterBroadcastUploadExtension/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = FlutterBroadcastUploadExtension; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright Š 2022 100ms. All rights reserved."; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -827,7 +834,7 @@ INFOPLIST_FILE = FlutterBroadcastUploadExtension/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = FlutterBroadcastUploadExtension; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright Š 2022 100ms. All rights reserved."; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/FlutterBroadcastUploadExtension.xcscheme b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/FlutterBroadcastUploadExtension.xcscheme similarity index 100% rename from example/ios/Runner.xcodeproj/xcshareddata/xcschemes/FlutterBroadcastUploadExtension.xcscheme rename to packages/hmssdk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/FlutterBroadcastUploadExtension.xcscheme diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..a6b826db2 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..21a3cc14c --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner/AppDelegate.swift b/packages/hmssdk_flutter/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..70693e4a8 --- /dev/null +++ b/packages/hmssdk_flutter/example/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/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 000000000..6bf58c37b Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/102.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/102.png new file mode 100644 index 000000000..98abaa738 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/102.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 000000000..f3bcc97f3 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 000000000..033075f6d Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 000000000..d3fa24e37 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 000000000..b72d63d25 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/128.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 000000000..f0140f3f9 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 000000000..035f56329 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png new file mode 100644 index 000000000..6ab0076b5 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/16.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 000000000..17a3db087 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png new file mode 100644 index 000000000..e105989d0 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/172.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 000000000..629db2e7b Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png new file mode 100644 index 000000000..4f5243844 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/196.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 000000000..83dcabb66 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png new file mode 100644 index 000000000..1b40d7f40 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/216.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png new file mode 100644 index 000000000..977e807cb Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/256.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 000000000..665355730 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png new file mode 100644 index 000000000..95e2dfa22 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/32.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png new file mode 100644 index 000000000..cbabeb8db Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png new file mode 100644 index 000000000..459bb2775 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/48.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 000000000..63ea02a57 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png new file mode 100644 index 000000000..6f1c3ed48 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/512.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png new file mode 100644 index 000000000..6bf0dc714 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/55.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 000000000..544eefbf7 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 000000000..daadeafe7 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 000000000..12aa2408d Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png new file mode 100644 index 000000000..7606d7c57 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/64.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/66.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/66.png new file mode 100644 index 000000000..d84ea7727 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/66.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 000000000..7fe82067f Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 000000000..1f622dc27 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 000000000..1e9070505 Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png new file mode 100644 index 000000000..3ac56929b Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png new file mode 100644 index 000000000..1fac84fcf Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/88.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/92.png b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/92.png new file mode 100644 index 000000000..1c82da02e Binary files /dev/null and b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/92.png differ diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..57394b1f3 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,347 @@ +{ + "images": [ + { + "filename": "40.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "60.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "58.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "87.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "80.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "120.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "57.png", + "idiom": "iphone", + "scale": "1x", + "size": "57x57" + }, + { + "filename": "114.png", + "idiom": "iphone", + "scale": "2x", + "size": "57x57" + }, + { + "filename": "120.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "180.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "20.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "40.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "29.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "58.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "40.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "80.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "50.png", + "idiom": "ipad", + "scale": "1x", + "size": "50x50" + }, + { + "filename": "100.png", + "idiom": "ipad", + "scale": "2x", + "size": "50x50" + }, + { + "filename": "72.png", + "idiom": "ipad", + "scale": "1x", + "size": "72x72" + }, + { + "filename": "144.png", + "idiom": "ipad", + "scale": "2x", + "size": "72x72" + }, + { + "filename": "76.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "152.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "167.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "1024.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + }, + { + "filename": "16.png", + "idiom": "mac", + "scale": "1x", + "size": "16x16" + }, + { + "filename": "32.png", + "idiom": "mac", + "scale": "2x", + "size": "16x16" + }, + { + "filename": "32.png", + "idiom": "mac", + "scale": "1x", + "size": "32x32" + }, + { + "filename": "64.png", + "idiom": "mac", + "scale": "2x", + "size": "32x32" + }, + { + "filename": "128.png", + "idiom": "mac", + "scale": "1x", + "size": "128x128" + }, + { + "filename": "256.png", + "idiom": "mac", + "scale": "2x", + "size": "128x128" + }, + { + "filename": "256.png", + "idiom": "mac", + "scale": "1x", + "size": "256x256" + }, + { + "filename": "512.png", + "idiom": "mac", + "scale": "2x", + "size": "256x256" + }, + { + "filename": "512.png", + "idiom": "mac", + "scale": "1x", + "size": "512x512" + }, + { + "filename": "1024.png", + "idiom": "mac", + "scale": "2x", + "size": "512x512" + }, + { + "filename": "48.png", + "idiom": "watch", + "role": "notificationCenter", + "scale": "2x", + "size": "24x24", + "subtype": "38mm" + }, + { + "filename": "55.png", + "idiom": "watch", + "role": "notificationCenter", + "scale": "2x", + "size": "27.5x27.5", + "subtype": "42mm" + }, + { + "filename": "58.png", + "idiom": "watch", + "role": "companionSettings", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "87.png", + "idiom": "watch", + "role": "companionSettings", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "66.png", + "idiom": "watch", + "role": "notificationCenter", + "scale": "2x", + "size": "33x33", + "subtype": "45mm" + }, + { + "filename": "80.png", + "idiom": "watch", + "role": "appLauncher", + "scale": "2x", + "size": "40x40", + "subtype": "38mm" + }, + { + "filename": "88.png", + "idiom": "watch", + "role": "appLauncher", + "scale": "2x", + "size": "44x44", + "subtype": "40mm" + }, + { + "filename": "92.png", + "idiom": "watch", + "role": "appLauncher", + "scale": "2x", + "size": "46x46", + "subtype": "41mm" + }, + { + "filename": "100.png", + "idiom": "watch", + "role": "appLauncher", + "scale": "2x", + "size": "50x50", + "subtype": "44mm" + }, + { + "filename": "102.png", + "idiom": "watch", + "role": "appLauncher", + "scale": "2x", + "size": "51x51", + "subtype": "45mm" + }, + { + "idiom": "watch", + "role": "appLauncher", + "scale": "2x", + "size": "54x54", + "subtype": "49mm" + }, + { + "filename": "172.png", + "idiom": "watch", + "role": "quickLook", + "scale": "2x", + "size": "86x86", + "subtype": "38mm" + }, + { + "filename": "196.png", + "idiom": "watch", + "role": "quickLook", + "scale": "2x", + "size": "98x98", + "subtype": "42mm" + }, + { + "filename": "216.png", + "idiom": "watch", + "role": "quickLook", + "scale": "2x", + "size": "108x108", + "subtype": "44mm" + }, + { + "idiom": "watch", + "role": "quickLook", + "scale": "2x", + "size": "117x117", + "subtype": "45mm" + }, + { + "idiom": "watch", + "role": "quickLook", + "scale": "2x", + "size": "129x129", + "subtype": "49mm" + }, + { + "filename": "1024.png", + "idiom": "watch-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/Contents.json b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/Contents.json new file mode 100644 index 000000000..74d6a722c --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/packages/hmssdk_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/hmssdk_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner/Base.lproj/Main.storyboard b/packages/hmssdk_flutter/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/hmssdk_flutter/example/ios/Runner/GoogleService-Info.plist b/packages/hmssdk_flutter/example/ios/Runner/GoogleService-Info.plist new file mode 100644 index 000000000..ea8512922 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 19544678223-lisp1tlhj2es8id94te05r4ss4n7og2f.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.19544678223-lisp1tlhj2es8id94te05r4ss4n7og2f + API_KEY + AIzaSyCbfczDEGfWjotYbOaCYeLxXxN_uCrwCxI + GCM_SENDER_ID + 19544678223 + PLIST_VERSION + 1 + BUNDLE_ID + live.100ms.flutter + PROJECT_ID + flutter-hms + STORAGE_BUCKET + flutter-hms.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:19544678223:ios:a7bb21cc95bb495ab32f3a + + \ No newline at end of file diff --git a/example/ios/Runner/Info.plist b/packages/hmssdk_flutter/example/ios/Runner/Info.plist similarity index 91% rename from example/ios/Runner/Info.plist rename to packages/hmssdk_flutter/example/ios/Runner/Info.plist index 3cf160b3d..cac3a463f 100644 --- a/example/ios/Runner/Info.plist +++ b/packages/hmssdk_flutter/example/ios/Runner/Info.plist @@ -18,12 +18,10 @@ $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 - CFBundleName - hmssdk_flutter_example CFBundlePackageType APPL CFBundleShortVersionString - 1.5.7 + 1.5.48 CFBundleSignature ???? CFBundleURLTypes @@ -50,7 +48,7 @@ CFBundleVersion - 307 + 348 ITSAppUsesNonExemptEncryption LSApplicationCategoryType @@ -62,6 +60,8 @@ NSAllowsArbitraryLoads + NSBluetoothAlwaysUsageDescription + 100ms needs access to bluetooth to connect to nearby devices. NSBonjourServices _dartobservatory._tcp @@ -86,6 +86,10 @@ LaunchScreen UIMainStoryboardFile Main + UIRequiresFullScreen + + UIStatusBarStyle + UIStatusBarStyleDarkContent UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git a/packages/hmssdk_flutter/example/ios/Runner/Runner-Bridging-Header.h b/packages/hmssdk_flutter/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/example/ios/Runner/Runner.entitlements b/packages/hmssdk_flutter/example/ios/Runner/Runner.entitlements similarity index 100% rename from example/ios/Runner/Runner.entitlements rename to packages/hmssdk_flutter/example/ios/Runner/Runner.entitlements diff --git a/packages/hmssdk_flutter/example/ios/Runner/RunnerRelease.entitlements b/packages/hmssdk_flutter/example/ios/Runner/RunnerRelease.entitlements new file mode 100644 index 000000000..7d237bf1e --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/Runner/RunnerRelease.entitlements @@ -0,0 +1,25 @@ + + + + + com.apple.developer.associated-domains + + applinks:*.100ms.live + applinks:flutterhms.page.link + + com.apple.security.app-sandbox + + com.apple.security.application-groups + + group.flutterhms + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + com.apple.security.files.user-selected.read-only + + com.apple.security.network.client + + + diff --git a/packages/hmssdk_flutter/example/ios/fastlane/Appfile b/packages/hmssdk_flutter/example/ios/fastlane/Appfile new file mode 100644 index 000000000..180306309 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/fastlane/Appfile @@ -0,0 +1,6 @@ +# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app +# apple_id("[[APPLE_ID]]") # Your Apple email address + + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/packages/hmssdk_flutter/example/ios/fastlane/Fastfile b/packages/hmssdk_flutter/example/ios/fastlane/Fastfile new file mode 100644 index 000000000..48d66d213 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/fastlane/Fastfile @@ -0,0 +1,144 @@ + +update_fastlane + +# ENV["FIREBASE_TOKEN"] = "1//0g3a4KhTy3aRQCgYIARAAGBASNwF-L9Ir1HiwwxhpeRAMjV6oZjk8niOYLV-Ytmbwnx0GCvJEbgPoV9RPXaLDEr2Tse8S1tM-Zzo" + +default_platform(:ios) + +platform :ios do + + desc "Distributes the Runner iOS app on Firebase & TestFlight." + lane :distribute_app do + + bump_version + + compile_app + + # upload_symbols + + distribute_on_firebase + + distribute_on_testflight + + post_message_on_slack + + end + + + lane :bump_version do + + increment_build_number_in_plist( + target: 'Runner' + ) + + increment_version_number_in_plist( + bump_type: 'patch', + target: 'Runner' + ) + + end + + + private_lane :compile_app do + gym( + scheme: "Runner", + workspace: "./Runner.xcworkspace", + include_symbols: true, + export_method: "ad-hoc", + export_options: { + provisioningProfiles: { + "live.100ms.flutter" => "FlutterAdHocDistribution", + "live.100ms.flutter.FlutterBroadcastUploadExtension" => "FlutterAdhocBroadcastUploadExtension" + } + } + ) + end + + + # private_lane :upload_symbols do + + # dsym_zip( + # archive_path: lane_context[SharedValues::XCODEBUILD_ARCHIVE], + # all: false + # ) + + # upload_symbols_to_crashlytics( + # dsym_paths: [lane_context[SharedValues::DSYM_OUTPUT_PATH], lane_context[SharedValues::DSYM_ZIP_PATH]], + # gsp_path: "./Runner/GoogleService-Info.plist", + # ) + # end + + + private_lane :distribute_on_firebase do + firebase_app_distribution( + app: "1:19544678223:ios:a7bb21cc95bb495ab32f3a", + groups: "internal, External", + service_credentials_file: ENV['FLUTTER_HMS_JSON'], + ipa_path: "./Runner.ipa", + release_notes_file: "../ExampleAppChangelog.txt" + ) + end + + + lane :distribute_on_testflight do + gym( + scheme: "Runner", + workspace: "./Runner.xcworkspace", + include_symbols: true, + export_method: "app-store", + export_options: { + provisioningProfiles: { + "live.100ms.flutter" => "FlutterAppStore", + "live.100ms.flutter.FlutterBroadcastUploadExtension" => "FlutterAppStoreBroadcastUploadExtension" + } + } + ) + + api_key = app_store_connect_api_key( + key_id: "BY94A5BH9T", + issuer_id: "7b598151-7443-44b8-a7e8-d5d48cb40412", + key_filepath: "./AuthKey_BY94A5BH9T.p8", + duration: 1200, + in_house: false + ) + + pilot( + api_key: api_key, + app_identifier: "live.100ms.flutter", + notify_external_testers: true, + demo_account_required: false, + changelog: File.read("../../ExampleAppChangelog.txt"), + distribute_external: true, + notify_external_testers: true, + groups: 'External', + reject_build_waiting_for_review: true + ) + end + + lane :post_message_on_slack do + + build_number = get_info_plist_value(path: "./Runner/Info.plist", key: "CFBundleVersion") + version = get_version_number_from_plist( + target: 'Runner' + ) + + slack( + message: ":flutter: 🎉 Flutter iOS App released! 🎊 :flutter:", + slack_url: ENV['SLACK_URL'], + payload: { + "📲 Download from Firebase đŸ”Ĩ" => "https://appdistribution.firebase.dev/i/051800400061502d", + "📲 Download from TestFlight 🍎" => "https://testflight.apple.com/join/Uhzebmut", + "📝 Changelog" => File.read("../../ExampleAppChangelog.txt") + }, + default_payloads: ["git_branch"], + attachment_properties: { + fields: [{ + title: "📱🎊 App Version", + value: version + " (" + build_number + ")", + short: false + }] + } + ) + end + +end diff --git a/packages/hmssdk_flutter/example/ios/fastlane/Pluginfile b/packages/hmssdk_flutter/example/ios/fastlane/Pluginfile new file mode 100644 index 000000000..fff5a8290 --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/fastlane/Pluginfile @@ -0,0 +1,6 @@ +# Autogenerated by fastlane +# +# Ensure this file is checked in to source control! + +gem 'fastlane-plugin-firebase_app_distribution' +gem 'fastlane-plugin-versioning' diff --git a/packages/hmssdk_flutter/example/ios/fastlane/README.md b/packages/hmssdk_flutter/example/ios/fastlane/README.md new file mode 100644 index 000000000..5402d895f --- /dev/null +++ b/packages/hmssdk_flutter/example/ios/fastlane/README.md @@ -0,0 +1,56 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## iOS + +### ios distribute_app + +```sh +[bundle exec] fastlane ios distribute_app +``` + +Distributes the Runner iOS app on Firebase & TestFlight. + +### ios bump_version + +```sh +[bundle exec] fastlane ios bump_version +``` + + + +### ios distribute_on_testflight + +```sh +[bundle exec] fastlane ios distribute_on_testflight +``` + + + +### ios post_message_on_slack + +```sh +[bundle exec] fastlane ios post_message_on_slack +``` + + + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/example/ios/firebase_app_id_file.json b/packages/hmssdk_flutter/example/ios/firebase_app_id_file.json similarity index 99% rename from example/ios/firebase_app_id_file.json rename to packages/hmssdk_flutter/example/ios/firebase_app_id_file.json index e891c07c6..fbe1c93b0 100644 --- a/example/ios/firebase_app_id_file.json +++ b/packages/hmssdk_flutter/example/ios/firebase_app_id_file.json @@ -4,4 +4,4 @@ "GOOGLE_APP_ID": "1:19544678223:ios:a7bb21cc95bb495ab32f3a", "FIREBASE_PROJECT_ID": "flutter-hms", "GCM_SENDER_ID": "19544678223" -} \ No newline at end of file +} diff --git a/example/lib/common/bottom_sheets/app_settings_bottom_sheet.dart b/packages/hmssdk_flutter/example/lib/app_settings_bottom_sheet.dart similarity index 69% rename from example/lib/common/bottom_sheets/app_settings_bottom_sheet.dart rename to packages/hmssdk_flutter/example/lib/app_settings_bottom_sheet.dart index 56e57fc20..d2b1b2496 100644 --- a/example/lib/common/bottom_sheets/app_settings_bottom_sheet.dart +++ b/packages/hmssdk_flutter/example/lib/app_settings_bottom_sheet.dart @@ -5,64 +5,60 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter/hmssdk_flutter.dart'; -import 'package:hmssdk_flutter_example/common/app_dialogs/audio_mode_select_dialog.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/notification_settings_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/common/util/log_writer.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:share_plus/share_plus.dart'; -import 'package:url_launcher/url_launcher.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; import 'package:flutter/services.dart' show rootBundle; +import 'package:url_launcher/url_launcher.dart'; class AppSettingsBottomSheet extends StatefulWidget { final String appVersion; - AppSettingsBottomSheet({required this.appVersion}); + + const AppSettingsBottomSheet({required this.appVersion}); @override State createState() => _AppSettingsBottomSheetState(); } class _AppSettingsBottomSheetState extends State { - bool joinWithMutedAudio = true; - bool joinWithMutedVideo = true; - bool isDarkMode = true; + bool joinWithMutedAudio = false; + bool joinWithMutedVideo = false; bool skipPreview = false; bool mirrorCamera = true; bool showStats = false; bool isSoftwareDecoderDisabled = true; bool isAudioMixerDisabled = true; bool isAutoSimulcast = true; + bool isDebugMode = false; HMSAudioMode currentAudioMode = HMSAudioMode.VOICE; + bool isStreamingFlow = true; + bool isMockLayoutAPIEnabled = true; + var versions = {}; @override void initState() { super.initState(); - getAppSettings(); + _getAppSettings(); } - Future getAppSettings() async { + Future _getAppSettings() async { final String sdkVersions = await rootBundle .loadString('packages/hmssdk_flutter/assets/sdk-versions.json'); versions = json.decode(sdkVersions); if (versions['flutter'] == null) { - throw FormatException("flutter version not found"); + throw const FormatException("flutter version not found"); } if (Platform.isIOS && versions['ios'] == null) { - throw FormatException("ios version not found"); + throw const FormatException("ios version not found"); } if (Platform.isAndroid && versions['android'] == null) { - throw FormatException("android version not found"); + throw const FormatException("android version not found"); } joinWithMutedAudio = - await Utilities.getBoolData(key: 'join-with-muted-audio') ?? true; + await Utilities.getBoolData(key: 'join-with-muted-audio') ?? false; joinWithMutedVideo = - await Utilities.getBoolData(key: 'join-with-muted-video') ?? true; + await Utilities.getBoolData(key: 'join-with-muted-video') ?? false; skipPreview = await Utilities.getBoolData(key: 'skip-preview') ?? false; mirrorCamera = await Utilities.getBoolData(key: 'mirror-camera') ?? true; showStats = await Utilities.getBoolData(key: 'show-stats') ?? false; - isDarkMode = await Utilities.getBoolData(key: 'dark-mode') ?? true; isSoftwareDecoderDisabled = await Utilities.getBoolData(key: 'software-decoder-disabled') ?? true; isAudioMixerDisabled = @@ -71,9 +67,34 @@ class _AppSettingsBottomSheetState extends State { await Utilities.getBoolData(key: 'is-auto-simulcast') ?? true; int audioModeIndex = await Utilities.getIntData(key: 'audio-mode'); currentAudioMode = HMSAudioMode.values[audioModeIndex]; + + isDebugMode = + await Utilities.getBoolData(key: 'enable-debug-mode') ?? false; + + isStreamingFlow = + await Utilities.getBoolData(key: 'is_streaming_flow') ?? true; + + isMockLayoutAPIEnabled = + await Utilities.getBoolData(key: 'is_mock_layout_api_enabled') ?? false; + WidgetsBinding.instance.addPostFrameCallback((_) { setState(() {}); }); + + _setDebugData(); + } + + void _setDebugData() { + AppDebugConfig.isAudioMixerDisabled = isAudioMixerDisabled; + AppDebugConfig.isAutoSimulcast = isAutoSimulcast; + AppDebugConfig.isSoftwareDecoderDisabled = isSoftwareDecoderDisabled; + AppDebugConfig.joinWithMutedAudio = joinWithMutedAudio; + AppDebugConfig.joinWithMutedVideo = joinWithMutedVideo; + AppDebugConfig.mirrorCamera = mirrorCamera; + AppDebugConfig.showStats = showStats; + AppDebugConfig.skipPreview = skipPreview; + AppDebugConfig.isDebugMode = isDebugMode; + AppDebugConfig.isMockLayoutAPIEnabled = isMockLayoutAPIEnabled; } Future _launchUrl() async { @@ -117,7 +138,7 @@ class _AppSettingsBottomSheetState extends State { children: [ IconButton( icon: SvgPicture.asset( - "assets/icons/close_button.svg", + "packages/hms_room_kit/lib/src/assets/icons/close_button.svg", width: 40, // color: defaultColor, ), @@ -130,7 +151,7 @@ class _AppSettingsBottomSheetState extends State { ], ), Padding( - padding: EdgeInsets.only(top: 15, bottom: 10), + padding: const EdgeInsets.only(top: 15, bottom: 10), child: Divider( color: dividerColor, height: 5, @@ -145,10 +166,10 @@ class _AppSettingsBottomSheetState extends State { // contentPadding: EdgeInsets.zero, // leading: SvgPicture.asset( // isDarkMode - // ? "assets/icons/dark_mode.svg" - // : 'assets/icons/light_mode.svg', + // ? "packages/hms_room_kit/lib/src/assets/icons/dark_mode.svg" + // : 'packages/hms_room_kit/lib/src/assets/icons/light_mode.svg', // fit: BoxFit.scaleDown, - // color: themeDefaultColor, + // colorFilter: ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), // ), // title: Text( // "Dark Mode", @@ -180,13 +201,14 @@ class _AppSettingsBottomSheetState extends State { enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/mic_state_off.svg", + "packages/hms_room_kit/lib/src/assets/icons/bug.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( - "Join with muted audio", - semanticsLabel: "fl_join_with_muted_audio", + "Enable Debug Mode", + semanticsLabel: "fl_enable_debug_mode", style: GoogleFonts.inter( fontSize: 14, color: themeDefaultColor, @@ -195,11 +217,12 @@ class _AppSettingsBottomSheetState extends State { ), trailing: CupertinoSwitch( activeColor: hmsdefaultColor, - value: joinWithMutedAudio, + value: isDebugMode, onChanged: (value) => { - joinWithMutedAudio = value, + isDebugMode = value, Utilities.saveBoolData( - key: 'join-with-muted-audio', value: value), + key: 'enable-debug-mode', value: value), + AppDebugConfig.isDebugMode = value, setState(() {}) }), ), @@ -208,13 +231,14 @@ class _AppSettingsBottomSheetState extends State { enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/cam_state_off.svg", + "packages/hms_room_kit/lib/src/assets/icons/screen_share.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( - "Join with muted video", - semanticsLabel: "fl_join_with_muted_video", + "Enable Mock Layout API", + semanticsLabel: "fl_enable_mock_layout_api", style: GoogleFonts.inter( fontSize: 14, color: themeDefaultColor, @@ -223,11 +247,13 @@ class _AppSettingsBottomSheetState extends State { ), trailing: CupertinoSwitch( activeColor: hmsdefaultColor, - value: joinWithMutedVideo, + value: isMockLayoutAPIEnabled, onChanged: (value) => { - joinWithMutedVideo = value, + isMockLayoutAPIEnabled = value, Utilities.saveBoolData( - key: 'join-with-muted-video', value: value), + key: 'is_mock_layout_api_enabled', + value: value), + AppDebugConfig.isMockLayoutAPIEnabled = value, setState(() {}) }), ), @@ -236,13 +262,14 @@ class _AppSettingsBottomSheetState extends State { enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/preview_state_on.svg", + "packages/hms_room_kit/lib/src/assets/icons/mic_state_off.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( - "Skip Preview", - semanticsLabel: "fl_preview_enable", + "Join with muted audio", + semanticsLabel: "fl_join_with_muted_audio", style: GoogleFonts.inter( fontSize: 14, color: themeDefaultColor, @@ -251,14 +278,73 @@ class _AppSettingsBottomSheetState extends State { ), trailing: CupertinoSwitch( activeColor: hmsdefaultColor, - value: skipPreview, + value: joinWithMutedAudio, + onChanged: (value) => { + joinWithMutedAudio = value, + Utilities.saveBoolData( + key: 'join-with-muted-audio', value: value), + AppDebugConfig.joinWithMutedAudio = value, + setState(() {}) + }), + ), + ListTile( + horizontalTitleGap: 2, + enabled: false, + contentPadding: EdgeInsets.zero, + leading: SvgPicture.asset( + "packages/hms_room_kit/lib/src/assets/icons/cam_state_off.svg", + fit: BoxFit.scaleDown, + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), + ), + title: Text( + "Join with muted video", + semanticsLabel: "fl_join_with_muted_video", + style: GoogleFonts.inter( + fontSize: 14, + color: themeDefaultColor, + letterSpacing: 0.25, + fontWeight: FontWeight.w600), + ), + trailing: CupertinoSwitch( + activeColor: hmsdefaultColor, + value: joinWithMutedVideo, onChanged: (value) => { - skipPreview = value, + joinWithMutedVideo = value, Utilities.saveBoolData( - key: 'skip-preview', value: value), + key: 'join-with-muted-video', value: value), + AppDebugConfig.joinWithMutedVideo = value, setState(() {}) }), ), + // ListTile( + // horizontalTitleGap: 2, + // enabled: false, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/preview_state_on.svg", + // fit: BoxFit.scaleDown, + // colorFilter: ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), + // ), + // title: Text( + // "Skip Preview", + // semanticsLabel: "fl_preview_enable", + // style: GoogleFonts.inter( + // fontSize: 14, + // color: themeDefaultColor, + // letterSpacing: 0.25, + // fontWeight: FontWeight.w600), + // ), + // trailing: CupertinoSwitch( + // activeColor: hmsdefaultColor, + // value: skipPreview, + // onChanged: (value) => { + // skipPreview = value, + // Utilities.saveBoolData( + // key: 'skip-preview', value: value), + // setState(() {}) + // }), + // ), ListTile( horizontalTitleGap: 2, enabled: false, @@ -283,6 +369,7 @@ class _AppSettingsBottomSheetState extends State { mirrorCamera = value, Utilities.saveBoolData( key: 'mirror-camera', value: value), + AppDebugConfig.mirrorCamera = value, setState(() {}) }), ), @@ -291,8 +378,9 @@ class _AppSettingsBottomSheetState extends State { enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/stats.svg', - color: themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/stats.svg', + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Enable Stats", @@ -310,6 +398,7 @@ class _AppSettingsBottomSheetState extends State { showStats = value, Utilities.saveBoolData( key: 'show-stats', value: value), + AppDebugConfig.showStats = value, setState(() {}) }), ), @@ -319,8 +408,9 @@ class _AppSettingsBottomSheetState extends State { enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/decoder.svg', - color: themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/decoder.svg', + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), ), title: Text( "Software Decoder", @@ -339,6 +429,8 @@ class _AppSettingsBottomSheetState extends State { Utilities.saveBoolData( key: 'software-decoder-disabled', value: value), + AppDebugConfig.isSoftwareDecoderDisabled = + value, setState(() {}) }), ), @@ -348,8 +440,9 @@ class _AppSettingsBottomSheetState extends State { enabled: true, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/settings.svg', - color: themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/settings.svg', + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), ), title: Text( "Disable Audio Mixer", @@ -367,6 +460,7 @@ class _AppSettingsBottomSheetState extends State { isAudioMixerDisabled = value, Utilities.saveBoolData( key: 'audio-mixer-disabled', value: value), + AppDebugConfig.isAudioMixerDisabled = value, setState(() {}) }), ), @@ -375,8 +469,9 @@ class _AppSettingsBottomSheetState extends State { enabled: true, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/simulcast.svg', - color: themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/simulcast.svg', + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Enable Auto Simulcast", @@ -394,6 +489,7 @@ class _AppSettingsBottomSheetState extends State { isAutoSimulcast = value, Utilities.saveBoolData( key: 'is-auto-simulcast', value: value), + AppDebugConfig.isAutoSimulcast = value, setState(() {}) }), ), @@ -414,9 +510,10 @@ class _AppSettingsBottomSheetState extends State { enabled: false, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - "assets/icons/audio_mode.svg", + "packages/hms_room_kit/lib/src/assets/icons/audio_mode.svg", fit: BoxFit.scaleDown, - color: themeDefaultColor, + colorFilter: ColorFilter.mode( + themeDefaultColor, BlendMode.srcIn), ), title: Text( "Audio Mode", @@ -430,43 +527,48 @@ class _AppSettingsBottomSheetState extends State { trailing: Text(currentAudioMode.name), ), ), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - Navigator.pop(context); - showModalBottomSheet( - isScrollControlled: true, - backgroundColor: themeBottomSheetColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - context: context, - builder: (ctx) => - NotificationSettingsBottomSheet()); - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/notification.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Modify Notifications", - semanticsLabel: "fl_notification_setting", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), + + ///Since we are not supporting toasts commenting this out for now + /// + // ListTile( + // horizontalTitleGap: 2, + // onTap: () async { + // Navigator.pop(context); + // showModalBottomSheet( + // isScrollControlled: true, + // backgroundColor: themeBottomSheetColor, + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadius.circular(20), + // ), + // context: context, + // builder: (ctx) => + // const NotificationSettingsBottomSheet()); + // }, + // contentPadding: EdgeInsets.zero, + // leading: SvgPicture.asset( + // "packages/hms_room_kit/lib/src/assets/icons/notification.svg", + // fit: BoxFit.scaleDown, + // colorFilter: ColorFilter.mode( + // themeDefaultColor, BlendMode.srcIn), + // ), + // title: Text( + // "Modify Notifications", + // semanticsLabel: "fl_notification_setting", + // style: GoogleFonts.inter( + // fontSize: 14, + // color: themeDefaultColor, + // letterSpacing: 0.25, + // fontWeight: FontWeight.w600), + // )), ListTile( horizontalTitleGap: 2, enabled: true, onTap: _launchUrl, contentPadding: EdgeInsets.zero, leading: SvgPicture.asset( - 'assets/icons/bug.svg', - color: themeDefaultColor, + 'packages/hms_room_kit/lib/src/assets/icons/bug.svg', + colorFilter: + ColorFilter.mode(themeDefaultColor, BlendMode.srcIn), ), title: Text( "Ask on Discord", @@ -478,32 +580,6 @@ class _AppSettingsBottomSheetState extends State { fontWeight: FontWeight.w600), ), ), - ListTile( - horizontalTitleGap: 2, - onTap: () async { - File? logFile = await getLogFile; - if (logFile != null) { - Share.shareXFiles([XFile(logFile.path)], - text: "HMS Log file"); - } else { - Utilities.showToast("No file found"); - } - }, - contentPadding: EdgeInsets.zero, - leading: SvgPicture.asset( - "assets/icons/share.svg", - fit: BoxFit.scaleDown, - color: themeDefaultColor, - ), - title: Text( - "Share logs", - semanticsLabel: "fl_share_logs", - style: GoogleFonts.inter( - fontSize: 14, - color: themeDefaultColor, - letterSpacing: 0.25, - fontWeight: FontWeight.w600), - )), SizedBox( height: 30, child: ListTile( @@ -594,7 +670,7 @@ class _AppSettingsBottomSheetState extends State { Padding( padding: const EdgeInsets.only(left: 8.0, right: 8, bottom: 15), child: Center( - child: TitleText( + child: HMSTitleText( text: "Made with ❤ī¸ by 100ms", textColor: themeDefaultColor)), ) diff --git a/example/lib/main.dart b/packages/hmssdk_flutter/example/lib/main.dart similarity index 89% rename from example/lib/main.dart rename to packages/hmssdk_flutter/example/lib/main.dart index ac3e7528f..a0d11e52c 100644 --- a/example/lib/main.dart +++ b/packages/hmssdk_flutter/example/lib/main.dart @@ -2,7 +2,6 @@ import 'dart:async'; //Package imports -import 'package:bot_toast/bot_toast.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:firebase_dynamic_links/firebase_dynamic_links.dart'; @@ -11,13 +10,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/svg.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_flow.dart'; -import 'package:hmssdk_flutter_example/common/bottom_sheets/app_settings_bottom_sheet.dart'; -import 'package:hmssdk_flutter_example/home_screen/user_detail_screen.dart'; -import 'package:hmssdk_flutter_example/home_screen/qr_code_screen.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; +import 'package:hmssdk_flutter_example/app_settings_bottom_sheet.dart'; +import 'package:hmssdk_flutter_example/qr_code_screen.dart'; import 'package:provider/provider.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:uni_links/uni_links.dart'; @@ -190,8 +185,6 @@ class _HMSExampleAppState extends State { @override Widget build(BuildContext context) { return MaterialApp( - builder: BotToastInit(), //1. call BotToastInit - navigatorObservers: [BotToastNavigatorObserver()], home: HomePage( deepLinkURL: _currentURI == null ? null : _currentURI.toString(), ), @@ -267,25 +260,23 @@ class _HomePageState extends State { super.didUpdateWidget(oldWidget); } - void joinMeeting() { - if (meetingLinkController.text.isEmpty) { + void joinMeeting() async { + if (meetingLinkController.text.trim().isEmpty) { return; } FocusManager.instance.primaryFocus?.unfocus(); - Utilities.setRTMPUrl(meetingLinkController.text); - MeetingFlow flow = Utilities.deriveFlow(meetingLinkController.text.trim()); - if (flow == MeetingFlow.meeting || flow == MeetingFlow.hlsStreaming) { - Navigator.push( - context, - MaterialPageRoute( - builder: (_) => UserDetailScreen( - autofocusField: true, - meetingLink: meetingLinkController.text.trim(), - meetingFlow: flow, - ))); - } else { - Utilities.showToast("Please enter valid url"); - } + AppDebugConfig.isMockLayoutAPIEnabled = + await Utilities.getBoolData(key: 'is_mock_layout_api_enabled') ?? false; + Navigator.push( + context, + MaterialPageRoute( + builder: (_) => HMSPrebuilt( + roomCode: meetingLinkController.text.trim(), + options: HMSPrebuiltOptions( + iOSScreenshareConfig: HMSIOSScreenshareConfig( + appGroup: "group.flutterhms", + preferredExtension: + "live.100ms.flutter.FlutterBroadcastUploadExtension"))))); } @override @@ -342,8 +333,8 @@ class _HomePageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.end, children: [ - Text("Joining Link", - key: Key('joining_link_text'), + Text("Room Code", + key: Key('room_code_text'), style: GoogleFonts.inter( color: themeDefaultColor, height: 1.5, @@ -355,8 +346,9 @@ class _HomePageState extends State { SizedBox( width: width * 0.95, child: TextField( - key: Key('meeting_link_field'), + key: Key('room_code_field'), textInputAction: TextInputAction.done, + cursorColor: HMSThemeColors.primaryDefault, onSubmitted: (value) { joinMeeting(); }, @@ -370,7 +362,7 @@ class _HomePageState extends State { contentPadding: EdgeInsets.only(left: 16), fillColor: themeSurfaceColor, filled: true, - hintText: 'Paste the link here', + hintText: 'Paste the room code or link here', hintStyle: GoogleFonts.inter( color: hmsHintColor, height: 1.5, @@ -383,8 +375,16 @@ class _HomePageState extends State { meetingLinkController.text = ""; setState(() {}); }, - icon: Icon(Icons.clear), + icon: Icon( + Icons.clear, + color: Colors.white, + ), ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + color: HMSThemeColors.primaryDefault, width: 2), + borderRadius: + const BorderRadius.all(Radius.circular(8))), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: borderColor, width: 1), @@ -432,7 +432,7 @@ class _HomePageState extends State { }, child: Container( padding: - const EdgeInsets.fromLTRB(60, 12, 8, 12), + const EdgeInsets.fromLTRB(12, 12, 8, 12), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(8))), @@ -440,7 +440,7 @@ class _HomePageState extends State { mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ - TitleText( + HMSTitleText( key: Key('join_now'), text: 'Join Now', textColor: @@ -467,10 +467,12 @@ class _HomePageState extends State { padding: const EdgeInsets.only( left: 8.0, right: 8), child: SvgPicture.asset( - "assets/icons/more.svg", - color: meetingLinkController.text.isEmpty - ? themeDisabledTextColor - : hmsWhiteColor, + "packages/hms_room_kit/lib/src/assets/icons/more.svg", + colorFilter: ColorFilter.mode( + meetingLinkController.text.isEmpty + ? themeDisabledTextColor + : hmsWhiteColor, + BlendMode.srcIn), fit: BoxFit.scaleDown, ), ), @@ -489,9 +491,6 @@ class _HomePageState extends State { height: 5, color: dividerColor, )), - SizedBox( - height: 20, - ), SizedBox( width: width * 0.95, child: ElevatedButton( @@ -527,7 +526,7 @@ class _HomePageState extends State { SizedBox( width: 5, ), - TitleText( + HMSTitleText( key: Key("scan_qr_code"), text: 'Scan QR Code', textColor: enabledTextColor) @@ -535,7 +534,7 @@ class _HomePageState extends State { ), ), ), - ), + ) ], ), ), diff --git a/example/lib/home_screen/qr_code_screen.dart b/packages/hmssdk_flutter/example/lib/qr_code_screen.dart similarity index 82% rename from example/lib/home_screen/qr_code_screen.dart rename to packages/hmssdk_flutter/example/lib/qr_code_screen.dart index c68550334..76e3b6e14 100644 --- a/example/lib/home_screen/qr_code_screen.dart +++ b/packages/hmssdk_flutter/example/lib/qr_code_screen.dart @@ -1,15 +1,11 @@ import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:hmssdk_flutter_example/common/widgets/title_text.dart'; -import 'package:hmssdk_flutter_example/common/util/app_color.dart'; -import 'package:hmssdk_flutter_example/common/util/utility_function.dart'; -import 'package:hmssdk_flutter_example/enum/meeting_flow.dart'; -import 'package:hmssdk_flutter_example/home_screen/user_detail_screen.dart'; +import 'package:hms_room_kit/hms_room_kit.dart'; import 'package:qr_code_scanner/qr_code_scanner.dart'; class QRCodeScreen extends StatefulWidget { - QRCodeScreen(); + QRCodeScreen({Key? key}) : super(key: key); @override State createState() => _QRCodeScreenState(); @@ -40,21 +36,13 @@ class _QRCodeScreenState extends State { controller!.resumeCamera(); controller!.scannedDataStream.listen((scanData) async { if (scanData.code != null) { - MeetingFlow flow = Utilities.deriveFlow(scanData.code!); - if (flow == MeetingFlow.meeting || flow == MeetingFlow.hlsStreaming) { - controller!.pauseCamera(); - Utilities.setRTMPUrl(scanData.code!); - FocusManager.instance.primaryFocus?.unfocus(); - Navigator.of(context).pushReplacement(MaterialPageRoute( - builder: (_) => UserDetailScreen( - meetingLink: scanData.code!.trim(), - meetingFlow: flow, - ), - )); - } else { - Utilities.showToast("Invalid meeting url"); - controller!.resumeCamera(); - } + controller!.pauseCamera(); + FocusManager.instance.primaryFocus?.unfocus(); + Navigator.of(context).pushReplacement(MaterialPageRoute( + builder: (_) => HMSPrebuilt( + roomCode: scanData.code!.trim(), + options: HMSPrebuiltOptions(userName: ""), + ))); } }); } @@ -92,7 +80,7 @@ class _QRCodeScreenState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - TitleText( + HMSTitleText( text: "Scan QR Code", textColor: themeSubHeadingColor, letterSpacing: 0.15, @@ -157,7 +145,7 @@ class _QRCodeScreenState extends State { SizedBox( width: 8, ), - TitleText( + HMSTitleText( text: 'Join with Link Instead', textColor: enabledTextColor), ], diff --git a/example/pubspec.lock b/packages/hmssdk_flutter/example/pubspec.lock similarity index 72% rename from example/pubspec.lock rename to packages/hmssdk_flutter/example/pubspec.lock index 870b1c91d..dcb13733c 100644 --- a/example/pubspec.lock +++ b/packages/hmssdk_flutter/example/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: archive - sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" + sha256: "49b1fad315e57ab0bbc15bcbb874e83116a1d78f77ebd500a4af6c9407d6b28e" url: "https://pub.dev" source: hosted - version: "3.3.7" + version: "3.3.8" args: dependency: transitive description: @@ -33,16 +33,8 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.0" - avatar_glow: - dependency: "direct main" - description: - name: avatar_glow - sha256: "3627f6f97d1f10d3c1996ae108d3488eabaf68c0cf0c3eac7e7c746a3812881d" - url: "https://pub.dev" - source: hosted - version: "2.0.2" badges: - dependency: "direct main" + dependency: transitive description: name: badges sha256: "6e7f3ec561ec08f47f912cfe349d4a1707afdc8dda271e17b046aa6d42c89e77" @@ -58,7 +50,7 @@ packages: source: hosted version: "2.1.1" bot_toast: - dependency: "direct main" + dependency: transitive description: name: bot_toast sha256: db6950851aab00ef04b386eb3c76c83739eaffcb6b80d0dc42a675ef7584623b @@ -73,22 +65,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff - url: "https://pub.dev" - source: hosted - version: "2.0.3" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 - url: "https://pub.dev" - source: hosted - version: "0.4.0" clock: dependency: transitive description: @@ -101,10 +77,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.17.2" convert: dependency: transitive description: @@ -117,10 +93,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb url: "https://pub.dev" source: hosted - version: "0.3.3+4" + version: "0.3.3+5" crypto: dependency: transitive description: @@ -129,16 +105,16 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - cupertino_icons: - dependency: "direct main" + dots_indicator: + dependency: transitive description: - name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + name: dots_indicator + sha256: "58b6a365744aa62aa1b70c4ea29e5106fbe064f5edaf7e9652e9b856edbfd9bb" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "3.0.0" draggable_widget: - dependency: "direct main" + dependency: transitive description: name: draggable_widget sha256: d7f6b1eb9cb79b724b02dc2ac699f82d1ab20b99920b8b1f25812054d72ca803 @@ -146,13 +122,13 @@ packages: source: hosted version: "2.0.0" dropdown_button2: - dependency: "direct main" + dependency: transitive description: name: dropdown_button2 - sha256: "9c4f30b2d1506fe171e807f15d69e4f70ab48359de350663dbde69015d7c1454" + sha256: "107444581478342c6511040c2eb52850748400df4f3295df3da8be75693180a5" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "2.1.4" fake_async: dependency: transitive description: @@ -165,10 +141,10 @@ packages: dependency: transitive description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.0.2" file: dependency: transitive description: @@ -177,38 +153,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.4" - file_picker: - dependency: "direct main" - description: - name: file_picker - sha256: "21145c9c268d54b1f771d8380c195d2d6f655e0567dc1ca2f9c134c02c819e0a" - url: "https://pub.dev" - source: hosted - version: "5.3.3" - firebase_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: f9d130eb6cf04b58e94358053aba3aebe546dca541e9ac5f076f8a7bc1e5c21e - url: "https://pub.dev" - source: hosted - version: "10.4.2" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: "16b3c49dbf26b25cd69b9dc52e8a2e21e48ee13d5b4bb563db55a82300213d1e" - url: "https://pub.dev" - source: hosted - version: "3.6.2" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: "8163a020ee358c64b6c4f686102d09e21f5abf361352addc68aa419fc4bc029c" - url: "https://pub.dev" - source: hosted - version: "0.5.4+2" firebase_core: dependency: "direct main" description: @@ -229,10 +173,10 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: "0fd5c4b228de29b55fac38aed0d9e42514b3d3bd47675de52bf7f8fccaf922fa" + sha256: "4cf4d2161530332ddc3c562f19823fb897ff37a9a774090d28df99f47370e973" url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" firebase_crashlytics: dependency: "direct main" description: @@ -295,53 +239,37 @@ packages: source: sdk version: "0.0.0" flutter_foreground_task: - dependency: "direct main" + dependency: transitive description: name: flutter_foreground_task - sha256: a7bafaec32e33ec1670906850241340fd721ae040ed23db03cb7216848afbbbc + sha256: "501d34957ade7c159b3d44832428a4ed9b2b6ffcff17817f0522a7b7229fcb6c" url: "https://pub.dev" source: hosted - version: "4.1.0" - flutter_launcher_icons: - dependency: "direct main" - description: - name: flutter_launcher_icons - sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" - url: "https://pub.dev" - source: hosted - version: "0.13.1" + version: "6.1.1" flutter_linkify: - dependency: "direct main" + dependency: transitive description: name: flutter_linkify sha256: "74669e06a8f358fee4512b4320c0b80e51cffc496607931de68d28f099254073" url: "https://pub.dev" source: hosted version: "6.0.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" - url: "https://pub.dev" - source: hosted - version: "2.0.15" flutter_staggered_grid_view: - dependency: "direct main" + dependency: transitive description: name: flutter_staggered_grid_view - sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395" + sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.6.2" flutter_svg: - dependency: "direct main" + dependency: transitive description: name: flutter_svg - sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" + sha256: f991fdb1533c3caeee0cdc14b04f50f0c3916f0dbcbc05237ccbe4e3c6b93f3f url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.5" flutter_test: dependency: "direct dev" description: flutter @@ -353,7 +281,7 @@ packages: source: sdk version: "0.0.0" focus_detector: - dependency: "direct main" + dependency: transitive description: name: focus_detector sha256: "05e32d9dd378cd54f1a3f9ce813c05156f28eb83f8e68f5bf1a37e9cdb21af1c" @@ -364,25 +292,32 @@ packages: dependency: "direct main" description: name: google_fonts - sha256: e20ff62b158b96f392bfc8afe29dee1503c94fbea2cbe8186fd59b756b8ae982 + sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6" url: "https://pub.dev" source: hosted - version: "5.1.0" - hmssdk_flutter: + version: "4.0.4" + hms_room_kit: dependency: "direct main" + description: + path: "../../hms_room_kit" + relative: true + source: path + version: "0.2.0" + hmssdk_flutter: + dependency: transitive description: path: ".." relative: true source: path - version: "1.7.4" + version: "1.7.6" http: - dependency: "direct main" + dependency: transitive description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "0.13.6" http_parser: dependency: transitive description: @@ -391,24 +326,8 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - image: - dependency: transitive - description: - name: image - sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf - url: "https://pub.dev" - source: hosted - version: "4.0.17" - image_gallery_saver: - dependency: "direct main" - description: - name: image_gallery_saver - sha256: "0aba74216a4d9b0561510cb968015d56b701ba1bd94aace26aacdd8ae5761816" - url: "https://pub.dev" - source: hosted - version: "2.0.3" intl: - dependency: "direct main" + dependency: transitive description: name: intl sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" @@ -419,18 +338,10 @@ packages: dependency: transitive description: name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "0.6.5" linkify: dependency: transitive description: @@ -439,6 +350,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + lottie: + dependency: transitive + description: + name: lottie + sha256: "23522951540d20a57a60202ed7022e6376bed206a4eee1c347a91f58bd57eb9f" + url: "https://pub.dev" + source: hosted + version: "2.3.2" matcher: dependency: transitive description: @@ -512,55 +431,55 @@ packages: source: hosted version: "1.0.1" path_provider: - dependency: "direct main" + dependency: transitive description: name: path_provider - sha256: "909b84830485dbcd0308edf6f7368bc8fd76afa26a270420f34cabea2a6467a0" + sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "5d44fc3314d969b84816b569070d7ace0f1dea04bd94a83f74c4829615d22ad8" + sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "1b744d3d774e5a879bb76d6cd1ecee2ba2c6960c03b1020cd35212f6aa267ac5" + sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ba2b77f0c52a33db09fc8caf85b12df691bf28d983e84cf87ff6d693cfa007b3 + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 + sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: ee0e0d164516b90ae1f970bdf29f726f1aa730d7cfc449ecc74c495378b705da + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" permission_handler: - dependency: "direct main" + dependency: transitive description: name: permission_handler sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" @@ -571,10 +490,10 @@ packages: dependency: transitive description: name: permission_handler_android - sha256: "2ffaf52a21f64ac9b35fe7369bb9533edbd4f698e5604db8645b1064ff4cf221" + sha256: d74e77a5ecd38649905db0a7d05ef16bed42ff263b9efb73ed794317c5764ec3 url: "https://pub.dev" source: hosted - version: "10.3.3" + version: "10.3.4" permission_handler_apple: dependency: transitive description: @@ -603,26 +522,26 @@ packages: dependency: transitive description: name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "5.1.0" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.2" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" + sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.1.6" pointycastle: dependency: transitive description: @@ -632,7 +551,7 @@ packages: source: hosted version: "3.7.3" provider: - dependency: "direct main" + dependency: transitive description: name: provider sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f @@ -648,7 +567,7 @@ packages: source: hosted version: "1.0.1" share_plus: - dependency: "direct main" + dependency: transitive description: name: share_plus sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" @@ -664,61 +583,61 @@ packages: source: hosted version: "3.3.0" shared_preferences: - dependency: "direct main" + dependency: transitive description: name: shared_preferences - sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" + sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076 + sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 + sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1" + sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" + sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a" + sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d + sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" sky_engine: dependency: transitive description: flutter @@ -736,18 +655,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.1" string_scanner: dependency: transitive description: @@ -768,12 +687,12 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.6.0" tuple: - dependency: "direct main" + dependency: transitive description: name: tuple sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 @@ -816,66 +735,66 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" + sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 url: "https://pub.dev" source: hosted - version: "6.1.12" + version: "6.1.11" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "3dd2388cc0c42912eee04434531a26a82512b9cb1827e0214430c9bcbddfe025" + sha256: b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330 url: "https://pub.dev" source: hosted - version: "6.0.38" + version: "6.1.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + sha256: "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.1.5" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" + sha256: b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88 url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea + sha256: "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.5" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 + sha256: ba140138558fcc3eead51a1c42e92a9fb074a1b1149ed3c73e66035b2ccd94f2 url: "https://pub.dev" source: hosted - version: "2.0.18" + version: "2.0.19" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" + sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069" url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "3.0.8" uuid: dependency: transitive description: @@ -888,26 +807,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f" + sha256: ea8d3fc7b2e0f35de38a7465063ecfcf03d8217f7962aa2a6717132cb5d43a79 url: "https://pub.dev" source: hosted - version: "1.1.7" + version: "1.1.5" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f" + sha256: a5eaa5d19e123ad4f61c3718ca1ed921c4e6254238d9145f82aa214955d9aced url: "https://pub.dev" source: hosted - version: "1.1.7" + version: "1.1.5" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e" + sha256: "15edc42f7eaa478ce854eaf1fbb9062a899c0e4e56e775dd73b7f4709c97c4ca" url: "https://pub.dev" source: hosted - version: "1.1.7" + version: "1.1.5" vector_math: dependency: transitive description: @@ -936,34 +855,26 @@ packages: dependency: transitive description: name: win32 - sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 + sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" url: "https://pub.dev" source: hosted - version: "5.0.6" + version: "4.1.4" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: f0c26453a2d47aa4c2570c6a033246a3fc62da2fe23c7ffdd0a7495086dc0247 + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" xml: dependency: transitive description: name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" url: "https://pub.dev" source: hosted - version: "6.3.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://pub.dev" - source: hosted - version: "3.1.2" + version: "6.2.2" sdks: dart: ">=3.1.0-185.0.dev <4.0.0" - flutter: ">=3.10.0" + flutter: ">=3.7.0" diff --git a/example/pubspec.yaml b/packages/hmssdk_flutter/example/pubspec.yaml similarity index 82% rename from example/pubspec.yaml rename to packages/hmssdk_flutter/example/pubspec.yaml index c4ac4f99a..bc8d252f7 100644 --- a/example/pubspec.yaml +++ b/packages/hmssdk_flutter/example/pubspec.yaml @@ -4,7 +4,7 @@ description: Demonstrates how to use the hmssdk_flutter plugin. # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. publish_to: "none" # Remove this line if you wish to publish to pub.dev -version: 1.7.5 +version: 1.7.6 environment: sdk: ">=2.16.0 <4.0.0" @@ -12,41 +12,18 @@ dependencies: flutter: sdk: flutter - hmssdk_flutter: - path: ../ + hms_room_kit: + path: ../../hms_room_kit - cupertino_icons: - provider: - http: - permission_handler: - intl: firebase_crashlytics: 3.3.2 firebase_core: 2.13.1 - firebase_analytics: 10.4.2 firebase_performance: 0.9.2+2 firebase_dynamic_links: - flutter_launcher_icons: package_info_plus: - path_provider: - dropdown_button2: - focus_detector: - flutter_staggered_grid_view: - tuple: - avatar_glow: - flutter_svg: google_fonts: - bot_toast: + url_launcher: qr_code_scanner: - shared_preferences: uni_links: - file_picker: - draggable_widget: - badges: - url_launcher: - share_plus: - flutter_linkify: - flutter_foreground_task: 4.1.0 - image_gallery_saver: dev_dependencies: flutter_test: diff --git a/example/test/widget_test.dart b/packages/hmssdk_flutter/example/test/widget_test.dart similarity index 100% rename from example/test/widget_test.dart rename to packages/hmssdk_flutter/example/test/widget_test.dart diff --git a/hmssdk_flutter.iml b/packages/hmssdk_flutter/hmssdk_flutter.iml similarity index 100% rename from hmssdk_flutter.iml rename to packages/hmssdk_flutter/hmssdk_flutter.iml diff --git a/ios/.gitignore b/packages/hmssdk_flutter/ios/.gitignore similarity index 100% rename from ios/.gitignore rename to packages/hmssdk_flutter/ios/.gitignore diff --git a/ios/Assets/.gitkeep b/packages/hmssdk_flutter/ios/Assets/.gitkeep similarity index 100% rename from ios/Assets/.gitkeep rename to packages/hmssdk_flutter/ios/Assets/.gitkeep diff --git a/ios/Classes/Actions/HMSAudioAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSAudioAction.swift similarity index 85% rename from ios/Classes/Actions/HMSAudioAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSAudioAction.swift index 3cdaa5c45..747aa9c14 100644 --- a/ios/Classes/Actions/HMSAudioAction.swift +++ b/packages/hmssdk_flutter/ios/Classes/Actions/HMSAudioAction.swift @@ -9,7 +9,7 @@ import Foundation import HMSSDK class HMSAudioAction { - static func audioActions(_ call: FlutterMethodCall, _ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?) { + static func audioActions(_ call: FlutterMethodCall, _ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?, _ swiftHmssdkFlutterPlugin: SwiftHmssdkFlutterPlugin) { switch call.method { case "switch_audio": switchAudio(call, result, hmsSDK) @@ -27,7 +27,7 @@ class HMSAudioAction { setVolume(call, result, hmsSDK) case "toggle_mic_mute_state": - toggleMicMuteState(result, hmsSDK) + toggleMicMuteState(result, hmsSDK, swiftHmssdkFlutterPlugin) default: result(FlutterMethodNotImplemented) @@ -49,10 +49,16 @@ class HMSAudioAction { result(true) } - static private func toggleMicMuteState(_ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?) { + static private func toggleMicMuteState(_ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?, _ swiftHmssdkFlutterPlugin: SwiftHmssdkFlutterPlugin) { guard let peer = hmsSDK?.localPeer, let audio = peer.audioTrack as? HMSLocalAudioTrack else { + if swiftHmssdkFlutterPlugin.previewForRoleAudioTrack != nil { + let audioTrack = swiftHmssdkFlutterPlugin.previewForRoleAudioTrack! + audioTrack.setMute(!(audioTrack.isMute())) + result(true) + return + } result(false) return } diff --git a/ios/Classes/Actions/HMSAudioDeviceAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSAudioDeviceAction.swift similarity index 100% rename from ios/Classes/Actions/HMSAudioDeviceAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSAudioDeviceAction.swift diff --git a/ios/Classes/Actions/HMSCameraControlsAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSCameraControlsAction.swift similarity index 100% rename from ios/Classes/Actions/HMSCameraControlsAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSCameraControlsAction.swift diff --git a/ios/Classes/Actions/HMSCommonAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSCommonAction.swift similarity index 100% rename from ios/Classes/Actions/HMSCommonAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSCommonAction.swift diff --git a/ios/Classes/Actions/HMSHLSAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSHLSAction.swift similarity index 100% rename from ios/Classes/Actions/HMSHLSAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSHLSAction.swift diff --git a/ios/Classes/Actions/HMSMessageAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSMessageAction.swift similarity index 100% rename from ios/Classes/Actions/HMSMessageAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSMessageAction.swift diff --git a/ios/Classes/Actions/HMSPIPAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSPIPAction.swift similarity index 100% rename from ios/Classes/Actions/HMSPIPAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSPIPAction.swift diff --git a/ios/Classes/Actions/HMSRecordingAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSRecordingAction.swift similarity index 100% rename from ios/Classes/Actions/HMSRecordingAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSRecordingAction.swift diff --git a/ios/Classes/Actions/HMSRemoteVideoTrackAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSRemoteVideoTrackAction.swift similarity index 100% rename from ios/Classes/Actions/HMSRemoteVideoTrackAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSRemoteVideoTrackAction.swift diff --git a/ios/Classes/Actions/HMSRoomAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSRoomAction.swift similarity index 100% rename from ios/Classes/Actions/HMSRoomAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSRoomAction.swift diff --git a/ios/Classes/Actions/HMSSessionStoreAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSSessionStoreAction.swift similarity index 100% rename from ios/Classes/Actions/HMSSessionStoreAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSSessionStoreAction.swift diff --git a/ios/Classes/Actions/HMSVideoAction.swift b/packages/hmssdk_flutter/ios/Classes/Actions/HMSVideoAction.swift similarity index 76% rename from ios/Classes/Actions/HMSVideoAction.swift rename to packages/hmssdk_flutter/ios/Classes/Actions/HMSVideoAction.swift index f77bacb0d..e2bcfb838 100644 --- a/ios/Classes/Actions/HMSVideoAction.swift +++ b/packages/hmssdk_flutter/ios/Classes/Actions/HMSVideoAction.swift @@ -9,13 +9,13 @@ import Foundation import HMSSDK class HMSVideoAction { - static func videoActions(_ call: FlutterMethodCall, _ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?) { + static func videoActions(_ call: FlutterMethodCall, _ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?, _ swiftHmssdkFlutterPlugin: SwiftHmssdkFlutterPlugin) { switch call.method { case "switch_video": switchVideo(call, result, hmsSDK) case "switch_camera": - switchCamera(result, hmsSDK) + switchCamera(result, hmsSDK, swiftHmssdkFlutterPlugin) case "is_video_mute": isVideoMute(call, result, hmsSDK) @@ -27,17 +27,23 @@ class HMSVideoAction { toggleVideoMuteAll(false, result, hmsSDK) case "toggle_camera_mute_state": - toggleCameraMuteState(result, hmsSDK) + toggleCameraMuteState(result, hmsSDK, swiftHmssdkFlutterPlugin) default: result(FlutterMethodNotImplemented) } } - static private func switchCamera(_ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?) { + static private func switchCamera(_ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?, _ swiftHmssdkFlutterPlugin: SwiftHmssdkFlutterPlugin) { guard let peer = hmsSDK?.localPeer, let videoTrack = peer.videoTrack as? HMSLocalVideoTrack else { + if swiftHmssdkFlutterPlugin.previewForRoleVideoTrack != nil { + let videoTrack = swiftHmssdkFlutterPlugin.previewForRoleVideoTrack! + videoTrack.switchCamera() + result(nil) + return + } result(HMSErrorExtension.getError("Local Peer not found in \(#function)")) return } @@ -63,10 +69,16 @@ class HMSVideoAction { result(true) } - static private func toggleCameraMuteState(_ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?) { + static private func toggleCameraMuteState(_ result: @escaping FlutterResult, _ hmsSDK: HMSSDK?, _ swiftHmssdkFlutterPlugin: SwiftHmssdkFlutterPlugin) { guard let peer = hmsSDK?.localPeer, let video = peer.videoTrack as? HMSLocalVideoTrack else { + if swiftHmssdkFlutterPlugin.previewForRoleVideoTrack != nil { + let videoTrack = swiftHmssdkFlutterPlugin.previewForRoleVideoTrack! + videoTrack.setMute(!(videoTrack.isMute())) + result(true) + return + } result(false) return } diff --git a/ios/Classes/HLSPlayer/HMSHLSCueExtension.swift b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSCueExtension.swift similarity index 100% rename from ios/Classes/HLSPlayer/HMSHLSCueExtension.swift rename to packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSCueExtension.swift diff --git a/ios/Classes/HLSPlayer/HMSHLSPlaybackStateExtension.swift b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSPlaybackStateExtension.swift similarity index 100% rename from ios/Classes/HLSPlayer/HMSHLSPlaybackStateExtension.swift rename to packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSPlaybackStateExtension.swift diff --git a/ios/Classes/HLSPlayer/HMSHLSPlayerAction.swift b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSPlayerAction.swift similarity index 99% rename from ios/Classes/HLSPlayer/HMSHLSPlayerAction.swift rename to packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSPlayerAction.swift index 9fe24fdca..2d27c990b 100644 --- a/ios/Classes/HLSPlayer/HMSHLSPlayerAction.swift +++ b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSPlayerAction.swift @@ -72,7 +72,7 @@ class HMSHLSPlayerAction { let hlsUrl = arguments["hls_url"] as? String - NotificationCenter.default.post(name: NSNotification.Name(HLS_PLAYER_METHOD), object: nil, userInfo: [METHOD_CALL: "start_hls_player", "hls_url": hlsUrl]) + NotificationCenter.default.post(name: NSNotification.Name(HLS_PLAYER_METHOD), object: nil, userInfo: [METHOD_CALL: "start_hls_player", "hls_url": hlsUrl as Any]) result(nil) } @@ -175,7 +175,6 @@ class HMSHLSPlayerAction { NotificationCenter.default.post(name: NSNotification.Name(HLS_PLAYER_METHOD), object: nil, userInfo: [METHOD_CALL: "set_hls_player_volume", "volume": volume]) result(nil) } - /** * Adds a listener to receive HLS player statistics by posting a notification with the corresponding method call. * diff --git a/ios/Classes/HLSPlayer/HMSHLSPlayerStatsExtension.swift b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSPlayerStatsExtension.swift similarity index 100% rename from ios/Classes/HLSPlayer/HMSHLSPlayerStatsExtension.swift rename to packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSPlayerStatsExtension.swift diff --git a/ios/Classes/HLSPlayer/HMSHLSStatsHandler.swift b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSStatsHandler.swift similarity index 100% rename from ios/Classes/HLSPlayer/HMSHLSStatsHandler.swift rename to packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSStatsHandler.swift diff --git a/ios/Classes/HLSPlayer/HMSHLSStreamViewController.swift b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSStreamViewController.swift similarity index 89% rename from ios/Classes/HLSPlayer/HMSHLSStreamViewController.swift rename to packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSStreamViewController.swift index dea2ba7cf..0f2244486 100644 --- a/ios/Classes/HLSPlayer/HMSHLSStreamViewController.swift +++ b/packages/hmssdk_flutter/ios/Classes/HLSPlayer/HMSHLSStreamViewController.swift @@ -82,7 +82,15 @@ class HMSHLSStreamViewController: HMSHLSPlayerDelegate { return } hmssdkFlutterPlugin.hlsPlayerSink?(data) - } + func onResolutionChanged(videoSize: CGSize) { + let playerView = hlsPlayer?.videoPlayerViewController(showsPlayerControls: false) + if videoSize.width >= videoSize.height { + playerView?.videoGravity = .resizeAspect + } + else { + playerView?.videoGravity = .resizeAspectFill + } + } } diff --git a/ios/Classes/HmssdkFlutterPlugin.h b/packages/hmssdk_flutter/ios/Classes/HmssdkFlutterPlugin.h similarity index 100% rename from ios/Classes/HmssdkFlutterPlugin.h rename to packages/hmssdk_flutter/ios/Classes/HmssdkFlutterPlugin.h diff --git a/ios/Classes/HmssdkFlutterPlugin.m b/packages/hmssdk_flutter/ios/Classes/HmssdkFlutterPlugin.m similarity index 100% rename from ios/Classes/HmssdkFlutterPlugin.m rename to packages/hmssdk_flutter/ios/Classes/HmssdkFlutterPlugin.m diff --git a/ios/Classes/Models/HMSAudioFilePlayerNodeExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSAudioFilePlayerNodeExtension.swift similarity index 100% rename from ios/Classes/Models/HMSAudioFilePlayerNodeExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSAudioFilePlayerNodeExtension.swift diff --git a/ios/Classes/Models/HMSChangeTrackStateRequestExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSChangeTrackStateRequestExtension.swift similarity index 100% rename from ios/Classes/Models/HMSChangeTrackStateRequestExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSChangeTrackStateRequestExtension.swift diff --git a/ios/Classes/Models/HMSErrorExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSErrorExtension.swift similarity index 100% rename from ios/Classes/Models/HMSErrorExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSErrorExtension.swift diff --git a/ios/Classes/Models/HMSErrorLogger.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSErrorLogger.swift similarity index 100% rename from ios/Classes/Models/HMSErrorLogger.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSErrorLogger.swift diff --git a/ios/Classes/Models/HMSHLSVariantExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSHLSVariantExtension.swift similarity index 100% rename from ios/Classes/Models/HMSHLSVariantExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSHLSVariantExtension.swift diff --git a/ios/Classes/Models/HMSMessageExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSMessageExtension.swift similarity index 100% rename from ios/Classes/Models/HMSMessageExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSMessageExtension.swift diff --git a/ios/Classes/Models/HMSMessageRecipientExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSMessageRecipientExtension.swift similarity index 100% rename from ios/Classes/Models/HMSMessageRecipientExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSMessageRecipientExtension.swift diff --git a/ios/Classes/Models/HMSMicNodeExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSMicNodeExtension.swift similarity index 100% rename from ios/Classes/Models/HMSMicNodeExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSMicNodeExtension.swift diff --git a/ios/Classes/Models/HMSNetworkQualityExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSNetworkQualityExtension.swift similarity index 100% rename from ios/Classes/Models/HMSNetworkQualityExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSNetworkQualityExtension.swift diff --git a/ios/Classes/Models/HMSPeerExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSPeerExtension.swift similarity index 100% rename from ios/Classes/Models/HMSPeerExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSPeerExtension.swift diff --git a/ios/Classes/Models/HMSPermissionExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSPermissionExtension.swift similarity index 100% rename from ios/Classes/Models/HMSPermissionExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSPermissionExtension.swift diff --git a/ios/Classes/Models/HMSPublishSettingsExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSPublishSettingsExtension.swift similarity index 100% rename from ios/Classes/Models/HMSPublishSettingsExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSPublishSettingsExtension.swift diff --git a/ios/Classes/Models/HMSRemovedFromRoomExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSRemovedFromRoomExtension.swift similarity index 100% rename from ios/Classes/Models/HMSRemovedFromRoomExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSRemovedFromRoomExtension.swift diff --git a/ios/Classes/Models/HMSResultExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSResultExtension.swift similarity index 83% rename from ios/Classes/Models/HMSResultExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSResultExtension.swift index b01d4cd0d..bb3956d06 100644 --- a/ios/Classes/Models/HMSResultExtension.swift +++ b/packages/hmssdk_flutter/ios/Classes/Models/HMSResultExtension.swift @@ -9,7 +9,7 @@ import Foundation class HMSResultExtension { - static func toDictionary(_ success: Bool, _ data: Any?) -> [String: Any?] { + static func toDictionary(_ success: Bool, _ data: Any? = nil) -> [String: Any?] { /** We add `data` field in the map only when it is non null diff --git a/ios/Classes/Models/HMSRoleExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSRoleExtension.swift similarity index 100% rename from ios/Classes/Models/HMSRoleExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSRoleExtension.swift diff --git a/ios/Classes/Models/HMSRoomExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSRoomExtension.swift similarity index 98% rename from ios/Classes/Models/HMSRoomExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSRoomExtension.swift index e811805f1..183c18650 100644 --- a/ios/Classes/Models/HMSRoomExtension.swift +++ b/packages/hmssdk_flutter/ios/Classes/Models/HMSRoomExtension.swift @@ -65,7 +65,7 @@ class HMSRoomExtension { return "hls_streaming_state_updated" case .hlsRecordingStateUpdated: return "hls_recording_state_updated" - case .metaDataUpdated: + case .peerCountUpdated: return "room_peer_count_updated" default: return "unknown_update" diff --git a/ios/Classes/Models/HMSSessionStoreKeyChangeListener.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSessionStoreKeyChangeListener.swift similarity index 100% rename from ios/Classes/Models/HMSSessionStoreKeyChangeListener.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSessionStoreKeyChangeListener.swift diff --git a/ios/Classes/Models/HMSSimulcastExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastExtension.swift similarity index 100% rename from ios/Classes/Models/HMSSimulcastExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastExtension.swift diff --git a/ios/Classes/Models/HMSSimulcastLayerDefinitionExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastLayerDefinitionExtension.swift similarity index 100% rename from ios/Classes/Models/HMSSimulcastLayerDefinitionExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastLayerDefinitionExtension.swift diff --git a/ios/Classes/Models/HMSSimulcastLayerSettingsPolicyExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastLayerSettingsPolicyExtension.swift similarity index 100% rename from ios/Classes/Models/HMSSimulcastLayerSettingsPolicyExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastLayerSettingsPolicyExtension.swift diff --git a/ios/Classes/Models/HMSSimulcastSettingsExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastSettingsExtension.swift similarity index 100% rename from ios/Classes/Models/HMSSimulcastSettingsExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSimulcastSettingsExtension.swift diff --git a/ios/Classes/Models/HMSSpeakerExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSpeakerExtension.swift similarity index 100% rename from ios/Classes/Models/HMSSpeakerExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSpeakerExtension.swift diff --git a/ios/Classes/Models/HMSStatsExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSStatsExtension.swift similarity index 100% rename from ios/Classes/Models/HMSStatsExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSStatsExtension.swift diff --git a/ios/Classes/Models/HMSStreamingStateExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSStreamingStateExtension.swift similarity index 100% rename from ios/Classes/Models/HMSStreamingStateExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSStreamingStateExtension.swift diff --git a/ios/Classes/Models/HMSSubscribeDegradationPolicyExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSubscribeDegradationPolicyExtension.swift similarity index 100% rename from ios/Classes/Models/HMSSubscribeDegradationPolicyExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSubscribeDegradationPolicyExtension.swift diff --git a/ios/Classes/Models/HMSSubscribeSettingsExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSSubscribeSettingsExtension.swift similarity index 100% rename from ios/Classes/Models/HMSSubscribeSettingsExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSSubscribeSettingsExtension.swift diff --git a/ios/Classes/Models/HMSTrackExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSTrackExtension.swift similarity index 100% rename from ios/Classes/Models/HMSTrackExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSTrackExtension.swift diff --git a/ios/Classes/Models/HMSTrackSettingsExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSTrackSettingsExtension.swift similarity index 100% rename from ios/Classes/Models/HMSTrackSettingsExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSTrackSettingsExtension.swift diff --git a/ios/Classes/Models/HMSVideoResolutionExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSVideoResolutionExtension.swift similarity index 100% rename from ios/Classes/Models/HMSVideoResolutionExtension.swift rename to packages/hmssdk_flutter/ios/Classes/Models/HMSVideoResolutionExtension.swift diff --git a/ios/Classes/SwiftHmssdkFlutterPlugin.swift b/packages/hmssdk_flutter/ios/Classes/SwiftHmssdkFlutterPlugin.swift similarity index 96% rename from ios/Classes/SwiftHmssdkFlutterPlugin.swift rename to packages/hmssdk_flutter/ios/Classes/SwiftHmssdkFlutterPlugin.swift index a345cd4d0..fe18c06ad 100644 --- a/ios/Classes/SwiftHmssdkFlutterPlugin.swift +++ b/packages/hmssdk_flutter/ios/Classes/SwiftHmssdkFlutterPlugin.swift @@ -26,6 +26,10 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene var roleChangeRequest: HMSRoleChangeRequest? + var previewForRoleVideoTrack: HMSLocalVideoTrack? + + var previewForRoleAudioTrack: HMSLocalAudioTrack? + internal var hmsSDK: HMSSDK? private var isStatsActive = false @@ -177,7 +181,7 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene // MARK: - Audio Helpers case "switch_audio", "is_audio_mute", "mute_room_audio_locally", "un_mute_room_audio_locally", "set_volume", "toggle_mic_mute_state": - HMSAudioAction.audioActions(call, result, hmsSDK) + HMSAudioAction.audioActions(call, result, hmsSDK, self) case "set_playback_allowed_for_track": setPlaybackAllowedForTrack(call, result) @@ -185,7 +189,7 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene // MARK: - Video Helpers case "switch_video", "switch_camera", "is_video_mute", "mute_room_video_locally", "un_mute_room_video_locally", "toggle_camera_mute_state": - HMSVideoAction.videoActions(call, result, hmsSDK) + HMSVideoAction.videoActions(call, result, hmsSDK, self) // MARK: - Messaging @@ -194,7 +198,7 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene // MARK: - Role based Actions - case "get_roles", "change_role", "accept_change_role", "end_room", "remove_peer", "on_change_track_state_request", "change_track_state_for_role", "change_role_of_peers_with_roles", "change_role_of_peer": + case "get_roles", "change_role", "accept_change_role", "end_room", "remove_peer", "on_change_track_state_request", "change_track_state_for_role", "change_role_of_peers_with_roles", "change_role_of_peer", "preview_for_role", "cancel_preview": roleActions(call, result) // MARK: - Peer Action @@ -349,6 +353,12 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene case "change_role_of_peer": changeRole(call, result) + case "preview_for_role": + previewForRole(call, result) + + case "cancel_preview": + cancelPreview(result) + default: result(FlutterMethodNotImplemented) } @@ -674,6 +684,7 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene let dartSDKVersion = arguments?["dart_sdk_version"] as! String let hmsSDKVersion = arguments?["hmssdk_version"] as! String let isPrebuilt = arguments?["is_prebuilt"] as? Bool ?? false + let framework = HMSFrameworkInfo(type: .flutter, version: dartSDKVersion, sdkVersion: hmsSDKVersion, isPrebuilt: isPrebuilt) audioMixerSourceMap = [:] @@ -730,20 +741,48 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene result(nil) } - /* - private func previewForRole(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { - let arguments = call.arguments as! [AnyHashable: Any] - - hmsSDK?.preview(role: ) { , in - - } - } - - private func cancelPreview(_ result: FlutterResult) { - hmsSDK?.cancelPreview() - result(nil) - } - */ + private func previewForRole(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { + + guard let arguments = call.arguments as? [AnyHashable: Any], + let roleString = arguments["role_name"] as? String, + let role = HMSCommonAction.getRole(by: roleString, hmsSDK: hmsSDK) + else { + result(HMSResultExtension.toDictionary(false, HMSErrorExtension.getError("Invalid role parameters for role in \(#function)"))) + return + } + + hmsSDK?.preview(role: role) { tracks, error in + + if let error = error { + print(#function, error) + result(HMSResultExtension.toDictionary(false, error)) + return + } + + if let tracks = tracks { + + var dict = [[AnyHashable: Any]]() + + for track in tracks { + if track.kind == HMSTrackKind.video { + previewForRoleVideoTrack = track as? HMSLocalVideoTrack + } else if track.kind == HMSTrackKind.audio { + previewForRoleAudioTrack = track as? HMSLocalAudioTrack + } + dict.append(HMSTrackExtension.toDictionary(track)) + } + + result(HMSResultExtension.toDictionary(true, dict)) + } + } + } + + private func cancelPreview(_ result: FlutterResult) { + self.previewForRoleAudioTrack = nil + self.previewForRoleVideoTrack = nil + hmsSDK?.cancelPreview() + result(HMSResultExtension.toDictionary(true)) + } private func join(_ call: FlutterMethodCall, _ result: FlutterResult) { @@ -827,7 +866,7 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene } }) } - + /** * [getRoomLayout] is used to get the layout themes for the room set in the dashboard. */ @@ -897,6 +936,8 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene result(HMSErrorExtension.toDictionary(error)) } else { self?.roleChangeRequest = nil + self?.previewForRoleAudioTrack = nil + self?.previewForRoleVideoTrack = nil result(nil) } } diff --git a/ios/Classes/Views/HMSFlutterPlatformView.swift b/packages/hmssdk_flutter/ios/Classes/Views/HMSFlutterPlatformView.swift similarity index 100% rename from ios/Classes/Views/HMSFlutterPlatformView.swift rename to packages/hmssdk_flutter/ios/Classes/Views/HMSFlutterPlatformView.swift diff --git a/ios/Classes/Views/HMSFlutterPlatformViewFactory.swift b/packages/hmssdk_flutter/ios/Classes/Views/HMSFlutterPlatformViewFactory.swift similarity index 88% rename from ios/Classes/Views/HMSFlutterPlatformViewFactory.swift rename to packages/hmssdk_flutter/ios/Classes/Views/HMSFlutterPlatformViewFactory.swift index 5fcaf8ac4..5fc4b0ab4 100644 --- a/ios/Classes/Views/HMSFlutterPlatformViewFactory.swift +++ b/packages/hmssdk_flutter/ios/Classes/Views/HMSFlutterPlatformViewFactory.swift @@ -90,9 +90,15 @@ class HMSFlutterPlatformViewFactory: NSObject, FlutterPlatformViewFactory { guard let videoTrack = HMSUtilities.getVideoTrack(for: trackID, in: room) else { - let errorMsg = "\(#function) Could not find video track in room with trackID: \(trackID)" - plugin.sendCustomError(HMSErrorExtension.getError(errorMsg)) - print(errorMsg) + + if plugin.previewForRoleVideoTrack?.trackId == trackID { + let videoTrack = plugin.previewForRoleVideoTrack + return videoTrack + } else { + let errorMsg = "\(#function) Could not find video track in room with trackID: \(trackID)" + plugin.sendCustomError(HMSErrorExtension.getError(errorMsg)) + print(errorMsg) + } return nil } diff --git a/ios/Classes/Views/HMSHLSPlayerView.swift b/packages/hmssdk_flutter/ios/Classes/Views/HMSHLSPlayerView.swift similarity index 99% rename from ios/Classes/Views/HMSHLSPlayerView.swift rename to packages/hmssdk_flutter/ios/Classes/Views/HMSHLSPlayerView.swift index 36f8489bb..8dc41577f 100644 --- a/ios/Classes/Views/HMSHLSPlayerView.swift +++ b/packages/hmssdk_flutter/ios/Classes/Views/HMSHLSPlayerView.swift @@ -61,6 +61,7 @@ class HMSHLSPlayerView: NSObject, FlutterPlatformView { HMSErrorLogger.logError(#function, "hmssdkFlutterPlugin is null", "NULL_ERROR") return playerViewController.view } + playerViewController.videoGravity = .resizeAspectFill /** * Here we start the player diff --git a/ios/Classes/Views/HMSHLSPlayerViewFactory.swift b/packages/hmssdk_flutter/ios/Classes/Views/HMSHLSPlayerViewFactory.swift similarity index 100% rename from ios/Classes/Views/HMSHLSPlayerViewFactory.swift rename to packages/hmssdk_flutter/ios/Classes/Views/HMSHLSPlayerViewFactory.swift diff --git a/ios/Classes/Views/HMSPiPView.swift b/packages/hmssdk_flutter/ios/Classes/Views/HMSPiPView.swift similarity index 100% rename from ios/Classes/Views/HMSPiPView.swift rename to packages/hmssdk_flutter/ios/Classes/Views/HMSPiPView.swift diff --git a/ios/hmssdk_flutter.podspec b/packages/hmssdk_flutter/ios/hmssdk_flutter.podspec similarity index 100% rename from ios/hmssdk_flutter.podspec rename to packages/hmssdk_flutter/ios/hmssdk_flutter.podspec diff --git a/lib/assets/sdk-versions.json b/packages/hmssdk_flutter/lib/assets/sdk-versions.json similarity index 85% rename from lib/assets/sdk-versions.json rename to packages/hmssdk_flutter/lib/assets/sdk-versions.json index 806e1ed3b..b58e54faf 100644 --- a/lib/assets/sdk-versions.json +++ b/packages/hmssdk_flutter/lib/assets/sdk-versions.json @@ -1,6 +1,6 @@ { "flutter": "1.7.5", - "ios": "0.9.9", + "ios": "0.9.12", "iOSBroadcastExtension": "0.0.9", "iOSHLSPlayerSDK": "0.0.2", "android": "2.7.3" diff --git a/lib/hmssdk_flutter.dart b/packages/hmssdk_flutter/lib/hmssdk_flutter.dart similarity index 100% rename from lib/hmssdk_flutter.dart rename to packages/hmssdk_flutter/lib/hmssdk_flutter.dart diff --git a/lib/src/common/platform_methods.dart b/packages/hmssdk_flutter/lib/src/common/platform_methods.dart similarity index 98% rename from lib/src/common/platform_methods.dart rename to packages/hmssdk_flutter/lib/src/common/platform_methods.dart index b63c0e315..0849cdbf7 100644 --- a/lib/src/common/platform_methods.dart +++ b/packages/hmssdk_flutter/lib/src/common/platform_methods.dart @@ -185,7 +185,9 @@ enum PlatformMethod { switchAudioOutputUsingiOSUI, sendHLSTimedMetadata, toggleAlwaysScreenOn, - getRoomLayout + getRoomLayout, + previewForRole, + cancelPreview } extension PlatformMethodValues on PlatformMethod { @@ -337,6 +339,12 @@ extension PlatformMethodValues on PlatformMethod { case PlatformMethod.stopScreenShare: return "stop_screen_share"; + case PlatformMethod.previewForRole: + return "preview_for_role"; + + case PlatformMethod.cancelPreview: + return "cancel_preview"; + case PlatformMethod.isScreenShareActive: return 'is_screen_share_active'; case PlatformMethod.getAllTracks: @@ -530,6 +538,12 @@ extension PlatformMethodValues on PlatformMethod { case 'preview': return PlatformMethod.preview; + case 'preview_for_role': + return PlatformMethod.previewForRole; + + case "cancel_preview": + return PlatformMethod.cancelPreview; + case 'accept_change_role': return PlatformMethod.acceptChangeRole; diff --git a/lib/src/enum/hms_Quality_limitation_reason.dart b/packages/hmssdk_flutter/lib/src/enum/hms_Quality_limitation_reason.dart similarity index 100% rename from lib/src/enum/hms_Quality_limitation_reason.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_Quality_limitation_reason.dart diff --git a/lib/src/enum/hms_action_result_listener_method.dart b/packages/hmssdk_flutter/lib/src/enum/hms_action_result_listener_method.dart similarity index 90% rename from lib/src/enum/hms_action_result_listener_method.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_action_result_listener_method.dart index 6886643b1..1817b2594 100644 --- a/lib/src/enum/hms_action_result_listener_method.dart +++ b/packages/hmssdk_flutter/lib/src/enum/hms_action_result_listener_method.dart @@ -5,8 +5,6 @@ enum HMSActionResultListenerMethod { endRoom, removePeer, acceptChangeRole, - @Deprecated('use [changeRoleOfPeer]') - changeRole, changeRoleOfPeer, changeTrackStateForRole, startRtmpOrRecording, diff --git a/lib/src/enum/hms_audio_codec.dart b/packages/hmssdk_flutter/lib/src/enum/hms_audio_codec.dart similarity index 100% rename from lib/src/enum/hms_audio_codec.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_audio_codec.dart diff --git a/lib/src/enum/hms_audio_device.dart b/packages/hmssdk_flutter/lib/src/enum/hms_audio_device.dart similarity index 100% rename from lib/src/enum/hms_audio_device.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_audio_device.dart diff --git a/lib/src/enum/hms_audio_mixing_mode.dart b/packages/hmssdk_flutter/lib/src/enum/hms_audio_mixing_mode.dart similarity index 100% rename from lib/src/enum/hms_audio_mixing_mode.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_audio_mixing_mode.dart diff --git a/lib/src/enum/hms_audio_mode.dart b/packages/hmssdk_flutter/lib/src/enum/hms_audio_mode.dart similarity index 82% rename from lib/src/enum/hms_audio_mode.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_audio_mode.dart index 1471115f9..a9f705a0f 100644 --- a/lib/src/enum/hms_audio_mode.dart +++ b/packages/hmssdk_flutter/lib/src/enum/hms_audio_mode.dart @@ -1,6 +1,9 @@ +/// Audio mode for the local user. enum HMSAudioMode { VOICE, MUSIC } +/// Extension for [HMSAudioMode] enum extension HMSAudioModeValues on HMSAudioMode { + /// return value of enum static HMSAudioMode getAudioModeFromName(String name) { switch (name) { case "voice": @@ -12,6 +15,7 @@ extension HMSAudioModeValues on HMSAudioMode { } } + /// return name of enum static String getNameFromHMSAudioMode(HMSAudioMode mode) { switch (mode) { case HMSAudioMode.VOICE: diff --git a/lib/src/enum/hms_camera_facing.dart b/packages/hmssdk_flutter/lib/src/enum/hms_camera_facing.dart similarity index 100% rename from lib/src/enum/hms_camera_facing.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_camera_facing.dart diff --git a/lib/src/enum/hms_hls_playback_event_method.dart b/packages/hmssdk_flutter/lib/src/enum/hms_hls_playback_event_method.dart similarity index 100% rename from lib/src/enum/hms_hls_playback_event_method.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_hls_playback_event_method.dart diff --git a/lib/src/enum/hms_hls_playback_state.dart b/packages/hmssdk_flutter/lib/src/enum/hms_hls_playback_state.dart similarity index 100% rename from lib/src/enum/hms_hls_playback_state.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_hls_playback_state.dart diff --git a/lib/src/enum/hms_key_change_listener_method.dart b/packages/hmssdk_flutter/lib/src/enum/hms_key_change_listener_method.dart similarity index 100% rename from lib/src/enum/hms_key_change_listener_method.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_key_change_listener_method.dart diff --git a/lib/src/enum/hms_log_level.dart b/packages/hmssdk_flutter/lib/src/enum/hms_log_level.dart similarity index 100% rename from lib/src/enum/hms_log_level.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_log_level.dart diff --git a/lib/src/enum/hms_logs_update_listener.dart b/packages/hmssdk_flutter/lib/src/enum/hms_logs_update_listener.dart similarity index 100% rename from lib/src/enum/hms_logs_update_listener.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_logs_update_listener.dart diff --git a/lib/src/enum/hms_message_recipient_type.dart b/packages/hmssdk_flutter/lib/src/enum/hms_message_recipient_type.dart similarity index 100% rename from lib/src/enum/hms_message_recipient_type.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_message_recipient_type.dart diff --git a/lib/src/enum/hms_peer_update.dart b/packages/hmssdk_flutter/lib/src/enum/hms_peer_update.dart similarity index 100% rename from lib/src/enum/hms_peer_update.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_peer_update.dart diff --git a/lib/src/enum/hms_phone_call_state.dart b/packages/hmssdk_flutter/lib/src/enum/hms_phone_call_state.dart similarity index 100% rename from lib/src/enum/hms_phone_call_state.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_phone_call_state.dart diff --git a/lib/src/enum/hms_preview_update_listener_method.dart b/packages/hmssdk_flutter/lib/src/enum/hms_preview_update_listener_method.dart similarity index 100% rename from lib/src/enum/hms_preview_update_listener_method.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_preview_update_listener_method.dart diff --git a/lib/src/enum/hms_room_update.dart b/packages/hmssdk_flutter/lib/src/enum/hms_room_update.dart similarity index 100% rename from lib/src/enum/hms_room_update.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_room_update.dart diff --git a/lib/src/enum/hms_simulcast_layer.dart b/packages/hmssdk_flutter/lib/src/enum/hms_simulcast_layer.dart similarity index 100% rename from lib/src/enum/hms_simulcast_layer.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_simulcast_layer.dart diff --git a/lib/src/enum/hms_stats_listener_method.dart b/packages/hmssdk_flutter/lib/src/enum/hms_stats_listener_method.dart similarity index 100% rename from lib/src/enum/hms_stats_listener_method.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_stats_listener_method.dart diff --git a/lib/src/enum/hms_track_init_state.dart b/packages/hmssdk_flutter/lib/src/enum/hms_track_init_state.dart similarity index 100% rename from lib/src/enum/hms_track_init_state.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_track_init_state.dart diff --git a/lib/src/enum/hms_track_kind.dart b/packages/hmssdk_flutter/lib/src/enum/hms_track_kind.dart similarity index 100% rename from lib/src/enum/hms_track_kind.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_track_kind.dart diff --git a/lib/src/enum/hms_track_update.dart b/packages/hmssdk_flutter/lib/src/enum/hms_track_update.dart similarity index 100% rename from lib/src/enum/hms_track_update.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_track_update.dart diff --git a/lib/src/enum/hms_update_listener_method.dart b/packages/hmssdk_flutter/lib/src/enum/hms_update_listener_method.dart similarity index 100% rename from lib/src/enum/hms_update_listener_method.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_update_listener_method.dart diff --git a/lib/src/enum/hms_video_codec.dart b/packages/hmssdk_flutter/lib/src/enum/hms_video_codec.dart similarity index 100% rename from lib/src/enum/hms_video_codec.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_video_codec.dart diff --git a/lib/src/enum/hms_video_scale_type.dart b/packages/hmssdk_flutter/lib/src/enum/hms_video_scale_type.dart similarity index 100% rename from lib/src/enum/hms_video_scale_type.dart rename to packages/hmssdk_flutter/lib/src/enum/hms_video_scale_type.dart diff --git a/lib/src/exceptions/hms_exception.dart b/packages/hmssdk_flutter/lib/src/exceptions/hms_exception.dart similarity index 100% rename from lib/src/exceptions/hms_exception.dart rename to packages/hmssdk_flutter/lib/src/exceptions/hms_exception.dart diff --git a/lib/src/exceptions/hms_exception_code.dart b/packages/hmssdk_flutter/lib/src/exceptions/hms_exception_code.dart similarity index 100% rename from lib/src/exceptions/hms_exception_code.dart rename to packages/hmssdk_flutter/lib/src/exceptions/hms_exception_code.dart diff --git a/lib/src/exceptions/hms_in_sufficient_data.dart b/packages/hmssdk_flutter/lib/src/exceptions/hms_in_sufficient_data.dart similarity index 100% rename from lib/src/exceptions/hms_in_sufficient_data.dart rename to packages/hmssdk_flutter/lib/src/exceptions/hms_in_sufficient_data.dart diff --git a/lib/src/hmssdk.dart b/packages/hmssdk_flutter/lib/src/hmssdk.dart similarity index 96% rename from lib/src/hmssdk.dart rename to packages/hmssdk_flutter/lib/src/hmssdk.dart index 717f7bb1d..43819c728 100644 --- a/lib/src/hmssdk.dart +++ b/packages/hmssdk_flutter/lib/src/hmssdk.dart @@ -549,54 +549,6 @@ class HMSSDK { return roles; } - /// Requests a change of HMSRole to a new role. - /// - /// **Parameters**: - /// - /// **forPeer** - HMSPeer whose role should be requested to be changed. - /// - /// **toRole** - new role the HMSPeer would have if they accept or are forced to change to. - /// - /// **force** - Set [force] to false if the peer should be requested to accept the new role (they can choose to deny). Set [force] to true if their role should be changed without asking them. - /// - /// **hmsActionResultListener** - Listener that will return HMSActionResultListener.onSuccess if the role change request is successful else will call [HMSActionResultListener.onException] with the error received from the server. - /// - /// Refer [changeRole guide here](https://www.100ms.live/docs/flutter/v2/features/change-role#single-peer-role-change). - @Deprecated('Use [changeRoleOfPeer]') - Future changeRole( - {required HMSPeer forPeer, - required HMSRole toRole, - bool force = false, - HMSActionResultListener? hmsActionResultListener}) async { - var arguments = { - 'peer_id': forPeer.peerId, - 'role_name': toRole.name, - 'force_change': force - }; - var result = await PlatformService.invokeMethod(PlatformMethod.changeRole, - arguments: arguments); - - if (hmsActionResultListener != null) { - if (result == null) - hmsActionResultListener.onSuccess( - methodType: HMSActionResultListenerMethod.changeRole, - arguments: { - 'peer': forPeer, - 'role_name': toRole, - 'force_change': force - }); - else - hmsActionResultListener.onException( - arguments: { - 'peer': forPeer, - 'role_name': toRole, - 'force_change': force - }, - methodType: HMSActionResultListenerMethod.changeRole, - hmsException: HMSException.fromMap(result["error"])); - } - } - /// Requests a change of HMSRole to a new role. /// /// **Parameters**: @@ -710,6 +662,60 @@ class HMSSDK { } } + /// Preview for a specific Role before changing it. + /// + /// By previewing before doing a Role Change, users can see their expected Audio & Video tracks which will be visible to other Peers in Room post changing the Role. + /// **Parameters**: + /// + /// **role** - The new [role] into which the Peer is going to be changed into. + /// + /// This returns an object of Future which can be either + /// of HMSException type or a List type based on whether + /// method execution is completed successfully or not. + /// + /// Refer [previewForRole guide here](https://www.100ms.live/docs/flutter/v2/how-to-guides/interact-with-room/peer/change-role) + Future previewForRole({required String role}) async { + var arguments = { + "role_name": role, + }; + var result = await PlatformService.invokeMethod( + PlatformMethod.previewForRole, + arguments: arguments); + + if (result["success"]) { + List tracks = []; + (result["data"] as List).forEach((track) { + tracks.add(track['instance_of'] + ? HMSVideoTrack.fromMap(map: track, isLocal: true) + : HMSAudioTrack.fromMap(map: track, isLocal: true)); + }); + + return tracks; + } else { + return HMSException.fromMap(result["data"]["error"]); + } + } + + /// Cancel the Previewing for Role invocation. + /// If a [previewForRole] call was performed previously then calling this method clears the tracks created anticipating a Change of Role + /// This method only needs to be called if the user declined the request for role change. + /// + /// This returns an object of Future which can be either + /// of HMSException type or a boolean value [true] based on whether + /// method execution is completed successfully or not. + /// + /// Refer the [cancelPreview guide here](https://www.100ms.live/docs/flutter/v2/how-to-guides/interact-with-room/peer/change-role) + Future cancelPreview() async { + var result = + await PlatformService.invokeMethod(PlatformMethod.cancelPreview); + + if (result["success"]) { + return null; + } else { + return HMSException.fromMap(result["data"]["error"]); + } + } + /// To change the mute status of a single remote peer's track. /// /// **Parameters**: @@ -932,21 +938,25 @@ class HMSSDK { /// [hmsActionResultListener] is a callback whose [HMSActionResultListener.onSuccess] will be called when the action completes successfully. /// /// Refer [HLS Streaming guide here](https://www.100ms.live/docs/flutter/v2/features/hls) - Future startHlsStreaming( + Future startHlsStreaming( {HMSHLSConfig? hmshlsConfig, HMSActionResultListener? hmsActionResultListener}) async { var result = await PlatformService.invokeMethod( PlatformMethod.startHlsStreaming, arguments: hmshlsConfig?.toMap()); if (hmsActionResultListener != null) { - if (result == null) + if (result == null) { hmsActionResultListener.onSuccess( methodType: HMSActionResultListenerMethod.hlsStreamingStarted); - else + return null; + } else { hmsActionResultListener.onException( hmsException: HMSException.fromMap(result["error"]), methodType: HMSActionResultListenerMethod.hlsStreamingStarted); + return HMSException.fromMap(result["error"]); + } } + return null; } /// Stops ongoing HLS streaming in the room diff --git a/lib/src/manager/hms_sdk_manager.dart b/packages/hmssdk_flutter/lib/src/manager/hms_sdk_manager.dart similarity index 100% rename from lib/src/manager/hms_sdk_manager.dart rename to packages/hmssdk_flutter/lib/src/manager/hms_sdk_manager.dart diff --git a/lib/src/model/hls_player/hms_hls_cue.dart b/packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_cue.dart similarity index 100% rename from lib/src/model/hls_player/hms_hls_cue.dart rename to packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_cue.dart diff --git a/lib/src/model/hls_player/hms_hls_playback_event_listener.dart b/packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_playback_event_listener.dart similarity index 100% rename from lib/src/model/hls_player/hms_hls_playback_event_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_playback_event_listener.dart diff --git a/lib/src/model/hls_player/hms_hls_player_controller.dart b/packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_player_controller.dart similarity index 100% rename from lib/src/model/hls_player/hms_hls_player_controller.dart rename to packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_player_controller.dart diff --git a/lib/src/model/hls_player/hms_hls_player_stats.dart b/packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_player_stats.dart similarity index 100% rename from lib/src/model/hls_player/hms_hls_player_stats.dart rename to packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_player_stats.dart diff --git a/lib/src/model/hls_player/hms_hls_timed_metadata.dart b/packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_timed_metadata.dart similarity index 100% rename from lib/src/model/hls_player/hms_hls_timed_metadata.dart rename to packages/hmssdk_flutter/lib/src/model/hls_player/hms_hls_timed_metadata.dart diff --git a/lib/src/model/hms_actions_result_listener.dart b/packages/hmssdk_flutter/lib/src/model/hms_actions_result_listener.dart similarity index 100% rename from lib/src/model/hms_actions_result_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hms_actions_result_listener.dart diff --git a/lib/src/model/hms_android_pip_controller.dart b/packages/hmssdk_flutter/lib/src/model/hms_android_pip_controller.dart similarity index 100% rename from lib/src/model/hms_android_pip_controller.dart rename to packages/hmssdk_flutter/lib/src/model/hms_android_pip_controller.dart diff --git a/lib/src/model/hms_audio_file_player_node.dart b/packages/hmssdk_flutter/lib/src/model/hms_audio_file_player_node.dart similarity index 100% rename from lib/src/model/hms_audio_file_player_node.dart rename to packages/hmssdk_flutter/lib/src/model/hms_audio_file_player_node.dart diff --git a/lib/src/model/hms_audio_mixer_source.dart b/packages/hmssdk_flutter/lib/src/model/hms_audio_mixer_source.dart similarity index 100% rename from lib/src/model/hms_audio_mixer_source.dart rename to packages/hmssdk_flutter/lib/src/model/hms_audio_mixer_source.dart diff --git a/lib/src/model/hms_audio_node.dart b/packages/hmssdk_flutter/lib/src/model/hms_audio_node.dart similarity index 100% rename from lib/src/model/hms_audio_node.dart rename to packages/hmssdk_flutter/lib/src/model/hms_audio_node.dart diff --git a/lib/src/model/hms_audio_setting.dart b/packages/hmssdk_flutter/lib/src/model/hms_audio_setting.dart similarity index 100% rename from lib/src/model/hms_audio_setting.dart rename to packages/hmssdk_flutter/lib/src/model/hms_audio_setting.dart diff --git a/lib/src/model/hms_audio_track.dart b/packages/hmssdk_flutter/lib/src/model/hms_audio_track.dart similarity index 100% rename from lib/src/model/hms_audio_track.dart rename to packages/hmssdk_flutter/lib/src/model/hms_audio_track.dart diff --git a/lib/src/model/hms_audio_track_setting.dart b/packages/hmssdk_flutter/lib/src/model/hms_audio_track_setting.dart similarity index 100% rename from lib/src/model/hms_audio_track_setting.dart rename to packages/hmssdk_flutter/lib/src/model/hms_audio_track_setting.dart diff --git a/lib/src/model/hms_browser_recording_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_browser_recording_state.dart similarity index 99% rename from lib/src/model/hms_browser_recording_state.dart rename to packages/hmssdk_flutter/lib/src/model/hms_browser_recording_state.dart index 427e22d7a..b67463262 100644 --- a/lib/src/model/hms_browser_recording_state.dart +++ b/packages/hmssdk_flutter/lib/src/model/hms_browser_recording_state.dart @@ -10,7 +10,6 @@ class HMSBrowserRecordingState { final bool running; DateTime? startedAt; final bool initialising; - HMSBrowserRecordingState( {required this.error, required this.running, diff --git a/lib/src/model/hms_camera_controls.dart b/packages/hmssdk_flutter/lib/src/model/hms_camera_controls.dart similarity index 100% rename from lib/src/model/hms_camera_controls.dart rename to packages/hmssdk_flutter/lib/src/model/hms_camera_controls.dart diff --git a/lib/src/model/hms_config.dart b/packages/hmssdk_flutter/lib/src/model/hms_config.dart similarity index 100% rename from lib/src/model/hms_config.dart rename to packages/hmssdk_flutter/lib/src/model/hms_config.dart diff --git a/lib/src/model/hms_date_extension.dart b/packages/hmssdk_flutter/lib/src/model/hms_date_extension.dart similarity index 100% rename from lib/src/model/hms_date_extension.dart rename to packages/hmssdk_flutter/lib/src/model/hms_date_extension.dart diff --git a/lib/src/model/hms_hls_config.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_config.dart similarity index 100% rename from lib/src/model/hms_hls_config.dart rename to packages/hmssdk_flutter/lib/src/model/hms_hls_config.dart diff --git a/lib/src/model/hms_hls_meeting_url_variant.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_meeting_url_variant.dart similarity index 100% rename from lib/src/model/hms_hls_meeting_url_variant.dart rename to packages/hmssdk_flutter/lib/src/model/hms_hls_meeting_url_variant.dart diff --git a/lib/src/model/hms_hls_recording_config.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_recording_config.dart similarity index 100% rename from lib/src/model/hms_hls_recording_config.dart rename to packages/hmssdk_flutter/lib/src/model/hms_hls_recording_config.dart diff --git a/lib/src/model/hms_hls_recording_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_recording_state.dart similarity index 100% rename from lib/src/model/hms_hls_recording_state.dart rename to packages/hmssdk_flutter/lib/src/model/hms_hls_recording_state.dart diff --git a/lib/src/model/hms_hls_streaming_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_streaming_state.dart similarity index 100% rename from lib/src/model/hms_hls_streaming_state.dart rename to packages/hmssdk_flutter/lib/src/model/hms_hls_streaming_state.dart diff --git a/lib/src/model/hms_hls_variant.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_variant.dart similarity index 100% rename from lib/src/model/hms_hls_variant.dart rename to packages/hmssdk_flutter/lib/src/model/hms_hls_variant.dart diff --git a/lib/src/model/hms_ios_pip_controller.dart b/packages/hmssdk_flutter/lib/src/model/hms_ios_pip_controller.dart similarity index 100% rename from lib/src/model/hms_ios_pip_controller.dart rename to packages/hmssdk_flutter/lib/src/model/hms_ios_pip_controller.dart diff --git a/lib/src/model/hms_ios_screenshare_config.dart b/packages/hmssdk_flutter/lib/src/model/hms_ios_screenshare_config.dart similarity index 90% rename from lib/src/model/hms_ios_screenshare_config.dart rename to packages/hmssdk_flutter/lib/src/model/hms_ios_screenshare_config.dart index eea1c71b0..9e40e7adc 100644 --- a/lib/src/model/hms_ios_screenshare_config.dart +++ b/packages/hmssdk_flutter/lib/src/model/hms_ios_screenshare_config.dart @@ -3,7 +3,6 @@ /// [HMSIOSScreenshareConfig] is required for starting Screen share (Broadcast screen) from iOS devices like iPhones & iPads. To learn more about Screen Share, refer to the guide [here](https://www.100ms.live/docs/flutter/v2/features/screen-share). /// /// `Note: You can find appGroup and preferredExtension name in Xcode under Signing and Capabilities section under target > yourExtensionName.` - class HMSIOSScreenshareConfig { /// [appGroup] is required for starting Screen Share (Broadcast screen) from iOS Devices. /// @@ -19,9 +18,11 @@ class HMSIOSScreenshareConfig { /// `Note: You can find preferredExtension name in Xcode under Signing and Capabilities section under target > yourExtensionName.` String preferredExtension; + /// [HMSIOSScreenshareConfig] is required for starting Screen Share (Broadcast screen) from iOS Devices. HMSIOSScreenshareConfig( {required this.appGroup, required this.preferredExtension}); + /// Converts the [HMSIOSScreenshareConfig] instance to a Map. Map toMap() { return { 'app_group': this.appGroup, diff --git a/lib/src/model/hms_key_change_listener.dart b/packages/hmssdk_flutter/lib/src/model/hms_key_change_listener.dart similarity index 100% rename from lib/src/model/hms_key_change_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hms_key_change_listener.dart diff --git a/lib/src/model/hms_key_change_observer.dart b/packages/hmssdk_flutter/lib/src/model/hms_key_change_observer.dart similarity index 100% rename from lib/src/model/hms_key_change_observer.dart rename to packages/hmssdk_flutter/lib/src/model/hms_key_change_observer.dart diff --git a/lib/src/model/hms_local_audio_stats.dart b/packages/hmssdk_flutter/lib/src/model/hms_local_audio_stats.dart similarity index 100% rename from lib/src/model/hms_local_audio_stats.dart rename to packages/hmssdk_flutter/lib/src/model/hms_local_audio_stats.dart diff --git a/lib/src/model/hms_local_audio_track.dart b/packages/hmssdk_flutter/lib/src/model/hms_local_audio_track.dart similarity index 100% rename from lib/src/model/hms_local_audio_track.dart rename to packages/hmssdk_flutter/lib/src/model/hms_local_audio_track.dart diff --git a/lib/src/model/hms_local_peer.dart b/packages/hmssdk_flutter/lib/src/model/hms_local_peer.dart similarity index 100% rename from lib/src/model/hms_local_peer.dart rename to packages/hmssdk_flutter/lib/src/model/hms_local_peer.dart diff --git a/lib/src/model/hms_local_video_stats.dart b/packages/hmssdk_flutter/lib/src/model/hms_local_video_stats.dart similarity index 100% rename from lib/src/model/hms_local_video_stats.dart rename to packages/hmssdk_flutter/lib/src/model/hms_local_video_stats.dart diff --git a/lib/src/model/hms_local_video_track.dart b/packages/hmssdk_flutter/lib/src/model/hms_local_video_track.dart similarity index 100% rename from lib/src/model/hms_local_video_track.dart rename to packages/hmssdk_flutter/lib/src/model/hms_local_video_track.dart diff --git a/lib/src/model/hms_log_list.dart b/packages/hmssdk_flutter/lib/src/model/hms_log_list.dart similarity index 100% rename from lib/src/model/hms_log_list.dart rename to packages/hmssdk_flutter/lib/src/model/hms_log_list.dart diff --git a/lib/src/model/hms_log_settings.dart b/packages/hmssdk_flutter/lib/src/model/hms_log_settings.dart similarity index 100% rename from lib/src/model/hms_log_settings.dart rename to packages/hmssdk_flutter/lib/src/model/hms_log_settings.dart diff --git a/lib/src/model/hms_logs_listener.dart b/packages/hmssdk_flutter/lib/src/model/hms_logs_listener.dart similarity index 100% rename from lib/src/model/hms_logs_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hms_logs_listener.dart diff --git a/lib/src/model/hms_message.dart b/packages/hmssdk_flutter/lib/src/model/hms_message.dart similarity index 100% rename from lib/src/model/hms_message.dart rename to packages/hmssdk_flutter/lib/src/model/hms_message.dart diff --git a/lib/src/model/hms_message_recipient.dart b/packages/hmssdk_flutter/lib/src/model/hms_message_recipient.dart similarity index 100% rename from lib/src/model/hms_message_recipient.dart rename to packages/hmssdk_flutter/lib/src/model/hms_message_recipient.dart diff --git a/lib/src/model/hms_message_result_listener.dart b/packages/hmssdk_flutter/lib/src/model/hms_message_result_listener.dart similarity index 100% rename from lib/src/model/hms_message_result_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hms_message_result_listener.dart diff --git a/lib/src/model/hms_mic_node.dart b/packages/hmssdk_flutter/lib/src/model/hms_mic_node.dart similarity index 100% rename from lib/src/model/hms_mic_node.dart rename to packages/hmssdk_flutter/lib/src/model/hms_mic_node.dart diff --git a/lib/src/model/hms_network_quality.dart b/packages/hmssdk_flutter/lib/src/model/hms_network_quality.dart similarity index 100% rename from lib/src/model/hms_network_quality.dart rename to packages/hmssdk_flutter/lib/src/model/hms_network_quality.dart diff --git a/lib/src/model/hms_peer.dart b/packages/hmssdk_flutter/lib/src/model/hms_peer.dart similarity index 100% rename from lib/src/model/hms_peer.dart rename to packages/hmssdk_flutter/lib/src/model/hms_peer.dart diff --git a/lib/src/model/hms_peer_removed_from_room.dart b/packages/hmssdk_flutter/lib/src/model/hms_peer_removed_from_room.dart similarity index 100% rename from lib/src/model/hms_peer_removed_from_room.dart rename to packages/hmssdk_flutter/lib/src/model/hms_peer_removed_from_room.dart diff --git a/lib/src/model/hms_permissions.dart b/packages/hmssdk_flutter/lib/src/model/hms_permissions.dart similarity index 100% rename from lib/src/model/hms_permissions.dart rename to packages/hmssdk_flutter/lib/src/model/hms_permissions.dart diff --git a/lib/src/model/hms_preview_listener.dart b/packages/hmssdk_flutter/lib/src/model/hms_preview_listener.dart similarity index 100% rename from lib/src/model/hms_preview_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hms_preview_listener.dart diff --git a/lib/src/model/hms_publish_setting.dart b/packages/hmssdk_flutter/lib/src/model/hms_publish_setting.dart similarity index 100% rename from lib/src/model/hms_publish_setting.dart rename to packages/hmssdk_flutter/lib/src/model/hms_publish_setting.dart diff --git a/lib/src/model/hms_quality_limitation_reasons.dart b/packages/hmssdk_flutter/lib/src/model/hms_quality_limitation_reasons.dart similarity index 100% rename from lib/src/model/hms_quality_limitation_reasons.dart rename to packages/hmssdk_flutter/lib/src/model/hms_quality_limitation_reasons.dart diff --git a/lib/src/model/hms_recording_config.dart b/packages/hmssdk_flutter/lib/src/model/hms_recording_config.dart similarity index 100% rename from lib/src/model/hms_recording_config.dart rename to packages/hmssdk_flutter/lib/src/model/hms_recording_config.dart diff --git a/lib/src/model/hms_remote_audio_stats.dart b/packages/hmssdk_flutter/lib/src/model/hms_remote_audio_stats.dart similarity index 100% rename from lib/src/model/hms_remote_audio_stats.dart rename to packages/hmssdk_flutter/lib/src/model/hms_remote_audio_stats.dart diff --git a/lib/src/model/hms_remote_audio_track.dart b/packages/hmssdk_flutter/lib/src/model/hms_remote_audio_track.dart similarity index 100% rename from lib/src/model/hms_remote_audio_track.dart rename to packages/hmssdk_flutter/lib/src/model/hms_remote_audio_track.dart diff --git a/lib/src/model/hms_remote_peer.dart b/packages/hmssdk_flutter/lib/src/model/hms_remote_peer.dart similarity index 100% rename from lib/src/model/hms_remote_peer.dart rename to packages/hmssdk_flutter/lib/src/model/hms_remote_peer.dart diff --git a/lib/src/model/hms_remote_video_stats.dart b/packages/hmssdk_flutter/lib/src/model/hms_remote_video_stats.dart similarity index 100% rename from lib/src/model/hms_remote_video_stats.dart rename to packages/hmssdk_flutter/lib/src/model/hms_remote_video_stats.dart diff --git a/lib/src/model/hms_remote_video_track.dart b/packages/hmssdk_flutter/lib/src/model/hms_remote_video_track.dart similarity index 100% rename from lib/src/model/hms_remote_video_track.dart rename to packages/hmssdk_flutter/lib/src/model/hms_remote_video_track.dart diff --git a/lib/src/model/hms_role.dart b/packages/hmssdk_flutter/lib/src/model/hms_role.dart similarity index 100% rename from lib/src/model/hms_role.dart rename to packages/hmssdk_flutter/lib/src/model/hms_role.dart diff --git a/lib/src/model/hms_role_change_request.dart b/packages/hmssdk_flutter/lib/src/model/hms_role_change_request.dart similarity index 100% rename from lib/src/model/hms_role_change_request.dart rename to packages/hmssdk_flutter/lib/src/model/hms_role_change_request.dart diff --git a/lib/src/model/hms_room.dart b/packages/hmssdk_flutter/lib/src/model/hms_room.dart similarity index 100% rename from lib/src/model/hms_room.dart rename to packages/hmssdk_flutter/lib/src/model/hms_room.dart diff --git a/lib/src/model/hms_rtc_stats.dart b/packages/hmssdk_flutter/lib/src/model/hms_rtc_stats.dart similarity index 100% rename from lib/src/model/hms_rtc_stats.dart rename to packages/hmssdk_flutter/lib/src/model/hms_rtc_stats.dart diff --git a/lib/src/model/hms_rtmp_streaming_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_rtmp_streaming_state.dart similarity index 100% rename from lib/src/model/hms_rtmp_streaming_state.dart rename to packages/hmssdk_flutter/lib/src/model/hms_rtmp_streaming_state.dart diff --git a/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart b/packages/hmssdk_flutter/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart similarity index 100% rename from lib/src/model/hms_screen_broadcast_audio_receiver_node.dart rename to packages/hmssdk_flutter/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart diff --git a/lib/src/model/hms_server_recording_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_server_recording_state.dart similarity index 100% rename from lib/src/model/hms_server_recording_state.dart rename to packages/hmssdk_flutter/lib/src/model/hms_server_recording_state.dart diff --git a/lib/src/model/hms_session_metadata.dart b/packages/hmssdk_flutter/lib/src/model/hms_session_metadata.dart similarity index 100% rename from lib/src/model/hms_session_metadata.dart rename to packages/hmssdk_flutter/lib/src/model/hms_session_metadata.dart diff --git a/lib/src/model/hms_session_store.dart b/packages/hmssdk_flutter/lib/src/model/hms_session_store.dart similarity index 100% rename from lib/src/model/hms_session_store.dart rename to packages/hmssdk_flutter/lib/src/model/hms_session_store.dart diff --git a/lib/src/model/hms_simulcast_layer_definition.dart b/packages/hmssdk_flutter/lib/src/model/hms_simulcast_layer_definition.dart similarity index 100% rename from lib/src/model/hms_simulcast_layer_definition.dart rename to packages/hmssdk_flutter/lib/src/model/hms_simulcast_layer_definition.dart diff --git a/lib/src/model/hms_simulcast_layer_settings_policy.dart b/packages/hmssdk_flutter/lib/src/model/hms_simulcast_layer_settings_policy.dart similarity index 100% rename from lib/src/model/hms_simulcast_layer_settings_policy.dart rename to packages/hmssdk_flutter/lib/src/model/hms_simulcast_layer_settings_policy.dart diff --git a/lib/src/model/hms_simulcast_settings.dart b/packages/hmssdk_flutter/lib/src/model/hms_simulcast_settings.dart similarity index 100% rename from lib/src/model/hms_simulcast_settings.dart rename to packages/hmssdk_flutter/lib/src/model/hms_simulcast_settings.dart diff --git a/lib/src/model/hms_simulcast_settings_policy.dart b/packages/hmssdk_flutter/lib/src/model/hms_simulcast_settings_policy.dart similarity index 100% rename from lib/src/model/hms_simulcast_settings_policy.dart rename to packages/hmssdk_flutter/lib/src/model/hms_simulcast_settings_policy.dart diff --git a/lib/src/model/hms_speaker.dart b/packages/hmssdk_flutter/lib/src/model/hms_speaker.dart similarity index 100% rename from lib/src/model/hms_speaker.dart rename to packages/hmssdk_flutter/lib/src/model/hms_speaker.dart diff --git a/lib/src/model/hms_stats_listener.dart b/packages/hmssdk_flutter/lib/src/model/hms_stats_listener.dart similarity index 100% rename from lib/src/model/hms_stats_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hms_stats_listener.dart diff --git a/lib/src/model/hms_subscribe_degradation_params.dart b/packages/hmssdk_flutter/lib/src/model/hms_subscribe_degradation_params.dart similarity index 100% rename from lib/src/model/hms_subscribe_degradation_params.dart rename to packages/hmssdk_flutter/lib/src/model/hms_subscribe_degradation_params.dart diff --git a/lib/src/model/hms_subscribe_settings.dart b/packages/hmssdk_flutter/lib/src/model/hms_subscribe_settings.dart similarity index 100% rename from lib/src/model/hms_subscribe_settings.dart rename to packages/hmssdk_flutter/lib/src/model/hms_subscribe_settings.dart diff --git a/lib/src/model/hms_track.dart b/packages/hmssdk_flutter/lib/src/model/hms_track.dart similarity index 100% rename from lib/src/model/hms_track.dart rename to packages/hmssdk_flutter/lib/src/model/hms_track.dart diff --git a/lib/src/model/hms_track_change_request.dart b/packages/hmssdk_flutter/lib/src/model/hms_track_change_request.dart similarity index 100% rename from lib/src/model/hms_track_change_request.dart rename to packages/hmssdk_flutter/lib/src/model/hms_track_change_request.dart diff --git a/lib/src/model/hms_track_setting.dart b/packages/hmssdk_flutter/lib/src/model/hms_track_setting.dart similarity index 100% rename from lib/src/model/hms_track_setting.dart rename to packages/hmssdk_flutter/lib/src/model/hms_track_setting.dart diff --git a/lib/src/model/hms_update_listener.dart b/packages/hmssdk_flutter/lib/src/model/hms_update_listener.dart similarity index 100% rename from lib/src/model/hms_update_listener.dart rename to packages/hmssdk_flutter/lib/src/model/hms_update_listener.dart diff --git a/lib/src/model/hms_video_resolution.dart b/packages/hmssdk_flutter/lib/src/model/hms_video_resolution.dart similarity index 100% rename from lib/src/model/hms_video_resolution.dart rename to packages/hmssdk_flutter/lib/src/model/hms_video_resolution.dart diff --git a/lib/src/model/hms_video_setting.dart b/packages/hmssdk_flutter/lib/src/model/hms_video_setting.dart similarity index 100% rename from lib/src/model/hms_video_setting.dart rename to packages/hmssdk_flutter/lib/src/model/hms_video_setting.dart diff --git a/lib/src/model/hms_video_track.dart b/packages/hmssdk_flutter/lib/src/model/hms_video_track.dart similarity index 100% rename from lib/src/model/hms_video_track.dart rename to packages/hmssdk_flutter/lib/src/model/hms_video_track.dart diff --git a/lib/src/model/hms_video_track_setting.dart b/packages/hmssdk_flutter/lib/src/model/hms_video_track_setting.dart similarity index 100% rename from lib/src/model/hms_video_track_setting.dart rename to packages/hmssdk_flutter/lib/src/model/hms_video_track_setting.dart diff --git a/lib/src/model/platform_method_response.dart b/packages/hmssdk_flutter/lib/src/model/platform_method_response.dart similarity index 100% rename from lib/src/model/platform_method_response.dart rename to packages/hmssdk_flutter/lib/src/model/platform_method_response.dart diff --git a/lib/src/service/platform_service.dart b/packages/hmssdk_flutter/lib/src/service/platform_service.dart similarity index 100% rename from lib/src/service/platform_service.dart rename to packages/hmssdk_flutter/lib/src/service/platform_service.dart diff --git a/lib/src/ui/meeting/hms_hls_player.dart b/packages/hmssdk_flutter/lib/src/ui/meeting/hms_hls_player.dart similarity index 100% rename from lib/src/ui/meeting/hms_hls_player.dart rename to packages/hmssdk_flutter/lib/src/ui/meeting/hms_hls_player.dart diff --git a/lib/src/ui/meeting/hms_video_view.dart b/packages/hmssdk_flutter/lib/src/ui/meeting/hms_video_view.dart similarity index 100% rename from lib/src/ui/meeting/hms_video_view.dart rename to packages/hmssdk_flutter/lib/src/ui/meeting/hms_video_view.dart diff --git a/pubspec.lock b/packages/hmssdk_flutter/pubspec.lock similarity index 91% rename from pubspec.lock rename to packages/hmssdk_flutter/pubspec.lock index 7c70ab910..c3cc2c33e 100644 --- a/pubspec.lock +++ b/packages/hmssdk_flutter/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.17.2" fake_async: dependency: transitive description: @@ -108,18 +108,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.1" string_scanner: dependency: transitive description: @@ -140,10 +140,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.6.0" vector_math: dependency: transitive description: diff --git a/pubspec.yaml b/packages/hmssdk_flutter/pubspec.yaml similarity index 99% rename from pubspec.yaml rename to packages/hmssdk_flutter/pubspec.yaml index 06440cd17..46805d559 100644 --- a/pubspec.yaml +++ b/packages/hmssdk_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: hmssdk_flutter description: Add Real Time Audio & Video calls, Interactive Live Streaming & Recording, Chat, HLS, RTMP, PiP, CallKit, VoIP, Video conferencing, Stream Player & WebRTC-based communications API -version: 1.7.5 +version: 1.7.6 homepage: https://www.100ms.live/ repository: https://github.com/100mslive/100ms-flutter issue_tracker: https://github.com/100mslive/100ms-flutter/issues diff --git a/packages/hmssdk_flutter/test/hmssdk_flutter_test.dart b/packages/hmssdk_flutter/test/hmssdk_flutter_test.dart new file mode 100644 index 000000000..ab73b3a23 --- /dev/null +++ b/packages/hmssdk_flutter/test/hmssdk_flutter_test.dart @@ -0,0 +1 @@ +void main() {} diff --git a/release-apps.sh b/release-apps.sh index 7075094ef..95ac73aca 100644 --- a/release-apps.sh +++ b/release-apps.sh @@ -5,6 +5,9 @@ set -e set -x perform_pub_actions() { + + cd packages/hmssdk_flutter + echo "đŸŒŗ🍀 git branch: $(git rev-parse --abbrev-ref HEAD)" git pull --verbose diff --git a/sample apps/.DS_Store b/sample apps/.DS_Store new file mode 100644 index 000000000..b2def9b97 Binary files /dev/null and b/sample apps/.DS_Store differ diff --git a/sample apps/bloc/lib/observers/room_observer.dart b/sample apps/bloc/lib/observers/room_observer.dart index 5d0b221e3..d13e3a5a8 100644 --- a/sample apps/bloc/lib/observers/room_observer.dart +++ b/sample apps/bloc/lib/observers/room_observer.dart @@ -167,4 +167,9 @@ class RoomObserver implements HMSUpdateListener, HMSActionResultListener { List? availableAudioDevice}) { // TODO: implement onAudioDeviceChanged } + + @override + void onSessionStoreAvailable({HMSSessionStore? hmsSessionStore}) { + // TODO: implement onSessionStoreAvailable + } } diff --git a/sample apps/bloc/pubspec.lock b/sample apps/bloc/pubspec.lock index 6e457752e..3d387b3cc 100644 --- a/sample apps/bloc/pubspec.lock +++ b/sample apps/bloc/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" bloc: dependency: "direct main" description: @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" cupertino_icons: dependency: "direct main" description: @@ -110,10 +110,11 @@ packages: hmssdk_flutter: dependency: "direct main" description: - path: "../.." - relative: true - source: path - version: "1.8.0" + name: hmssdk_flutter + sha256: "58c9c104b928ca62af8cd6b8a826ffef27e727a412d854b98e7f1fb151832d5e" + url: "https://pub.dev" + source: hosted + version: "1.7.2" http: dependency: "direct main" description: @@ -130,14 +131,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.1" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" lints: dependency: transitive description: @@ -150,26 +143,26 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" nested: dependency: transitive description: @@ -182,10 +175,10 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" permission_handler: dependency: "direct main" description: @@ -259,26 +252,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -299,10 +292,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" typed_data: dependency: transitive description: @@ -327,6 +320,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.2" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=2.18.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=2.10.0" diff --git a/sample apps/bloc/pubspec.yaml b/sample apps/bloc/pubspec.yaml index e1dac5785..1f6606b59 100644 --- a/sample apps/bloc/pubspec.yaml +++ b/sample apps/bloc/pubspec.yaml @@ -3,7 +3,7 @@ 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 +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 @@ -36,8 +36,7 @@ dependencies: focus_detector: http: rxdart: ^0.27.2 - hmssdk_flutter: - path: ../../ #branch name + hmssdk_flutter: 1.7.2 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. @@ -59,7 +58,6 @@ dev_dependencies: # The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. diff --git a/sample apps/flutter-audio-room-quickstart/pubspec.lock b/sample apps/flutter-audio-room-quickstart/pubspec.lock index 7bb80953e..4cee29067 100644 --- a/sample apps/flutter-audio-room-quickstart/pubspec.lock +++ b/sample apps/flutter-audio-room-quickstart/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" cupertino_icons: dependency: "direct main" description: @@ -83,14 +83,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" lints: dependency: transitive description: @@ -103,34 +95,34 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" permission_handler: dependency: "direct main" description: @@ -188,26 +180,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -228,10 +220,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" vector_math: dependency: transitive description: @@ -240,6 +232,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=2.19.2 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=2.8.0" diff --git a/sample apps/flutter-hls-quickstart/pubspec.lock b/sample apps/flutter-hls-quickstart/pubspec.lock index 8cbd914fc..011c49784 100644 --- a/sample apps/flutter-hls-quickstart/pubspec.lock +++ b/sample apps/flutter-hls-quickstart/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" csslib: dependency: transitive description: @@ -104,14 +104,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.15.2" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" lints: dependency: transitive description: @@ -124,34 +116,34 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" permission_handler: dependency: "direct main" description: @@ -209,26 +201,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -249,10 +241,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" vector_math: dependency: transitive description: @@ -301,6 +293,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.16" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=2.19.2 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.3.0" diff --git a/sample apps/flutter-quickstart-app/.DS_Store b/sample apps/flutter-quickstart-app/.DS_Store new file mode 100644 index 000000000..449877266 Binary files /dev/null and b/sample apps/flutter-quickstart-app/.DS_Store differ diff --git a/sample apps/flutter-quickstart-app/android/app/src/main/kotlin/com/example/.DS_Store b/sample apps/flutter-quickstart-app/android/app/src/main/kotlin/com/example/.DS_Store new file mode 100644 index 000000000..f37824527 Binary files /dev/null and b/sample apps/flutter-quickstart-app/android/app/src/main/kotlin/com/example/.DS_Store differ diff --git a/sample apps/flutter-quickstart-app/pubspec.lock b/sample apps/flutter-quickstart-app/pubspec.lock index 48d10a3be..e3a87a5f0 100644 --- a/sample apps/flutter-quickstart-app/pubspec.lock +++ b/sample apps/flutter-quickstart-app/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" cupertino_icons: dependency: "direct main" description: @@ -79,18 +79,10 @@ packages: dependency: "direct main" description: name: hmssdk_flutter - sha256: bb96354acae74e734e80b775303eaf69a50c804c62fd34b21e254825a387a972 - url: "https://pub.dev" - source: hosted - version: "1.6.0" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: "58c9c104b928ca62af8cd6b8a826ffef27e727a412d854b98e7f1fb151832d5e" url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "1.7.2" lints: dependency: transitive description: @@ -103,34 +95,34 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" permission_handler: dependency: "direct main" description: @@ -188,26 +180,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -228,10 +220,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" vector_math: dependency: transitive description: @@ -240,6 +232,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=2.18.4 <3.0.0" - flutter: ">=2.8.0" + dart: ">=3.1.0-185.0.dev <4.0.0" + flutter: ">=2.10.0" diff --git a/sample apps/flutter-quickstart-app/pubspec.yaml b/sample apps/flutter-quickstart-app/pubspec.yaml index fdc592431..2d708271b 100644 --- a/sample apps/flutter-quickstart-app/pubspec.yaml +++ b/sample apps/flutter-quickstart-app/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 - hmssdk_flutter: 1.6.0 + hmssdk_flutter: 1.7.2 permission_handler: 10.2.0 dev_dependencies: diff --git a/sample apps/getx/pubspec.lock b/sample apps/getx/pubspec.lock index e6166d449..1137ef86a 100644 --- a/sample apps/getx/pubspec.lock +++ b/sample apps/getx/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" charcode: dependency: transitive description: @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" cupertino_icons: dependency: "direct main" description: @@ -123,14 +123,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" lints: dependency: transitive description: @@ -143,34 +135,34 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" permission_handler: dependency: "direct main" description: @@ -228,26 +220,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -268,10 +260,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" typed_data: dependency: transitive description: @@ -296,6 +288,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.2" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=2.18.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=2.8.0" diff --git a/sample apps/hms-callkit-app/.DS_Store b/sample apps/hms-callkit-app/.DS_Store new file mode 100644 index 000000000..430343edb Binary files /dev/null and b/sample apps/hms-callkit-app/.DS_Store differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/.filecache b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/.filecache new file mode 100644 index 000000000..718d59d96 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/.filecache @@ -0,0 +1 @@ +{"version":2,"files":[{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","hash":"6eee5dad1885940a6f6f69328059bd19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","hash":"77fcee8d4672891b204152fd54ec8143"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","hash":"21db6d3de86086328513d01b906be30e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","hash":"ea2d0e58ef3ab5bb9ac77120ef2c1b53"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","hash":"89cdb68e09dda63e2a16d00b994387c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","hash":"63190b810e77cfebf3de760baaf59832"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","hash":"d97a506e94a9f098ecdb1483ca9707af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","hash":"27d4fdebf2e43cf2714e652761621e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","hash":"8635fbec89c2cc03404a2a3233d31bbc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","hash":"f6a7f0346e2863d7c1a206c16b1ab6f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","hash":"3e7ed5e99c20e893e0b98e6465f6be6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","hash":"f8fb1733ad7ae37b3d994f6f94750146"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","hash":"72930239a9378ce977a67804fe0a7c93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","hash":"2fa5623be6e2680ff9befb49dbb5102f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","hash":"cb595dc1e32ae1c22e55b0971067c9df"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","hash":"ab35fb35a2d6cac70b40210ff2304fd0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","hash":"9ef39006752e689eac18ae6928857c3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","hash":"1112185143b6fe11ce84e1f3653b2b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","hash":"fd2a12edfd4b98e55a3b84dc04d027b2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","hash":"44919c3936c0c4f7fcbd5caab7d1a713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","hash":"96b43446a0218f1b99aee172484cfcaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","hash":"1d810658458f13613a213d5d8cb8fe71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","hash":"334d5b02e9aa5fc27e87fdf1a49140cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","hash":"9d633da4b6e0a89f1c7cd8451b8fb9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","hash":"563354fcceca6f2c834a5707c2cd9e13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","hash":"99b0752bf6b7a9261349ee9307cbeaaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","hash":"5487cd3f918d930318d60978428d44b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","hash":"81859a4dbd7cc98b9025645ba344330b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","hash":"0c48f1cd824d3a7169a8cad9385b2147"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","hash":"9422bcb42f545a3d7fad54a0559effc2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","hash":"cbd0196f25d2f055736beb3052a00c19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","hash":"1a773319137363e711d5189770d4517c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","hash":"ecc7f9827d87dcf6cb23310e70449242"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","hash":"4beb2c0ba82d1328030dc7ff68932b22"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","hash":"6b92d8f12a7fb46649297e25d2cf2b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","hash":"e6a9736eaffdc7d075f11980955fd5e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","hash":"4af79c5c69ccf0cae6ab710dfb84b125"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","hash":"ce9abf977da56e384357b8da18e68cf2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","hash":"d5a62fdcbdcfbb765af4b2c4c30adb47"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","hash":"d83aaf70ed7e980bc976d12b8f31a5c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","hash":"328ff975234df68963cb19db907493ff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","hash":"c4248f249f3e54dbf2f102c850065769"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","hash":"8ff79ac46e7b7c3daaab8484ef94370f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","hash":"d755fc45af3dc64d82c199592ba93faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","hash":"d6a5413022b7739de38c1d30783ec8d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","hash":"418e1664a31b32fc7ee9b7c90f31a67c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","hash":"f9144bb1e0700c5e3341cab1dd29235b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","hash":"a3aa38647fd73e6e6fa27450d34c042f"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","hash":"08d323a9150badb65749c7e42ad05b8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","hash":"0a31dcaeb18fc2ec730e799a0bdd0397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","hash":"8197b93568cea109f4eae8aad4626090"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","hash":"96acd6f3aa049313e96a021442c0efd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","hash":"a3e505f75958f86716a4b6e3f79c3be4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","hash":"9a74595c2e95795b6c96d74f2b6bcca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","hash":"5850e52a3ead8b05860e0f35283a43fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","hash":"fab8d6d1b0e81315a3d78131394d31e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","hash":"2c5d1ee339121f9ae1445e93c3fb5486"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","hash":"3d637d82142ce722be3fff1b564a3a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","hash":"698b7b5743b9cfa0aa9d08de156d04b6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","hash":"b3d51ec0dc553b1b1e883e087d5c73cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","hash":"532a272d043c3dccd91b63d1b428dac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","hash":"bfbcdf98f1800a358974017a5a244b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","hash":"314ccd23936a8da782622ec4912af301"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","hash":"29ae3edba712168bb4fbffb16b2f6aea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","hash":"2ddbf2700473f3391a4be0cb9202e299"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","hash":"b7ae6a21a9a41ce292d8ce22be59102c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","hash":"fd48fe375392a882e621f95b35695b1d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","hash":"f38a99a51f4062e7861bb366f85265d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","hash":"78c252bf8f53d91680bc4ce87a981f7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/material.dart","hash":"88af7ef9b0a369709fd232b83942f5c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","hash":"20956ccacef6e41926ba780a442ded4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","hash":"e6717e820802970026778f01d782a208"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","hash":"565097e561f05b1bfab2b3e5bb1bc476"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","hash":"187f4d908f2120bbcd31bf3090dff5ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","hash":"0982f3329e89cc9a5f58e22b8b9f522d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/painting.dart","hash":"0b006f9af878b6cbe7e6fbad8ad05390"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","hash":"4e7d79277a17c733fd4e47fedc834b12"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","hash":"0eef32ab9b2cf423c48e89f2dcd9bd6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","hash":"7cf915b7566678369785993dd6d97018"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","hash":"6cefb715fb27bae29486a74cc607f9db"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","hash":"6b1e7684c07bd93ed9433f5be917a56b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","hash":"8ec8806c9098aee315949fb5ff5bc0fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","hash":"33f1d84eaf01ea35e4d6bdce4c81b862"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","hash":"dac77e15418b6e85ba8237aa7af31c09"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","hash":"18c04a8f8132af2c1b1de5af6909025c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","hash":"462df06e63c35293d84890049542ddce"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","hash":"42f8bce392a960bb25a61723f20af8d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","hash":"73a1264f4048161cf1e020b447b014a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","hash":"4e87dbcd00020a3ee9f14722e8c75ab3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","hash":"38e17b28106d00f831c56d4e78ca7421"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","hash":"9801ff6632dd0a6938381b54bc163196"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","hash":"792cf5ae893012a7a57a7de753af1110"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","hash":"bfe86f49f28a9914bd7144dbb3aa6721"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","hash":"7b7fcd3f415f29a260e0d5f15c7d9565"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","hash":"e93daf002837e58e2c7e3348062e6ad9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","hash":"265da611bd90e5b3f22b0e399086e1a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","hash":"b99c4e1adbe94f8d8b8a34b18b5582d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","hash":"fcd0c8e5b3533ede79824283fd8c1717"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","hash":"cfd6ab50f4e4587f01bea319b728817e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","hash":"27a56f8a1d0cc8cdc6879f7415ef63dd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","hash":"a3068ae1637db004de0bcac7634f398e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","hash":"a9d0ac8febdea9748b1e274e2453730d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","hash":"9f8044c6733c0e51933354ab35295e29"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","hash":"eb1f091dfc256bc49d734c8cea9210e8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","hash":"500547c3b30c59fe1ff3c4b559e52e84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","hash":"a9cf3c682c9b87a18b053337bd6c25f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","hash":"ffc342f17ab331ffaa598a60d029c81a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","hash":"2cecbc714aea63bc341bdeecb0a1d079"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","hash":"645e6e5a42aafa161b24b84bd41fb0ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","hash":"adb6794ae38420a92bd5acb06371b491"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","hash":"b9a5134d01050fc5c9f07d40c68d30db"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","hash":"dfebc31c7148db77769412808653a26d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","hash":"5ca0b5786bf63efd4fc72fcecfe1b36c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","hash":"b04282840d037f7e4943e8ec88a12d02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","hash":"9f52d5022bc55475a52ec44288a06e32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","hash":"e3cdba21732fe10342e87f1c90c75b77"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","hash":"733eb3422250897324028933a5d23753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","hash":"abcb2d6facc18b2af070cb86cbb1c764"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","hash":"671d1776ee902611d49f2fd8cb0cc926"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","hash":"ac1235401776e9d976fcae06c4a1bf69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","hash":"39ce21a3ec5d12c9ef5f1e25826775fa"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","hash":"c5d0f45d6de3d145586b46a241a8baa2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","hash":"0bed54eea911a00191131999c1d9654d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","hash":"d975e51852aa1802c81c738dcb4c348d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","hash":"c6b4e0361b3e5080435faea02182ce52"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","hash":"65b026cff392b7d45d6389e48f773d66"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","hash":"005d333eb3e7be6129b49f470bf2a6c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","hash":"6f79b9f026e6e1088cca4c0fac700dd4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","hash":"04343e5e00f2d4a6a59ceee530334dff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","hash":"5fd3fdb47733961793df2747ede9f8dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","hash":"cc1b73dd41313e37b411b814e333bbe2"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","hash":"ea4e1dc2a5c695efd31b4f944aa6f2ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","hash":"8504cc2dbcc3473a3f42005a04f802b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","hash":"b41739c7771e51de19e76067f9a2671f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","hash":"c32808b4f482b38284e56ea62fd8fcf5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","hash":"e3ed79a2455f7742d0f030dc4a7f7097"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","hash":"9bd1ea1b5932d9ddcb2a49922c96bfc4"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","hash":"145f2173cdc142488f7858e01cc970d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","hash":"034db2896155ca6ffedf49a9b6447708"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","hash":"90d2e3f81c2871fed636143007914657"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","hash":"9325b94e09a773e59eccfedc0dee4711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","hash":"362b1506a336f9a85d0eabb816b63060"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","hash":"3dc027f858c390ed73078fb86ce17bdb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","hash":"edb8edf3942edaeab666e53450efa2c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","hash":"80bef275fa3274c803905212efaa81ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","hash":"5fca18b5c21ccb54bb45fca9a8c230eb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","hash":"b8cec7a5e5d9ccffefa0e7539e92e49f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","hash":"45870d790f29284ea39915e0b2e4ecaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","hash":"288419bf7d5c385c3e0f777da93f9e75"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","hash":"f84a756607dcda1883de021ac706b6dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","hash":"4a5960383439d4ef8fe8b42450ac3be5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","hash":"476383869aff7b87579a7753e47722d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","hash":"96a77b3df76ebda77a5525db0c94a40e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","hash":"ca775fd1da8b4c902a08d53153ec4ab1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","hash":"aa2543ffe35df101f33108e6243f5b9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist","hash":"a25bf969a6a92bae1dbdf68f4e6e5b3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","hash":"4ae8e4147fb1b7f552f1d6c428ef77c9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","hash":"1e4b9425e7c56b52cd233c8b17fcce78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","hash":"60baff7460853877cbb929f66b052733"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","hash":"c703d5a115a88c99fc446006b39e554c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","hash":"07b8cb7ecb64e1fdb5d81b48b4bcd829"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","hash":"30b1ecc00d3e12d33f3f5f3861fbb816"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","hash":"ea66c182859f2263bd2be879287d7325"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","hash":"0fa41fe32675f159259d614ff80ad5ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","hash":"36b6d958e428191d36c3fc7ff3f272af"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/App","hash":"5c4743412b370926c433710cae8ea38f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","hash":"55699f42160ec7cd28e59b3d85b16679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","hash":"57dea595cd79ae393b4b195d632cafa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","hash":"9d79df38c954cb1d6aef9a622fb16826"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","hash":"f5679fafea18b2907b3995e2f751f15f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","hash":"1af4ec1307aa8270fb0739708f0c0882"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","hash":"319c25a79e3bd23b58ab78b5a0aa0d34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","hash":"6e26bdc5ab4d4d183549b8766786c663"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","hash":"49f7081dc5d9a05d4fc221fbfcfaba04"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","hash":"257ca4608e7d75f1db8d4c3ab710ac70"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","hash":"96697a47b1bf47f8a0a957b3c095b8b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","hash":"c4f6ed7cb2df39d4e4c5e73512f0e27b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","hash":"60791527ef7b7b0e4bcf56106682aa99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","hash":"bd1315cfa157d271f8a38242c2abd0d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","hash":"99d5ab829b70ca98223a892d2d09a553"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart","hash":"c517fb54b3d66b22988ad7c8d07c6f53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","hash":"2da52edd1b7a1dcc8df44ef7e4601583"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","hash":"fda9c6f48f58c23eab466cd8565a77fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","hash":"7050c8c94b55eb51260ca54708b460fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","hash":"f646bd33e4b4047f7cbfcd5960072e4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","hash":"0e9ade359ff29a3a17224025ea6bfd30"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","hash":"e7255e0049813e935232face99f33ef1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","hash":"26d4445aa83cf6b5cce2fb52c6f3674e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","hash":"e7a50fb0ceb5c66e2988808e21808aa6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","hash":"fe52344c0c5470d7f044c347de68987e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","hash":"f404c13ab6ba7fca8a465852af425026"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","hash":"251c46a18cddea6662d3285c95e7e991"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","hash":"974d0c452808a1c68d61285d0bd16b28"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","hash":"7ad4b1f7d7435272c14803d189af6d13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","hash":"9b336c2a5b6668dc801b1d8c89124b1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","hash":"443fe4357544b85c13ef051cf37a602f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","hash":"c3234cde75105b7fb54ae124e1af3e93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","hash":"d20e1a7a4860303669f49b2fcf70cc1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","hash":"b1360160e39a2f36567fb0df8ba7e03a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","hash":"cce72b7435a0a5aafcb3cca344af00e2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","hash":"ed6bc3c2d3f1ffcbdcea972d430440eb"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","hash":"05b02a903db9d6845d22e98753e081c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","hash":"bd4687a32363d17bbc130e0af577152c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","hash":"2c822e790480edf5d56f0b6001bb05ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","hash":"ac9cc8c75e7732738ac8deb81fccedfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","hash":"5019b5d158fcebc32762c014fa2c9b0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","hash":"67d4bb390f36e86565a02e8437511790"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","hash":"c9f68b9d0206a1a71be33f572d419b74"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","hash":"114f4cc9fde49fc429c98ef77f626431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","hash":"cdb411d670a094822c46ead81fc1c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","hash":"188d03c92376ce139ce247b0f9b0946e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","hash":"03372d734d84040c509f3cacf8315edf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","hash":"263d65011d90bee92deefb163c823890"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","hash":"a1e4de51bdb32e327bf559008433ab46"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","hash":"215ea407318b75782d0a36692e036ca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","hash":"ae5863ea476e0f897d69f2342c85437c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","hash":"5f5c07df31f7d37780708976065ac8d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","hash":"3c72e68db8be4e65cb349ff74568eb53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","hash":"d62b3af98fb22fa468d83954bf069d5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","hash":"ff2cc2a4a374dafed8b1d437480a6f07"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","hash":"cf72bd613d277b76bf935e6c5bfc157d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","hash":"db4d1d27ac8f3c67e5c3e8209d2827dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","hash":"11565ddf9ff6c5542734e969d7abdb9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","hash":"7bfefcc0929d945fa61bb7870de1f659"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","hash":"811f24def860b7ba8a50bf101cca1188"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z","hash":"c93bc1cf721aa7b4890cd8b37807e578"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","hash":"5bd4f0c87c75d94b51576389aeaef297"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","hash":"c22745b15d4a47feb3c75857d8d9e0b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","hash":"5275d424aba5c931a30e6bd3e467027d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","hash":"2430a12d4750c3c76ef07d29bb6f6691"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","hash":"98947dc53131e00bf0eb82564931fabf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","hash":"a641dfaf4d467277c7075e54e33dc55c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","hash":"359388897ae53df8791213c31ef05fe6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","hash":"4eb115890ef287afe9c85387313602fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","hash":"fd597da8144be9d29dfc1d1ff0733dcf"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","hash":"fc5a943b4066ed396263dcaa72d202c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","hash":"22843b6f1d2688461f7802211ecd1836"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","hash":"b1f861676f6495e6b884459f0d1ce964"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","hash":"351ed98071b53d3c2e98d376f2a65a74"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","hash":"82030078ff5d06d4efd4970a53c03669"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","hash":"0d86d4ba2e01e5e62f80fcf3e872f561"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","hash":"74b9d525d5d35a3f13d7da102d6ddcfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","hash":"14271dedbdbf4826f17d0dc67aaf4d14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","hash":"7697e9da7ec5cf202868f4335cf03549"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","hash":"e6c901b6ad02eac173f31cc971b5b703"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","hash":"7fed4fc7352633413ea4f08ca1087df8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","hash":"2dfc9e555b9df3380a6502bdfab9527a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","hash":"a457593201de333a2db90ca058632293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","hash":"f4b67c136a2189470329fd33ebe57cb3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","hash":"59241e0339f42c809368fc054b767aba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","hash":"22f170a8dc9abfac2942555e83589e1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","hash":"652ae9f598ccacec05fab019b21545ad"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","hash":"d8ac599f1de0f55b47ac48f3bff96af1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","hash":"857c8e3b5e2aaec115da9d5f5dc48c32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","hash":"63301a1f08f8a8b9808b22662f4c1bba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","hash":"9886ca25d16f34e46171e428c5014d21"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","hash":"d0da5ea7955f48054ae624e16528193f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","hash":"b935a1b9045bfaea3990a510732d5824"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","hash":"80e7f6041ae080a76c34cbb7a363fc1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","hash":"2f874d84d25897cae53e33b4dbfa3350"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","hash":"d2a2d8377af7f577a4e2b4fadc6a638e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","hash":"4449a9ff2f8ef7121f4e0e47a6cf4bb6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","hash":"3ef55cc59bb88a61c8bf5f1ea2faadf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","hash":"356b3a7986bcd450e76a3fde0d5c6e0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","hash":"355cd0132946f4de06b53d2d53d0f608"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","hash":"68990009a2ffd358f279c0941f5acb15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","hash":"c23a0415bdaf55efdf69ac495da2aa9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","hash":"14acd577a81cd5aa871c66f430b95d97"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","hash":"81e9a073bd391f4db986dc7bef2f63a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","hash":"e7715c9d0c6652b0ed4cf68026a01618"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","hash":"8abcecb81f99bbc024b3ed169c86b95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","hash":"a2e5169f4b87d1c004d984b1a5653192"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","hash":"f158ffadca730ab601c60307ba31a5e4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","hash":"cb97666041e54bac4d71760123d6723b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","hash":"98bd090c9889935692ba3e10dfbeb355"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","hash":"bbf5b492c8e9be5dadd80d566cce37e7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","hash":"1e7180abd4c05b29d6f62162c16d57a2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","hash":"91d3fd03ed8299fe37d1486bd87ae6e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","hash":"1bc3a9b4f64729d01f8d74a883befce2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","hash":"591e01a4cb4c63927e5c090b0d064505"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","hash":"a9e643bffeac9afc79115446b7cb7c9f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","hash":"9eb9cc50cf100f8006d01f4027d2f5ec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","hash":"3100acc654ddb312b6bbba471958fec8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","hash":"775ae14a90b86bb0668e9fcf6e6b1b6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","hash":"bb2ac94158003f0a8e831eb24259f495"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","hash":"142ba8c5793aa338f44b464329dd0699"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","hash":"b0f02b65ee2c6c7bb94c4ca6f1f29a6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","hash":"1071242e6247c3ce723a11943d44b785"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","hash":"bd5ab55eaa960294d369e4aa6d62ec01"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","hash":"ebb00b4189561689271ac8ff24815bc7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","hash":"7d69bfb2afa429b85b7c3d5075843765"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","hash":"df699735e3bcd730f16ce377d562f787"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","hash":"91cad0986934fa662f3e4d5593174581"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","hash":"8dd3f3f889e2a13598d1e7f392425e21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","hash":"ac6376ef781bca02855c6494af606fcd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","hash":"b29d68425258d60c8a5d005a3a42e756"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","hash":"002be4c072c0cc5c5e72b5ff6d0c490b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","hash":"e82a9b67ba33ae635b9b083ef147fb9b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","hash":"8c3ac5572a7395ff0d93be40536e79e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","hash":"2b3d562385f18f088a55dad322dee674"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","hash":"6e00cb0d78bf0bfd57716b6f925d1947"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","hash":"3c69df4cfc2d7e997dfcc783f5326a4a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","hash":"95586aad0f0a7b13580767122c5ce9d8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","hash":"24c1035fad541d49bd16d2b2bdd194b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","hash":"a5266adbd58aab45e34dc05f787ca535"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","hash":"4f683ee2e1b110e70e51ebbf8db44352"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","hash":"993df9991302d75495941ede09bf8122"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","hash":"2abd2c9a42d4caf2b4f1640d68b02fd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","hash":"5bd9412bfb7a85a944c17f7271c47e73"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","hash":"7fa73a415cd2df461af3c4b0439f687f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","hash":"655cab5b26d8bd0b3fdda75a616f60a7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","hash":"76a75a9f331e9c7b2c22eaf454299641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","hash":"2e7c0078255c745b56a2bf1bf7992df3"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","hash":"2b64d8bbdf8a7af016b43ea6d75fab37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","hash":"21bf6725b1fc374f03ae5b2cb46bd95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","hash":"7d2bdb4801fc8b3a110f36d5e5fa59f5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","hash":"638c6d804d20c1f83790f7f10c4af408"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","hash":"e5e651253aded8004c5fa54b6bb659e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","hash":"e3dbadbe1770d097ca122e6b5f3cc541"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","hash":"91ec123214e148442cb5c4cec58da540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","hash":"30d8aa5cd9bce4059a61d3ad5a5f432a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","hash":"e6cc47e6123c91543e86f0c9983c26da"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","hash":"6a2092bc6e531cf53fd4151ac189cfd4"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","hash":"01dccfcb76cb49108f19d82eaf90e822"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","hash":"f365fc9346ed92a347bd6659be254ab4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","hash":"79640e9b38fd9ad1126240bb2d3e5f7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","hash":"32c8f2d4dc53cfe56f5fa637be2c52e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","hash":"1379bbaf280401527c2248647c9c158f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","hash":"d1ab0260adff28180e562e884513c3e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","hash":"a03cc6311acd362bf8e7168e8d31da05"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","hash":"1696ca88c21e3e3b9545f2b5a4736f03"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","hash":"bba56d888d73de62a45f74323e448a7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","hash":"70aa5bdfead16e28cc5d09e987f3dcd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","hash":"c4f3f94bbecf67e4419ca6a8e97d8715"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","hash":"b48ba72a2d5d084d297c3d78e351036e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","hash":"3d54ff724ed3381d38104d6603406b8a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","hash":"ef83fcd13366d1d61c5dbb5c6aae5ead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","hash":"db0d5438467c4c7c0df8a6833226242c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","hash":"299bd3979d7999412945ac4e3199cdcf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","hash":"fbd23a681c22b782bdb58d139c07cca6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","hash":"148c709e17c08f50d3daa670b9f91f12"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","hash":"11e87c02beec338363a30c8f2f49c522"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","hash":"368a628be82e16cf17725d00a83f582c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","hash":"ce35872fe5da155b423c29a2ad542b7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","hash":"bf2738395eea842961e96f4203e03df1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","hash":"46b0774ca33285fd90e42ad91bf706fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","hash":"82d7c6fddc8b4938a5b95f203e86dbf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","hash":"8a2a6e194bea6968fce6409b962bf485"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","hash":"f4c1352de009ea30833ce873d8488617"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","hash":"119ed2f372555dcadabe631a960de161"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","hash":"4938fe6e2b4853e0b4e445e64bef9b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","hash":"7dc929eb036d49956284257b4e0d83d0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","hash":"81b2d2a545e6f66510367ee8d4bdbf51"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","hash":"856b5a01bc613989f211a44d67f2c4c5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","hash":"a0f3046203c24b39a0d5e7eb2e605cd5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","hash":"cfdbbeecafa9afe958cc12f0363e0f2e"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","hash":"67918403456e9e1c17b3375ea708292c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/services.dart","hash":"b74bf26ae8105a75eb390fed5aaf29cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","hash":"ea7b5731a74e12ea2a31a21b8c188444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","hash":"fbac444a17bbc7b00af608ec29e0de4f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","hash":"36280c072e87476893ba441b9b25bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","hash":"df55cb6d988b8526b5c461f103fa9ef2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","hash":"8519987f955d72de5736f71fe1b3b96d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","hash":"bdb69d0ad764dcf2d42d8fca35fb9ade"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","hash":"2b6129307d0fa6394c84e3a4ac5136e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","hash":"b3263d1ee9aaef112570bcd31aae9ca8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","hash":"ff49202dfcd82a646d59d2012330173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","hash":"b80f25d51570eededff370f0c2b94c38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","hash":"439c16468a275d15a70b82809ebf6692"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","hash":"2b03803c213a3023f14b3e4849a52b64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","hash":"7725ee45d15fa56992b64ca1060bcfef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","hash":"881b5c11f52613550e6dbfcc45a2dc49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","hash":"c87e19f7c886263df8586146fe147faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","hash":"3e82e75a5b4bf22939d1937d2195a16e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","hash":"7ec268e37049e5c22e226c94df1776b3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","hash":"8ec86c62ef84ec90ddf5232d5843fd37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","hash":"b3531fa45ed93b73298389e029c9fa8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","hash":"739bb2e85022ddfb653590b93216942a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","hash":"7ce4485fb80ddad6acd68abaf480ecec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","hash":"8dfa8d9ef8888059e8c7567b5bdf037d"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin","hash":"94ea66ea4527118e5e075c9eb2034858"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","hash":"fce75150bcb08fa104fded6310750474"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","hash":"aea224eef2ce1d7e59c255050e32538b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","hash":"3ffbd6fc0995838940a61cba006cbaa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","hash":"50298dec288c3e23499a59305365a9ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","hash":"35dab6b93fcd39905685afc374195190"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","hash":"567e295b927cce4c1ac15de8b037db44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","hash":"30a21255788cb6464ab33c6b40c932eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","hash":"9952a908c43edacce7d554bb12e4d9b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","hash":"2accc934e05b459de8fe3362f452102f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","hash":"81a875af62f7ff0581e985d509541da4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","hash":"ac54fa631e760555c0b0488ec73f7c95"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","hash":"3d26622e062df504e7d6d5ecf06c1d32"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","hash":"dc1130be2c52737b89868ba302a4bde3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","hash":"74ffe935dac1b387e33d85915c6bca90"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","hash":"58b20f802baf08f63dcbf4eae87a754e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","hash":"1dac993c7444b99a17f2dcf45acaca97"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","hash":"dbff400b121e6f844298946531d490a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","hash":"83dde9913aa4a689b698d2ba5ec7c676"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","hash":"c71d56c5b6118cacfaf95d34850b080c"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart","hash":"401ffa4fc52ce06f9c6d4195a86f6c25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","hash":"b6f7217e92bd0cd6308e102b91a73ee7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","hash":"3e3350346bb70b12a7319e286f300f02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","hash":"dfcc453f5331ec6f2c70cda394065785"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","hash":"b76ebf453c4f7a78139f5c52af57fda3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","hash":"faa4ca37423c4ebc1968a9922537ee82"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","hash":"c324914d8137036411457678f3c69dc0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","hash":"69c59af240ed814583dc1635986b09d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","hash":"8778186a2505e7ec97a1085c9b26d136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","hash":"caac146b9d46a9d99ac6d588e06806af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","hash":"bc5f5368bd36c6369f2502927e08f4af"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","hash":"3bf69bfd4070ddbf2b64ce381c00975d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","hash":"05f3174f379af4ccd07fccea88487a40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","hash":"9a213a6ad0048a7638eb152b56018b0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","hash":"bf9deb76f520208269fedb1ee05992bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","hash":"06ab11848273dcdc3ea237593b87fe98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","hash":"6c7a86378419565d1822850ce87fcb02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","hash":"be8d91eefea139196c14b817299d181f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","hash":"6a2eb1282073818aa4ea64025b0d8769"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","hash":"0fc8427a68447ca1f35a819654791edb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","hash":"8bfab809ab4a9e9720f7a2ca9ae31a03"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","hash":"4a01954c6cb77f1d4f678b32ae946189"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","hash":"9925a270672aceb04e6ec7d0251bf73a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","hash":"6dbd011ca31387e3192d39c999a1dd9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","hash":"3b7aae008ce78bafe833b0b75669f461"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","hash":"a636b243377d435c9c285533d7db1f2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","hash":"c91107c565c54394f296558118413974"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","hash":"d3c7b8f49006b6d9ca76880dff779193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","hash":"684f3b90c3d984dee726e0dc1fc9732c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","hash":"00d16ae308855ddbf3762e4dbafd62d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","hash":"8e72f0f11bfc09b5d4d7791fd23c4227"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","hash":"6bc029efa11f69cb20f3abf8436e9088"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","hash":"6410a04c8e4b96d057e245179c5b7247"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","hash":"8986177ba204a808c603c35260601cce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","hash":"3ef978aecc3ea1c21fe37ce189d94a55"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","hash":"4ce6f3c41ded0f3794fe3f0106ab971a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","hash":"eade7bbc9bacbd78204c7ffdde55ddbd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","hash":"200c53b613dda088d30967fa0f689d53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","hash":"9ac903cffbc9fc815782d8e0bcea7e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","hash":"d5da49989b2fec96c7bf048f237909ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","hash":"89d496fd298521d95b4130a2ec9757ba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","hash":"1e3139880d4a71af922ea4538ed3a693"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","hash":"6e40ff949fd347e34e4827db183ab0f7"},{"path":"/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","hash":"93fccc5a13669d1df317968de5b2590c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","hash":"22aea0b7487320a5aeef22c3f2dfc977"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","hash":"f712a6d1a54fde3b5c6c41dbe7d8d06a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","hash":"cff2e2ada5d309a662cb05bb0b3745d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","hash":"090663daff7862a91458a7b8ca03e4f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","hash":"adccd59261d4d308580e3770cd0bd118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","hash":"ad4d82cd4898aebe901db7406316ab82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","hash":"d931d0c43164be8791bda3f70ee1aa80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","hash":"7d4ac5744bd9691f24fc3fc585a139aa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","hash":"331387ea77fae9eee85b67f5e31abf6c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","hash":"61309d04374f7afb4ec42e6bdc24e920"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","hash":"ebfa6ac15e746da747f5533d2a54c06b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","hash":"e7aa6d241a553e6e49b6128929a0ac89"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","hash":"8fa30dbbbc4cdd0646a81c9f5cea46f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","hash":"42074e2b3250cd1eab474db9941ed08a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","hash":"61fc5d47f00a6477275a3102fea8cbf1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","hash":"0aeb0a21974fb6c312f3478d81b51f93"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","hash":"32bea27a87f9093daeefaa52829f687c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","hash":"3f29e94ce4c6c07d1bcb3dc510b9feaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","hash":"296cef41d634abf372fb89f66b82434b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","hash":"124e39caf0044d319a0a82f95cce01d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","hash":"0491e1cca60da329c2e03c48abde07c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","hash":"9190f2442b5cf3eee32ab93156e97fb1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","hash":"0fc01b4e9beb5706e036ee4dd2a18994"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","hash":"bf3aeab9379cee97ddcc69d885a477f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","hash":"669c88cbef458b3b049bad5ff3c2dfbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","hash":"42e9d4d3462785bf39af0270d42722e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","hash":"6833d204d709534191c3e0ffae1b3f64"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","hash":"8fefc83c9b77e76fcd2dabbe8cef1b8a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","hash":"ab19cb2ef34f667e464bf6f7276a4090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","hash":"25fc1338a5818b8b96655ddd6b3d5fa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","hash":"7d3f2619c15bb38d440a3ae894893177"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","hash":"2ced89ae106e1607e18ce3ef17b79bf4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","hash":"09f75080be8aa63c54de8f0f13d49397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","hash":"b78151963bec1265cdd95f4e4c83a75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","hash":"38e9bbf0c4b9be4d755c28884b84b322"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","hash":"d1410f48ac374235aaad55cba40bc4be"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","hash":"8b6bc5fa08a6b7106be8385bef8d3f87"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","hash":"4d9855c5c4a2df0057ef4b01975075e4"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/Info.plist","hash":"a25bf969a6a92bae1dbdf68f4e6e5b3b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","hash":"9c094b5d96bcff2f7c3ce85ce3101679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","hash":"c458aafc65e8993663c76f96f54c51bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","hash":"60b4523b7d94f2184414a314335fd486"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","hash":"0778c4eafda29c528f4a402f09dc681b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","hash":"31c7443c821ddc575659a119a00bb42f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","hash":"bba71a5811a4c39e16cfd7087e7d5f82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","hash":"d069d474f3092042e67cd7de4bdb82ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","hash":"686731748d53f10cd1bdd7b457113206"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","hash":"cc930e72835a0bc8e575042197dbcfce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","hash":"ef3c172e10ae4e723ca920d42664a09e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","hash":"49f0f0e91f5b1be29100e9d755a0db02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","hash":"917487cb133bd9030e72e0e06856f5ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","hash":"12fd812a55e344d79f493c9c78d3e6c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","hash":"479493da08b4e2137fc162ff23bef99b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","hash":"9df03a340058a4e7792cd68745a4320c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","hash":"ccb08191f9bcfb4f1a62504278ce3a1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","hash":"1f334b50f4df781bbbfab857581c3540"},{"path":"/Users/decode/work/flutter/packages/flutter/LICENSE","hash":"1d84cf16c48e571923f837136633a265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","hash":"cfe784116ec12e5b030a3a909043f0eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","hash":"84e5f15faf70cd8517f45973b9e93dbb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","hash":"1026f587763defb6fb1eec88c2154a3d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","hash":"0722b5d6745ce6645d6caf63b2aedd89"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","hash":"6a692cbfb0ac7d94ac51f7476c2b32b9"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","hash":"e7a14e1ca3a2e91ab267ff401ce30bfd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","hash":"8559baab97364a51be134a959392660a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","hash":"11ddb14d335c7abe7d01544d689a9cfc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","hash":"83111e0bb0ef4128feae2edf7166be2f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","hash":"fa6839623ecc7d14a4396269172b75fa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","hash":"11a634821b3bce05dac94f3dabe52a75"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","hash":"d17e0458ef2b4cdffbc13c8b6b441a9e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","hash":"eabaa11e875f30c638dbea199dc82f44"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","hash":"40fa279b08807ed54fc6415e40e74890"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","hash":"5beb6330c4fbaf6bf4abd034e6b7b67c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","hash":"a2a594ac094ed456446650f38b32cc3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","hash":"b71ae933bdc407aa375dba5f378198a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","hash":"8ebb687266ac064712bb7ff7158d106f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","hash":"b9e3ed70ab5e8c760f86ccdb79a5d039"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","hash":"b784d4742c3dd4477e99f44c2a254907"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","hash":"dfc46bfa781540b08b8225ac9a0b9b29"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","hash":"06ea9940aad3bb36f23d75399f50cc25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","hash":"e6131583e11852cce5dc36b190644131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","hash":"43afda18b80de74d64e5858c6e99760f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","hash":"fb2d46e6b265c0c0ea1af0e6eb6c0b16"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","hash":"24072c05f67aa1bd35a3389621d80c25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","hash":"2e8b626fa3b55a9701a9e465056b3c34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","hash":"6a0fa6360b3aca8deb85dc7d88176eb8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","hash":"3ef73748f32e082c00f63c8ba34aa377"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","hash":"e9156196a451437aec06485acd41e3a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","hash":"95c52f75b6732050b2b87ad920f3cf14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","hash":"62da8696885bd25977675ac4f7f1aef9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","hash":"168044116891b9bbe45f3d5f7ed816e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","hash":"531d1d96bce7aa59a6109c02ac538cb0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","hash":"6b9e435854586ad0262f2df15faf9652"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","hash":"d4bfff67af034e60b49e5d8c762d827d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","hash":"0751e731a4a73fbac2f26a98ce39f8ad"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","hash":"a3646639b0d0ef7795bc7559e7b991ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","hash":"580a1c9361f66db5377d1151704dc77c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","hash":"2a0b9a600ec09eae15ecb49408c970fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","hash":"7eedf91ebecf044f8689850d664468ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","hash":"c42eded8d81eb7061382c1b780cccc17"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","hash":"b12267aa6ec80a40cec57548a12debf3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","hash":"6a7cef816d662014b8fff82eafd4bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","hash":"45a20da2b86984fa0b29030dd190c75d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","hash":"49510c76201a05eba3c239a16896508b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","hash":"5ed8acdae7dd3501b64b0ff3e33c1f45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","hash":"937d30420745a1cd13700541c6622560"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","hash":"b0e54f78383dbb310229e9a2f1174938"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","hash":"26c15a7df63d4298c4b3951a0450e9fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","hash":"ffe0703cf67f433a0cfcc9b87e730898"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","hash":"6a65e9988b21768c80a49713778c2cd0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","hash":"46a3d1bc9290ef51b685700434b32b44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","hash":"8634bd2ef9d127a2cd8a1c6478924c2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","hash":"32efb5a6b870c4f1cb43ba00aba6351e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","hash":"f5af2a566953c579de1c0a3522632033"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","hash":"0eb0ac1ff445407819f2e7efafd0ec8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","hash":"b2cedc16db668bbe5b025bbbba69c6d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","hash":"8865f4ba0316aa33cd4b8e48694ae276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","hash":"8dcbf9c6d1b75bd1af118ae233e7639f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","hash":"c808f81414eea878b72b91f90e2858e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","hash":"6f02df4fb5ddc74004c941b6a039a1e1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","hash":"5e896196ff7ca3b52fffb0aa2866873c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","hash":"53d7f3e3fc0a4263c5c52c08eb9d107d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/physics.dart","hash":"6e29d5e69c5745a45214fe14da377c1a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","hash":"1f57869f0fe9efea648d71823e512b8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","hash":"76d339b78cfd7fa3b43da126d24f6662"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","hash":"e525624c777f81ae3166844928814efd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","hash":"bd34896b1432d6f707498d3df7a7c3ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","hash":"92822ea2edbf875f4f02ee0df917a511"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","hash":"d00bb38035b66ea4837b0e3836742215"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","hash":"fcfae3ecf984ee7d09081c2a7898dcab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","hash":"8fec1bb0c768b230066dba96aac40ff5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","hash":"2775727a104b34e20ef16dc30f5baeaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","hash":"5aa6d283a0d9edaf16e2987bba97111e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","hash":"a131fd3e2eeda716ebe839391d9af175"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","hash":"c5ecbaa65517267fe86dc298ec449627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","hash":"87e6007f2e4468fd84513f05cafcca2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","hash":"9e01d9cd61659f3d0ec6a98a92293d76"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","hash":"d85e44f8ceae50ad608a330fae758f0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","hash":"61c96752b1e816d7add82a5c9881a31f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","hash":"0457a594f4c14181f802c54252615c81"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","hash":"59d07e46049ce7af5b20d0bc808aedcc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","hash":"900f6993636e3b9ce2be24d38150722d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","hash":"30d1084d64be284ca139e2f082e18773"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","hash":"f76941994ddf30e398313421f1588d85"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","hash":"c75c1b6e41b334befa8fea8f40a1012e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","hash":"542c329c98e02e449591773d3c7a7364"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","hash":"51aacf05a9f117da54a963931538b538"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","hash":"711adece1d277c89c00ac553ca718ffd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","hash":"457092647c06b9d19ea071d0ef4fba09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","hash":"7f3b4e775cb1472996a0505423dd47f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","hash":"bf09e04ad2dae39eaaa1be1eb491ca67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","hash":"f3ed1f2bbf9255947413e97c37fc8170"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","hash":"b7a33886acf5e1ae7958146ee3dca9a9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","hash":"4bc0791cae09df89eaa7f2873b01d70a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","hash":"e3104f80561c2766e0404a2e86c1eb4b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","hash":"7154b3b2612920bcf76384c4336b75dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","hash":"cc30d285217e268fa4f3d630ec6c106b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","hash":"24c5cc49ad84eff945c729b1956b2cd8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","hash":"282eed7f135fdf9ac7bed4ce4faf2431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","hash":"42b5cfc1bbde00b6a98563e9e6967232"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","hash":"8ce0a70b958b78f9a2ce2e10d96063d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","hash":"b57fb186ac13e07cabcf79e9203ce0f8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","hash":"c6a45f573f549f569f65331bf54ec4b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","hash":"be7fd149b14f26a8cf158cc573e6f8b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","hash":"76f78a740b294787efda8a8aadd06648"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","hash":"35acbeef9c7f61e14ad7d0eb8a6aac3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","hash":"886142a229b0dda691ec6b45f89b6db3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","hash":"55d87de41cd8f095ff29b79280667bce"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","hash":"55380226455ea534ad3f21ab09fa4cae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","hash":"bfb39b98783e4013d9fe5006de40874d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","hash":"f51a4cccdeb513773de9af509f073dcf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","hash":"3418e2ba1365bf8820838eae0da072fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","hash":"987dfee9ed944d2007a00e521d4fbbe4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","hash":"d5fead7a94377fb7b73964d9144c6cbb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","hash":"4a64d3243f3e64ba6289d9c05d2d8352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","hash":"e87720fd4927910caa07008c23ddba6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","hash":"cd6ec63f7e53e31b1a8a5ed8a84995bb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","hash":"c3eb7baf4000b511ca5b10c22dbb3314"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","hash":"3e30d0b7847f22c4b3674358052de8b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","hash":"b1d7b10a451a7a5680c4473652e4e3c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","hash":"08c2e37a2ae282c740bfe820f238eca1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","hash":"876f767cba36d5e85f168016daf2fecd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","hash":"2cbd59c713944d0838677c099dee647b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","hash":"a3aa36a805436731699f39e6bf524087"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","hash":"835f074a18cdd0d574266ada0993083d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","hash":"3323850953be5c35d320c2035aad1a87"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","hash":"d3264cd95201959c47206467ced2cc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","hash":"011b312a6ef99efa780c4fa8136a56d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","hash":"85f5251e2d480320cf86ef4464727d2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","hash":"ddb4156cc60123adcacc058e16a149c4"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","hash":"e92f281d8b4f90867a8092a830c84e87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","hash":"9ac2b8f7c9eba819c8aee376fdde1ad2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","hash":"04e7480fb89755fcc5f64f7d80ca610f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","hash":"e4ee21048ab83cc50d61ac3784afa9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","hash":"96ed798bc7e796289016d6e02421839d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","hash":"5a24e81c5dfc83ccdcd39f7e55f04753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","hash":"6c79df081f525e2e5c9b4c40ce4b9bd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","hash":"ba03f9104fbe5f86eb4fe59a55a5bf84"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","hash":"34b8b9a525c2edf0191fbd9f925005c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","hash":"54363b635c5af0166a92a944822afcdc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","hash":"94bcda3ece81c51b940128304723207b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","hash":"6b50cbba82bb3e71726b42432c99fd3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","hash":"e067ca68c97d0e48e0ad590b2c8ccb98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","hash":"4b1ca4de6a5eee477b785b591d8a28f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","hash":"3007a85885c8729a7f98628f002c9439"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","hash":"ec004619fab55892c218a0adf229b561"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","hash":"d9c1075cfc34fe12d9eff9286ae10345"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","hash":"e71d390cbb4f63b91608b6ae8a37321c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","hash":"901fb8012bd0bea60fea67092c26b918"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","hash":"cd43cd94616b70eea89a1dd0ecd25969"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","hash":"141e9b257bbdd7538861bb084fff79ca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","hash":"da14b1fa0730fd08c362246e87f84f0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","hash":"6570ec9fa980d0f831f98aff35b3a1ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","hash":"12b5c836341ab1bc20b9f278f54b9100"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","hash":"eeca328d147c15b45c2f02a4093dee86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","hash":"c2f30f0829e63ccf0449de5982e324b4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","hash":"ab7f9e1c4cf503e32f4c64defec28a06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","hash":"1adcc56e3affffb23739c7c9d8a5fca0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","hash":"4a91b5cf945c2bc9e2a4c289df61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","hash":"43268fa3ac45f3c527c72fc3822b9cb2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","hash":"34a2904f465e07aeee9671eaa1841603"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","hash":"c5e89efad0dec2ca225efaba106f1009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","hash":"8d080b6e86801960351d947b03422647"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","hash":"1ff78858694fe6ce139b702533f09ac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","hash":"4b7fdaf8eb582d24d5ce30f8ccfeb47d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","hash":"4a7e1cc400a1f83dc5d388d347e0c1d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","hash":"4fb96b9e2073cadc554a25b36f55e6dd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","hash":"5100fa4b1b76b6c6bdb2377f34e88c98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","hash":"3fe6a46238f7699ff1039e43a3157acc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","hash":"b0024ed9cc48302fac493ce4334ad305"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","hash":"aaeaa3689d512d45aa36116404185613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","hash":"d4f2e5f5bf05006a98a9ec38dfb91641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","hash":"34805aed0d0a89fb081a78edc767bcca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","hash":"fb76e9ed5173ac1ae6a6f43288581808"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","hash":"5b7288fb6b6a565fae69135814261e35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","hash":"fd8e17ae72fb97a796493a41bee55c25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","hash":"4817a73df1c313cf6a6eb86774e7fc99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","hash":"e4323ae67bf5fad2112cf257b91b64d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","hash":"e3595ce1e159aa04bc09f69c5168c454"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","hash":"8a899256e5ac320579b269ee9b2567a8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","hash":"911148240fa2017589039df8adbdbd7d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","hash":"9eb00667159a0046d27b803bc3be86cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","hash":"7f8a376d7b21fcfab175a8adaf39773a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","hash":"38df7f10e1de0ca59f93b7e21e6428fc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","hash":"ce1cedd9270d5130bb4be660d13d846e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","hash":"3ebce28fe3575a15329d8dc59ee7ca4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","hash":"7a2ec4e09818130f24b840639231c64b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","hash":"4f36e38eaf3608ec18c70c13942510bd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","hash":"0711824f5f77fc221ca16dd2833c1db4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","hash":"555cb79bdeff77e5a998348ff955de91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","hash":"0bc946660b54448bb6d71993b97df709"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","hash":"fa29e9b0d579c1ea85e444240a4b9679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","hash":"8672eaa73f78b6304690ad35fad337ce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","hash":"528e19807cd069a9195f4ea136226cd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","hash":"d4d8de3042f1567cf3c3e4c69035e122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","hash":"b7943d020a6c7b63a2483143ecf5f6d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","hash":"665aca3a93721bc97cb6aeaae166ce98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","hash":"04d9c37a08f8b92fefb564624a931627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","hash":"3b694fc6637206a6a63f48dc6460d032"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","hash":"a2832c8e34e1ff435ac8591c9a182348"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","hash":"63cce47fa0e04330662244b0f8617d1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","hash":"81e0e3eb37bee6df055243fe36159762"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","hash":"34650bbb402bea0d9e0905df4adadaae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","hash":"cff85360d3ed608c6c25e665f1d62d82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","hash":"6c285209364e3e656137323d51ad39c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","hash":"9400739d7cb0134c1710855d1e75a996"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","hash":"b5172d7f7c209661c70b4574107cd774"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","hash":"4b5d82ddeb09bc46ae0e980616ce0109"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","hash":"8daf6ce8e54d46d3b37a3a7c61e393fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","hash":"aa4c24c010fb444c843ce3dc261a569f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","hash":"6566a35ff0dea9376debf257bdb08fba"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","hash":"1615400e2e1007e9330ef9c77db7fba9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","hash":"9d8a7927ca14b15f3473e211789eaa52"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json","hash":"dc3d03800ccca4601324923c0b1d6d57"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","hash":"3f80d418ed7e7aec7e3dac422ccc4fda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","hash":"4c07a36206ab3ca200d52d7f24127233"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","hash":"fbab404ac750764afa92bbfbfdfa41e3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","hash":"f5c7e9c345ce092ba11c9706c0994f77"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","hash":"9e2dc24fb141c54394f013ec20569c50"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","hash":"6d567c275cc8a8f7488526dd82502d08"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","hash":"f40ee654b1e7792799165eb9d04173e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","hash":"b77671e5f5450772922cecb671595186"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","hash":"a485f5c7307db6bbba1d3388b528a770"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","hash":"b8e31732ebc0cea1a9300fb3fbfd1488"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","hash":"498db4873b660f741326f9c4061a2584"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","hash":"d079c201b77316f3b83b37bfb2f06a60"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","hash":"074b866f17aee09c76583b075e83cb8c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","hash":"fdc78d4e397e4c145a0b1c859715e6af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","hash":"3d57a7a19c5e8b51d63231a87a9b6fd9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","hash":"959489b18fda284c434701586b43c66b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","hash":"1c65e4f1e29a4f9e5595513d9f11c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","hash":"fb71dd46672c822515f03f8f0dddbcb8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","hash":"7656627b51b07565889084020b5078d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","hash":"3eb370b59dae381bbca5781ca5f11add"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","hash":"bb3e5fdde3ad97a1e69402918c22f214"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","hash":"3344aee98c44f74ea6fb76c2726dfded"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","hash":"038416fd6da9501daae9bc9552db8384"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","hash":"b863a3ac709501ff91023cec155d5090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","hash":"8eb7f9d0796943d7edb0bc187df830f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","hash":"e9383af731a68adb6b314ec5b1068a45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","hash":"8a3ebe88566064230a8c53e90fb9a5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","hash":"2bd22809ea7f834be075f6bbc989c61a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","hash":"c7ad70d1b453c3200a2c25b6f5ca4604"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","hash":"9c4bb35923984b738cf58549005ae256"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/Flutter.framework/Flutter","hash":"b8cd440b6935f533b802c308867e4df2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","hash":"e2dc9f40339f72e3b0e309272c5ceaa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","hash":"0978d318570cd386e77d76932a179c4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","hash":"e93367ad4cf679639319dc0f2c7688dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","hash":"d832c1395fd093f66961840fb3c4e795"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","hash":"6d12493069f2abe32b2c0ce97b36f663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","hash":"9936f30321ebd2d53045f2c2bb4f91f0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","hash":"9e22ead5e19c7b5da6de0678c8c13dca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","hash":"726c40ba1ec292d536301fe64a18e83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","hash":"1b3e0df1cc1fdb0ff927760c5c7dceda"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/App.framework/App","hash":"e494cbfcbd8e18704f5100b411309acd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","hash":"c089bcb51f4d22da206b5e3dc203c720"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","hash":"d3f74d846a99e580843bade81eec9e2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","hash":"0941b23f5841e31aad0d25b4ca38293b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","hash":"3f6fe76fd1b6ce55578b873386c13ff7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","hash":"7e3a59cfc4c1fe568c6bddbca28625ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","hash":"bf3e3c95be806ad85836f764c3b6c72b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","hash":"5acfa8abbd3e0d70f514ac65e7da5061"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","hash":"7f164e577cfcf8c8295947195cde2a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","hash":"79ed68fe678281de2561462a198ea941"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","hash":"298e2d00cd7707d6efa4de9bf430330e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","hash":"dedd3e5e4d23fb7908a54c94eb1c9adc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","hash":"9b9639fb37f3307761e011646c3a3ce0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","hash":"44b8efa69ec831d1a0ce74c20ecc27b4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","hash":"ad1c0bc683df393671fbf67b53068803"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","hash":"7c46db5c279bfd34b41aee4e64ba88f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","hash":"fab272ec14b6139c58bfc5c4ebe4ead1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","hash":"4526ea37fae95754b3fafdc5394475f9"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Runner/Info.plist","hash":"e1817bc630f1e547ba024c2c16a22290"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","hash":"c6f8b638d691a2bba7362cd598d93ef8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","hash":"033c74f582e22e3337b9588f306211d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","hash":"823c66be3a8d17bc0c146c6b7f83062c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","hash":"db1783b3083765425632b2ca451dbbc8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","hash":"687bbf9e1a7bddd4b55174fb07cb6919"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","hash":"c9d67cc655fb9b02d52b68e9f039bc41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","hash":"51ffa7b452686eecd94ed080a1da4275"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","hash":"e2d2090c2a39f7902893e64150fe82b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","hash":"146741f6f87d6612ee7bbf6a6fa9c119"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","hash":"d9bab5fd98c4aeb46f0ee46466d27592"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","hash":"36cb8d9d9c95b1f5f64ca8f983d5c987"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","hash":"8bae075f6533238e997073d1c4342ee2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","hash":"2e0e0e4e8c040ded0b0a7a22afba6066"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","hash":"73b175f4bfcea68d6b2e6668047ffc70"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","hash":"4ed409d0342640995ce72f04370a33f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","hash":"598a75ad8b988bb14ac22ad62acabc10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","hash":"c0eab13b5f00b7d01f2e840be85b3a94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","hash":"813ce513d5d942ef02118ea7a8f0869f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","hash":"3c68a7c20b2296875f67e431093dd99e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","hash":"163f0d1be71ecdac16d6010f08d034a0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","hash":"3aaf04a3a450c1b6a144f84f3c778573"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","hash":"f901250cbd5c13750f08f7888069e632"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","hash":"a7ea1d5d956ca8f43c49a71c61b61595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","hash":"449e5e076d88fdec0781d58650e1b713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","hash":"a4a5a4186c28c8e4e7ef38558ae2fa14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","hash":"5145b27b3db429f9f1da26cfe563bd02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","hash":"1e0b9c706c2f52ef8c68d71e059b368d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","hash":"35a5d2ef7726ea70bf4081f7566c96f7"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","hash":"e7d4ad013f2bb1be7be15dd100e3c5cb"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart","hash":"e34e3802a803f306e616e2090802a868"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","hash":"1824c826f0f8d8a85bda7e1f0bb1dead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","hash":"d19848a34d5b4e5fe3e2ea44195d6dae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","hash":"da856751b95477557d7f15c5844b9bde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","hash":"f5c94ee1d5dde386af79c59872fd148d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","hash":"406792dd8d248088cd84be85cf7c62fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","hash":"c8515afa8e555bfec16e832598d4e5ab"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","hash":"41bb908ec3d8ec35ccdccc0ff08e09c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","hash":"9ce6595770687511a1c77ace6f55bddc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","hash":"33aa9632d38a7855ec7452224f80471c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","hash":"38dc31b8820f5fd36eedbf7d9c1bf8d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","hash":"5a0440a1ca131754cd92d8adcf93c8c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","hash":"4df1293c0ca4ba2371070c07770510a9"},{"path":"/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","hash":"6e92335d98b127f7240ff5294e257c26"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","hash":"fe6862ad950dd8849a69b71513319a5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","hash":"e0c22343cfc4e2772a491e04ba0d7fb0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","hash":"9e3b68924814d1e0d7f46f7ce20fa741"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","hash":"942b357f6a2c3f3bd946cb557426178e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","hash":"e6e960458fc831c2981997244673c139"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","hash":"8bfa3b5210d4eaa65b8f5520fb864636"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","hash":"a48ea636b7f2a32cdb71df23faa3451b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","hash":"f82b335ee8dd9ad923f619f83c130ecb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","hash":"056ba78280a44883e05c65a88771b4e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","hash":"9e813ae0507e226c633ee55b4381e444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","hash":"a5636cabd205b19f4d440f7ed4ab56b0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","hash":"89ac6e1a99054eb05805c6e7a6f58e6f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","hash":"8f4de032f1e2670ca51ce330a4de91a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","hash":"f12ebda2bd0dc61bafcb6669fa9ad431"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","hash":"e973169d55c1b0907b263fce8328bc84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","hash":"06c73ad137e5db31d7e6ba4258ac13c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","hash":"f0b223d5921ef09003438d729371184b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","hash":"95d8d1f6a859205f5203384e2d38173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","hash":"7913ef92f8723845c6b90719875b753d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","hash":"3b50c5a9642520832ec2c51c8efef598"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","hash":"1abf43dc3d3cb88360ea799cb926ae25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","hash":"9f9dd658ff05133ca61619a54fdcf728"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","hash":"758d8cac59a8861109cb1c0c455130b7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","hash":"ea88a0c45477c2656a699201e15fc8bf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","hash":"12bb0c18faaed956b27d405dabcd96cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","hash":"d75954340a0c7770eb9a149f7994598e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","hash":"e3a3e744d6ef8ddf1d75a37ba549eaf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","hash":"fe2489ea57393e2508d17e99b05f9c99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","hash":"8c915cd8772100c3b3a4cf1dd0f13141"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","hash":"0c42a29db0996b7d74b3f07560d669d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","hash":"78326e9e1cc2cd7fb0fd3400580b8497"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","hash":"46fb99dbb9a3eb279a14292c7a2ab6f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","hash":"57d00efb9731df717e74f763f9b72577"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","hash":"ac2880d91a3333c4d0e0b9a152bc7935"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","hash":"35c3a0e09f2dcf608b806f259c306883"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","hash":"698a6fc4361dd42bae9034c9c2b6cf7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","hash":"dbac7b1c74bd316f8411f75d43c00c52"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","hash":"8a5443f88214c3152f56a8a22f575f7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","hash":"f483e18d0caffec1965cc4fc4587bced"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","hash":"fb2baf298dad58d749bdaf4fc7d2c6b7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","hash":"5854a36494004175430d4b4355622d7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","hash":"4ae7cf672458e9048b8349c46c96091b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","hash":"ea191ed02800df2436f2ba4d1443acd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","hash":"7c57a9163e2c905ac90a6616e117766f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","hash":"75a750ac4a72e0cbc0915e941a5999b6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","hash":"ac8e4f07fe57a180a83a79d97030a4ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","hash":"b22f9d7fec12cc1b3c07d68eecbae551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","hash":"e8ab94e11d480f9f75e63e48dfb7bd3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","hash":"f5e9f8707b2850da3c9200b217963cc6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","hash":"bfc66f055c8ce27beae0b3ae05350318"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","hash":"08b4e67b157b8770f50c3e1593586101"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag","hash":"7c315c6fb1cab5ab624907011f583952"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","hash":"e090d08a99570e1416246ab66058c49d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","hash":"9d273d5a3c1851b0313cd949e7f84355"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","hash":"a1be5291e9ce315ce3e7ad6598d6edb7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","hash":"3ec266c46c85603471447b253038693a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","hash":"20c06004fe8ded0341d6b7d4ddd9fc63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","hash":"76df0f76487ecb24f1fcaaabd1fc8258"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","hash":"5345d700e34b8a39fc14cfa788794b70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","hash":"3de0b02c72ffa2dbcd4241d85896ffa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","hash":"c0da8171c63f0ab4e822dd094fc2c595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","hash":"101afb5724d465fef432403afe4af239"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","hash":"d3e8015d1a7bccc3005d76a069edf012"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","hash":"da1fc35cf373dff56586ba1d31254ff0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","hash":"ec5409b8e30f22b65a7eee1b00a12d06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","hash":"d0885097eb9ccba90210852d52fc83e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","hash":"677d8642864682752cf5fa1727f11e45"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","hash":"9de25bd91716e1d1dc40d622d4694542"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","hash":"e3fcfca0756d2591ba7a72d8cb8073b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","hash":"5cfb987e1a4ea727dbbc7abb10e087a6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","hash":"cab113513a4eaf18f43c2ff766115379"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","hash":"072675f16dc002f7be3914b33aa7d20b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","hash":"46b900fb75f7497e307a6213009349a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","hash":"04dd39d6f80a5425d8df2875f2833711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","hash":"1ba052cc7c20457f24cdff4d601afdd7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","hash":"2a24aacde74ba309d650ee8efbdce52e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","hash":"c96cf3ee77edfc9062087021323ef01c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","hash":"b95b66e84724047193f602210d547054"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","hash":"2c25776d2e769ec49cc16f5058c5c009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","hash":"7504c44d1fa6150901dd65ec78877be0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","hash":"bc1745cbace394e492a6f9c8050b91bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","hash":"d84f409f2f0e14c957e42d8c74175a1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","hash":"b2015570257a2a6579f231937e7dea0e"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json","hash":"a676c5fab258c180de51431377e2c85a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","hash":"f4963d4fde9ade847490b09b5add6c40"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","hash":"4d161916b3415cf41dd4e88b9bc495c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","hash":"d0e212b8f3ed7108cee45147dd0f565a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","hash":"7c18da4e6b74ad62497f3cd0d139507c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","hash":"b94fea6e4739a640ef5ab444cce2ead3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","hash":"2249cf40988918b481c0f2452a6f6430"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","hash":"9a963571e5d30e052aba3137cb08afde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","hash":"7d4e6658c86d17b6aad6ea88d538449c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","hash":"0bd83545538b43c50d41386ffe0ac02c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","hash":"e8cea99d6204f5bfb4d0e59002c95e39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","hash":"87232fd9fcb98fdb45b1c8e3450e0bd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","hash":"80c27ebf6b325589047ce9dc21922955"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","hash":"c449771c967516117fccd35f80fc301a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","hash":"c58890a97d5cf176bc4d91c6833662d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","hash":"bae12b316850abe40fa3c581a7dea21c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","hash":"bc8cb2656c892c7107ece225b2c3ad4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","hash":"3b563d880fda5f7afb0a177fdc4dade7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","hash":"561259f5f93b99661449b037a36e7d7e"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","hash":"c2c2e365f320e7c6db65bbaede9544c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","hash":"3b49ce9fe842fb8f8413f8de51949823"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","hash":"4d69882445eaa1de4c2e1555c9a08a9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","hash":"90fd9ee9e96f1bead7267f7ad93dee2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","hash":"88ea97c9aa108e7dfd5d70c21aa809ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","hash":"6c66821ec0d637772e147c298645e478"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","hash":"206b1db3ce5f7b9e5efd220712f8d391"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","hash":"6268ac9b947807a9c6e33f4e24c5ea9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","hash":"17adf1a85ae0d46ce1611f56796dc2c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","hash":"2eff7feead43dfce5967b176c1c0013f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","hash":"a6a5683319eaf061f2f8448162cb8885"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","hash":"0094f20a394b14efbe348499ecec7d8d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","hash":"4da8a7e66b441d643caff99f743d9f69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","hash":"8db17f20e0a12c4bb97383d8d4894853"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","hash":"2eb2de173e53bab6a0a033f89856eae6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","hash":"cb63d73a47fccf6996c81ace196d012b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","hash":"e501f7efeecfca84ff857bd4f80b3ec4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","hash":"a4d65554703b39f73fab92daa1a95136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","hash":"185880d58f40f0b6c9d6f549fc830da8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","hash":"5bd42c05ffd396b9c61d5a82739deea4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","hash":"4b4bb8cbba78e5abac9cf3a216769ccf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","hash":"d46d2121000866bd902db8a26fa1fc3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","hash":"2b77873b8c720bf68e043ce7acd96985"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","hash":"433b37dcc0e33393a88d42baea923fa2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","hash":"8553c507cc30d2d9144adb536fa7d338"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","hash":"e8f54db789c896f29242a5d5ac7ae742"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","hash":"2ffd4331d4ce18eb39bd200f76368dbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","hash":"809f1f0bbe7ee77e69f003952a5525d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","hash":"d97019cfa3be6371779fc0e65f2bc118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","hash":"088b09d02a0f2cafcd87b0fe5f66c83e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","hash":"cb454929d7810d3ee5aa5fc28283d3fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","hash":"0c2a39fe9ac2a3573ea263d944a7d4cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","hash":"0981d0ab711c3d970bf986b59e302ec3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","hash":"1b20a6e406ca8e79675b2ebd9b362d10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","hash":"63473e31f03ea66a38affa41fd783752"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","hash":"b062a8e2dade00779072d1c37846d161"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","hash":"32c008e9d504437aa016240b82566276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","hash":"a1767e0bdb8f6eaebb569c18166e3459"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","hash":"09678623b04063ee4667ff9d46c9adf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","hash":"b360050c2db89b25ecc98cecb0ef8155"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","hash":"77e65a235c67b7d9cbd8e34356b320f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","hash":"005fa9073603c7ee7b06d03658207e2a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","hash":"f13353269669d7b19e3768edaeda5caa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","hash":"2b5fbc54f77ca9c1e5ac90eb3c242554"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","hash":"201730b61cf27247fa4df16398e6dccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","hash":"32a7e3c5b9a8ba1f958c94f1c7ca6e36"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","hash":"f89e43c1dd5f54c745d4a22e7f629e62"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","hash":"7157fe770547a841f9b3e8f7b6765c4a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","hash":"a1fd89ba2ce1c781946ebc5f37479b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","hash":"9ef38c4477b39a88b44a7c9bb85add99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","hash":"2f711a88a049130159adb3f7867423c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","hash":"effb55ac95be419ba221494120497420"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","hash":"1fc60cea565f8ae6d7b4b9c645782ecb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","hash":"1ef43d7012623d3fb787b55f72fb9d87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","hash":"e8149b1e154e1576100fdb79402a824b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","hash":"65d7efb36f1c0981aeb1aa5ca2dc981b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","hash":"e134f845554105652ee1ccdee3595804"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","hash":"2a7b06785c3ebd6af8186adc2052947c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","hash":"52de52753447696c8bf45bf27bc1a8e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","hash":"3b0b3a91aa8c0be99a4bb314280a8f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","hash":"99f23e7e1e32cbca7a688f042454f8fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","hash":"f173549805fd3bdf5ab3b788d3861820"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","hash":"1c5b1dc918055cc35f7c0579f382e24a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","hash":"c2c3d1e678b282fa813c80fa6e6d7379"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","hash":"a54ea9c741a831aff5119d5eabf206b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","hash":"688bffad5a764522afeec286aaee8616"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","hash":"14a9b355cf1f98f9ec1f324162d14c61"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","hash":"cb1b046d23089a961b250ad318ffcd91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","hash":"87b38375a46d6b2fbdaa3ddf8e552593"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","hash":"c741a13227ee01cd4566adb6aae50122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","hash":"8c14eb65e1d80381cac744a2a237818a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","hash":"2d0c70561d7f1d35b4ccc7df9158beed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","hash":"fb5b7d622494887420a728198866de62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","hash":"18a3a7548a40186c8bd9a36c25d7b88f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","hash":"477b648fb07205e73ccb0e9a5e8182d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","hash":"9dacd3228ef8a541f6856788c1d4da19"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","hash":"0e7b89fb20f61bf1a1096942d0cf889c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","hash":"bfcb8efae16b9f03e09ee2adbac97777"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","hash":"3f5e8feebce49c954d9c5ac1cda935c1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","hash":"9f2eb24284aeaa1bacc5629ddb55b287"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","hash":"719246762bd82aaa24c45a11bebbf000"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","hash":"b6bcae6974bafba60ad95f20c12c72b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","hash":"87ed94159c6cc382cbe369889adf2645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","hash":"f09da56112028c2b23759b17c2128ffe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","hash":"b388f6cd7e3b2f6c3521e5d0b74fc259"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","hash":"8a451864f1a46f19700d46fc5d4cbd39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","hash":"510b78d72d59a887b1ccc3deb30c44c1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","hash":"99dd7740cb7ac228673d079cdd12490a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","hash":"8589d430ab74676555c4aa6b8b442af3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","hash":"a44a613f8bcb13fb3e767a28823e5b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","hash":"a6f0f004f94c7166d2961fba341637c4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","hash":"51a93044fe489d37f82f368179e3d302"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","hash":"fbdb7eedf9f48948986e303f68e36ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","hash":"132d11deea43a7c9373e6bce97682c94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","hash":"126c63b07d1b425e904b735cdac85afd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","hash":"1abea6cc1b12dbf5811214407d955b98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","hash":"54e62d85cb0f15d21b510ba8342615aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","hash":"80ddce0052f069a2e288b0c11c9fe0cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","hash":"7ae1eded395747066e88e3923431bc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","hash":"91480f38df85d142de41e5bd0b154d3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","hash":"22b26473ffd350c0df39ffb8e1a4ba86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","hash":"c48d8168694f9c8218f2e6389b4d09d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","hash":"12e47d3f4b91a456d52a5e37594dcdb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","hash":"ecac9109d190060de510a811e0b783d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","hash":"bbeb4833d5502fa794125abfb1594527"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","hash":"9fabe78c4b21534ddc8d87708a5b5886"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","hash":"7c559786dbc1bfbb63a595a7ae3b8e9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","hash":"848a60a453f4e7e02f5b228458f9a20e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","hash":"c1da5c2e88951f9ab78eb684ea6ea005"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","hash":"fe48bdfc31adc4f7e657c36074278dca"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","hash":"17a240d950bc31f50b35a8fb23845352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","hash":"c8c2d53f5b106c425a786e68d00b6415"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","hash":"6e800790e7858e8e1cdc73c8cc09d719"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","hash":"04d38c19b0c3dba61b730122d76ec4d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","hash":"c371589e60cf6e82a661a1f9c1ef8176"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","hash":"b03280f49bd251d8320667ffc244c613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","hash":"b7daa46d4dace857514806769032077d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","hash":"3d97078429fca38a278d2fe38c9fbef3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","hash":"90c1fe2fd81558e20d588ef846f68876"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","hash":"e4973bdb8ceac8b88cdefee5f56f0fa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","hash":"5444a9f54bf4158d83411e292ca910d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","hash":"8df20838abdc91f514eff154c048d540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","hash":"9c4a94ccae77fabd6ced0b6fb26bbcb1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","hash":"8e5ed035694ea390cc586a3c717b9f2c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","hash":"7047d90229336cb3caa0fff5bb3dafa5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","hash":"eba156339bfb71b71dbe1bae4eac2f10"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","hash":"23c3171f57f3520aebc7df7c99927a2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","hash":"ca0af41a91bd98a37c4671c6756df973"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","hash":"6c54f90e0db5f42a13be6b3efeb4a04d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","hash":"ad8955cdfbda21f8ebbc146a61748940"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","hash":"bb96a0e40a5198f25ff6a8b1dfd62a58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","hash":"b5f0b0da99e8a07d58c21ae071800404"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","hash":"e9f9ff747a67938d4e7642c652d52393"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","hash":"0c30a117b0d1fd5c94980510832b81d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","hash":"27ba12c7559ee577cf56315e3d5cb5a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","hash":"d8491440d986e091060129019477bb3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","hash":"3af527494c80e2ab83f264815e12592b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","hash":"559dc718c8701191a2b6ac606aa086c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","hash":"8226499d3c76c47d34329002f95ba90a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","hash":"701de2754bd553eb8fd3f8b90cc9b927"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","hash":"7dae504d7c9e221fb01d1901a657407b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","hash":"8ef064ff25b632dd064e478366b75af9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","hash":"4bac9f63bc7aa9c5e5104179e86c64a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","hash":"ead64055657e29026f4f52cccdf90cb9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","hash":"a341c761d23d4c69ef0ae27385658e27"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","hash":"07758299bbd2261712f35210ee2f645b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","hash":"ff558eecb6fa7834f9f31113f0cc723a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","hash":"4814f7a1c3a7509ddb71fa9f13b2e169"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","hash":"4f5b3d095e8224c7a1749a2de96e5f79"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","hash":"8abcbb724ffa31d2cf158a95c588db62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","hash":"991902b33f1d81c417b707a41341ed59"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","hash":"00b08c6f5f7fbeb394b25a63d950c395"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","hash":"2da6282b5a33b9a2218f60399505dbfc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","hash":"faa0ac8a10d4bbddf1ff7f9126a11f2b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","hash":"52d0a7184d706efef87898ea7eef897d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","hash":"749be25c78d16a260f673757f8078123"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","hash":"c98d039d1ce1e92fa79f1039f0263385"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","hash":"eb7dbdce15d95937efbdc70ed6f37425"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","hash":"4511b6cbaa8c34b467724cd8753fd441"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","hash":"8440fe5f1989837b6ada359898e86c1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","hash":"a54fd4631b3a9d7164a178e5e276aa72"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","hash":"8d5f14224aba09fa1d068eb4385aace2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","hash":"d84ae47a3c688bd889f442426f39be3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","hash":"eb566da87862e7874130e9aa7dc10180"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","hash":"9ca4ca47452f1823249f746da7dd2b5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","hash":"71a9506357890cdcb2ff21d611c4a9f6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","hash":"9510b7a2f095e041d6b01024407d92ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","hash":"13db4f76c4c3dacee24311db33dffb5a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","hash":"63d58416836c36cc1685e1b404d4a1e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","hash":"49fbf9eb3339e21c5890c546bed68ad7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","hash":"01deb3f3bd9691f24aea50c4d7ff1a34"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","hash":"fff8e299112c38dd03e2e918a84e52c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","hash":"40892109ac9ef914afc5acee5b825164"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","hash":"d35b72b249d19f54a4cd6f22ff3299e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","hash":"326f2ffb37492fc588de76cf07680943"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data","hash":"8014bc594cdeea049da1190cd894479e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","hash":"c83f257da86decec9584473cf41f0ee0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","hash":"44274bbf7beabfe4118db68f399823b5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","hash":"020552519d966b598cd3bb17849a3a49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","hash":"61c71bdda6ca0e69558b10c76f7f2d0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","hash":"d235f51d48e43d80a46b35d3ac1a7135"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","hash":"6394f8ce9f77e64f3433a8a10ff11fc5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","hash":"c84c72c28625a46ce70ed3a8b7b1f134"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","hash":"0a6568148a914b28cdeeabaf131dd0ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","hash":"e54cc4c43086300a6e6c976bfcc4b577"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","hash":"101ff6d49da9d3040faf0722153efee7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","hash":"b0af2681de06f072c797fb66bab4213b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","hash":"9916a2d85ee324e7b395bec41a75db58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","hash":"b9531c458d313a022930a0842db8201e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","hash":"33f365e8e51713d9712771b0adcbbca3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","hash":"db799bf48af97b7c0edc93ad96b4a6da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","hash":"e40f20699182eb1de17efb2d02d1bd9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","hash":"74c6c3273b16f42b3fbba78169469f94"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","hash":"ea5416329e2b15ccc3c6ba2082e5b17d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","hash":"df941eca11a421d04edd92726e3a4321"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","hash":"43087afd2f07c2185dfff2ea8c40cbed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","hash":"c3df4e83c11e996eff52db97215801cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","hash":"e7c9c404d1d2e95afdf4becc03f3f1f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","hash":"789e79772bba1132b3efdb60636a3ccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","hash":"6656ba0c69fefef80b8cae101896c029"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","hash":"5184895d365f664a514993d279af93c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","hash":"d7da19c57ae21b84b31832940bf36c95"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","hash":"1649ee82914f6ad1fd46de466dc03378"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","hash":"051453bb7d9c8983ad2fb529b4ef462f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","hash":"bbc12110db0cd0fcb35a4d45d8c97f5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","hash":"286a67c1ee4d4fa64043f405f661426e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","hash":"63f89c285fda1a11134696c95a5d2c7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","hash":"a6f86b07a971f37494568319ea7cb2c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","hash":"116458bf79c178c3089f12f2bd57e611"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","hash":"f94fe4f82b1dd6f2eebfc0049563105f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","hash":"8388d5e13155ebde873438c26dc4ca33"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","hash":"1f336a83ee9c6cc00bf8a24d2376ebda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","hash":"1871ae3488fd813309b5d8039333de92"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","hash":"adb3d6068a5c45819a04bd2a6f3ab683"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","hash":"bd3e86d27c38dca6dccbe5ac5e7c7663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","hash":"b5b6d18d1e7d2f546507f52385a96d31"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","hash":"f487ad099842793e5deeebcc3a8048cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","hash":"261c95b385a12a314819fc59b03218e1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","hash":"38d7213cd28308ac1f0bd5d81544c794"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","hash":"81ba6d01aa27472e0e1beeadb760ab15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","hash":"65060cb085dab38fcd1a379510c78b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","hash":"ff2dc138db29ec45cbaf3ffd80a036fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","hash":"e09da93d64fbc8904258aa814d093447"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","hash":"a3cb494a3157a15b4bc6e112bd457b2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","hash":"13e3605e178c6c5b63b2ffc79efb6fa1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","hash":"4cb782b79f6fc5792728e331e81a3558"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","hash":"5276912c02c2652dae0fe549d6d4db3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","hash":"f0c6d5d05fbdc95ab84f1a63894b7be6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","hash":"e24d78f8b44fa77d94cee446aba26b69"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","hash":"61573e3ac2c590bbd1aa108ff2befe4e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","hash":"d7466bb710671e1babcb397057b89abb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","hash":"8117e1fa6d39c6beca7169c752319c20"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","hash":"41696c18e708950dccaf7cb4f5b7b195"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","hash":"8e9a282a7834275740dbac1f3d8f77e9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","hash":"c923a6390994ceeb31124b620be66886"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","hash":"1eb9c499979adc0aa7a4c188cb354fa7"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/app.dill","hash":"94ea66ea4527118e5e075c9eb2034858"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","hash":"550b84fb8387deb93f86f5f654e7fc5e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","hash":"aa5e38a67607d3ac92328300d453f203"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","hash":"ca6dcb9cea6b00d39a1deba4017fbde5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","hash":"efd86bd9a7183660b902f2528da33973"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","hash":"975c2b518f6bdf0f423f19ee2d20f037"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","hash":"d19d18ba59c99c56f5cd539e808ac093"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","hash":"e8b32b6d7c1328dfb1968caef8249452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","hash":"2f66fd533c14db9ae785e3fa83c39692"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","hash":"f75f31535e16b018e2a5f9a968b7254c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","hash":"01049ee9adcd36bdba77ebdbf08c8311"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","hash":"32f5f78e5648f98d8b602c6233aa4fc5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","hash":"21f20162e45e5a6ed9d59115951fff5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","hash":"692c5789339c99399c7a60abebed4867"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","hash":"4db80cc65121c34e697b03dee0d589f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","hash":"e0434f358d6cfe80754357597dda5e2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","hash":"fc6ac74a8ad779b64bf7e626552ecb2a"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","hash":"cac17f3e87ed4c54d051f947b087934e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","hash":"05778db9e882b22da2f13083c9f28e0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","hash":"9d1525a634d27c83e1637a512a198b4f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","hash":"e8ef425330dd4e0f06b8cdb9762f3d38"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","hash":"d4f2c32d896c5cb74142f43f86b908ea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","hash":"6a67d38bafe568f1b4047286d586fbbc"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","hash":"45e9f88a67f4bfb4010486becf9b6ed5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","hash":"d7393d6e408c5f8cf5af1efbf79fe17b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","hash":"d623b1e2af43bcd9cde14c8c8b966a8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","hash":"251708085912ebabc0559c31d7f9ef09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","hash":"c74d6bfe6ed9493e9a15a793e240491f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","hash":"ee68bf1c0349b8c6530da60950fa4359"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","hash":"d98eaef69fe0b763e12fde9bb4b63a8a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","hash":"c93f10f7ab0acf4285085b5125dd1bc0"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart","hash":"b8aaf6e23756468123709d97b2941714"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","hash":"5369274e0f2aea3db2ae228646de17c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","hash":"478e1071c9f577b6cabb8d72c36de077"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","hash":"f627691ae693e673d0a28ee10fa7ef21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","hash":"cebf7c8a42cf1ec0eb4c3cc0c1c9bd99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","hash":"e6b1d4b1f712225ec2e095ded085195a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","hash":"bef69459165c25c77ef86a22c5a37605"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","hash":"27f8ff5da1c6125dcc748d894d5fd5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","hash":"cc0ab0117e8a0a54ec3efe6d9251860e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","hash":"fb92f0b8decb7b59a08fe851e030948d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","hash":"8051a4ac9b61f1304162308056f35ca9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","hash":"d6f1398a30e5929b4deccbeb0321c7df"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","hash":"688492d1b07b6e1942711100803e8771"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","hash":"d236c79282a2d6cf63ec4d7097400744"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","hash":"c70e6da8344437d843e7eb009fd18da1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","hash":"700328ab0177ddfd9a003a8c15619c1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","hash":"39221ca00f5f1e0af7767613695bb5d2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","hash":"6aee7a8b65e3407c8a156fc94c3e052b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","hash":"df6ed53abf7ae705a620f157326aa612"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","hash":"0cb06ef1fbbec09f85b6b40cdeaa2f9a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","hash":"72d0ca199b14f8ad245f36eede78e596"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","hash":"58ed42eb75db18120985e92f14d67c0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","hash":"d731e1b690975788d014e6df127b2a9a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","hash":"3984ed91c254da74e99364eeb9eef452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","hash":"06e25506dd42326f711f5a02366048ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","hash":"1355e7c034fb490a3da4b604bf4a245e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","hash":"892528317c4253ae78167230f7d4beba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","hash":"0a7c8ea575635aba0b835cbf35892f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","hash":"507fd70b4d332ca05a060defc0a30098"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","hash":"7f0426ad53c7e79c8cd32d487e5118ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","hash":"3e2055944da449718bf0c26748b9d102"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","hash":"0d4ed62bca671639dab18b4b00e56c06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","hash":"daa0c9b859ed1959e6085188a703f387"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","hash":"ff8176887d706346f1adf9b10d93223a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","hash":"530313c1da5269e06b8a8f6166b905af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","hash":"838b1a8d04253966a27bce11dc98a30f"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","hash":"424391b8ac9623400ffc82b20fe293cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","hash":"2c91507ecca892cf65c6eaf3fbe0a7e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","hash":"b9b84bf4881138ace165fd23b39a89d6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","hash":"bfc483b9f818def1209e4faf830541ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","hash":"3e7ca9cfe22d164ba5ed448658327a56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","hash":"982726fdb49b5659a34bef13c46732cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","hash":"9ebddb9a0743de208281e764b9454978"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","hash":"d8221989cee24f5d97fddbb2a535b34f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","hash":"543079fc1d0c7864e7a179f3dcaeb44a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","hash":"ce98eef91a240aa9f848a1b9ab61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","hash":"9f9b79f577d9fdf4f20c17a26a2f1d57"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","hash":"3c4879149bc0b27f216987d9377b87a6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","hash":"7ec68a5bb3492720f51417187a4c483c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","hash":"1f408d5024cb1ebaff1bdc7d2d642b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","hash":"3f85e3e092ec589ddf41b6b55333a0ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","hash":"79b897f47b1a509090e36c269beee3c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","hash":"6d23ba25bcceae20030197d48ceef15d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","hash":"64a2261cfb426cbc1bf5f5985fed327d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","hash":"8a380c86046c073f7ca67b32ce9ecec7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","hash":"58a520f0e39b9e2df9528496ad1a2c9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","hash":"81a6a107cbfd5dc1c55af9a93189bc5d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","hash":"5e4449e268519798f85916834694e7e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","hash":"673c6fc6ba5a1499362db4bad82b3f10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","hash":"f4b52208f2ac65794c0722ae22b2ed5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","hash":"bc24832d7688f6f72fb58ca8955b25ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","hash":"8d98dded771d32c2da930062f63dced4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","hash":"c29035e43b5763692f19fbe5887474f8"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","hash":"c22dc25aee98f0025778b81318f57e35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","hash":"c7971cf1277d543b2ed589e71c15cf56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","hash":"a8f2c6aa382890a1bb34572bd2d264aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","hash":"e2f7d6fbeb362176a24cb422a6dd8193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","hash":"905cf0b0433d17c9fff9598ca1e5a815"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","hash":"acfd72852e16d10d8797be366c796133"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","hash":"573ec6f55c4e9da27e0e8c6b69226069"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","hash":"b69f3e8fdd39060d1bb88769c6d5f731"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","hash":"c5e481f1a4ef788a50f4aa68fb4c0d7c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","hash":"92a9dd086197603283733846748c6096"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","hash":"564c7ccd87ca886f79f40db2feda663e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","hash":"fbc5d5b64be654228c88182f2f0e9f1e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","hash":"3fe26220f09819b16b15bfd2aec7696b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","hash":"690a90a4ee81c904e39ecef223720fe5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","hash":"f47fc7f755f69c147dbc7d4cac57f0da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","hash":"9e46991f24156e5892fd1b8c3e0eedf5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","hash":"3002576a5d7eb8e97c03a9fb8042a016"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","hash":"0f829dc142100de0ad5bd4320315b191"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","hash":"903d9a8ecbea5b745da3432d5197d5bf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","hash":"383362c943d53b1e9cb7db84db0427f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","hash":"eab95de42c453db7187ae1bfefc4a481"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","hash":"2c5cc6e45f5ec0f541dc47f326986431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","hash":"e81341d4c5ee8dc65f89ae4145cf2107"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","hash":"3bb0652e163327c58784ce2a2b882a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","hash":"0a120ca3aa00e2a367ad33648b49a1e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","hash":"31bef5128dcadbf7d3e638769a5ccb63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","hash":"02880799cbd012d681a8d898a1293e67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","hash":"f6da0daf266187d3ab6ea8ae16772aec"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","hash":"488d308a0cd45bf398708879506a91e3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","hash":"f63bc535d25a8bcf67f0acc5d71c9252"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","hash":"1770aee1a90fac6336e3664811736471"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","hash":"1ac261c28033869c8bcf9caaedf74f6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","hash":"490acbbb52ad35888f5a430a33c0650a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","hash":"9cbb91c1b2e44cbd834663485bf49156"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","hash":"bb644b5f4cdf7ece840f06a3017bfe54"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","hash":"32a992510b885844e290cefcd5d09ce4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","hash":"311f57c9efa242be81f6bff4085b694f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","hash":"82f04582d6435fe28d0de62ac8646291"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","hash":"deccbe5e50fd283d096b079c3830b295"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","hash":"ae88281d46a999e81dd2d63a97bad90b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","hash":"2d616b6da53dd3a5bdc86abaca3656c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","hash":"d678e87e7d7f75d05ddc20a878f28313"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","hash":"fd037bb7e5e0417b1b57b2589825c2ed"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","hash":"a64d04b7a2bbc33416829490aac5ad1f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","hash":"1f2f230ab658e9a20934e8821367f21d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","hash":"5a938eb8e6d0513d8448fe7adf46ffd6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","hash":"9a7022bcfa03c67d126e948062508201"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","hash":"457e52ba79ae9fce0c83b6b927999443"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","hash":"b699e128d86de6c400fab59bf5ed37cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","hash":"ea534a294d4f0ad77470def3a308074d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","hash":"18149c55b175306f694fd72c293e8a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","hash":"3bd1bac4de6d891e214330108e1c981d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","hash":"7b5d3028b282375b07c851ec6378a9f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","hash":"ad3271502e45fbefbae041fe273fcc78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","hash":"acf1a155ed6a399140bf98cbadc44ae7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","hash":"f2635eeaaf9379b39e0c48d203b260b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","hash":"1f4f05a739274cdeb88c110bc6561ae8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","hash":"1a1eb3e518bd114812bdfba4bd5f9b88"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","hash":"7776cb84483a65e3498638a8beff3cbd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","hash":"7e48865e3a52a9c6fc91567a38b0bcef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","hash":"aae04d9745367d56247b3ec312b3e293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","hash":"cc825b21e6408725444839a8cf7c1a59"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","hash":"e68148de255875ff9116acca5baea852"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","hash":"e4b34d42cb8324d0485b25f1d3d9c1bf"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data","hash":"40337392a05861cf7101bbb7627a82a2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","hash":"a39ccba3f049cbdd03baf58f3ada518f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","hash":"89957c2f5ea5ec355763d9f11292c31d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","hash":"1c25a05549a494efabe301603e12708b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","hash":"8e034e45f13ce8b73e41fdb6cca61eda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","hash":"35d2717563d5dd00e0ab617e09f81f7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","hash":"91202b337594bdb4b484c2edc999bd71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","hash":"2e897a9797ccadaa99c58bc96f4a1579"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","hash":"d280977d9f2ef2bfa87ed3f1a79cebc2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","hash":"c0fe6462e3a08d6d6afbf4f66130d494"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","hash":"1d2e6a12d8aa883fa1fa8f893d4020f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","hash":"7e38424729d139f4ac1ff5183cd59303"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","hash":"42cc52074bf3141c7247f972797790e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","hash":"14c5e92c3e535ae197e3d7b784ba98c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","hash":"26bd7410bad665cd40432c609e68e6a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","hash":"9701dc524a39fdc327239fea530ba5ff"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","hash":"03f36dcee465715c1854d772cff3153a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","hash":"b259b177c1515fa5820f8213e12fa75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","hash":"0f4cb9768fb17bf7a5d45753b15a2092"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","hash":"67a67689c5e814c245beae89edfa8ec5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","hash":"9a478fed4f2f15993c892e33f6fd766b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","hash":"0f4062e6adecb15307af04936ed11620"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","hash":"dbf4f1e95289bc83e42f6b35d9f19ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","hash":"06631ae8e7ca29e992612634b7d3cd13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","hash":"7608d7808a2946263f05be6a6ef8a380"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","hash":"131899d6899385466c5c59327fd335a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","hash":"35c9371cbb421753e99a2ca329107309"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","hash":"08fd4267e134da8246d879f2e0690f32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","hash":"c8030797f5e00da5da18972f7f5c199e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","hash":"81077a53c1678d32bb002301d64d0548"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","hash":"c359a6e952958e57c58e53ead868196a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","hash":"7f4dc5e612a2925e1f1c0cef8061d976"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/animation.dart","hash":"b3dbc4e6cac78b2c99e3aa5e9e498ea1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","hash":"4e84d0303aa781634ad57d9b48af9b00"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","hash":"e053a4d625695a213cd7cad71553d131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","hash":"ab372d30d4bd7bb5e6647f2366297367"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","hash":"054bfcd73a86c30af1991fffff345b06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","hash":"3675358158b6f10be4f0123bc1c01238"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","hash":"f70e9fcb5bea790c73d51431ae8e976f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","hash":"447b270ddd29fa75f44c389fee5cadd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","hash":"0d00a012348d802a099ed222dd200d3c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","hash":"441044fd503112e85b6dade63f2bd1a0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","hash":"90710e516bb97142b02e2fd5553bf85c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","hash":"170fe4655f45b54388ab850399d92895"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","hash":"51e2008bb51dbb90407c3647c4ed2406"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","hash":"51fa10cf30bde630913ff4c6e40723ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","hash":"e9cfd387e25a97481b410a866e285f5c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","hash":"ebb6556f0ed9f93f8b9de389cb10c2af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","hash":"bc45e1baf7e4cea03c09368d65b32338"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","hash":"c6fe70279c1fabcc739026bb9cfb2eb8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","hash":"f5e211d8beeb6fe549de90fbc48a4a35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","hash":"e85b4f3cf370581b3ef11497a9a5bce3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","hash":"2cea8c8bd84e28a8e8b7a655e35ce643"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","hash":"7ef61738fd4e99b34b3379c2f6cf3141"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","hash":"e8a46aad9b09df8e467cb1c6829ff35e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","hash":"973f29ba555dccb1b2450b3831f03e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","hash":"e4868d928bcb5b32093caa9f9720c7cb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","hash":"e8a1d220d69629ac54c287b5f096fbf8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","hash":"f09d6224689342ce8e364e6ba5fea1c7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","hash":"323be88f9396112a89f1f6dae5b16551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","hash":"f18395f9df21a2e56aa5f8f498da93d6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","hash":"0858e2f9683c0d9bd14362f037286f37"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","hash":"386a816011478bba19bf6973ff137cfd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","hash":"08f6a3a08249e2eba137da4752e72bb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","hash":"88e82a2807d91088b55f29e00aa780d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","hash":"a4452128d10ae55b5e2c701edda87207"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","hash":"7525ba8f2df029fe86fe08725d060d3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","hash":"b5c8f4dba868efb80ed69fcd5a7d3f07"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","hash":"7c221e43840709e4bd38f48c2a909989"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","hash":"157add6fe297fe09245c48cb7a918b41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","hash":"167092121b204ecb5c86516fcf26d05a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","hash":"bf44bc2460fa88f9386f3b647c10bb80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","hash":"63c306461db5c60830794d4def8b7e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","hash":"1312aed2c5e59964982eb7c85c7430c3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","hash":"c7125c517aa8cac22da28ac6e36eef79"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","hash":"6648a14df2e64bca06988745d17f14e1"},{"path":"/Users/decode/work/flutter/bin/internal/engine.version","hash":"6065afae0f787ef56cf3c06e17cf8c4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","hash":"9343b5b49309dcad89c11b6151526278"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","hash":"aa4b5c0cdb6a66685350611b29ca9d38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","hash":"f9ba98375098bc49c41b86dd961e2a5a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","hash":"0f62d58980340b028d6c7a94848693ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","hash":"5ea6f3bff5e08b2791946afb64deadae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","hash":"7f34290bd4853b35be31761b6c7d3864"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","hash":"805d0b620c3aa5e672740e948a1f4d9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","hash":"5e568872f7db50efc3ab16b3deb3d72c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","hash":"69d3c18c01655ebb418fcff2327c10a1"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","hash":"7f6c267be8df852637226ab1708d5417"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","hash":"cbfcf5c82f1f0857a2300a2d17b71cf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","hash":"7d9bef290415f78dee8bc0fdd47025f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","hash":"309fca388c4496bad5fbfe0dc5f79fdf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","hash":"206832bc71a4fbdfd4a077b6f35e6333"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","hash":"3843f59e1c5febcb8443f79f1e8d4eee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","hash":"8a3919d89072fa859d8d30ce69a89448"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","hash":"c0e496ed40e0cb9154c5418657d2fa2e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","hash":"d14136e243131a8fe9357941eca1bd70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","hash":"5b539bedaf82a69ffd5c93fe8cb16465"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","hash":"187d36be28f01a2fb9747610a07b786c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","hash":"016c8ca1fd284bdbde5784241f314576"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","hash":"ef25c8f7ff1f10a43eecb0a0f44b38ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","hash":"3a2d505268f5446e5f7694776b69b407"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","hash":"11fb74cfad9b61d3e33c48500bd644c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","hash":"2981afacc7a836ccc661fd0be2eb0681"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","hash":"b324a1cbdb9418b4698cfec22372af7d"}]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/App.framework/App b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/App.framework/App new file mode 100755 index 000000000..b233e4252 Binary files /dev/null and b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/App.framework/App differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/app.dill b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/app.dill new file mode 100644 index 000000000..048c3685a Binary files /dev/null and b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/app.dill differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_ios_bundle_flutter_assets.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_ios_bundle_flutter_assets.stamp new file mode 100644 index 000000000..b70fdef0e --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_ios_bundle_flutter_assets.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/app.dill","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/App.framework/App","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Runner/Info.plist","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","/Users/decode/work/flutter/packages/flutter/LICENSE"],"outputs":["/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/App","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/Info.plist","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_universal_framework.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_universal_framework.stamp new file mode 100644 index 000000000..d0609331d --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_universal_framework.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/App.framework/App"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_unpack_ios.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_unpack_ios.stamp new file mode 100644 index 000000000..41a50ea70 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/debug_unpack_ios.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart","/Users/decode/work/flutter/bin/internal/engine.version"],"outputs":["/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/Flutter.framework/Flutter"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/flutter_assets.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/flutter_assets.d new file mode 100644 index 000000000..30ea69d96 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/flutter_assets.d @@ -0,0 +1 @@ + /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z: /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/pubspec.yaml /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/ios/Runner/Info.plist /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json /Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf /Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE /Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE /Users/decode/work/flutter/packages/flutter/LICENSE \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/gen_dart_plugin_registrant.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/gen_dart_plugin_registrant.stamp new file mode 100644 index 000000000..e48ee97ae --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/gen_dart_plugin_registrant.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/gen_localizations.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/gen_localizations.stamp new file mode 100644 index 000000000..1b2d28c4e --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/gen_localizations.stamp @@ -0,0 +1 @@ +{"inputs":[],"outputs":[]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/kernel_snapshot.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/kernel_snapshot.d new file mode 100644 index 000000000..cefba90ac --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/kernel_snapshot.d @@ -0,0 +1 @@ +/Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/app.dill: /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart /Users/decode/work/flutter/packages/flutter/lib/animation.dart /Users/decode/work/flutter/packages/flutter/lib/cupertino.dart /Users/decode/work/flutter/packages/flutter/lib/foundation.dart /Users/decode/work/flutter/packages/flutter/lib/gestures.dart /Users/decode/work/flutter/packages/flutter/lib/material.dart /Users/decode/work/flutter/packages/flutter/lib/painting.dart /Users/decode/work/flutter/packages/flutter/lib/physics.dart /Users/decode/work/flutter/packages/flutter/lib/rendering.dart /Users/decode/work/flutter/packages/flutter/lib/scheduler.dart /Users/decode/work/flutter/packages/flutter/lib/semantics.dart /Users/decode/work/flutter/packages/flutter/lib/services.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart /Users/decode/work/flutter/packages/flutter/lib/widgets.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart /Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/app_router.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/navigation_service.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/join_service.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/meeting_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/preview_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/main.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/receive_call.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/utility_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/home_page.dart diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/kernel_snapshot.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/kernel_snapshot.stamp new file mode 100644 index 000000000..51a3ace62 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/kernel_snapshot.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","/Users/decode/work/flutter/packages/flutter/lib/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","/Users/decode/work/flutter/packages/flutter/lib/material.dart","/Users/decode/work/flutter/packages/flutter/lib/painting.dart","/Users/decode/work/flutter/packages/flutter/lib/physics.dart","/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","/Users/decode/work/flutter/packages/flutter/lib/services.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/app.dill"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/outputs.json b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/outputs.json new file mode 100644 index 000000000..30a411c11 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/b684ba75def7eb1d46425208935128f1/outputs.json @@ -0,0 +1,15 @@ +[ + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/Flutter.framework/Flutter", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/App", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/Info.plist", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z" +] diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/.filecache b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/.filecache new file mode 100644 index 000000000..e9e1bee43 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/.filecache @@ -0,0 +1 @@ +{"version":2,"files":[{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","hash":"6eee5dad1885940a6f6f69328059bd19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","hash":"77fcee8d4672891b204152fd54ec8143"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","hash":"21db6d3de86086328513d01b906be30e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","hash":"ea2d0e58ef3ab5bb9ac77120ef2c1b53"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","hash":"89cdb68e09dda63e2a16d00b994387c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","hash":"63190b810e77cfebf3de760baaf59832"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","hash":"d97a506e94a9f098ecdb1483ca9707af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","hash":"27d4fdebf2e43cf2714e652761621e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","hash":"8635fbec89c2cc03404a2a3233d31bbc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","hash":"f6a7f0346e2863d7c1a206c16b1ab6f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","hash":"3e7ed5e99c20e893e0b98e6465f6be6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","hash":"f8fb1733ad7ae37b3d994f6f94750146"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","hash":"72930239a9378ce977a67804fe0a7c93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","hash":"2fa5623be6e2680ff9befb49dbb5102f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","hash":"cb595dc1e32ae1c22e55b0971067c9df"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","hash":"ab35fb35a2d6cac70b40210ff2304fd0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","hash":"9ef39006752e689eac18ae6928857c3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","hash":"1112185143b6fe11ce84e1f3653b2b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","hash":"fd2a12edfd4b98e55a3b84dc04d027b2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","hash":"44919c3936c0c4f7fcbd5caab7d1a713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","hash":"96b43446a0218f1b99aee172484cfcaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","hash":"1d810658458f13613a213d5d8cb8fe71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","hash":"334d5b02e9aa5fc27e87fdf1a49140cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","hash":"9d633da4b6e0a89f1c7cd8451b8fb9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","hash":"563354fcceca6f2c834a5707c2cd9e13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","hash":"99b0752bf6b7a9261349ee9307cbeaaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","hash":"5487cd3f918d930318d60978428d44b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","hash":"81859a4dbd7cc98b9025645ba344330b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","hash":"0c48f1cd824d3a7169a8cad9385b2147"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","hash":"9422bcb42f545a3d7fad54a0559effc2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","hash":"cbd0196f25d2f055736beb3052a00c19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","hash":"1a773319137363e711d5189770d4517c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","hash":"ecc7f9827d87dcf6cb23310e70449242"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","hash":"4beb2c0ba82d1328030dc7ff68932b22"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","hash":"6b92d8f12a7fb46649297e25d2cf2b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","hash":"e6a9736eaffdc7d075f11980955fd5e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","hash":"4af79c5c69ccf0cae6ab710dfb84b125"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","hash":"ce9abf977da56e384357b8da18e68cf2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","hash":"d5a62fdcbdcfbb765af4b2c4c30adb47"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","hash":"d83aaf70ed7e980bc976d12b8f31a5c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","hash":"328ff975234df68963cb19db907493ff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","hash":"c4248f249f3e54dbf2f102c850065769"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","hash":"8ff79ac46e7b7c3daaab8484ef94370f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","hash":"d755fc45af3dc64d82c199592ba93faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","hash":"d6a5413022b7739de38c1d30783ec8d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","hash":"418e1664a31b32fc7ee9b7c90f31a67c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","hash":"f9144bb1e0700c5e3341cab1dd29235b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","hash":"a3aa38647fd73e6e6fa27450d34c042f"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","hash":"08d323a9150badb65749c7e42ad05b8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","hash":"0a31dcaeb18fc2ec730e799a0bdd0397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","hash":"8197b93568cea109f4eae8aad4626090"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","hash":"96acd6f3aa049313e96a021442c0efd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","hash":"a3e505f75958f86716a4b6e3f79c3be4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","hash":"9a74595c2e95795b6c96d74f2b6bcca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","hash":"5850e52a3ead8b05860e0f35283a43fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","hash":"fab8d6d1b0e81315a3d78131394d31e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","hash":"2c5d1ee339121f9ae1445e93c3fb5486"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","hash":"3d637d82142ce722be3fff1b564a3a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","hash":"698b7b5743b9cfa0aa9d08de156d04b6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","hash":"b3d51ec0dc553b1b1e883e087d5c73cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","hash":"532a272d043c3dccd91b63d1b428dac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","hash":"bfbcdf98f1800a358974017a5a244b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","hash":"314ccd23936a8da782622ec4912af301"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","hash":"29ae3edba712168bb4fbffb16b2f6aea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","hash":"2ddbf2700473f3391a4be0cb9202e299"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","hash":"b7ae6a21a9a41ce292d8ce22be59102c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","hash":"fd48fe375392a882e621f95b35695b1d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","hash":"f38a99a51f4062e7861bb366f85265d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","hash":"78c252bf8f53d91680bc4ce87a981f7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/material.dart","hash":"88af7ef9b0a369709fd232b83942f5c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","hash":"20956ccacef6e41926ba780a442ded4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","hash":"e6717e820802970026778f01d782a208"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","hash":"565097e561f05b1bfab2b3e5bb1bc476"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","hash":"187f4d908f2120bbcd31bf3090dff5ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","hash":"0982f3329e89cc9a5f58e22b8b9f522d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/painting.dart","hash":"0b006f9af878b6cbe7e6fbad8ad05390"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","hash":"4e7d79277a17c733fd4e47fedc834b12"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","hash":"0eef32ab9b2cf423c48e89f2dcd9bd6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","hash":"7cf915b7566678369785993dd6d97018"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","hash":"6cefb715fb27bae29486a74cc607f9db"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","hash":"6b1e7684c07bd93ed9433f5be917a56b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","hash":"8ec8806c9098aee315949fb5ff5bc0fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","hash":"33f1d84eaf01ea35e4d6bdce4c81b862"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","hash":"dac77e15418b6e85ba8237aa7af31c09"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","hash":"18c04a8f8132af2c1b1de5af6909025c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","hash":"462df06e63c35293d84890049542ddce"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","hash":"42f8bce392a960bb25a61723f20af8d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","hash":"73a1264f4048161cf1e020b447b014a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","hash":"4e87dbcd00020a3ee9f14722e8c75ab3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","hash":"38e17b28106d00f831c56d4e78ca7421"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","hash":"9801ff6632dd0a6938381b54bc163196"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","hash":"792cf5ae893012a7a57a7de753af1110"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","hash":"bfe86f49f28a9914bd7144dbb3aa6721"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","hash":"7b7fcd3f415f29a260e0d5f15c7d9565"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","hash":"e93daf002837e58e2c7e3348062e6ad9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","hash":"265da611bd90e5b3f22b0e399086e1a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","hash":"b99c4e1adbe94f8d8b8a34b18b5582d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","hash":"fcd0c8e5b3533ede79824283fd8c1717"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","hash":"cfd6ab50f4e4587f01bea319b728817e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","hash":"27a56f8a1d0cc8cdc6879f7415ef63dd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","hash":"a3068ae1637db004de0bcac7634f398e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","hash":"a9d0ac8febdea9748b1e274e2453730d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","hash":"9f8044c6733c0e51933354ab35295e29"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","hash":"eb1f091dfc256bc49d734c8cea9210e8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","hash":"500547c3b30c59fe1ff3c4b559e52e84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","hash":"a9cf3c682c9b87a18b053337bd6c25f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","hash":"ffc342f17ab331ffaa598a60d029c81a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","hash":"2cecbc714aea63bc341bdeecb0a1d079"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","hash":"645e6e5a42aafa161b24b84bd41fb0ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","hash":"adb6794ae38420a92bd5acb06371b491"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","hash":"b9a5134d01050fc5c9f07d40c68d30db"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","hash":"dfebc31c7148db77769412808653a26d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","hash":"5ca0b5786bf63efd4fc72fcecfe1b36c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","hash":"b04282840d037f7e4943e8ec88a12d02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","hash":"9f52d5022bc55475a52ec44288a06e32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","hash":"e3cdba21732fe10342e87f1c90c75b77"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","hash":"733eb3422250897324028933a5d23753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","hash":"abcb2d6facc18b2af070cb86cbb1c764"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","hash":"671d1776ee902611d49f2fd8cb0cc926"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","hash":"ac1235401776e9d976fcae06c4a1bf69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","hash":"39ce21a3ec5d12c9ef5f1e25826775fa"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","hash":"c5d0f45d6de3d145586b46a241a8baa2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","hash":"0bed54eea911a00191131999c1d9654d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","hash":"d975e51852aa1802c81c738dcb4c348d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","hash":"c6b4e0361b3e5080435faea02182ce52"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","hash":"65b026cff392b7d45d6389e48f773d66"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","hash":"005d333eb3e7be6129b49f470bf2a6c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","hash":"6f79b9f026e6e1088cca4c0fac700dd4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","hash":"04343e5e00f2d4a6a59ceee530334dff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","hash":"5fd3fdb47733961793df2747ede9f8dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","hash":"cc1b73dd41313e37b411b814e333bbe2"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","hash":"ea4e1dc2a5c695efd31b4f944aa6f2ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","hash":"8504cc2dbcc3473a3f42005a04f802b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","hash":"b41739c7771e51de19e76067f9a2671f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","hash":"c32808b4f482b38284e56ea62fd8fcf5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","hash":"e3ed79a2455f7742d0f030dc4a7f7097"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","hash":"9bd1ea1b5932d9ddcb2a49922c96bfc4"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","hash":"145f2173cdc142488f7858e01cc970d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","hash":"034db2896155ca6ffedf49a9b6447708"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","hash":"90d2e3f81c2871fed636143007914657"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","hash":"9325b94e09a773e59eccfedc0dee4711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","hash":"362b1506a336f9a85d0eabb816b63060"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","hash":"3dc027f858c390ed73078fb86ce17bdb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","hash":"edb8edf3942edaeab666e53450efa2c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","hash":"80bef275fa3274c803905212efaa81ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","hash":"5fca18b5c21ccb54bb45fca9a8c230eb"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/AssetManifest.json","hash":"a676c5fab258c180de51431377e2c85a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","hash":"b8cec7a5e5d9ccffefa0e7539e92e49f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","hash":"45870d790f29284ea39915e0b2e4ecaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","hash":"288419bf7d5c385c3e0f777da93f9e75"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/app.dill","hash":"9e65ad6efd5fe293b8bc8000d68d044a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","hash":"f84a756607dcda1883de021ac706b6dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","hash":"4a5960383439d4ef8fe8b42450ac3be5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","hash":"476383869aff7b87579a7753e47722d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","hash":"96a77b3df76ebda77a5525db0c94a40e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","hash":"ca775fd1da8b4c902a08d53153ec4ab1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","hash":"aa2543ffe35df101f33108e6243f5b9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","hash":"4ae8e4147fb1b7f552f1d6c428ef77c9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","hash":"1e4b9425e7c56b52cd233c8b17fcce78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","hash":"60baff7460853877cbb929f66b052733"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","hash":"c703d5a115a88c99fc446006b39e554c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","hash":"07b8cb7ecb64e1fdb5d81b48b4bcd829"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","hash":"30b1ecc00d3e12d33f3f5f3861fbb816"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","hash":"ea66c182859f2263bd2be879287d7325"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","hash":"0fa41fe32675f159259d614ff80ad5ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","hash":"36b6d958e428191d36c3fc7ff3f272af"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","hash":"55699f42160ec7cd28e59b3d85b16679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","hash":"57dea595cd79ae393b4b195d632cafa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","hash":"9d79df38c954cb1d6aef9a622fb16826"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","hash":"f5679fafea18b2907b3995e2f751f15f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","hash":"1af4ec1307aa8270fb0739708f0c0882"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","hash":"319c25a79e3bd23b58ab78b5a0aa0d34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","hash":"6e26bdc5ab4d4d183549b8766786c663"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","hash":"49f7081dc5d9a05d4fc221fbfcfaba04"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","hash":"257ca4608e7d75f1db8d4c3ab710ac70"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","hash":"96697a47b1bf47f8a0a957b3c095b8b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","hash":"c4f6ed7cb2df39d4e4c5e73512f0e27b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","hash":"60791527ef7b7b0e4bcf56106682aa99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","hash":"bd1315cfa157d271f8a38242c2abd0d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","hash":"99d5ab829b70ca98223a892d2d09a553"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart","hash":"c517fb54b3d66b22988ad7c8d07c6f53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","hash":"2da52edd1b7a1dcc8df44ef7e4601583"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","hash":"fda9c6f48f58c23eab466cd8565a77fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","hash":"7050c8c94b55eb51260ca54708b460fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","hash":"f646bd33e4b4047f7cbfcd5960072e4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","hash":"0e9ade359ff29a3a17224025ea6bfd30"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","hash":"e7255e0049813e935232face99f33ef1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","hash":"26d4445aa83cf6b5cce2fb52c6f3674e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","hash":"e7a50fb0ceb5c66e2988808e21808aa6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","hash":"fe52344c0c5470d7f044c347de68987e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","hash":"f404c13ab6ba7fca8a465852af425026"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","hash":"251c46a18cddea6662d3285c95e7e991"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","hash":"974d0c452808a1c68d61285d0bd16b28"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","hash":"7ad4b1f7d7435272c14803d189af6d13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","hash":"9b336c2a5b6668dc801b1d8c89124b1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","hash":"443fe4357544b85c13ef051cf37a602f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","hash":"c3234cde75105b7fb54ae124e1af3e93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","hash":"d20e1a7a4860303669f49b2fcf70cc1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","hash":"b1360160e39a2f36567fb0df8ba7e03a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","hash":"cce72b7435a0a5aafcb3cca344af00e2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","hash":"ed6bc3c2d3f1ffcbdcea972d430440eb"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","hash":"05b02a903db9d6845d22e98753e081c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","hash":"bd4687a32363d17bbc130e0af577152c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","hash":"2c822e790480edf5d56f0b6001bb05ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","hash":"ac9cc8c75e7732738ac8deb81fccedfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","hash":"5019b5d158fcebc32762c014fa2c9b0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","hash":"67d4bb390f36e86565a02e8437511790"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","hash":"c9f68b9d0206a1a71be33f572d419b74"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","hash":"114f4cc9fde49fc429c98ef77f626431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","hash":"cdb411d670a094822c46ead81fc1c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","hash":"188d03c92376ce139ce247b0f9b0946e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","hash":"03372d734d84040c509f3cacf8315edf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","hash":"263d65011d90bee92deefb163c823890"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","hash":"a1e4de51bdb32e327bf559008433ab46"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","hash":"215ea407318b75782d0a36692e036ca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","hash":"ae5863ea476e0f897d69f2342c85437c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","hash":"5f5c07df31f7d37780708976065ac8d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","hash":"3c72e68db8be4e65cb349ff74568eb53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","hash":"d62b3af98fb22fa468d83954bf069d5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","hash":"ff2cc2a4a374dafed8b1d437480a6f07"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","hash":"cf72bd613d277b76bf935e6c5bfc157d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","hash":"db4d1d27ac8f3c67e5c3e8209d2827dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","hash":"11565ddf9ff6c5542734e969d7abdb9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","hash":"7bfefcc0929d945fa61bb7870de1f659"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","hash":"811f24def860b7ba8a50bf101cca1188"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","hash":"5bd4f0c87c75d94b51576389aeaef297"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","hash":"c22745b15d4a47feb3c75857d8d9e0b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","hash":"5275d424aba5c931a30e6bd3e467027d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","hash":"2430a12d4750c3c76ef07d29bb6f6691"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","hash":"98947dc53131e00bf0eb82564931fabf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","hash":"a641dfaf4d467277c7075e54e33dc55c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","hash":"359388897ae53df8791213c31ef05fe6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","hash":"4eb115890ef287afe9c85387313602fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","hash":"fd597da8144be9d29dfc1d1ff0733dcf"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","hash":"fc5a943b4066ed396263dcaa72d202c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","hash":"22843b6f1d2688461f7802211ecd1836"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","hash":"b1f861676f6495e6b884459f0d1ce964"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","hash":"351ed98071b53d3c2e98d376f2a65a74"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","hash":"82030078ff5d06d4efd4970a53c03669"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","hash":"0d86d4ba2e01e5e62f80fcf3e872f561"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","hash":"74b9d525d5d35a3f13d7da102d6ddcfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","hash":"14271dedbdbf4826f17d0dc67aaf4d14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","hash":"7697e9da7ec5cf202868f4335cf03549"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","hash":"e6c901b6ad02eac173f31cc971b5b703"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","hash":"7fed4fc7352633413ea4f08ca1087df8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","hash":"2dfc9e555b9df3380a6502bdfab9527a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","hash":"a457593201de333a2db90ca058632293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","hash":"f4b67c136a2189470329fd33ebe57cb3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","hash":"59241e0339f42c809368fc054b767aba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","hash":"22f170a8dc9abfac2942555e83589e1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","hash":"652ae9f598ccacec05fab019b21545ad"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","hash":"d8ac599f1de0f55b47ac48f3bff96af1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","hash":"857c8e3b5e2aaec115da9d5f5dc48c32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","hash":"63301a1f08f8a8b9808b22662f4c1bba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","hash":"9886ca25d16f34e46171e428c5014d21"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","hash":"d0da5ea7955f48054ae624e16528193f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","hash":"b935a1b9045bfaea3990a510732d5824"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","hash":"80e7f6041ae080a76c34cbb7a363fc1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","hash":"2f874d84d25897cae53e33b4dbfa3350"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","hash":"d2a2d8377af7f577a4e2b4fadc6a638e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","hash":"4449a9ff2f8ef7121f4e0e47a6cf4bb6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","hash":"3ef55cc59bb88a61c8bf5f1ea2faadf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","hash":"356b3a7986bcd450e76a3fde0d5c6e0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","hash":"355cd0132946f4de06b53d2d53d0f608"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","hash":"68990009a2ffd358f279c0941f5acb15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","hash":"c23a0415bdaf55efdf69ac495da2aa9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","hash":"14acd577a81cd5aa871c66f430b95d97"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","hash":"81e9a073bd391f4db986dc7bef2f63a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","hash":"e7715c9d0c6652b0ed4cf68026a01618"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","hash":"8abcecb81f99bbc024b3ed169c86b95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","hash":"a2e5169f4b87d1c004d984b1a5653192"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","hash":"f158ffadca730ab601c60307ba31a5e4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","hash":"cb97666041e54bac4d71760123d6723b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","hash":"98bd090c9889935692ba3e10dfbeb355"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","hash":"bbf5b492c8e9be5dadd80d566cce37e7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","hash":"1e7180abd4c05b29d6f62162c16d57a2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","hash":"91d3fd03ed8299fe37d1486bd87ae6e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","hash":"1bc3a9b4f64729d01f8d74a883befce2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","hash":"591e01a4cb4c63927e5c090b0d064505"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","hash":"a9e643bffeac9afc79115446b7cb7c9f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","hash":"9eb9cc50cf100f8006d01f4027d2f5ec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","hash":"3100acc654ddb312b6bbba471958fec8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","hash":"775ae14a90b86bb0668e9fcf6e6b1b6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","hash":"bb2ac94158003f0a8e831eb24259f495"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","hash":"142ba8c5793aa338f44b464329dd0699"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","hash":"b0f02b65ee2c6c7bb94c4ca6f1f29a6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","hash":"1071242e6247c3ce723a11943d44b785"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","hash":"bd5ab55eaa960294d369e4aa6d62ec01"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","hash":"ebb00b4189561689271ac8ff24815bc7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","hash":"7d69bfb2afa429b85b7c3d5075843765"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","hash":"df699735e3bcd730f16ce377d562f787"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","hash":"91cad0986934fa662f3e4d5593174581"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","hash":"8dd3f3f889e2a13598d1e7f392425e21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","hash":"ac6376ef781bca02855c6494af606fcd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","hash":"b29d68425258d60c8a5d005a3a42e756"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","hash":"002be4c072c0cc5c5e72b5ff6d0c490b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","hash":"e82a9b67ba33ae635b9b083ef147fb9b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","hash":"8c3ac5572a7395ff0d93be40536e79e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","hash":"2b3d562385f18f088a55dad322dee674"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","hash":"6e00cb0d78bf0bfd57716b6f925d1947"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","hash":"3c69df4cfc2d7e997dfcc783f5326a4a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","hash":"95586aad0f0a7b13580767122c5ce9d8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","hash":"24c1035fad541d49bd16d2b2bdd194b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","hash":"a5266adbd58aab45e34dc05f787ca535"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","hash":"4f683ee2e1b110e70e51ebbf8db44352"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","hash":"993df9991302d75495941ede09bf8122"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","hash":"2abd2c9a42d4caf2b4f1640d68b02fd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","hash":"5bd9412bfb7a85a944c17f7271c47e73"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","hash":"7fa73a415cd2df461af3c4b0439f687f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","hash":"655cab5b26d8bd0b3fdda75a616f60a7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","hash":"76a75a9f331e9c7b2c22eaf454299641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","hash":"2e7c0078255c745b56a2bf1bf7992df3"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","hash":"2b64d8bbdf8a7af016b43ea6d75fab37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","hash":"21bf6725b1fc374f03ae5b2cb46bd95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","hash":"7d2bdb4801fc8b3a110f36d5e5fa59f5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","hash":"638c6d804d20c1f83790f7f10c4af408"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","hash":"e5e651253aded8004c5fa54b6bb659e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","hash":"e3dbadbe1770d097ca122e6b5f3cc541"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","hash":"91ec123214e148442cb5c4cec58da540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","hash":"30d8aa5cd9bce4059a61d3ad5a5f432a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","hash":"e6cc47e6123c91543e86f0c9983c26da"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","hash":"6a2092bc6e531cf53fd4151ac189cfd4"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","hash":"01dccfcb76cb49108f19d82eaf90e822"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","hash":"f365fc9346ed92a347bd6659be254ab4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","hash":"79640e9b38fd9ad1126240bb2d3e5f7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","hash":"32c8f2d4dc53cfe56f5fa637be2c52e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","hash":"1379bbaf280401527c2248647c9c158f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","hash":"d1ab0260adff28180e562e884513c3e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","hash":"a03cc6311acd362bf8e7168e8d31da05"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","hash":"1696ca88c21e3e3b9545f2b5a4736f03"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","hash":"bba56d888d73de62a45f74323e448a7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","hash":"70aa5bdfead16e28cc5d09e987f3dcd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","hash":"c4f3f94bbecf67e4419ca6a8e97d8715"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","hash":"b48ba72a2d5d084d297c3d78e351036e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","hash":"3d54ff724ed3381d38104d6603406b8a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","hash":"ef83fcd13366d1d61c5dbb5c6aae5ead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","hash":"db0d5438467c4c7c0df8a6833226242c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","hash":"299bd3979d7999412945ac4e3199cdcf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","hash":"fbd23a681c22b782bdb58d139c07cca6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","hash":"148c709e17c08f50d3daa670b9f91f12"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","hash":"11e87c02beec338363a30c8f2f49c522"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","hash":"368a628be82e16cf17725d00a83f582c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","hash":"ce35872fe5da155b423c29a2ad542b7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","hash":"bf2738395eea842961e96f4203e03df1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","hash":"46b0774ca33285fd90e42ad91bf706fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","hash":"82d7c6fddc8b4938a5b95f203e86dbf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","hash":"8a2a6e194bea6968fce6409b962bf485"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","hash":"f4c1352de009ea30833ce873d8488617"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","hash":"119ed2f372555dcadabe631a960de161"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","hash":"4938fe6e2b4853e0b4e445e64bef9b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","hash":"7dc929eb036d49956284257b4e0d83d0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","hash":"81b2d2a545e6f66510367ee8d4bdbf51"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","hash":"856b5a01bc613989f211a44d67f2c4c5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","hash":"a0f3046203c24b39a0d5e7eb2e605cd5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","hash":"cfdbbeecafa9afe958cc12f0363e0f2e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","hash":"67918403456e9e1c17b3375ea708292c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/services.dart","hash":"b74bf26ae8105a75eb390fed5aaf29cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","hash":"ea7b5731a74e12ea2a31a21b8c188444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","hash":"fbac444a17bbc7b00af608ec29e0de4f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","hash":"36280c072e87476893ba441b9b25bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","hash":"df55cb6d988b8526b5c461f103fa9ef2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","hash":"8519987f955d72de5736f71fe1b3b96d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","hash":"bdb69d0ad764dcf2d42d8fca35fb9ade"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","hash":"2b6129307d0fa6394c84e3a4ac5136e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","hash":"b3263d1ee9aaef112570bcd31aae9ca8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","hash":"ff49202dfcd82a646d59d2012330173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","hash":"b80f25d51570eededff370f0c2b94c38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","hash":"439c16468a275d15a70b82809ebf6692"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","hash":"2b03803c213a3023f14b3e4849a52b64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","hash":"7725ee45d15fa56992b64ca1060bcfef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","hash":"881b5c11f52613550e6dbfcc45a2dc49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","hash":"c87e19f7c886263df8586146fe147faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","hash":"3e82e75a5b4bf22939d1937d2195a16e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","hash":"7ec268e37049e5c22e226c94df1776b3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","hash":"8ec86c62ef84ec90ddf5232d5843fd37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","hash":"b3531fa45ed93b73298389e029c9fa8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","hash":"739bb2e85022ddfb653590b93216942a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","hash":"7ce4485fb80ddad6acd68abaf480ecec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","hash":"8dfa8d9ef8888059e8c7567b5bdf037d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","hash":"fce75150bcb08fa104fded6310750474"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","hash":"aea224eef2ce1d7e59c255050e32538b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","hash":"3ffbd6fc0995838940a61cba006cbaa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","hash":"50298dec288c3e23499a59305365a9ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","hash":"35dab6b93fcd39905685afc374195190"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","hash":"567e295b927cce4c1ac15de8b037db44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","hash":"30a21255788cb6464ab33c6b40c932eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","hash":"9952a908c43edacce7d554bb12e4d9b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","hash":"2accc934e05b459de8fe3362f452102f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","hash":"81a875af62f7ff0581e985d509541da4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","hash":"ac54fa631e760555c0b0488ec73f7c95"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","hash":"3d26622e062df504e7d6d5ecf06c1d32"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","hash":"dc1130be2c52737b89868ba302a4bde3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","hash":"74ffe935dac1b387e33d85915c6bca90"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","hash":"58b20f802baf08f63dcbf4eae87a754e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","hash":"1dac993c7444b99a17f2dcf45acaca97"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","hash":"dbff400b121e6f844298946531d490a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","hash":"83dde9913aa4a689b698d2ba5ec7c676"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","hash":"c71d56c5b6118cacfaf95d34850b080c"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart","hash":"eb9a144b13a84a9120b59e98ca747eda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","hash":"b6f7217e92bd0cd6308e102b91a73ee7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","hash":"3e3350346bb70b12a7319e286f300f02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","hash":"dfcc453f5331ec6f2c70cda394065785"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","hash":"b76ebf453c4f7a78139f5c52af57fda3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","hash":"faa4ca37423c4ebc1968a9922537ee82"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","hash":"c324914d8137036411457678f3c69dc0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","hash":"69c59af240ed814583dc1635986b09d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","hash":"8778186a2505e7ec97a1085c9b26d136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","hash":"caac146b9d46a9d99ac6d588e06806af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","hash":"bc5f5368bd36c6369f2502927e08f4af"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","hash":"3bf69bfd4070ddbf2b64ce381c00975d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","hash":"05f3174f379af4ccd07fccea88487a40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","hash":"9a213a6ad0048a7638eb152b56018b0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","hash":"bf9deb76f520208269fedb1ee05992bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","hash":"06ab11848273dcdc3ea237593b87fe98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","hash":"6c7a86378419565d1822850ce87fcb02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","hash":"be8d91eefea139196c14b817299d181f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","hash":"6a2eb1282073818aa4ea64025b0d8769"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","hash":"0fc8427a68447ca1f35a819654791edb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","hash":"8bfab809ab4a9e9720f7a2ca9ae31a03"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","hash":"4a01954c6cb77f1d4f678b32ae946189"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","hash":"9925a270672aceb04e6ec7d0251bf73a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","hash":"6dbd011ca31387e3192d39c999a1dd9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","hash":"3b7aae008ce78bafe833b0b75669f461"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","hash":"a636b243377d435c9c285533d7db1f2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","hash":"c91107c565c54394f296558118413974"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","hash":"d3c7b8f49006b6d9ca76880dff779193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","hash":"684f3b90c3d984dee726e0dc1fc9732c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","hash":"00d16ae308855ddbf3762e4dbafd62d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","hash":"8e72f0f11bfc09b5d4d7791fd23c4227"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","hash":"6bc029efa11f69cb20f3abf8436e9088"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","hash":"6410a04c8e4b96d057e245179c5b7247"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","hash":"8986177ba204a808c603c35260601cce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","hash":"3ef978aecc3ea1c21fe37ce189d94a55"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","hash":"4ce6f3c41ded0f3794fe3f0106ab971a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","hash":"eade7bbc9bacbd78204c7ffdde55ddbd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","hash":"200c53b613dda088d30967fa0f689d53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","hash":"9ac903cffbc9fc815782d8e0bcea7e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","hash":"d5da49989b2fec96c7bf048f237909ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","hash":"89d496fd298521d95b4130a2ec9757ba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","hash":"1e3139880d4a71af922ea4538ed3a693"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","hash":"6e40ff949fd347e34e4827db183ab0f7"},{"path":"/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","hash":"93fccc5a13669d1df317968de5b2590c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","hash":"22aea0b7487320a5aeef22c3f2dfc977"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","hash":"f712a6d1a54fde3b5c6c41dbe7d8d06a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","hash":"cff2e2ada5d309a662cb05bb0b3745d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","hash":"090663daff7862a91458a7b8ca03e4f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","hash":"adccd59261d4d308580e3770cd0bd118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","hash":"ad4d82cd4898aebe901db7406316ab82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","hash":"d931d0c43164be8791bda3f70ee1aa80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","hash":"7d4ac5744bd9691f24fc3fc585a139aa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","hash":"331387ea77fae9eee85b67f5e31abf6c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","hash":"61309d04374f7afb4ec42e6bdc24e920"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","hash":"ebfa6ac15e746da747f5533d2a54c06b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","hash":"e7aa6d241a553e6e49b6128929a0ac89"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","hash":"8fa30dbbbc4cdd0646a81c9f5cea46f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","hash":"42074e2b3250cd1eab474db9941ed08a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","hash":"61fc5d47f00a6477275a3102fea8cbf1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","hash":"0aeb0a21974fb6c312f3478d81b51f93"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","hash":"32bea27a87f9093daeefaa52829f687c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","hash":"3f29e94ce4c6c07d1bcb3dc510b9feaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","hash":"296cef41d634abf372fb89f66b82434b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","hash":"124e39caf0044d319a0a82f95cce01d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","hash":"0491e1cca60da329c2e03c48abde07c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","hash":"9190f2442b5cf3eee32ab93156e97fb1"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/kernel_blob.bin","hash":"9e65ad6efd5fe293b8bc8000d68d044a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","hash":"0fc01b4e9beb5706e036ee4dd2a18994"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","hash":"bf3aeab9379cee97ddcc69d885a477f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","hash":"669c88cbef458b3b049bad5ff3c2dfbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","hash":"42e9d4d3462785bf39af0270d42722e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","hash":"6833d204d709534191c3e0ffae1b3f64"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","hash":"8fefc83c9b77e76fcd2dabbe8cef1b8a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","hash":"ab19cb2ef34f667e464bf6f7276a4090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","hash":"25fc1338a5818b8b96655ddd6b3d5fa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","hash":"7d3f2619c15bb38d440a3ae894893177"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","hash":"2ced89ae106e1607e18ce3ef17b79bf4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","hash":"09f75080be8aa63c54de8f0f13d49397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","hash":"b78151963bec1265cdd95f4e4c83a75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","hash":"38e9bbf0c4b9be4d755c28884b84b322"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","hash":"d1410f48ac374235aaad55cba40bc4be"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","hash":"8b6bc5fa08a6b7106be8385bef8d3f87"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","hash":"4d9855c5c4a2df0057ef4b01975075e4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","hash":"9c094b5d96bcff2f7c3ce85ce3101679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","hash":"c458aafc65e8993663c76f96f54c51bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","hash":"60b4523b7d94f2184414a314335fd486"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","hash":"0778c4eafda29c528f4a402f09dc681b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","hash":"31c7443c821ddc575659a119a00bb42f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","hash":"bba71a5811a4c39e16cfd7087e7d5f82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","hash":"d069d474f3092042e67cd7de4bdb82ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","hash":"686731748d53f10cd1bdd7b457113206"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","hash":"cc930e72835a0bc8e575042197dbcfce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","hash":"ef3c172e10ae4e723ca920d42664a09e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","hash":"49f0f0e91f5b1be29100e9d755a0db02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","hash":"917487cb133bd9030e72e0e06856f5ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","hash":"12fd812a55e344d79f493c9c78d3e6c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","hash":"479493da08b4e2137fc162ff23bef99b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","hash":"9df03a340058a4e7792cd68745a4320c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","hash":"ccb08191f9bcfb4f1a62504278ce3a1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","hash":"1f334b50f4df781bbbfab857581c3540"},{"path":"/Users/decode/work/flutter/packages/flutter/LICENSE","hash":"1d84cf16c48e571923f837136633a265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","hash":"cfe784116ec12e5b030a3a909043f0eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","hash":"84e5f15faf70cd8517f45973b9e93dbb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","hash":"1026f587763defb6fb1eec88c2154a3d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","hash":"0722b5d6745ce6645d6caf63b2aedd89"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","hash":"7216ecd94f9f5c64538f12d35206414b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","hash":"e7a14e1ca3a2e91ab267ff401ce30bfd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","hash":"8559baab97364a51be134a959392660a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","hash":"11ddb14d335c7abe7d01544d689a9cfc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","hash":"83111e0bb0ef4128feae2edf7166be2f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","hash":"fa6839623ecc7d14a4396269172b75fa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","hash":"11a634821b3bce05dac94f3dabe52a75"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","hash":"d17e0458ef2b4cdffbc13c8b6b441a9e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","hash":"eabaa11e875f30c638dbea199dc82f44"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","hash":"40fa279b08807ed54fc6415e40e74890"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","hash":"5beb6330c4fbaf6bf4abd034e6b7b67c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","hash":"a2a594ac094ed456446650f38b32cc3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","hash":"b71ae933bdc407aa375dba5f378198a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","hash":"8ebb687266ac064712bb7ff7158d106f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","hash":"b9e3ed70ab5e8c760f86ccdb79a5d039"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","hash":"b784d4742c3dd4477e99f44c2a254907"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","hash":"dfc46bfa781540b08b8225ac9a0b9b29"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","hash":"06ea9940aad3bb36f23d75399f50cc25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","hash":"e6131583e11852cce5dc36b190644131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","hash":"43afda18b80de74d64e5858c6e99760f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","hash":"fb2d46e6b265c0c0ea1af0e6eb6c0b16"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","hash":"24072c05f67aa1bd35a3389621d80c25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","hash":"2e8b626fa3b55a9701a9e465056b3c34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","hash":"6a0fa6360b3aca8deb85dc7d88176eb8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","hash":"3ef73748f32e082c00f63c8ba34aa377"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","hash":"e9156196a451437aec06485acd41e3a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","hash":"95c52f75b6732050b2b87ad920f3cf14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","hash":"62da8696885bd25977675ac4f7f1aef9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","hash":"168044116891b9bbe45f3d5f7ed816e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","hash":"531d1d96bce7aa59a6109c02ac538cb0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","hash":"6b9e435854586ad0262f2df15faf9652"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","hash":"d4bfff67af034e60b49e5d8c762d827d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","hash":"0751e731a4a73fbac2f26a98ce39f8ad"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","hash":"a3646639b0d0ef7795bc7559e7b991ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","hash":"580a1c9361f66db5377d1151704dc77c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","hash":"2a0b9a600ec09eae15ecb49408c970fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","hash":"7eedf91ebecf044f8689850d664468ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","hash":"c42eded8d81eb7061382c1b780cccc17"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","hash":"b12267aa6ec80a40cec57548a12debf3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","hash":"6a7cef816d662014b8fff82eafd4bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","hash":"45a20da2b86984fa0b29030dd190c75d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","hash":"49510c76201a05eba3c239a16896508b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","hash":"5ed8acdae7dd3501b64b0ff3e33c1f45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","hash":"937d30420745a1cd13700541c6622560"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","hash":"b0e54f78383dbb310229e9a2f1174938"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","hash":"26c15a7df63d4298c4b3951a0450e9fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","hash":"ffe0703cf67f433a0cfcc9b87e730898"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","hash":"6a65e9988b21768c80a49713778c2cd0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","hash":"46a3d1bc9290ef51b685700434b32b44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","hash":"8634bd2ef9d127a2cd8a1c6478924c2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","hash":"32efb5a6b870c4f1cb43ba00aba6351e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","hash":"f5af2a566953c579de1c0a3522632033"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","hash":"0eb0ac1ff445407819f2e7efafd0ec8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","hash":"b2cedc16db668bbe5b025bbbba69c6d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","hash":"8865f4ba0316aa33cd4b8e48694ae276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","hash":"8dcbf9c6d1b75bd1af118ae233e7639f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","hash":"c808f81414eea878b72b91f90e2858e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","hash":"6f02df4fb5ddc74004c941b6a039a1e1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","hash":"5e896196ff7ca3b52fffb0aa2866873c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","hash":"53d7f3e3fc0a4263c5c52c08eb9d107d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/physics.dart","hash":"6e29d5e69c5745a45214fe14da377c1a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","hash":"1f57869f0fe9efea648d71823e512b8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","hash":"76d339b78cfd7fa3b43da126d24f6662"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","hash":"e525624c777f81ae3166844928814efd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","hash":"bd34896b1432d6f707498d3df7a7c3ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","hash":"92822ea2edbf875f4f02ee0df917a511"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","hash":"d00bb38035b66ea4837b0e3836742215"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","hash":"fcfae3ecf984ee7d09081c2a7898dcab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","hash":"8fec1bb0c768b230066dba96aac40ff5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","hash":"2775727a104b34e20ef16dc30f5baeaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","hash":"5aa6d283a0d9edaf16e2987bba97111e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","hash":"a131fd3e2eeda716ebe839391d9af175"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","hash":"c5ecbaa65517267fe86dc298ec449627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","hash":"87e6007f2e4468fd84513f05cafcca2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","hash":"9e01d9cd61659f3d0ec6a98a92293d76"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","hash":"d85e44f8ceae50ad608a330fae758f0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","hash":"61c96752b1e816d7add82a5c9881a31f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","hash":"0457a594f4c14181f802c54252615c81"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","hash":"59d07e46049ce7af5b20d0bc808aedcc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","hash":"900f6993636e3b9ce2be24d38150722d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","hash":"30d1084d64be284ca139e2f082e18773"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","hash":"f76941994ddf30e398313421f1588d85"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","hash":"c75c1b6e41b334befa8fea8f40a1012e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","hash":"542c329c98e02e449591773d3c7a7364"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","hash":"51aacf05a9f117da54a963931538b538"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","hash":"711adece1d277c89c00ac553ca718ffd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","hash":"457092647c06b9d19ea071d0ef4fba09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","hash":"7f3b4e775cb1472996a0505423dd47f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","hash":"bf09e04ad2dae39eaaa1be1eb491ca67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","hash":"f3ed1f2bbf9255947413e97c37fc8170"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","hash":"b7a33886acf5e1ae7958146ee3dca9a9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","hash":"4bc0791cae09df89eaa7f2873b01d70a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","hash":"e3104f80561c2766e0404a2e86c1eb4b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","hash":"7154b3b2612920bcf76384c4336b75dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","hash":"cc30d285217e268fa4f3d630ec6c106b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","hash":"24c5cc49ad84eff945c729b1956b2cd8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","hash":"282eed7f135fdf9ac7bed4ce4faf2431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","hash":"42b5cfc1bbde00b6a98563e9e6967232"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","hash":"8ce0a70b958b78f9a2ce2e10d96063d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","hash":"b57fb186ac13e07cabcf79e9203ce0f8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","hash":"c6a45f573f549f569f65331bf54ec4b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","hash":"be7fd149b14f26a8cf158cc573e6f8b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","hash":"76f78a740b294787efda8a8aadd06648"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","hash":"35acbeef9c7f61e14ad7d0eb8a6aac3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","hash":"886142a229b0dda691ec6b45f89b6db3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","hash":"55d87de41cd8f095ff29b79280667bce"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","hash":"55380226455ea534ad3f21ab09fa4cae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","hash":"bfb39b98783e4013d9fe5006de40874d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","hash":"f51a4cccdeb513773de9af509f073dcf"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/shaders/ink_sparkle.frag","hash":"7f2fb21c467e6cfa00b4c27f4c784476"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","hash":"3418e2ba1365bf8820838eae0da072fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","hash":"987dfee9ed944d2007a00e521d4fbbe4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","hash":"d5fead7a94377fb7b73964d9144c6cbb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","hash":"4a64d3243f3e64ba6289d9c05d2d8352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","hash":"e87720fd4927910caa07008c23ddba6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","hash":"cd6ec63f7e53e31b1a8a5ed8a84995bb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","hash":"c3eb7baf4000b511ca5b10c22dbb3314"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","hash":"3e30d0b7847f22c4b3674358052de8b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","hash":"b1d7b10a451a7a5680c4473652e4e3c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","hash":"08c2e37a2ae282c740bfe820f238eca1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","hash":"876f767cba36d5e85f168016daf2fecd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","hash":"2cbd59c713944d0838677c099dee647b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","hash":"a3aa36a805436731699f39e6bf524087"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","hash":"835f074a18cdd0d574266ada0993083d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","hash":"3323850953be5c35d320c2035aad1a87"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","hash":"d3264cd95201959c47206467ced2cc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","hash":"011b312a6ef99efa780c4fa8136a56d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","hash":"85f5251e2d480320cf86ef4464727d2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","hash":"ddb4156cc60123adcacc058e16a149c4"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/isolate_snapshot_data","hash":"8014bc594cdeea049da1190cd894479e"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","hash":"e92f281d8b4f90867a8092a830c84e87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","hash":"9ac2b8f7c9eba819c8aee376fdde1ad2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","hash":"04e7480fb89755fcc5f64f7d80ca610f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","hash":"e4ee21048ab83cc50d61ac3784afa9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","hash":"96ed798bc7e796289016d6e02421839d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","hash":"5a24e81c5dfc83ccdcd39f7e55f04753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","hash":"6c79df081f525e2e5c9b4c40ce4b9bd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","hash":"ba03f9104fbe5f86eb4fe59a55a5bf84"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","hash":"34b8b9a525c2edf0191fbd9f925005c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","hash":"54363b635c5af0166a92a944822afcdc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","hash":"94bcda3ece81c51b940128304723207b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","hash":"6b50cbba82bb3e71726b42432c99fd3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","hash":"e067ca68c97d0e48e0ad590b2c8ccb98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","hash":"4b1ca4de6a5eee477b785b591d8a28f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","hash":"3007a85885c8729a7f98628f002c9439"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","hash":"ec004619fab55892c218a0adf229b561"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","hash":"d9c1075cfc34fe12d9eff9286ae10345"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","hash":"e71d390cbb4f63b91608b6ae8a37321c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","hash":"901fb8012bd0bea60fea67092c26b918"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","hash":"cd43cd94616b70eea89a1dd0ecd25969"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","hash":"141e9b257bbdd7538861bb084fff79ca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","hash":"da14b1fa0730fd08c362246e87f84f0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","hash":"6570ec9fa980d0f831f98aff35b3a1ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","hash":"12b5c836341ab1bc20b9f278f54b9100"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","hash":"eeca328d147c15b45c2f02a4093dee86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","hash":"c2f30f0829e63ccf0449de5982e324b4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","hash":"ab7f9e1c4cf503e32f4c64defec28a06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","hash":"1adcc56e3affffb23739c7c9d8a5fca0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","hash":"4a91b5cf945c2bc9e2a4c289df61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","hash":"43268fa3ac45f3c527c72fc3822b9cb2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","hash":"34a2904f465e07aeee9671eaa1841603"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","hash":"c5e89efad0dec2ca225efaba106f1009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","hash":"8d080b6e86801960351d947b03422647"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","hash":"1ff78858694fe6ce139b702533f09ac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","hash":"4b7fdaf8eb582d24d5ce30f8ccfeb47d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","hash":"4a7e1cc400a1f83dc5d388d347e0c1d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","hash":"4fb96b9e2073cadc554a25b36f55e6dd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","hash":"5100fa4b1b76b6c6bdb2377f34e88c98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","hash":"3fe6a46238f7699ff1039e43a3157acc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","hash":"b0024ed9cc48302fac493ce4334ad305"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","hash":"aaeaa3689d512d45aa36116404185613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","hash":"d4f2e5f5bf05006a98a9ec38dfb91641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","hash":"34805aed0d0a89fb081a78edc767bcca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","hash":"fb76e9ed5173ac1ae6a6f43288581808"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","hash":"5b7288fb6b6a565fae69135814261e35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","hash":"fd8e17ae72fb97a796493a41bee55c25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","hash":"4817a73df1c313cf6a6eb86774e7fc99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","hash":"e4323ae67bf5fad2112cf257b91b64d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","hash":"e3595ce1e159aa04bc09f69c5168c454"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","hash":"8a899256e5ac320579b269ee9b2567a8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","hash":"911148240fa2017589039df8adbdbd7d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","hash":"9eb00667159a0046d27b803bc3be86cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","hash":"7f8a376d7b21fcfab175a8adaf39773a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","hash":"38df7f10e1de0ca59f93b7e21e6428fc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","hash":"ce1cedd9270d5130bb4be660d13d846e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","hash":"3ebce28fe3575a15329d8dc59ee7ca4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","hash":"7a2ec4e09818130f24b840639231c64b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","hash":"4f36e38eaf3608ec18c70c13942510bd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","hash":"0711824f5f77fc221ca16dd2833c1db4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","hash":"555cb79bdeff77e5a998348ff955de91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","hash":"0bc946660b54448bb6d71993b97df709"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","hash":"fa29e9b0d579c1ea85e444240a4b9679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","hash":"8672eaa73f78b6304690ad35fad337ce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","hash":"528e19807cd069a9195f4ea136226cd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","hash":"d4d8de3042f1567cf3c3e4c69035e122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","hash":"b7943d020a6c7b63a2483143ecf5f6d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","hash":"665aca3a93721bc97cb6aeaae166ce98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","hash":"04d9c37a08f8b92fefb564624a931627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","hash":"3b694fc6637206a6a63f48dc6460d032"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","hash":"a2832c8e34e1ff435ac8591c9a182348"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","hash":"63cce47fa0e04330662244b0f8617d1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","hash":"81e0e3eb37bee6df055243fe36159762"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","hash":"34650bbb402bea0d9e0905df4adadaae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","hash":"cff85360d3ed608c6c25e665f1d62d82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","hash":"6c285209364e3e656137323d51ad39c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","hash":"9400739d7cb0134c1710855d1e75a996"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","hash":"b5172d7f7c209661c70b4574107cd774"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","hash":"4b5d82ddeb09bc46ae0e980616ce0109"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","hash":"8daf6ce8e54d46d3b37a3a7c61e393fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","hash":"aa4c24c010fb444c843ce3dc261a569f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","hash":"6566a35ff0dea9376debf257bdb08fba"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","hash":"1615400e2e1007e9330ef9c77db7fba9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","hash":"9d8a7927ca14b15f3473e211789eaa52"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","hash":"3f80d418ed7e7aec7e3dac422ccc4fda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","hash":"4c07a36206ab3ca200d52d7f24127233"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","hash":"fbab404ac750764afa92bbfbfdfa41e3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","hash":"f5c7e9c345ce092ba11c9706c0994f77"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","hash":"9e2dc24fb141c54394f013ec20569c50"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","hash":"6d567c275cc8a8f7488526dd82502d08"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","hash":"f40ee654b1e7792799165eb9d04173e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","hash":"b77671e5f5450772922cecb671595186"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","hash":"a485f5c7307db6bbba1d3388b528a770"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","hash":"b8e31732ebc0cea1a9300fb3fbfd1488"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","hash":"498db4873b660f741326f9c4061a2584"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","hash":"d079c201b77316f3b83b37bfb2f06a60"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","hash":"074b866f17aee09c76583b075e83cb8c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","hash":"fdc78d4e397e4c145a0b1c859715e6af"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/FontManifest.json","hash":"dc3d03800ccca4601324923c0b1d6d57"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","hash":"3d57a7a19c5e8b51d63231a87a9b6fd9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","hash":"959489b18fda284c434701586b43c66b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","hash":"1c65e4f1e29a4f9e5595513d9f11c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","hash":"fb71dd46672c822515f03f8f0dddbcb8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","hash":"7656627b51b07565889084020b5078d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","hash":"3eb370b59dae381bbca5781ca5f11add"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","hash":"bb3e5fdde3ad97a1e69402918c22f214"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","hash":"3344aee98c44f74ea6fb76c2726dfded"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","hash":"038416fd6da9501daae9bc9552db8384"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","hash":"b863a3ac709501ff91023cec155d5090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","hash":"8eb7f9d0796943d7edb0bc187df830f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","hash":"e9383af731a68adb6b314ec5b1068a45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","hash":"8a3ebe88566064230a8c53e90fb9a5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","hash":"2bd22809ea7f834be075f6bbc989c61a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","hash":"c7ad70d1b453c3200a2c25b6f5ca4604"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","hash":"9c4bb35923984b738cf58549005ae256"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","hash":"e2dc9f40339f72e3b0e309272c5ceaa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","hash":"0978d318570cd386e77d76932a179c4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","hash":"e93367ad4cf679639319dc0f2c7688dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","hash":"d832c1395fd093f66961840fb3c4e795"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","hash":"6d12493069f2abe32b2c0ce97b36f663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","hash":"9936f30321ebd2d53045f2c2bb4f91f0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","hash":"9e22ead5e19c7b5da6de0678c8c13dca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","hash":"726c40ba1ec292d536301fe64a18e83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","hash":"1b3e0df1cc1fdb0ff927760c5c7dceda"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","hash":"c089bcb51f4d22da206b5e3dc203c720"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","hash":"d3f74d846a99e580843bade81eec9e2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","hash":"0941b23f5841e31aad0d25b4ca38293b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","hash":"3f6fe76fd1b6ce55578b873386c13ff7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","hash":"7e3a59cfc4c1fe568c6bddbca28625ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","hash":"bf3e3c95be806ad85836f764c3b6c72b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","hash":"5acfa8abbd3e0d70f514ac65e7da5061"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","hash":"7f164e577cfcf8c8295947195cde2a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","hash":"79ed68fe678281de2561462a198ea941"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","hash":"298e2d00cd7707d6efa4de9bf430330e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","hash":"dedd3e5e4d23fb7908a54c94eb1c9adc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","hash":"9b9639fb37f3307761e011646c3a3ce0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","hash":"44b8efa69ec831d1a0ce74c20ecc27b4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","hash":"ad1c0bc683df393671fbf67b53068803"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","hash":"7c46db5c279bfd34b41aee4e64ba88f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","hash":"fab272ec14b6139c58bfc5c4ebe4ead1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","hash":"4526ea37fae95754b3fafdc5394475f9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","hash":"c6f8b638d691a2bba7362cd598d93ef8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","hash":"033c74f582e22e3337b9588f306211d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","hash":"823c66be3a8d17bc0c146c6b7f83062c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","hash":"db1783b3083765425632b2ca451dbbc8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","hash":"687bbf9e1a7bddd4b55174fb07cb6919"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","hash":"c9d67cc655fb9b02d52b68e9f039bc41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","hash":"51ffa7b452686eecd94ed080a1da4275"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","hash":"e2d2090c2a39f7902893e64150fe82b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","hash":"146741f6f87d6612ee7bbf6a6fa9c119"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","hash":"d9bab5fd98c4aeb46f0ee46466d27592"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","hash":"36cb8d9d9c95b1f5f64ca8f983d5c987"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","hash":"8bae075f6533238e997073d1c4342ee2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","hash":"2e0e0e4e8c040ded0b0a7a22afba6066"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","hash":"73b175f4bfcea68d6b2e6668047ffc70"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","hash":"4ed409d0342640995ce72f04370a33f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","hash":"598a75ad8b988bb14ac22ad62acabc10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","hash":"c0eab13b5f00b7d01f2e840be85b3a94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","hash":"813ce513d5d942ef02118ea7a8f0869f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","hash":"3c68a7c20b2296875f67e431093dd99e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","hash":"163f0d1be71ecdac16d6010f08d034a0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","hash":"3aaf04a3a450c1b6a144f84f3c778573"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","hash":"f901250cbd5c13750f08f7888069e632"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","hash":"a7ea1d5d956ca8f43c49a71c61b61595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","hash":"449e5e076d88fdec0781d58650e1b713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","hash":"a4a5a4186c28c8e4e7ef38558ae2fa14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","hash":"5145b27b3db429f9f1da26cfe563bd02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","hash":"1e0b9c706c2f52ef8c68d71e059b368d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","hash":"35a5d2ef7726ea70bf4081f7566c96f7"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","hash":"e7d4ad013f2bb1be7be15dd100e3c5cb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","hash":"1824c826f0f8d8a85bda7e1f0bb1dead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","hash":"d19848a34d5b4e5fe3e2ea44195d6dae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","hash":"da856751b95477557d7f15c5844b9bde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","hash":"f5c94ee1d5dde386af79c59872fd148d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","hash":"406792dd8d248088cd84be85cf7c62fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","hash":"c8515afa8e555bfec16e832598d4e5ab"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","hash":"41bb908ec3d8ec35ccdccc0ff08e09c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","hash":"9ce6595770687511a1c77ace6f55bddc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","hash":"33aa9632d38a7855ec7452224f80471c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","hash":"38dc31b8820f5fd36eedbf7d9c1bf8d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","hash":"5a0440a1ca131754cd92d8adcf93c8c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","hash":"4df1293c0ca4ba2371070c07770510a9"},{"path":"/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","hash":"6e92335d98b127f7240ff5294e257c26"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","hash":"fe6862ad950dd8849a69b71513319a5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","hash":"e0c22343cfc4e2772a491e04ba0d7fb0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","hash":"9e3b68924814d1e0d7f46f7ce20fa741"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","hash":"942b357f6a2c3f3bd946cb557426178e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","hash":"e6e960458fc831c2981997244673c139"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","hash":"8bfa3b5210d4eaa65b8f5520fb864636"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","hash":"a48ea636b7f2a32cdb71df23faa3451b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","hash":"f82b335ee8dd9ad923f619f83c130ecb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","hash":"056ba78280a44883e05c65a88771b4e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","hash":"9e813ae0507e226c633ee55b4381e444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","hash":"a5636cabd205b19f4d440f7ed4ab56b0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","hash":"89ac6e1a99054eb05805c6e7a6f58e6f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","hash":"8f4de032f1e2670ca51ce330a4de91a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","hash":"f12ebda2bd0dc61bafcb6669fa9ad431"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","hash":"e973169d55c1b0907b263fce8328bc84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","hash":"06c73ad137e5db31d7e6ba4258ac13c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","hash":"f0b223d5921ef09003438d729371184b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","hash":"95d8d1f6a859205f5203384e2d38173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","hash":"7913ef92f8723845c6b90719875b753d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","hash":"3b50c5a9642520832ec2c51c8efef598"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","hash":"1abf43dc3d3cb88360ea799cb926ae25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","hash":"9f9dd658ff05133ca61619a54fdcf728"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","hash":"758d8cac59a8861109cb1c0c455130b7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","hash":"ea88a0c45477c2656a699201e15fc8bf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","hash":"12bb0c18faaed956b27d405dabcd96cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","hash":"d75954340a0c7770eb9a149f7994598e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","hash":"e3a3e744d6ef8ddf1d75a37ba549eaf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","hash":"fe2489ea57393e2508d17e99b05f9c99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","hash":"8c915cd8772100c3b3a4cf1dd0f13141"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","hash":"0c42a29db0996b7d74b3f07560d669d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","hash":"78326e9e1cc2cd7fb0fd3400580b8497"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","hash":"46fb99dbb9a3eb279a14292c7a2ab6f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","hash":"57d00efb9731df717e74f763f9b72577"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","hash":"ac2880d91a3333c4d0e0b9a152bc7935"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","hash":"35c3a0e09f2dcf608b806f259c306883"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","hash":"698a6fc4361dd42bae9034c9c2b6cf7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","hash":"dbac7b1c74bd316f8411f75d43c00c52"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","hash":"8a5443f88214c3152f56a8a22f575f7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","hash":"f483e18d0caffec1965cc4fc4587bced"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","hash":"fb2baf298dad58d749bdaf4fc7d2c6b7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","hash":"5854a36494004175430d4b4355622d7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","hash":"4ae7cf672458e9048b8349c46c96091b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","hash":"ea191ed02800df2436f2ba4d1443acd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","hash":"7c57a9163e2c905ac90a6616e117766f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","hash":"75a750ac4a72e0cbc0915e941a5999b6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","hash":"ac8e4f07fe57a180a83a79d97030a4ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","hash":"b22f9d7fec12cc1b3c07d68eecbae551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","hash":"e8ab94e11d480f9f75e63e48dfb7bd3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","hash":"f5e9f8707b2850da3c9200b217963cc6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","hash":"bfc66f055c8ce27beae0b3ae05350318"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","hash":"08b4e67b157b8770f50c3e1593586101"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","hash":"e090d08a99570e1416246ab66058c49d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","hash":"9d273d5a3c1851b0313cd949e7f84355"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","hash":"a1be5291e9ce315ce3e7ad6598d6edb7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","hash":"3ec266c46c85603471447b253038693a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","hash":"20c06004fe8ded0341d6b7d4ddd9fc63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","hash":"76df0f76487ecb24f1fcaaabd1fc8258"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","hash":"5345d700e34b8a39fc14cfa788794b70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","hash":"3de0b02c72ffa2dbcd4241d85896ffa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","hash":"c0da8171c63f0ab4e822dd094fc2c595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","hash":"101afb5724d465fef432403afe4af239"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","hash":"d3e8015d1a7bccc3005d76a069edf012"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","hash":"da1fc35cf373dff56586ba1d31254ff0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","hash":"ec5409b8e30f22b65a7eee1b00a12d06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","hash":"d0885097eb9ccba90210852d52fc83e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","hash":"677d8642864682752cf5fa1727f11e45"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","hash":"9de25bd91716e1d1dc40d622d4694542"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","hash":"e3fcfca0756d2591ba7a72d8cb8073b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","hash":"5cfb987e1a4ea727dbbc7abb10e087a6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","hash":"cab113513a4eaf18f43c2ff766115379"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","hash":"072675f16dc002f7be3914b33aa7d20b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","hash":"46b900fb75f7497e307a6213009349a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","hash":"04dd39d6f80a5425d8df2875f2833711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","hash":"1ba052cc7c20457f24cdff4d601afdd7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","hash":"2a24aacde74ba309d650ee8efbdce52e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","hash":"c96cf3ee77edfc9062087021323ef01c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","hash":"b95b66e84724047193f602210d547054"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","hash":"2c25776d2e769ec49cc16f5058c5c009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","hash":"7504c44d1fa6150901dd65ec78877be0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","hash":"bc1745cbace394e492a6f9c8050b91bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","hash":"d84f409f2f0e14c957e42d8c74175a1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","hash":"b2015570257a2a6579f231937e7dea0e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","hash":"f4963d4fde9ade847490b09b5add6c40"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","hash":"4d161916b3415cf41dd4e88b9bc495c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","hash":"d0e212b8f3ed7108cee45147dd0f565a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","hash":"7c18da4e6b74ad62497f3cd0d139507c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","hash":"b94fea6e4739a640ef5ab444cce2ead3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","hash":"2249cf40988918b481c0f2452a6f6430"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","hash":"9a963571e5d30e052aba3137cb08afde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","hash":"7d4e6658c86d17b6aad6ea88d538449c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","hash":"0bd83545538b43c50d41386ffe0ac02c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","hash":"e8cea99d6204f5bfb4d0e59002c95e39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","hash":"87232fd9fcb98fdb45b1c8e3450e0bd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","hash":"80c27ebf6b325589047ce9dc21922955"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","hash":"c449771c967516117fccd35f80fc301a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","hash":"c58890a97d5cf176bc4d91c6833662d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","hash":"bae12b316850abe40fa3c581a7dea21c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","hash":"bc8cb2656c892c7107ece225b2c3ad4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","hash":"3b563d880fda5f7afb0a177fdc4dade7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","hash":"561259f5f93b99661449b037a36e7d7e"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","hash":"c2c2e365f320e7c6db65bbaede9544c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","hash":"3b49ce9fe842fb8f8413f8de51949823"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","hash":"4d69882445eaa1de4c2e1555c9a08a9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","hash":"90fd9ee9e96f1bead7267f7ad93dee2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","hash":"88ea97c9aa108e7dfd5d70c21aa809ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","hash":"6c66821ec0d637772e147c298645e478"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","hash":"206b1db3ce5f7b9e5efd220712f8d391"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","hash":"6268ac9b947807a9c6e33f4e24c5ea9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","hash":"17adf1a85ae0d46ce1611f56796dc2c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","hash":"2eff7feead43dfce5967b176c1c0013f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","hash":"a6a5683319eaf061f2f8448162cb8885"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","hash":"0094f20a394b14efbe348499ecec7d8d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","hash":"4da8a7e66b441d643caff99f743d9f69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","hash":"8db17f20e0a12c4bb97383d8d4894853"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","hash":"2eb2de173e53bab6a0a033f89856eae6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","hash":"cb63d73a47fccf6996c81ace196d012b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","hash":"e501f7efeecfca84ff857bd4f80b3ec4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","hash":"a4d65554703b39f73fab92daa1a95136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","hash":"185880d58f40f0b6c9d6f549fc830da8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","hash":"5bd42c05ffd396b9c61d5a82739deea4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","hash":"4b4bb8cbba78e5abac9cf3a216769ccf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","hash":"d46d2121000866bd902db8a26fa1fc3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","hash":"2b77873b8c720bf68e043ce7acd96985"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","hash":"433b37dcc0e33393a88d42baea923fa2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","hash":"8553c507cc30d2d9144adb536fa7d338"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","hash":"e8f54db789c896f29242a5d5ac7ae742"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","hash":"2ffd4331d4ce18eb39bd200f76368dbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","hash":"809f1f0bbe7ee77e69f003952a5525d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","hash":"d97019cfa3be6371779fc0e65f2bc118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","hash":"088b09d02a0f2cafcd87b0fe5f66c83e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","hash":"cb454929d7810d3ee5aa5fc28283d3fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","hash":"0c2a39fe9ac2a3573ea263d944a7d4cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","hash":"0981d0ab711c3d970bf986b59e302ec3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","hash":"1b20a6e406ca8e79675b2ebd9b362d10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","hash":"63473e31f03ea66a38affa41fd783752"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","hash":"b062a8e2dade00779072d1c37846d161"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","hash":"32c008e9d504437aa016240b82566276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","hash":"a1767e0bdb8f6eaebb569c18166e3459"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","hash":"09678623b04063ee4667ff9d46c9adf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","hash":"b360050c2db89b25ecc98cecb0ef8155"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","hash":"77e65a235c67b7d9cbd8e34356b320f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","hash":"005fa9073603c7ee7b06d03658207e2a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","hash":"f13353269669d7b19e3768edaeda5caa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","hash":"2b5fbc54f77ca9c1e5ac90eb3c242554"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","hash":"201730b61cf27247fa4df16398e6dccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","hash":"32a7e3c5b9a8ba1f958c94f1c7ca6e36"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","hash":"f89e43c1dd5f54c745d4a22e7f629e62"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","hash":"7157fe770547a841f9b3e8f7b6765c4a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","hash":"a1fd89ba2ce1c781946ebc5f37479b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","hash":"9ef38c4477b39a88b44a7c9bb85add99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","hash":"2f711a88a049130159adb3f7867423c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","hash":"effb55ac95be419ba221494120497420"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","hash":"1fc60cea565f8ae6d7b4b9c645782ecb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","hash":"1ef43d7012623d3fb787b55f72fb9d87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","hash":"e8149b1e154e1576100fdb79402a824b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","hash":"65d7efb36f1c0981aeb1aa5ca2dc981b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","hash":"e134f845554105652ee1ccdee3595804"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","hash":"2a7b06785c3ebd6af8186adc2052947c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","hash":"52de52753447696c8bf45bf27bc1a8e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","hash":"3b0b3a91aa8c0be99a4bb314280a8f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","hash":"99f23e7e1e32cbca7a688f042454f8fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","hash":"f173549805fd3bdf5ab3b788d3861820"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","hash":"1c5b1dc918055cc35f7c0579f382e24a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","hash":"c2c3d1e678b282fa813c80fa6e6d7379"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","hash":"a54ea9c741a831aff5119d5eabf206b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","hash":"688bffad5a764522afeec286aaee8616"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","hash":"14a9b355cf1f98f9ec1f324162d14c61"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","hash":"cb1b046d23089a961b250ad318ffcd91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","hash":"87b38375a46d6b2fbdaa3ddf8e552593"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","hash":"c741a13227ee01cd4566adb6aae50122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","hash":"8c14eb65e1d80381cac744a2a237818a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","hash":"2d0c70561d7f1d35b4ccc7df9158beed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","hash":"fb5b7d622494887420a728198866de62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","hash":"18a3a7548a40186c8bd9a36c25d7b88f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","hash":"477b648fb07205e73ccb0e9a5e8182d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","hash":"9dacd3228ef8a541f6856788c1d4da19"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","hash":"0e7b89fb20f61bf1a1096942d0cf889c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","hash":"bfcb8efae16b9f03e09ee2adbac97777"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","hash":"3f5e8feebce49c954d9c5ac1cda935c1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","hash":"9f2eb24284aeaa1bacc5629ddb55b287"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","hash":"719246762bd82aaa24c45a11bebbf000"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","hash":"b6bcae6974bafba60ad95f20c12c72b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","hash":"87ed94159c6cc382cbe369889adf2645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","hash":"f09da56112028c2b23759b17c2128ffe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","hash":"b388f6cd7e3b2f6c3521e5d0b74fc259"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","hash":"8a451864f1a46f19700d46fc5d4cbd39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","hash":"510b78d72d59a887b1ccc3deb30c44c1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","hash":"99dd7740cb7ac228673d079cdd12490a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","hash":"8589d430ab74676555c4aa6b8b442af3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","hash":"a44a613f8bcb13fb3e767a28823e5b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","hash":"a6f0f004f94c7166d2961fba341637c4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","hash":"51a93044fe489d37f82f368179e3d302"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","hash":"fbdb7eedf9f48948986e303f68e36ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","hash":"132d11deea43a7c9373e6bce97682c94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","hash":"126c63b07d1b425e904b735cdac85afd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","hash":"1abea6cc1b12dbf5811214407d955b98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","hash":"54e62d85cb0f15d21b510ba8342615aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","hash":"80ddce0052f069a2e288b0c11c9fe0cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","hash":"7ae1eded395747066e88e3923431bc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","hash":"91480f38df85d142de41e5bd0b154d3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","hash":"22b26473ffd350c0df39ffb8e1a4ba86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","hash":"c48d8168694f9c8218f2e6389b4d09d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","hash":"12e47d3f4b91a456d52a5e37594dcdb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","hash":"ecac9109d190060de510a811e0b783d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","hash":"bbeb4833d5502fa794125abfb1594527"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","hash":"9fabe78c4b21534ddc8d87708a5b5886"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","hash":"7c559786dbc1bfbb63a595a7ae3b8e9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","hash":"848a60a453f4e7e02f5b228458f9a20e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","hash":"c1da5c2e88951f9ab78eb684ea6ea005"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","hash":"fe48bdfc31adc4f7e657c36074278dca"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","hash":"17a240d950bc31f50b35a8fb23845352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","hash":"c8c2d53f5b106c425a786e68d00b6415"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","hash":"6e800790e7858e8e1cdc73c8cc09d719"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","hash":"04d38c19b0c3dba61b730122d76ec4d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","hash":"c371589e60cf6e82a661a1f9c1ef8176"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","hash":"b03280f49bd251d8320667ffc244c613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","hash":"b7daa46d4dace857514806769032077d"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/vm_snapshot_data","hash":"40337392a05861cf7101bbb7627a82a2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","hash":"3d97078429fca38a278d2fe38c9fbef3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","hash":"90c1fe2fd81558e20d588ef846f68876"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","hash":"e4973bdb8ceac8b88cdefee5f56f0fa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","hash":"5444a9f54bf4158d83411e292ca910d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","hash":"8df20838abdc91f514eff154c048d540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","hash":"9c4a94ccae77fabd6ced0b6fb26bbcb1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","hash":"8e5ed035694ea390cc586a3c717b9f2c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","hash":"7047d90229336cb3caa0fff5bb3dafa5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","hash":"eba156339bfb71b71dbe1bae4eac2f10"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","hash":"a3357450fd91d7eccf7dc39a5733fc9e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","hash":"ca0af41a91bd98a37c4671c6756df973"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","hash":"6c54f90e0db5f42a13be6b3efeb4a04d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","hash":"ad8955cdfbda21f8ebbc146a61748940"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","hash":"bb96a0e40a5198f25ff6a8b1dfd62a58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","hash":"b5f0b0da99e8a07d58c21ae071800404"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","hash":"e9f9ff747a67938d4e7642c652d52393"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","hash":"0c30a117b0d1fd5c94980510832b81d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","hash":"27ba12c7559ee577cf56315e3d5cb5a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","hash":"d8491440d986e091060129019477bb3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","hash":"3af527494c80e2ab83f264815e12592b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","hash":"559dc718c8701191a2b6ac606aa086c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","hash":"8226499d3c76c47d34329002f95ba90a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","hash":"701de2754bd553eb8fd3f8b90cc9b927"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","hash":"7dae504d7c9e221fb01d1901a657407b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","hash":"8ef064ff25b632dd064e478366b75af9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","hash":"4bac9f63bc7aa9c5e5104179e86c64a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","hash":"ead64055657e29026f4f52cccdf90cb9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","hash":"a341c761d23d4c69ef0ae27385658e27"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","hash":"07758299bbd2261712f35210ee2f645b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","hash":"ff558eecb6fa7834f9f31113f0cc723a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","hash":"4814f7a1c3a7509ddb71fa9f13b2e169"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","hash":"4f5b3d095e8224c7a1749a2de96e5f79"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","hash":"8abcbb724ffa31d2cf158a95c588db62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","hash":"991902b33f1d81c417b707a41341ed59"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","hash":"00b08c6f5f7fbeb394b25a63d950c395"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","hash":"2da6282b5a33b9a2218f60399505dbfc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","hash":"faa0ac8a10d4bbddf1ff7f9126a11f2b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","hash":"52d0a7184d706efef87898ea7eef897d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","hash":"749be25c78d16a260f673757f8078123"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","hash":"c98d039d1ce1e92fa79f1039f0263385"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","hash":"eb7dbdce15d95937efbdc70ed6f37425"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","hash":"4511b6cbaa8c34b467724cd8753fd441"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","hash":"8440fe5f1989837b6ada359898e86c1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","hash":"a54fd4631b3a9d7164a178e5e276aa72"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","hash":"8d5f14224aba09fa1d068eb4385aace2"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","hash":"d84ae47a3c688bd889f442426f39be3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","hash":"eb566da87862e7874130e9aa7dc10180"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","hash":"9ca4ca47452f1823249f746da7dd2b5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","hash":"71a9506357890cdcb2ff21d611c4a9f6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","hash":"9510b7a2f095e041d6b01024407d92ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","hash":"13db4f76c4c3dacee24311db33dffb5a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","hash":"63d58416836c36cc1685e1b404d4a1e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","hash":"49fbf9eb3339e21c5890c546bed68ad7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","hash":"01deb3f3bd9691f24aea50c4d7ff1a34"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","hash":"fff8e299112c38dd03e2e918a84e52c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","hash":"40892109ac9ef914afc5acee5b825164"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","hash":"d35b72b249d19f54a4cd6f22ff3299e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","hash":"326f2ffb37492fc588de76cf07680943"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","hash":"c83f257da86decec9584473cf41f0ee0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","hash":"44274bbf7beabfe4118db68f399823b5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","hash":"020552519d966b598cd3bb17849a3a49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","hash":"61c71bdda6ca0e69558b10c76f7f2d0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","hash":"d235f51d48e43d80a46b35d3ac1a7135"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/NOTICES.Z","hash":"c93bc1cf721aa7b4890cd8b37807e578"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","hash":"6394f8ce9f77e64f3433a8a10ff11fc5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","hash":"c84c72c28625a46ce70ed3a8b7b1f134"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","hash":"0a6568148a914b28cdeeabaf131dd0ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","hash":"e54cc4c43086300a6e6c976bfcc4b577"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","hash":"101ff6d49da9d3040faf0722153efee7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","hash":"b0af2681de06f072c797fb66bab4213b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","hash":"9916a2d85ee324e7b395bec41a75db58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","hash":"b9531c458d313a022930a0842db8201e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","hash":"33f365e8e51713d9712771b0adcbbca3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","hash":"db799bf48af97b7c0edc93ad96b4a6da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","hash":"e40f20699182eb1de17efb2d02d1bd9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","hash":"74c6c3273b16f42b3fbba78169469f94"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","hash":"ea5416329e2b15ccc3c6ba2082e5b17d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","hash":"df941eca11a421d04edd92726e3a4321"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","hash":"43087afd2f07c2185dfff2ea8c40cbed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","hash":"c3df4e83c11e996eff52db97215801cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","hash":"e7c9c404d1d2e95afdf4becc03f3f1f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","hash":"789e79772bba1132b3efdb60636a3ccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","hash":"6656ba0c69fefef80b8cae101896c029"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","hash":"5184895d365f664a514993d279af93c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","hash":"d7da19c57ae21b84b31832940bf36c95"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","hash":"1649ee82914f6ad1fd46de466dc03378"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","hash":"051453bb7d9c8983ad2fb529b4ef462f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","hash":"bbc12110db0cd0fcb35a4d45d8c97f5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","hash":"286a67c1ee4d4fa64043f405f661426e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","hash":"63f89c285fda1a11134696c95a5d2c7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","hash":"a6f86b07a971f37494568319ea7cb2c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","hash":"116458bf79c178c3089f12f2bd57e611"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","hash":"f94fe4f82b1dd6f2eebfc0049563105f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","hash":"8388d5e13155ebde873438c26dc4ca33"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","hash":"1f336a83ee9c6cc00bf8a24d2376ebda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","hash":"1871ae3488fd813309b5d8039333de92"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","hash":"adb3d6068a5c45819a04bd2a6f3ab683"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","hash":"bd3e86d27c38dca6dccbe5ac5e7c7663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","hash":"b5b6d18d1e7d2f546507f52385a96d31"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","hash":"f487ad099842793e5deeebcc3a8048cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","hash":"261c95b385a12a314819fc59b03218e1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","hash":"38d7213cd28308ac1f0bd5d81544c794"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","hash":"81ba6d01aa27472e0e1beeadb760ab15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","hash":"65060cb085dab38fcd1a379510c78b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","hash":"ff2dc138db29ec45cbaf3ffd80a036fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","hash":"e09da93d64fbc8904258aa814d093447"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","hash":"a3cb494a3157a15b4bc6e112bd457b2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","hash":"13e3605e178c6c5b63b2ffc79efb6fa1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","hash":"4cb782b79f6fc5792728e331e81a3558"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","hash":"5276912c02c2652dae0fe549d6d4db3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","hash":"f0c6d5d05fbdc95ab84f1a63894b7be6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","hash":"e24d78f8b44fa77d94cee446aba26b69"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","hash":"61573e3ac2c590bbd1aa108ff2befe4e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","hash":"d7466bb710671e1babcb397057b89abb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","hash":"8117e1fa6d39c6beca7169c752319c20"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","hash":"41696c18e708950dccaf7cb4f5b7b195"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","hash":"8e9a282a7834275740dbac1f3d8f77e9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","hash":"c923a6390994ceeb31124b620be66886"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","hash":"1eb9c499979adc0aa7a4c188cb354fa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","hash":"550b84fb8387deb93f86f5f654e7fc5e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","hash":"aa5e38a67607d3ac92328300d453f203"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","hash":"ca6dcb9cea6b00d39a1deba4017fbde5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","hash":"efd86bd9a7183660b902f2528da33973"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","hash":"975c2b518f6bdf0f423f19ee2d20f037"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","hash":"d19d18ba59c99c56f5cd539e808ac093"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","hash":"e8b32b6d7c1328dfb1968caef8249452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","hash":"2f66fd533c14db9ae785e3fa83c39692"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","hash":"f75f31535e16b018e2a5f9a968b7254c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","hash":"01049ee9adcd36bdba77ebdbf08c8311"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","hash":"32f5f78e5648f98d8b602c6233aa4fc5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","hash":"21f20162e45e5a6ed9d59115951fff5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","hash":"692c5789339c99399c7a60abebed4867"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","hash":"4db80cc65121c34e697b03dee0d589f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","hash":"e0434f358d6cfe80754357597dda5e2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","hash":"fc6ac74a8ad779b64bf7e626552ecb2a"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","hash":"882e8d354c5a82f1a6b866ba931e7355"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","hash":"05778db9e882b22da2f13083c9f28e0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","hash":"9d1525a634d27c83e1637a512a198b4f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","hash":"e8ef425330dd4e0f06b8cdb9762f3d38"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","hash":"d4f2c32d896c5cb74142f43f86b908ea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","hash":"6a67d38bafe568f1b4047286d586fbbc"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","hash":"45e9f88a67f4bfb4010486becf9b6ed5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","hash":"d7393d6e408c5f8cf5af1efbf79fe17b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","hash":"d623b1e2af43bcd9cde14c8c8b966a8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","hash":"251708085912ebabc0559c31d7f9ef09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","hash":"c74d6bfe6ed9493e9a15a793e240491f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","hash":"ee68bf1c0349b8c6530da60950fa4359"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","hash":"d98eaef69fe0b763e12fde9bb4b63a8a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","hash":"c93f10f7ab0acf4285085b5125dd1bc0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","hash":"5369274e0f2aea3db2ae228646de17c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","hash":"478e1071c9f577b6cabb8d72c36de077"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","hash":"f627691ae693e673d0a28ee10fa7ef21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","hash":"cebf7c8a42cf1ec0eb4c3cc0c1c9bd99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","hash":"e6b1d4b1f712225ec2e095ded085195a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","hash":"bef69459165c25c77ef86a22c5a37605"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","hash":"27f8ff5da1c6125dcc748d894d5fd5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","hash":"cc0ab0117e8a0a54ec3efe6d9251860e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","hash":"fb92f0b8decb7b59a08fe851e030948d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","hash":"8051a4ac9b61f1304162308056f35ca9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","hash":"d6f1398a30e5929b4deccbeb0321c7df"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","hash":"688492d1b07b6e1942711100803e8771"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","hash":"d236c79282a2d6cf63ec4d7097400744"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","hash":"c70e6da8344437d843e7eb009fd18da1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","hash":"700328ab0177ddfd9a003a8c15619c1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","hash":"39221ca00f5f1e0af7767613695bb5d2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","hash":"6aee7a8b65e3407c8a156fc94c3e052b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","hash":"df6ed53abf7ae705a620f157326aa612"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","hash":"0cb06ef1fbbec09f85b6b40cdeaa2f9a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","hash":"72d0ca199b14f8ad245f36eede78e596"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","hash":"58ed42eb75db18120985e92f14d67c0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","hash":"d731e1b690975788d014e6df127b2a9a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","hash":"3984ed91c254da74e99364eeb9eef452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","hash":"06e25506dd42326f711f5a02366048ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","hash":"1355e7c034fb490a3da4b604bf4a245e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","hash":"892528317c4253ae78167230f7d4beba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","hash":"0a7c8ea575635aba0b835cbf35892f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","hash":"507fd70b4d332ca05a060defc0a30098"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","hash":"7f0426ad53c7e79c8cd32d487e5118ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","hash":"3e2055944da449718bf0c26748b9d102"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","hash":"0d4ed62bca671639dab18b4b00e56c06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","hash":"daa0c9b859ed1959e6085188a703f387"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","hash":"ff8176887d706346f1adf9b10d93223a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","hash":"530313c1da5269e06b8a8f6166b905af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","hash":"838b1a8d04253966a27bce11dc98a30f"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","hash":"df01392a2c8c48ab1eb92f80ae1813f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","hash":"2c91507ecca892cf65c6eaf3fbe0a7e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","hash":"b9b84bf4881138ace165fd23b39a89d6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","hash":"bfc483b9f818def1209e4faf830541ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","hash":"3e7ca9cfe22d164ba5ed448658327a56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","hash":"982726fdb49b5659a34bef13c46732cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","hash":"9ebddb9a0743de208281e764b9454978"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","hash":"d8221989cee24f5d97fddbb2a535b34f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","hash":"543079fc1d0c7864e7a179f3dcaeb44a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","hash":"ce98eef91a240aa9f848a1b9ab61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","hash":"9f9b79f577d9fdf4f20c17a26a2f1d57"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","hash":"3c4879149bc0b27f216987d9377b87a6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","hash":"7ec68a5bb3492720f51417187a4c483c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","hash":"1f408d5024cb1ebaff1bdc7d2d642b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","hash":"3f85e3e092ec589ddf41b6b55333a0ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","hash":"79b897f47b1a509090e36c269beee3c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","hash":"6d23ba25bcceae20030197d48ceef15d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","hash":"64a2261cfb426cbc1bf5f5985fed327d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","hash":"8a380c86046c073f7ca67b32ce9ecec7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","hash":"58a520f0e39b9e2df9528496ad1a2c9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","hash":"81a6a107cbfd5dc1c55af9a93189bc5d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","hash":"5e4449e268519798f85916834694e7e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","hash":"673c6fc6ba5a1499362db4bad82b3f10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","hash":"f4b52208f2ac65794c0722ae22b2ed5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","hash":"bc24832d7688f6f72fb58ca8955b25ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","hash":"8d98dded771d32c2da930062f63dced4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","hash":"c29035e43b5763692f19fbe5887474f8"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","hash":"c204243adaabb19845c896372616853f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","hash":"c7971cf1277d543b2ed589e71c15cf56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","hash":"a8f2c6aa382890a1bb34572bd2d264aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","hash":"e2f7d6fbeb362176a24cb422a6dd8193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","hash":"905cf0b0433d17c9fff9598ca1e5a815"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","hash":"acfd72852e16d10d8797be366c796133"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","hash":"573ec6f55c4e9da27e0e8c6b69226069"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","hash":"b69f3e8fdd39060d1bb88769c6d5f731"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","hash":"c5e481f1a4ef788a50f4aa68fb4c0d7c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","hash":"92a9dd086197603283733846748c6096"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","hash":"564c7ccd87ca886f79f40db2feda663e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","hash":"fbc5d5b64be654228c88182f2f0e9f1e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","hash":"3fe26220f09819b16b15bfd2aec7696b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","hash":"690a90a4ee81c904e39ecef223720fe5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","hash":"f47fc7f755f69c147dbc7d4cac57f0da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","hash":"9e46991f24156e5892fd1b8c3e0eedf5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","hash":"3002576a5d7eb8e97c03a9fb8042a016"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","hash":"0f829dc142100de0ad5bd4320315b191"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","hash":"903d9a8ecbea5b745da3432d5197d5bf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","hash":"383362c943d53b1e9cb7db84db0427f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","hash":"eab95de42c453db7187ae1bfefc4a481"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","hash":"2c5cc6e45f5ec0f541dc47f326986431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","hash":"e81341d4c5ee8dc65f89ae4145cf2107"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","hash":"3bb0652e163327c58784ce2a2b882a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","hash":"0a120ca3aa00e2a367ad33648b49a1e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","hash":"31bef5128dcadbf7d3e638769a5ccb63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","hash":"02880799cbd012d681a8d898a1293e67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","hash":"f6da0daf266187d3ab6ea8ae16772aec"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","hash":"488d308a0cd45bf398708879506a91e3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","hash":"f63bc535d25a8bcf67f0acc5d71c9252"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","hash":"1770aee1a90fac6336e3664811736471"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","hash":"1ac261c28033869c8bcf9caaedf74f6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","hash":"490acbbb52ad35888f5a430a33c0650a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","hash":"9cbb91c1b2e44cbd834663485bf49156"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","hash":"bb644b5f4cdf7ece840f06a3017bfe54"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","hash":"32a992510b885844e290cefcd5d09ce4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","hash":"311f57c9efa242be81f6bff4085b694f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","hash":"82f04582d6435fe28d0de62ac8646291"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","hash":"deccbe5e50fd283d096b079c3830b295"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","hash":"ae88281d46a999e81dd2d63a97bad90b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","hash":"2d616b6da53dd3a5bdc86abaca3656c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","hash":"d678e87e7d7f75d05ddc20a878f28313"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","hash":"fd037bb7e5e0417b1b57b2589825c2ed"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","hash":"a64d04b7a2bbc33416829490aac5ad1f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","hash":"1f2f230ab658e9a20934e8821367f21d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","hash":"5a938eb8e6d0513d8448fe7adf46ffd6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","hash":"9a7022bcfa03c67d126e948062508201"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","hash":"457e52ba79ae9fce0c83b6b927999443"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","hash":"b699e128d86de6c400fab59bf5ed37cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","hash":"ea534a294d4f0ad77470def3a308074d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","hash":"18149c55b175306f694fd72c293e8a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","hash":"3bd1bac4de6d891e214330108e1c981d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","hash":"7b5d3028b282375b07c851ec6378a9f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","hash":"ad3271502e45fbefbae041fe273fcc78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","hash":"acf1a155ed6a399140bf98cbadc44ae7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","hash":"f2635eeaaf9379b39e0c48d203b260b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","hash":"1f4f05a739274cdeb88c110bc6561ae8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","hash":"1a1eb3e518bd114812bdfba4bd5f9b88"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","hash":"7776cb84483a65e3498638a8beff3cbd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","hash":"7e48865e3a52a9c6fc91567a38b0bcef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","hash":"aae04d9745367d56247b3ec312b3e293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","hash":"cc825b21e6408725444839a8cf7c1a59"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","hash":"e68148de255875ff9116acca5baea852"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","hash":"e4b34d42cb8324d0485b25f1d3d9c1bf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","hash":"a39ccba3f049cbdd03baf58f3ada518f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","hash":"89957c2f5ea5ec355763d9f11292c31d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","hash":"1c25a05549a494efabe301603e12708b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","hash":"8e034e45f13ce8b73e41fdb6cca61eda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","hash":"35d2717563d5dd00e0ab617e09f81f7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","hash":"91202b337594bdb4b484c2edc999bd71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","hash":"2e897a9797ccadaa99c58bc96f4a1579"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","hash":"d280977d9f2ef2bfa87ed3f1a79cebc2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","hash":"c0fe6462e3a08d6d6afbf4f66130d494"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","hash":"1d2e6a12d8aa883fa1fa8f893d4020f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","hash":"7e38424729d139f4ac1ff5183cd59303"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","hash":"42cc52074bf3141c7247f972797790e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","hash":"14c5e92c3e535ae197e3d7b784ba98c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","hash":"26bd7410bad665cd40432c609e68e6a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","hash":"9701dc524a39fdc327239fea530ba5ff"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","hash":"03f36dcee465715c1854d772cff3153a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","hash":"b259b177c1515fa5820f8213e12fa75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","hash":"0f4cb9768fb17bf7a5d45753b15a2092"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","hash":"67a67689c5e814c245beae89edfa8ec5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","hash":"9a478fed4f2f15993c892e33f6fd766b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","hash":"0f4062e6adecb15307af04936ed11620"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","hash":"dbf4f1e95289bc83e42f6b35d9f19ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","hash":"06631ae8e7ca29e992612634b7d3cd13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","hash":"7608d7808a2946263f05be6a6ef8a380"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","hash":"131899d6899385466c5c59327fd335a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","hash":"35c9371cbb421753e99a2ca329107309"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","hash":"08fd4267e134da8246d879f2e0690f32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","hash":"c8030797f5e00da5da18972f7f5c199e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","hash":"81077a53c1678d32bb002301d64d0548"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","hash":"c359a6e952958e57c58e53ead868196a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","hash":"7f4dc5e612a2925e1f1c0cef8061d976"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/animation.dart","hash":"b3dbc4e6cac78b2c99e3aa5e9e498ea1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","hash":"4e84d0303aa781634ad57d9b48af9b00"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","hash":"e053a4d625695a213cd7cad71553d131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","hash":"ab372d30d4bd7bb5e6647f2366297367"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","hash":"054bfcd73a86c30af1991fffff345b06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","hash":"3675358158b6f10be4f0123bc1c01238"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","hash":"f70e9fcb5bea790c73d51431ae8e976f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","hash":"447b270ddd29fa75f44c389fee5cadd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","hash":"0d00a012348d802a099ed222dd200d3c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","hash":"441044fd503112e85b6dade63f2bd1a0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","hash":"90710e516bb97142b02e2fd5553bf85c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","hash":"170fe4655f45b54388ab850399d92895"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","hash":"51e2008bb51dbb90407c3647c4ed2406"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","hash":"51fa10cf30bde630913ff4c6e40723ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","hash":"e9cfd387e25a97481b410a866e285f5c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","hash":"ebb6556f0ed9f93f8b9de389cb10c2af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","hash":"bc45e1baf7e4cea03c09368d65b32338"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","hash":"c6fe70279c1fabcc739026bb9cfb2eb8"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","hash":"f5e211d8beeb6fe549de90fbc48a4a35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","hash":"e85b4f3cf370581b3ef11497a9a5bce3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","hash":"2cea8c8bd84e28a8e8b7a655e35ce643"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","hash":"7ef61738fd4e99b34b3379c2f6cf3141"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","hash":"e8a46aad9b09df8e467cb1c6829ff35e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","hash":"973f29ba555dccb1b2450b3831f03e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","hash":"e4868d928bcb5b32093caa9f9720c7cb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","hash":"e8a1d220d69629ac54c287b5f096fbf8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","hash":"f09d6224689342ce8e364e6ba5fea1c7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","hash":"323be88f9396112a89f1f6dae5b16551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","hash":"f18395f9df21a2e56aa5f8f498da93d6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","hash":"0858e2f9683c0d9bd14362f037286f37"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","hash":"386a816011478bba19bf6973ff137cfd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","hash":"08f6a3a08249e2eba137da4752e72bb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","hash":"88e82a2807d91088b55f29e00aa780d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","hash":"a4452128d10ae55b5e2c701edda87207"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","hash":"7525ba8f2df029fe86fe08725d060d3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","hash":"b5c8f4dba868efb80ed69fcd5a7d3f07"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","hash":"7c221e43840709e4bd38f48c2a909989"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","hash":"157add6fe297fe09245c48cb7a918b41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","hash":"167092121b204ecb5c86516fcf26d05a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","hash":"bf44bc2460fa88f9386f3b647c10bb80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","hash":"63c306461db5c60830794d4def8b7e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","hash":"1312aed2c5e59964982eb7c85c7430c3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","hash":"c7125c517aa8cac22da28ac6e36eef79"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","hash":"6648a14df2e64bca06988745d17f14e1"},{"path":"/Users/decode/work/flutter/bin/internal/engine.version","hash":"6065afae0f787ef56cf3c06e17cf8c4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","hash":"9343b5b49309dcad89c11b6151526278"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","hash":"aa4b5c0cdb6a66685350611b29ca9d38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","hash":"f9ba98375098bc49c41b86dd961e2a5a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","hash":"0f62d58980340b028d6c7a94848693ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","hash":"5ea6f3bff5e08b2791946afb64deadae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","hash":"7f34290bd4853b35be31761b6c7d3864"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","hash":"805d0b620c3aa5e672740e948a1f4d9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","hash":"5e568872f7db50efc3ab16b3deb3d72c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","hash":"69d3c18c01655ebb418fcff2327c10a1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","hash":"7f6c267be8df852637226ab1708d5417"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","hash":"cbfcf5c82f1f0857a2300a2d17b71cf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","hash":"7d9bef290415f78dee8bc0fdd47025f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","hash":"309fca388c4496bad5fbfe0dc5f79fdf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","hash":"206832bc71a4fbdfd4a077b6f35e6333"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","hash":"3843f59e1c5febcb8443f79f1e8d4eee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","hash":"8a3919d89072fa859d8d30ce69a89448"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","hash":"c0e496ed40e0cb9154c5418657d2fa2e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","hash":"d14136e243131a8fe9357941eca1bd70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","hash":"5b539bedaf82a69ffd5c93fe8cb16465"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","hash":"187d36be28f01a2fb9747610a07b786c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","hash":"016c8ca1fd284bdbde5784241f314576"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","hash":"ef25c8f7ff1f10a43eecb0a0f44b38ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","hash":"3a2d505268f5446e5f7694776b69b407"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","hash":"11fb74cfad9b61d3e33c48500bd644c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","hash":"2981afacc7a836ccc661fd0be2eb0681"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","hash":"b324a1cbdb9418b4698cfec22372af7d"}]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/app.dill b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/app.dill new file mode 100644 index 000000000..a9959eae1 Binary files /dev/null and b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/app.dill differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/debug_android_application.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/debug_android_application.stamp new file mode 100644 index 000000000..493673e86 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/debug_android_application.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/app.dill","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","/Users/decode/work/flutter/packages/flutter/LICENSE"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/vm_snapshot_data","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/isolate_snapshot_data","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/kernel_blob.bin","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/fonts/MaterialIcons-Regular.otf","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/shaders/ink_sparkle.frag","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/AssetManifest.json","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/FontManifest.json","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/NOTICES.Z"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/flutter_assets.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/flutter_assets.d new file mode 100644 index 000000000..960768537 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/flutter_assets.d @@ -0,0 +1 @@ + /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/fonts/MaterialIcons-Regular.otf /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/shaders/ink_sparkle.frag /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/AssetManifest.json /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/FontManifest.json /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/NOTICES.Z: /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/pubspec.yaml /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json /Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf /Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE /Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE /Users/decode/work/flutter/packages/flutter/LICENSE \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/gen_dart_plugin_registrant.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/gen_dart_plugin_registrant.stamp new file mode 100644 index 000000000..e48ee97ae --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/gen_dart_plugin_registrant.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/gen_localizations.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/gen_localizations.stamp new file mode 100644 index 000000000..1b2d28c4e --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/gen_localizations.stamp @@ -0,0 +1 @@ +{"inputs":[],"outputs":[]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/kernel_snapshot.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/kernel_snapshot.d new file mode 100644 index 000000000..6bbca7884 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/kernel_snapshot.d @@ -0,0 +1 @@ +/Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/app.dill: /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/main.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart /Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart /Users/decode/work/flutter/packages/flutter/lib/material.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/utility_functions.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/app_router.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/navigation_service.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart /Users/decode/work/flutter/packages/flutter/lib/widgets.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/home_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/meeting_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/preview_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/receive_call.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart /Users/decode/work/flutter/packages/flutter/lib/foundation.dart /Users/decode/work/flutter/packages/flutter/lib/services.dart /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart /Users/decode/work/flutter/packages/flutter/lib/rendering.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart /Users/decode/work/flutter/packages/flutter/lib/scheduler.dart /Users/decode/work/flutter/packages/flutter/lib/cupertino.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart /Users/decode/work/flutter/packages/flutter/lib/animation.dart /Users/decode/work/flutter/packages/flutter/lib/gestures.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart /Users/decode/work/flutter/packages/flutter/lib/painting.dart /Users/decode/work/flutter/packages/flutter/lib/semantics.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/join_service.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart /Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart /Users/decode/work/flutter/packages/flutter/lib/physics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/kernel_snapshot.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/kernel_snapshot.stamp new file mode 100644 index 000000000..21698e34f --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/kernel_snapshot.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","/Users/decode/work/flutter/packages/flutter/lib/material.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","/Users/decode/work/flutter/packages/flutter/lib/services.dart","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","/Users/decode/work/flutter/packages/flutter/lib/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","/Users/decode/work/flutter/packages/flutter/lib/painting.dart","/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/physics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/app.dill"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/outputs.json b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/outputs.json new file mode 100644 index 000000000..60c0412ea --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c59f8a27862d2129b3cbc08b58e71ea6/outputs.json @@ -0,0 +1,12 @@ +[ + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/vm_snapshot_data", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/isolate_snapshot_data", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/kernel_blob.bin", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/fonts/MaterialIcons-Regular.otf", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/shaders/ink_sparkle.frag", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/AssetManifest.json", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/FontManifest.json", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/app/intermediates/flutter/debug/flutter_assets/NOTICES.Z" +] diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/.filecache b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/.filecache new file mode 100644 index 000000000..856560ef0 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/.filecache @@ -0,0 +1 @@ +{"version":2,"files":[{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json","hash":"dc3d03800ccca4601324923c0b1d6d57"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","hash":"6eee5dad1885940a6f6f69328059bd19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","hash":"77fcee8d4672891b204152fd54ec8143"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","hash":"21db6d3de86086328513d01b906be30e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","hash":"ea2d0e58ef3ab5bb9ac77120ef2c1b53"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","hash":"89cdb68e09dda63e2a16d00b994387c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","hash":"63190b810e77cfebf3de760baaf59832"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","hash":"d97a506e94a9f098ecdb1483ca9707af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","hash":"27d4fdebf2e43cf2714e652761621e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","hash":"8635fbec89c2cc03404a2a3233d31bbc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","hash":"f6a7f0346e2863d7c1a206c16b1ab6f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","hash":"3e7ed5e99c20e893e0b98e6465f6be6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","hash":"f8fb1733ad7ae37b3d994f6f94750146"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","hash":"72930239a9378ce977a67804fe0a7c93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","hash":"2fa5623be6e2680ff9befb49dbb5102f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","hash":"cb595dc1e32ae1c22e55b0971067c9df"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","hash":"ab35fb35a2d6cac70b40210ff2304fd0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","hash":"9ef39006752e689eac18ae6928857c3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","hash":"1112185143b6fe11ce84e1f3653b2b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","hash":"fd2a12edfd4b98e55a3b84dc04d027b2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","hash":"44919c3936c0c4f7fcbd5caab7d1a713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","hash":"96b43446a0218f1b99aee172484cfcaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","hash":"1d810658458f13613a213d5d8cb8fe71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","hash":"334d5b02e9aa5fc27e87fdf1a49140cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","hash":"9d633da4b6e0a89f1c7cd8451b8fb9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","hash":"563354fcceca6f2c834a5707c2cd9e13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","hash":"99b0752bf6b7a9261349ee9307cbeaaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","hash":"5487cd3f918d930318d60978428d44b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","hash":"81859a4dbd7cc98b9025645ba344330b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","hash":"0c48f1cd824d3a7169a8cad9385b2147"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","hash":"9422bcb42f545a3d7fad54a0559effc2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","hash":"cbd0196f25d2f055736beb3052a00c19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","hash":"1a773319137363e711d5189770d4517c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","hash":"ecc7f9827d87dcf6cb23310e70449242"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","hash":"4beb2c0ba82d1328030dc7ff68932b22"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","hash":"6b92d8f12a7fb46649297e25d2cf2b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","hash":"e6a9736eaffdc7d075f11980955fd5e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","hash":"4af79c5c69ccf0cae6ab710dfb84b125"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","hash":"ce9abf977da56e384357b8da18e68cf2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","hash":"d5a62fdcbdcfbb765af4b2c4c30adb47"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","hash":"d83aaf70ed7e980bc976d12b8f31a5c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","hash":"328ff975234df68963cb19db907493ff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","hash":"c4248f249f3e54dbf2f102c850065769"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","hash":"8ff79ac46e7b7c3daaab8484ef94370f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","hash":"d755fc45af3dc64d82c199592ba93faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","hash":"d6a5413022b7739de38c1d30783ec8d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","hash":"418e1664a31b32fc7ee9b7c90f31a67c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","hash":"f9144bb1e0700c5e3341cab1dd29235b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","hash":"a3aa38647fd73e6e6fa27450d34c042f"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","hash":"08d323a9150badb65749c7e42ad05b8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","hash":"0a31dcaeb18fc2ec730e799a0bdd0397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","hash":"8197b93568cea109f4eae8aad4626090"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","hash":"96acd6f3aa049313e96a021442c0efd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","hash":"a3e505f75958f86716a4b6e3f79c3be4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","hash":"9a74595c2e95795b6c96d74f2b6bcca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","hash":"5850e52a3ead8b05860e0f35283a43fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","hash":"fab8d6d1b0e81315a3d78131394d31e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","hash":"2c5d1ee339121f9ae1445e93c3fb5486"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","hash":"3d637d82142ce722be3fff1b564a3a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","hash":"698b7b5743b9cfa0aa9d08de156d04b6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","hash":"b3d51ec0dc553b1b1e883e087d5c73cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","hash":"532a272d043c3dccd91b63d1b428dac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","hash":"bfbcdf98f1800a358974017a5a244b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","hash":"314ccd23936a8da782622ec4912af301"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","hash":"29ae3edba712168bb4fbffb16b2f6aea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","hash":"2ddbf2700473f3391a4be0cb9202e299"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","hash":"b7ae6a21a9a41ce292d8ce22be59102c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","hash":"fd48fe375392a882e621f95b35695b1d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","hash":"f38a99a51f4062e7861bb366f85265d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","hash":"78c252bf8f53d91680bc4ce87a981f7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/material.dart","hash":"88af7ef9b0a369709fd232b83942f5c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","hash":"20956ccacef6e41926ba780a442ded4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","hash":"e6717e820802970026778f01d782a208"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","hash":"565097e561f05b1bfab2b3e5bb1bc476"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","hash":"187f4d908f2120bbcd31bf3090dff5ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","hash":"0982f3329e89cc9a5f58e22b8b9f522d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/painting.dart","hash":"0b006f9af878b6cbe7e6fbad8ad05390"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","hash":"4e7d79277a17c733fd4e47fedc834b12"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","hash":"0eef32ab9b2cf423c48e89f2dcd9bd6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","hash":"7cf915b7566678369785993dd6d97018"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","hash":"6cefb715fb27bae29486a74cc607f9db"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","hash":"6b1e7684c07bd93ed9433f5be917a56b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","hash":"8ec8806c9098aee315949fb5ff5bc0fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","hash":"33f1d84eaf01ea35e4d6bdce4c81b862"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","hash":"dac77e15418b6e85ba8237aa7af31c09"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","hash":"18c04a8f8132af2c1b1de5af6909025c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","hash":"462df06e63c35293d84890049542ddce"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","hash":"42f8bce392a960bb25a61723f20af8d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","hash":"73a1264f4048161cf1e020b447b014a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","hash":"4e87dbcd00020a3ee9f14722e8c75ab3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","hash":"38e17b28106d00f831c56d4e78ca7421"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","hash":"9801ff6632dd0a6938381b54bc163196"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","hash":"792cf5ae893012a7a57a7de753af1110"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","hash":"bfe86f49f28a9914bd7144dbb3aa6721"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","hash":"7b7fcd3f415f29a260e0d5f15c7d9565"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","hash":"e93daf002837e58e2c7e3348062e6ad9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","hash":"265da611bd90e5b3f22b0e399086e1a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","hash":"b99c4e1adbe94f8d8b8a34b18b5582d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","hash":"fcd0c8e5b3533ede79824283fd8c1717"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","hash":"cfd6ab50f4e4587f01bea319b728817e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","hash":"27a56f8a1d0cc8cdc6879f7415ef63dd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","hash":"a3068ae1637db004de0bcac7634f398e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","hash":"a9d0ac8febdea9748b1e274e2453730d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","hash":"9f8044c6733c0e51933354ab35295e29"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","hash":"eb1f091dfc256bc49d734c8cea9210e8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","hash":"500547c3b30c59fe1ff3c4b559e52e84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","hash":"a9cf3c682c9b87a18b053337bd6c25f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","hash":"ffc342f17ab331ffaa598a60d029c81a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","hash":"2cecbc714aea63bc341bdeecb0a1d079"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","hash":"645e6e5a42aafa161b24b84bd41fb0ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","hash":"adb6794ae38420a92bd5acb06371b491"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","hash":"b9a5134d01050fc5c9f07d40c68d30db"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","hash":"dfebc31c7148db77769412808653a26d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","hash":"5ca0b5786bf63efd4fc72fcecfe1b36c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","hash":"b04282840d037f7e4943e8ec88a12d02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","hash":"9f52d5022bc55475a52ec44288a06e32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","hash":"e3cdba21732fe10342e87f1c90c75b77"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","hash":"733eb3422250897324028933a5d23753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","hash":"abcb2d6facc18b2af070cb86cbb1c764"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","hash":"671d1776ee902611d49f2fd8cb0cc926"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","hash":"ac1235401776e9d976fcae06c4a1bf69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","hash":"39ce21a3ec5d12c9ef5f1e25826775fa"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","hash":"c5d0f45d6de3d145586b46a241a8baa2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","hash":"0bed54eea911a00191131999c1d9654d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","hash":"d975e51852aa1802c81c738dcb4c348d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","hash":"c6b4e0361b3e5080435faea02182ce52"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","hash":"65b026cff392b7d45d6389e48f773d66"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","hash":"005d333eb3e7be6129b49f470bf2a6c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","hash":"6f79b9f026e6e1088cca4c0fac700dd4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","hash":"04343e5e00f2d4a6a59ceee530334dff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","hash":"5fd3fdb47733961793df2747ede9f8dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","hash":"cc1b73dd41313e37b411b814e333bbe2"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","hash":"ea4e1dc2a5c695efd31b4f944aa6f2ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","hash":"8504cc2dbcc3473a3f42005a04f802b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","hash":"b41739c7771e51de19e76067f9a2671f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","hash":"c32808b4f482b38284e56ea62fd8fcf5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","hash":"e3ed79a2455f7742d0f030dc4a7f7097"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","hash":"9bd1ea1b5932d9ddcb2a49922c96bfc4"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","hash":"145f2173cdc142488f7858e01cc970d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","hash":"034db2896155ca6ffedf49a9b6447708"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","hash":"90d2e3f81c2871fed636143007914657"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","hash":"9325b94e09a773e59eccfedc0dee4711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","hash":"362b1506a336f9a85d0eabb816b63060"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","hash":"3dc027f858c390ed73078fb86ce17bdb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","hash":"edb8edf3942edaeab666e53450efa2c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","hash":"80bef275fa3274c803905212efaa81ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","hash":"5fca18b5c21ccb54bb45fca9a8c230eb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","hash":"b8cec7a5e5d9ccffefa0e7539e92e49f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","hash":"45870d790f29284ea39915e0b2e4ecaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","hash":"288419bf7d5c385c3e0f777da93f9e75"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","hash":"f84a756607dcda1883de021ac706b6dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","hash":"4a5960383439d4ef8fe8b42450ac3be5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","hash":"476383869aff7b87579a7753e47722d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","hash":"96a77b3df76ebda77a5525db0c94a40e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","hash":"ca775fd1da8b4c902a08d53153ec4ab1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","hash":"aa2543ffe35df101f33108e6243f5b9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist","hash":"a25bf969a6a92bae1dbdf68f4e6e5b3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","hash":"4ae8e4147fb1b7f552f1d6c428ef77c9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","hash":"1e4b9425e7c56b52cd233c8b17fcce78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","hash":"60baff7460853877cbb929f66b052733"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","hash":"c703d5a115a88c99fc446006b39e554c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","hash":"07b8cb7ecb64e1fdb5d81b48b4bcd829"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","hash":"30b1ecc00d3e12d33f3f5f3861fbb816"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","hash":"ea66c182859f2263bd2be879287d7325"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","hash":"0fa41fe32675f159259d614ff80ad5ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","hash":"36b6d958e428191d36c3fc7ff3f272af"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","hash":"55699f42160ec7cd28e59b3d85b16679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","hash":"57dea595cd79ae393b4b195d632cafa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","hash":"9d79df38c954cb1d6aef9a622fb16826"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","hash":"f5679fafea18b2907b3995e2f751f15f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","hash":"1af4ec1307aa8270fb0739708f0c0882"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","hash":"319c25a79e3bd23b58ab78b5a0aa0d34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","hash":"6e26bdc5ab4d4d183549b8766786c663"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","hash":"49f7081dc5d9a05d4fc221fbfcfaba04"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","hash":"257ca4608e7d75f1db8d4c3ab710ac70"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","hash":"96697a47b1bf47f8a0a957b3c095b8b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","hash":"c4f6ed7cb2df39d4e4c5e73512f0e27b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","hash":"60791527ef7b7b0e4bcf56106682aa99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","hash":"bd1315cfa157d271f8a38242c2abd0d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","hash":"99d5ab829b70ca98223a892d2d09a553"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart","hash":"c517fb54b3d66b22988ad7c8d07c6f53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","hash":"2da52edd1b7a1dcc8df44ef7e4601583"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","hash":"fda9c6f48f58c23eab466cd8565a77fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","hash":"7050c8c94b55eb51260ca54708b460fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","hash":"f646bd33e4b4047f7cbfcd5960072e4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","hash":"0e9ade359ff29a3a17224025ea6bfd30"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","hash":"e7255e0049813e935232face99f33ef1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","hash":"26d4445aa83cf6b5cce2fb52c6f3674e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","hash":"e7a50fb0ceb5c66e2988808e21808aa6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","hash":"fe52344c0c5470d7f044c347de68987e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","hash":"f404c13ab6ba7fca8a465852af425026"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","hash":"251c46a18cddea6662d3285c95e7e991"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","hash":"974d0c452808a1c68d61285d0bd16b28"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","hash":"7ad4b1f7d7435272c14803d189af6d13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","hash":"9b336c2a5b6668dc801b1d8c89124b1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","hash":"443fe4357544b85c13ef051cf37a602f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","hash":"c3234cde75105b7fb54ae124e1af3e93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","hash":"d20e1a7a4860303669f49b2fcf70cc1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","hash":"b1360160e39a2f36567fb0df8ba7e03a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","hash":"cce72b7435a0a5aafcb3cca344af00e2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","hash":"ed6bc3c2d3f1ffcbdcea972d430440eb"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","hash":"05b02a903db9d6845d22e98753e081c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","hash":"bd4687a32363d17bbc130e0af577152c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","hash":"2c822e790480edf5d56f0b6001bb05ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","hash":"ac9cc8c75e7732738ac8deb81fccedfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","hash":"5019b5d158fcebc32762c014fa2c9b0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","hash":"67d4bb390f36e86565a02e8437511790"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","hash":"c9f68b9d0206a1a71be33f572d419b74"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","hash":"114f4cc9fde49fc429c98ef77f626431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","hash":"cdb411d670a094822c46ead81fc1c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","hash":"188d03c92376ce139ce247b0f9b0946e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","hash":"03372d734d84040c509f3cacf8315edf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","hash":"263d65011d90bee92deefb163c823890"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","hash":"a1e4de51bdb32e327bf559008433ab46"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","hash":"215ea407318b75782d0a36692e036ca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","hash":"ae5863ea476e0f897d69f2342c85437c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","hash":"5f5c07df31f7d37780708976065ac8d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","hash":"3c72e68db8be4e65cb349ff74568eb53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","hash":"d62b3af98fb22fa468d83954bf069d5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","hash":"ff2cc2a4a374dafed8b1d437480a6f07"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","hash":"cf72bd613d277b76bf935e6c5bfc157d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","hash":"db4d1d27ac8f3c67e5c3e8209d2827dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","hash":"11565ddf9ff6c5542734e969d7abdb9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","hash":"7bfefcc0929d945fa61bb7870de1f659"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","hash":"811f24def860b7ba8a50bf101cca1188"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","hash":"5bd4f0c87c75d94b51576389aeaef297"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","hash":"c22745b15d4a47feb3c75857d8d9e0b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","hash":"5275d424aba5c931a30e6bd3e467027d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","hash":"2430a12d4750c3c76ef07d29bb6f6691"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","hash":"98947dc53131e00bf0eb82564931fabf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","hash":"a641dfaf4d467277c7075e54e33dc55c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","hash":"359388897ae53df8791213c31ef05fe6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","hash":"4eb115890ef287afe9c85387313602fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","hash":"fd597da8144be9d29dfc1d1ff0733dcf"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","hash":"fc5a943b4066ed396263dcaa72d202c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","hash":"22843b6f1d2688461f7802211ecd1836"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","hash":"b1f861676f6495e6b884459f0d1ce964"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","hash":"351ed98071b53d3c2e98d376f2a65a74"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","hash":"82030078ff5d06d4efd4970a53c03669"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","hash":"0d86d4ba2e01e5e62f80fcf3e872f561"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","hash":"74b9d525d5d35a3f13d7da102d6ddcfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","hash":"14271dedbdbf4826f17d0dc67aaf4d14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","hash":"7697e9da7ec5cf202868f4335cf03549"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","hash":"e6c901b6ad02eac173f31cc971b5b703"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","hash":"7fed4fc7352633413ea4f08ca1087df8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","hash":"2dfc9e555b9df3380a6502bdfab9527a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","hash":"a457593201de333a2db90ca058632293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","hash":"f4b67c136a2189470329fd33ebe57cb3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","hash":"59241e0339f42c809368fc054b767aba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","hash":"22f170a8dc9abfac2942555e83589e1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","hash":"652ae9f598ccacec05fab019b21545ad"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","hash":"d8ac599f1de0f55b47ac48f3bff96af1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","hash":"857c8e3b5e2aaec115da9d5f5dc48c32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","hash":"63301a1f08f8a8b9808b22662f4c1bba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","hash":"9886ca25d16f34e46171e428c5014d21"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","hash":"d0da5ea7955f48054ae624e16528193f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","hash":"b935a1b9045bfaea3990a510732d5824"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","hash":"80e7f6041ae080a76c34cbb7a363fc1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","hash":"2f874d84d25897cae53e33b4dbfa3350"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","hash":"d2a2d8377af7f577a4e2b4fadc6a638e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","hash":"4449a9ff2f8ef7121f4e0e47a6cf4bb6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","hash":"3ef55cc59bb88a61c8bf5f1ea2faadf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","hash":"356b3a7986bcd450e76a3fde0d5c6e0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","hash":"355cd0132946f4de06b53d2d53d0f608"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","hash":"68990009a2ffd358f279c0941f5acb15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","hash":"c23a0415bdaf55efdf69ac495da2aa9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","hash":"14acd577a81cd5aa871c66f430b95d97"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","hash":"81e9a073bd391f4db986dc7bef2f63a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","hash":"e7715c9d0c6652b0ed4cf68026a01618"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","hash":"8abcecb81f99bbc024b3ed169c86b95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","hash":"a2e5169f4b87d1c004d984b1a5653192"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","hash":"f158ffadca730ab601c60307ba31a5e4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","hash":"cb97666041e54bac4d71760123d6723b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","hash":"98bd090c9889935692ba3e10dfbeb355"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","hash":"bbf5b492c8e9be5dadd80d566cce37e7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","hash":"1e7180abd4c05b29d6f62162c16d57a2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","hash":"91d3fd03ed8299fe37d1486bd87ae6e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","hash":"1bc3a9b4f64729d01f8d74a883befce2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","hash":"591e01a4cb4c63927e5c090b0d064505"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","hash":"a9e643bffeac9afc79115446b7cb7c9f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","hash":"9eb9cc50cf100f8006d01f4027d2f5ec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","hash":"3100acc654ddb312b6bbba471958fec8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","hash":"775ae14a90b86bb0668e9fcf6e6b1b6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","hash":"bb2ac94158003f0a8e831eb24259f495"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","hash":"142ba8c5793aa338f44b464329dd0699"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","hash":"b0f02b65ee2c6c7bb94c4ca6f1f29a6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","hash":"1071242e6247c3ce723a11943d44b785"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","hash":"bd5ab55eaa960294d369e4aa6d62ec01"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","hash":"ebb00b4189561689271ac8ff24815bc7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","hash":"7d69bfb2afa429b85b7c3d5075843765"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","hash":"df699735e3bcd730f16ce377d562f787"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","hash":"91cad0986934fa662f3e4d5593174581"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","hash":"8dd3f3f889e2a13598d1e7f392425e21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","hash":"ac6376ef781bca02855c6494af606fcd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","hash":"b29d68425258d60c8a5d005a3a42e756"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","hash":"002be4c072c0cc5c5e72b5ff6d0c490b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","hash":"e82a9b67ba33ae635b9b083ef147fb9b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","hash":"8c3ac5572a7395ff0d93be40536e79e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","hash":"2b3d562385f18f088a55dad322dee674"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","hash":"6e00cb0d78bf0bfd57716b6f925d1947"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","hash":"3c69df4cfc2d7e997dfcc783f5326a4a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","hash":"95586aad0f0a7b13580767122c5ce9d8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","hash":"24c1035fad541d49bd16d2b2bdd194b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","hash":"a5266adbd58aab45e34dc05f787ca535"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","hash":"4f683ee2e1b110e70e51ebbf8db44352"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","hash":"993df9991302d75495941ede09bf8122"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","hash":"2abd2c9a42d4caf2b4f1640d68b02fd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","hash":"5bd9412bfb7a85a944c17f7271c47e73"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","hash":"7fa73a415cd2df461af3c4b0439f687f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","hash":"655cab5b26d8bd0b3fdda75a616f60a7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","hash":"76a75a9f331e9c7b2c22eaf454299641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","hash":"2e7c0078255c745b56a2bf1bf7992df3"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","hash":"2b64d8bbdf8a7af016b43ea6d75fab37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","hash":"21bf6725b1fc374f03ae5b2cb46bd95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","hash":"7d2bdb4801fc8b3a110f36d5e5fa59f5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","hash":"638c6d804d20c1f83790f7f10c4af408"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","hash":"e5e651253aded8004c5fa54b6bb659e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","hash":"e3dbadbe1770d097ca122e6b5f3cc541"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","hash":"91ec123214e148442cb5c4cec58da540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","hash":"30d8aa5cd9bce4059a61d3ad5a5f432a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","hash":"e6cc47e6123c91543e86f0c9983c26da"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","hash":"6a2092bc6e531cf53fd4151ac189cfd4"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","hash":"01dccfcb76cb49108f19d82eaf90e822"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","hash":"f365fc9346ed92a347bd6659be254ab4"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data","hash":"40337392a05861cf7101bbb7627a82a2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","hash":"79640e9b38fd9ad1126240bb2d3e5f7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","hash":"32c8f2d4dc53cfe56f5fa637be2c52e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","hash":"1379bbaf280401527c2248647c9c158f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","hash":"d1ab0260adff28180e562e884513c3e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","hash":"a03cc6311acd362bf8e7168e8d31da05"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","hash":"1696ca88c21e3e3b9545f2b5a4736f03"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","hash":"bba56d888d73de62a45f74323e448a7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","hash":"70aa5bdfead16e28cc5d09e987f3dcd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","hash":"c4f3f94bbecf67e4419ca6a8e97d8715"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","hash":"b48ba72a2d5d084d297c3d78e351036e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","hash":"3d54ff724ed3381d38104d6603406b8a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","hash":"ef83fcd13366d1d61c5dbb5c6aae5ead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","hash":"db0d5438467c4c7c0df8a6833226242c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","hash":"299bd3979d7999412945ac4e3199cdcf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","hash":"fbd23a681c22b782bdb58d139c07cca6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","hash":"148c709e17c08f50d3daa670b9f91f12"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","hash":"11e87c02beec338363a30c8f2f49c522"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","hash":"368a628be82e16cf17725d00a83f582c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","hash":"ce35872fe5da155b423c29a2ad542b7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","hash":"bf2738395eea842961e96f4203e03df1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","hash":"46b0774ca33285fd90e42ad91bf706fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","hash":"82d7c6fddc8b4938a5b95f203e86dbf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","hash":"8a2a6e194bea6968fce6409b962bf485"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","hash":"f4c1352de009ea30833ce873d8488617"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","hash":"119ed2f372555dcadabe631a960de161"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","hash":"4938fe6e2b4853e0b4e445e64bef9b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","hash":"7dc929eb036d49956284257b4e0d83d0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","hash":"81b2d2a545e6f66510367ee8d4bdbf51"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","hash":"856b5a01bc613989f211a44d67f2c4c5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","hash":"a0f3046203c24b39a0d5e7eb2e605cd5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","hash":"cfdbbeecafa9afe958cc12f0363e0f2e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","hash":"67918403456e9e1c17b3375ea708292c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/services.dart","hash":"b74bf26ae8105a75eb390fed5aaf29cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","hash":"ea7b5731a74e12ea2a31a21b8c188444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","hash":"fbac444a17bbc7b00af608ec29e0de4f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","hash":"36280c072e87476893ba441b9b25bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","hash":"df55cb6d988b8526b5c461f103fa9ef2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","hash":"8519987f955d72de5736f71fe1b3b96d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","hash":"bdb69d0ad764dcf2d42d8fca35fb9ade"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","hash":"2b6129307d0fa6394c84e3a4ac5136e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","hash":"b3263d1ee9aaef112570bcd31aae9ca8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","hash":"ff49202dfcd82a646d59d2012330173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","hash":"b80f25d51570eededff370f0c2b94c38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","hash":"439c16468a275d15a70b82809ebf6692"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","hash":"2b03803c213a3023f14b3e4849a52b64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","hash":"7725ee45d15fa56992b64ca1060bcfef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","hash":"881b5c11f52613550e6dbfcc45a2dc49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","hash":"c87e19f7c886263df8586146fe147faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","hash":"3e82e75a5b4bf22939d1937d2195a16e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","hash":"7ec268e37049e5c22e226c94df1776b3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","hash":"8ec86c62ef84ec90ddf5232d5843fd37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","hash":"b3531fa45ed93b73298389e029c9fa8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","hash":"739bb2e85022ddfb653590b93216942a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","hash":"7ce4485fb80ddad6acd68abaf480ecec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","hash":"8dfa8d9ef8888059e8c7567b5bdf037d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","hash":"fce75150bcb08fa104fded6310750474"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","hash":"aea224eef2ce1d7e59c255050e32538b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","hash":"3ffbd6fc0995838940a61cba006cbaa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","hash":"50298dec288c3e23499a59305365a9ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","hash":"35dab6b93fcd39905685afc374195190"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","hash":"567e295b927cce4c1ac15de8b037db44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","hash":"30a21255788cb6464ab33c6b40c932eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","hash":"9952a908c43edacce7d554bb12e4d9b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","hash":"2accc934e05b459de8fe3362f452102f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","hash":"81a875af62f7ff0581e985d509541da4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","hash":"ac54fa631e760555c0b0488ec73f7c95"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","hash":"3d26622e062df504e7d6d5ecf06c1d32"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","hash":"dc1130be2c52737b89868ba302a4bde3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","hash":"74ffe935dac1b387e33d85915c6bca90"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","hash":"58b20f802baf08f63dcbf4eae87a754e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","hash":"1dac993c7444b99a17f2dcf45acaca97"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","hash":"dbff400b121e6f844298946531d490a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","hash":"83dde9913aa4a689b698d2ba5ec7c676"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","hash":"c71d56c5b6118cacfaf95d34850b080c"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart","hash":"abe9e60504b0c374da79d94794dc79c7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","hash":"b6f7217e92bd0cd6308e102b91a73ee7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","hash":"3e3350346bb70b12a7319e286f300f02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","hash":"dfcc453f5331ec6f2c70cda394065785"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","hash":"b76ebf453c4f7a78139f5c52af57fda3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","hash":"faa4ca37423c4ebc1968a9922537ee82"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","hash":"c324914d8137036411457678f3c69dc0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","hash":"69c59af240ed814583dc1635986b09d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","hash":"8778186a2505e7ec97a1085c9b26d136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","hash":"caac146b9d46a9d99ac6d588e06806af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","hash":"bc5f5368bd36c6369f2502927e08f4af"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","hash":"3bf69bfd4070ddbf2b64ce381c00975d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","hash":"05f3174f379af4ccd07fccea88487a40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","hash":"9a213a6ad0048a7638eb152b56018b0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","hash":"bf9deb76f520208269fedb1ee05992bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","hash":"06ab11848273dcdc3ea237593b87fe98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","hash":"6c7a86378419565d1822850ce87fcb02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","hash":"be8d91eefea139196c14b817299d181f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","hash":"6a2eb1282073818aa4ea64025b0d8769"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","hash":"0fc8427a68447ca1f35a819654791edb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","hash":"8bfab809ab4a9e9720f7a2ca9ae31a03"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","hash":"4a01954c6cb77f1d4f678b32ae946189"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","hash":"9925a270672aceb04e6ec7d0251bf73a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","hash":"6dbd011ca31387e3192d39c999a1dd9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","hash":"3b7aae008ce78bafe833b0b75669f461"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","hash":"a636b243377d435c9c285533d7db1f2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","hash":"c91107c565c54394f296558118413974"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","hash":"d3c7b8f49006b6d9ca76880dff779193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","hash":"684f3b90c3d984dee726e0dc1fc9732c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","hash":"00d16ae308855ddbf3762e4dbafd62d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","hash":"8e72f0f11bfc09b5d4d7791fd23c4227"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","hash":"6bc029efa11f69cb20f3abf8436e9088"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","hash":"6410a04c8e4b96d057e245179c5b7247"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","hash":"8986177ba204a808c603c35260601cce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","hash":"3ef978aecc3ea1c21fe37ce189d94a55"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","hash":"4ce6f3c41ded0f3794fe3f0106ab971a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","hash":"eade7bbc9bacbd78204c7ffdde55ddbd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","hash":"200c53b613dda088d30967fa0f689d53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","hash":"9ac903cffbc9fc815782d8e0bcea7e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","hash":"d5da49989b2fec96c7bf048f237909ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","hash":"89d496fd298521d95b4130a2ec9757ba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","hash":"1e3139880d4a71af922ea4538ed3a693"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","hash":"6e40ff949fd347e34e4827db183ab0f7"},{"path":"/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","hash":"93fccc5a13669d1df317968de5b2590c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","hash":"22aea0b7487320a5aeef22c3f2dfc977"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","hash":"f712a6d1a54fde3b5c6c41dbe7d8d06a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","hash":"cff2e2ada5d309a662cb05bb0b3745d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","hash":"090663daff7862a91458a7b8ca03e4f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","hash":"adccd59261d4d308580e3770cd0bd118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","hash":"ad4d82cd4898aebe901db7406316ab82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","hash":"d931d0c43164be8791bda3f70ee1aa80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","hash":"7d4ac5744bd9691f24fc3fc585a139aa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","hash":"331387ea77fae9eee85b67f5e31abf6c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","hash":"61309d04374f7afb4ec42e6bdc24e920"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","hash":"ebfa6ac15e746da747f5533d2a54c06b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","hash":"e7aa6d241a553e6e49b6128929a0ac89"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","hash":"8fa30dbbbc4cdd0646a81c9f5cea46f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","hash":"42074e2b3250cd1eab474db9941ed08a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","hash":"61fc5d47f00a6477275a3102fea8cbf1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","hash":"0aeb0a21974fb6c312f3478d81b51f93"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","hash":"32bea27a87f9093daeefaa52829f687c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","hash":"3f29e94ce4c6c07d1bcb3dc510b9feaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","hash":"296cef41d634abf372fb89f66b82434b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","hash":"124e39caf0044d319a0a82f95cce01d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","hash":"0491e1cca60da329c2e03c48abde07c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","hash":"9190f2442b5cf3eee32ab93156e97fb1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","hash":"0fc01b4e9beb5706e036ee4dd2a18994"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","hash":"bf3aeab9379cee97ddcc69d885a477f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","hash":"669c88cbef458b3b049bad5ff3c2dfbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","hash":"42e9d4d3462785bf39af0270d42722e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","hash":"6833d204d709534191c3e0ffae1b3f64"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","hash":"8fefc83c9b77e76fcd2dabbe8cef1b8a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","hash":"ab19cb2ef34f667e464bf6f7276a4090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","hash":"25fc1338a5818b8b96655ddd6b3d5fa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","hash":"7d3f2619c15bb38d440a3ae894893177"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","hash":"2ced89ae106e1607e18ce3ef17b79bf4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","hash":"09f75080be8aa63c54de8f0f13d49397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","hash":"b78151963bec1265cdd95f4e4c83a75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","hash":"38e9bbf0c4b9be4d755c28884b84b322"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","hash":"d1410f48ac374235aaad55cba40bc4be"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","hash":"8b6bc5fa08a6b7106be8385bef8d3f87"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","hash":"4d9855c5c4a2df0057ef4b01975075e4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","hash":"9c094b5d96bcff2f7c3ce85ce3101679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","hash":"c458aafc65e8993663c76f96f54c51bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","hash":"60b4523b7d94f2184414a314335fd486"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","hash":"0778c4eafda29c528f4a402f09dc681b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","hash":"31c7443c821ddc575659a119a00bb42f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","hash":"bba71a5811a4c39e16cfd7087e7d5f82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","hash":"d069d474f3092042e67cd7de4bdb82ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","hash":"686731748d53f10cd1bdd7b457113206"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","hash":"cc930e72835a0bc8e575042197dbcfce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","hash":"ef3c172e10ae4e723ca920d42664a09e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","hash":"49f0f0e91f5b1be29100e9d755a0db02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","hash":"917487cb133bd9030e72e0e06856f5ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","hash":"12fd812a55e344d79f493c9c78d3e6c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","hash":"479493da08b4e2137fc162ff23bef99b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","hash":"9df03a340058a4e7792cd68745a4320c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","hash":"ccb08191f9bcfb4f1a62504278ce3a1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","hash":"1f334b50f4df781bbbfab857581c3540"},{"path":"/Users/decode/work/flutter/packages/flutter/LICENSE","hash":"1d84cf16c48e571923f837136633a265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","hash":"cfe784116ec12e5b030a3a909043f0eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","hash":"84e5f15faf70cd8517f45973b9e93dbb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","hash":"1026f587763defb6fb1eec88c2154a3d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","hash":"0722b5d6745ce6645d6caf63b2aedd89"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","hash":"6a692cbfb0ac7d94ac51f7476c2b32b9"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","hash":"e7a14e1ca3a2e91ab267ff401ce30bfd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","hash":"8559baab97364a51be134a959392660a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","hash":"11ddb14d335c7abe7d01544d689a9cfc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","hash":"83111e0bb0ef4128feae2edf7166be2f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","hash":"fa6839623ecc7d14a4396269172b75fa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","hash":"11a634821b3bce05dac94f3dabe52a75"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","hash":"d17e0458ef2b4cdffbc13c8b6b441a9e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","hash":"eabaa11e875f30c638dbea199dc82f44"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","hash":"40fa279b08807ed54fc6415e40e74890"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","hash":"5beb6330c4fbaf6bf4abd034e6b7b67c"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json","hash":"a676c5fab258c180de51431377e2c85a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","hash":"a2a594ac094ed456446650f38b32cc3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","hash":"b71ae933bdc407aa375dba5f378198a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","hash":"8ebb687266ac064712bb7ff7158d106f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","hash":"b9e3ed70ab5e8c760f86ccdb79a5d039"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","hash":"b784d4742c3dd4477e99f44c2a254907"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","hash":"dfc46bfa781540b08b8225ac9a0b9b29"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","hash":"06ea9940aad3bb36f23d75399f50cc25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","hash":"e6131583e11852cce5dc36b190644131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","hash":"43afda18b80de74d64e5858c6e99760f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","hash":"fb2d46e6b265c0c0ea1af0e6eb6c0b16"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","hash":"24072c05f67aa1bd35a3389621d80c25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","hash":"2e8b626fa3b55a9701a9e465056b3c34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","hash":"6a0fa6360b3aca8deb85dc7d88176eb8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","hash":"3ef73748f32e082c00f63c8ba34aa377"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","hash":"e9156196a451437aec06485acd41e3a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","hash":"95c52f75b6732050b2b87ad920f3cf14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","hash":"62da8696885bd25977675ac4f7f1aef9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","hash":"168044116891b9bbe45f3d5f7ed816e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","hash":"531d1d96bce7aa59a6109c02ac538cb0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","hash":"6b9e435854586ad0262f2df15faf9652"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","hash":"d4bfff67af034e60b49e5d8c762d827d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","hash":"0751e731a4a73fbac2f26a98ce39f8ad"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","hash":"a3646639b0d0ef7795bc7559e7b991ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","hash":"580a1c9361f66db5377d1151704dc77c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","hash":"2a0b9a600ec09eae15ecb49408c970fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","hash":"7eedf91ebecf044f8689850d664468ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","hash":"c42eded8d81eb7061382c1b780cccc17"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","hash":"b12267aa6ec80a40cec57548a12debf3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","hash":"6a7cef816d662014b8fff82eafd4bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","hash":"45a20da2b86984fa0b29030dd190c75d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","hash":"49510c76201a05eba3c239a16896508b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","hash":"5ed8acdae7dd3501b64b0ff3e33c1f45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","hash":"937d30420745a1cd13700541c6622560"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","hash":"b0e54f78383dbb310229e9a2f1174938"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","hash":"26c15a7df63d4298c4b3951a0450e9fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","hash":"ffe0703cf67f433a0cfcc9b87e730898"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","hash":"6a65e9988b21768c80a49713778c2cd0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","hash":"46a3d1bc9290ef51b685700434b32b44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","hash":"8634bd2ef9d127a2cd8a1c6478924c2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","hash":"32efb5a6b870c4f1cb43ba00aba6351e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","hash":"f5af2a566953c579de1c0a3522632033"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","hash":"0eb0ac1ff445407819f2e7efafd0ec8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","hash":"b2cedc16db668bbe5b025bbbba69c6d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","hash":"8865f4ba0316aa33cd4b8e48694ae276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","hash":"8dcbf9c6d1b75bd1af118ae233e7639f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","hash":"c808f81414eea878b72b91f90e2858e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","hash":"6f02df4fb5ddc74004c941b6a039a1e1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","hash":"5e896196ff7ca3b52fffb0aa2866873c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","hash":"53d7f3e3fc0a4263c5c52c08eb9d107d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/physics.dart","hash":"6e29d5e69c5745a45214fe14da377c1a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","hash":"1f57869f0fe9efea648d71823e512b8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","hash":"76d339b78cfd7fa3b43da126d24f6662"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","hash":"e525624c777f81ae3166844928814efd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","hash":"bd34896b1432d6f707498d3df7a7c3ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","hash":"92822ea2edbf875f4f02ee0df917a511"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","hash":"d00bb38035b66ea4837b0e3836742215"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","hash":"fcfae3ecf984ee7d09081c2a7898dcab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","hash":"8fec1bb0c768b230066dba96aac40ff5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","hash":"2775727a104b34e20ef16dc30f5baeaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","hash":"5aa6d283a0d9edaf16e2987bba97111e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","hash":"a131fd3e2eeda716ebe839391d9af175"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","hash":"c5ecbaa65517267fe86dc298ec449627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","hash":"87e6007f2e4468fd84513f05cafcca2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","hash":"9e01d9cd61659f3d0ec6a98a92293d76"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","hash":"d85e44f8ceae50ad608a330fae758f0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","hash":"61c96752b1e816d7add82a5c9881a31f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","hash":"0457a594f4c14181f802c54252615c81"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","hash":"59d07e46049ce7af5b20d0bc808aedcc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","hash":"900f6993636e3b9ce2be24d38150722d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","hash":"30d1084d64be284ca139e2f082e18773"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","hash":"f76941994ddf30e398313421f1588d85"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","hash":"c75c1b6e41b334befa8fea8f40a1012e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","hash":"542c329c98e02e449591773d3c7a7364"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","hash":"51aacf05a9f117da54a963931538b538"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","hash":"711adece1d277c89c00ac553ca718ffd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","hash":"457092647c06b9d19ea071d0ef4fba09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","hash":"7f3b4e775cb1472996a0505423dd47f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","hash":"bf09e04ad2dae39eaaa1be1eb491ca67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","hash":"f3ed1f2bbf9255947413e97c37fc8170"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","hash":"b7a33886acf5e1ae7958146ee3dca9a9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","hash":"4bc0791cae09df89eaa7f2873b01d70a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","hash":"e3104f80561c2766e0404a2e86c1eb4b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","hash":"7154b3b2612920bcf76384c4336b75dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","hash":"cc30d285217e268fa4f3d630ec6c106b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","hash":"24c5cc49ad84eff945c729b1956b2cd8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","hash":"282eed7f135fdf9ac7bed4ce4faf2431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","hash":"42b5cfc1bbde00b6a98563e9e6967232"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","hash":"8ce0a70b958b78f9a2ce2e10d96063d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","hash":"b57fb186ac13e07cabcf79e9203ce0f8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","hash":"c6a45f573f549f569f65331bf54ec4b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","hash":"be7fd149b14f26a8cf158cc573e6f8b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","hash":"76f78a740b294787efda8a8aadd06648"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","hash":"35acbeef9c7f61e14ad7d0eb8a6aac3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","hash":"886142a229b0dda691ec6b45f89b6db3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","hash":"55d87de41cd8f095ff29b79280667bce"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","hash":"55380226455ea534ad3f21ab09fa4cae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","hash":"bfb39b98783e4013d9fe5006de40874d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","hash":"f51a4cccdeb513773de9af509f073dcf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","hash":"3418e2ba1365bf8820838eae0da072fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","hash":"987dfee9ed944d2007a00e521d4fbbe4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","hash":"d5fead7a94377fb7b73964d9144c6cbb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","hash":"4a64d3243f3e64ba6289d9c05d2d8352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","hash":"e87720fd4927910caa07008c23ddba6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","hash":"cd6ec63f7e53e31b1a8a5ed8a84995bb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","hash":"c3eb7baf4000b511ca5b10c22dbb3314"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","hash":"3e30d0b7847f22c4b3674358052de8b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","hash":"b1d7b10a451a7a5680c4473652e4e3c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","hash":"08c2e37a2ae282c740bfe820f238eca1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","hash":"876f767cba36d5e85f168016daf2fecd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","hash":"2cbd59c713944d0838677c099dee647b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","hash":"a3aa36a805436731699f39e6bf524087"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","hash":"835f074a18cdd0d574266ada0993083d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","hash":"3323850953be5c35d320c2035aad1a87"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","hash":"d3264cd95201959c47206467ced2cc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","hash":"011b312a6ef99efa780c4fa8136a56d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","hash":"85f5251e2d480320cf86ef4464727d2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","hash":"ddb4156cc60123adcacc058e16a149c4"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","hash":"e92f281d8b4f90867a8092a830c84e87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","hash":"9ac2b8f7c9eba819c8aee376fdde1ad2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","hash":"04e7480fb89755fcc5f64f7d80ca610f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","hash":"e4ee21048ab83cc50d61ac3784afa9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","hash":"96ed798bc7e796289016d6e02421839d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","hash":"5a24e81c5dfc83ccdcd39f7e55f04753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","hash":"6c79df081f525e2e5c9b4c40ce4b9bd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","hash":"ba03f9104fbe5f86eb4fe59a55a5bf84"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","hash":"34b8b9a525c2edf0191fbd9f925005c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","hash":"54363b635c5af0166a92a944822afcdc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","hash":"94bcda3ece81c51b940128304723207b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","hash":"6b50cbba82bb3e71726b42432c99fd3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","hash":"e067ca68c97d0e48e0ad590b2c8ccb98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","hash":"4b1ca4de6a5eee477b785b591d8a28f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","hash":"3007a85885c8729a7f98628f002c9439"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","hash":"ec004619fab55892c218a0adf229b561"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","hash":"d9c1075cfc34fe12d9eff9286ae10345"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","hash":"e71d390cbb4f63b91608b6ae8a37321c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","hash":"901fb8012bd0bea60fea67092c26b918"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","hash":"cd43cd94616b70eea89a1dd0ecd25969"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","hash":"141e9b257bbdd7538861bb084fff79ca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","hash":"da14b1fa0730fd08c362246e87f84f0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","hash":"6570ec9fa980d0f831f98aff35b3a1ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","hash":"12b5c836341ab1bc20b9f278f54b9100"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","hash":"eeca328d147c15b45c2f02a4093dee86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","hash":"c2f30f0829e63ccf0449de5982e324b4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","hash":"ab7f9e1c4cf503e32f4c64defec28a06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","hash":"1adcc56e3affffb23739c7c9d8a5fca0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","hash":"4a91b5cf945c2bc9e2a4c289df61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","hash":"43268fa3ac45f3c527c72fc3822b9cb2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","hash":"34a2904f465e07aeee9671eaa1841603"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","hash":"c5e89efad0dec2ca225efaba106f1009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","hash":"8d080b6e86801960351d947b03422647"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","hash":"1ff78858694fe6ce139b702533f09ac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","hash":"4b7fdaf8eb582d24d5ce30f8ccfeb47d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","hash":"4a7e1cc400a1f83dc5d388d347e0c1d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","hash":"4fb96b9e2073cadc554a25b36f55e6dd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","hash":"5100fa4b1b76b6c6bdb2377f34e88c98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","hash":"3fe6a46238f7699ff1039e43a3157acc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","hash":"b0024ed9cc48302fac493ce4334ad305"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","hash":"aaeaa3689d512d45aa36116404185613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","hash":"d4f2e5f5bf05006a98a9ec38dfb91641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","hash":"34805aed0d0a89fb081a78edc767bcca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","hash":"fb76e9ed5173ac1ae6a6f43288581808"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","hash":"5b7288fb6b6a565fae69135814261e35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","hash":"fd8e17ae72fb97a796493a41bee55c25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","hash":"4817a73df1c313cf6a6eb86774e7fc99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","hash":"e4323ae67bf5fad2112cf257b91b64d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","hash":"e3595ce1e159aa04bc09f69c5168c454"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","hash":"8a899256e5ac320579b269ee9b2567a8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","hash":"911148240fa2017589039df8adbdbd7d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","hash":"9eb00667159a0046d27b803bc3be86cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","hash":"7f8a376d7b21fcfab175a8adaf39773a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","hash":"38df7f10e1de0ca59f93b7e21e6428fc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","hash":"ce1cedd9270d5130bb4be660d13d846e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","hash":"3ebce28fe3575a15329d8dc59ee7ca4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","hash":"7a2ec4e09818130f24b840639231c64b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","hash":"4f36e38eaf3608ec18c70c13942510bd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","hash":"0711824f5f77fc221ca16dd2833c1db4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","hash":"555cb79bdeff77e5a998348ff955de91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","hash":"0bc946660b54448bb6d71993b97df709"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","hash":"fa29e9b0d579c1ea85e444240a4b9679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","hash":"8672eaa73f78b6304690ad35fad337ce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","hash":"528e19807cd069a9195f4ea136226cd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","hash":"d4d8de3042f1567cf3c3e4c69035e122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","hash":"b7943d020a6c7b63a2483143ecf5f6d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","hash":"665aca3a93721bc97cb6aeaae166ce98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","hash":"04d9c37a08f8b92fefb564624a931627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","hash":"3b694fc6637206a6a63f48dc6460d032"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","hash":"a2832c8e34e1ff435ac8591c9a182348"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","hash":"63cce47fa0e04330662244b0f8617d1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","hash":"81e0e3eb37bee6df055243fe36159762"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","hash":"34650bbb402bea0d9e0905df4adadaae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","hash":"cff85360d3ed608c6c25e665f1d62d82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","hash":"6c285209364e3e656137323d51ad39c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","hash":"9400739d7cb0134c1710855d1e75a996"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","hash":"b5172d7f7c209661c70b4574107cd774"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","hash":"4b5d82ddeb09bc46ae0e980616ce0109"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","hash":"8daf6ce8e54d46d3b37a3a7c61e393fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","hash":"aa4c24c010fb444c843ce3dc261a569f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","hash":"6566a35ff0dea9376debf257bdb08fba"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","hash":"1615400e2e1007e9330ef9c77db7fba9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","hash":"9d8a7927ca14b15f3473e211789eaa52"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","hash":"3f80d418ed7e7aec7e3dac422ccc4fda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","hash":"4c07a36206ab3ca200d52d7f24127233"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","hash":"fbab404ac750764afa92bbfbfdfa41e3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","hash":"f5c7e9c345ce092ba11c9706c0994f77"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","hash":"9e2dc24fb141c54394f013ec20569c50"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","hash":"6d567c275cc8a8f7488526dd82502d08"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","hash":"f40ee654b1e7792799165eb9d04173e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","hash":"b77671e5f5450772922cecb671595186"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","hash":"a485f5c7307db6bbba1d3388b528a770"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","hash":"b8e31732ebc0cea1a9300fb3fbfd1488"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","hash":"498db4873b660f741326f9c4061a2584"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","hash":"d079c201b77316f3b83b37bfb2f06a60"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","hash":"074b866f17aee09c76583b075e83cb8c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","hash":"fdc78d4e397e4c145a0b1c859715e6af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","hash":"3d57a7a19c5e8b51d63231a87a9b6fd9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","hash":"959489b18fda284c434701586b43c66b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","hash":"1c65e4f1e29a4f9e5595513d9f11c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","hash":"fb71dd46672c822515f03f8f0dddbcb8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","hash":"7656627b51b07565889084020b5078d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","hash":"3eb370b59dae381bbca5781ca5f11add"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","hash":"bb3e5fdde3ad97a1e69402918c22f214"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","hash":"3344aee98c44f74ea6fb76c2726dfded"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","hash":"038416fd6da9501daae9bc9552db8384"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","hash":"b863a3ac709501ff91023cec155d5090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","hash":"8eb7f9d0796943d7edb0bc187df830f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","hash":"e9383af731a68adb6b314ec5b1068a45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","hash":"8a3ebe88566064230a8c53e90fb9a5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","hash":"2bd22809ea7f834be075f6bbc989c61a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","hash":"c7ad70d1b453c3200a2c25b6f5ca4604"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","hash":"9c4bb35923984b738cf58549005ae256"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","hash":"e2dc9f40339f72e3b0e309272c5ceaa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","hash":"0978d318570cd386e77d76932a179c4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","hash":"e93367ad4cf679639319dc0f2c7688dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","hash":"d832c1395fd093f66961840fb3c4e795"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","hash":"6d12493069f2abe32b2c0ce97b36f663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","hash":"9936f30321ebd2d53045f2c2bb4f91f0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","hash":"9e22ead5e19c7b5da6de0678c8c13dca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","hash":"726c40ba1ec292d536301fe64a18e83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","hash":"1b3e0df1cc1fdb0ff927760c5c7dceda"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","hash":"c089bcb51f4d22da206b5e3dc203c720"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","hash":"d3f74d846a99e580843bade81eec9e2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","hash":"0941b23f5841e31aad0d25b4ca38293b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","hash":"3f6fe76fd1b6ce55578b873386c13ff7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","hash":"7e3a59cfc4c1fe568c6bddbca28625ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","hash":"bf3e3c95be806ad85836f764c3b6c72b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","hash":"5acfa8abbd3e0d70f514ac65e7da5061"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","hash":"7f164e577cfcf8c8295947195cde2a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","hash":"79ed68fe678281de2561462a198ea941"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","hash":"298e2d00cd7707d6efa4de9bf430330e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","hash":"dedd3e5e4d23fb7908a54c94eb1c9adc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","hash":"9b9639fb37f3307761e011646c3a3ce0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","hash":"44b8efa69ec831d1a0ce74c20ecc27b4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","hash":"ad1c0bc683df393671fbf67b53068803"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","hash":"7c46db5c279bfd34b41aee4e64ba88f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","hash":"fab272ec14b6139c58bfc5c4ebe4ead1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","hash":"4526ea37fae95754b3fafdc5394475f9"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Runner/Info.plist","hash":"e00874b2bed7996431812a14e6527d8a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","hash":"c6f8b638d691a2bba7362cd598d93ef8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","hash":"033c74f582e22e3337b9588f306211d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","hash":"823c66be3a8d17bc0c146c6b7f83062c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","hash":"db1783b3083765425632b2ca451dbbc8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","hash":"687bbf9e1a7bddd4b55174fb07cb6919"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","hash":"c9d67cc655fb9b02d52b68e9f039bc41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","hash":"51ffa7b452686eecd94ed080a1da4275"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","hash":"e2d2090c2a39f7902893e64150fe82b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","hash":"146741f6f87d6612ee7bbf6a6fa9c119"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","hash":"d9bab5fd98c4aeb46f0ee46466d27592"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","hash":"36cb8d9d9c95b1f5f64ca8f983d5c987"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","hash":"8bae075f6533238e997073d1c4342ee2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","hash":"2e0e0e4e8c040ded0b0a7a22afba6066"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","hash":"73b175f4bfcea68d6b2e6668047ffc70"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","hash":"4ed409d0342640995ce72f04370a33f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","hash":"598a75ad8b988bb14ac22ad62acabc10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","hash":"c0eab13b5f00b7d01f2e840be85b3a94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","hash":"813ce513d5d942ef02118ea7a8f0869f"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/Info.plist","hash":"a25bf969a6a92bae1dbdf68f4e6e5b3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","hash":"3c68a7c20b2296875f67e431093dd99e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","hash":"163f0d1be71ecdac16d6010f08d034a0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","hash":"3aaf04a3a450c1b6a144f84f3c778573"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","hash":"f901250cbd5c13750f08f7888069e632"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin","hash":"442ed282409fdd3b28ff6841a6c38359"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","hash":"a7ea1d5d956ca8f43c49a71c61b61595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","hash":"449e5e076d88fdec0781d58650e1b713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","hash":"a4a5a4186c28c8e4e7ef38558ae2fa14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","hash":"5145b27b3db429f9f1da26cfe563bd02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","hash":"1e0b9c706c2f52ef8c68d71e059b368d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","hash":"35a5d2ef7726ea70bf4081f7566c96f7"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","hash":"e7d4ad013f2bb1be7be15dd100e3c5cb"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart","hash":"e34e3802a803f306e616e2090802a868"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","hash":"1824c826f0f8d8a85bda7e1f0bb1dead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","hash":"d19848a34d5b4e5fe3e2ea44195d6dae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","hash":"da856751b95477557d7f15c5844b9bde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","hash":"f5c94ee1d5dde386af79c59872fd148d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","hash":"406792dd8d248088cd84be85cf7c62fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","hash":"c8515afa8e555bfec16e832598d4e5ab"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","hash":"41bb908ec3d8ec35ccdccc0ff08e09c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","hash":"9ce6595770687511a1c77ace6f55bddc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","hash":"33aa9632d38a7855ec7452224f80471c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","hash":"38dc31b8820f5fd36eedbf7d9c1bf8d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","hash":"5a0440a1ca131754cd92d8adcf93c8c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","hash":"4df1293c0ca4ba2371070c07770510a9"},{"path":"/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","hash":"6e92335d98b127f7240ff5294e257c26"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","hash":"fe6862ad950dd8849a69b71513319a5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","hash":"e0c22343cfc4e2772a491e04ba0d7fb0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","hash":"9e3b68924814d1e0d7f46f7ce20fa741"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","hash":"942b357f6a2c3f3bd946cb557426178e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","hash":"e6e960458fc831c2981997244673c139"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","hash":"8bfa3b5210d4eaa65b8f5520fb864636"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","hash":"a48ea636b7f2a32cdb71df23faa3451b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","hash":"f82b335ee8dd9ad923f619f83c130ecb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","hash":"056ba78280a44883e05c65a88771b4e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","hash":"9e813ae0507e226c633ee55b4381e444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","hash":"a5636cabd205b19f4d440f7ed4ab56b0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","hash":"89ac6e1a99054eb05805c6e7a6f58e6f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","hash":"8f4de032f1e2670ca51ce330a4de91a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","hash":"f12ebda2bd0dc61bafcb6669fa9ad431"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","hash":"e973169d55c1b0907b263fce8328bc84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","hash":"06c73ad137e5db31d7e6ba4258ac13c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","hash":"f0b223d5921ef09003438d729371184b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","hash":"95d8d1f6a859205f5203384e2d38173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","hash":"7913ef92f8723845c6b90719875b753d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","hash":"3b50c5a9642520832ec2c51c8efef598"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","hash":"1abf43dc3d3cb88360ea799cb926ae25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","hash":"9f9dd658ff05133ca61619a54fdcf728"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","hash":"758d8cac59a8861109cb1c0c455130b7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","hash":"ea88a0c45477c2656a699201e15fc8bf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","hash":"12bb0c18faaed956b27d405dabcd96cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","hash":"d75954340a0c7770eb9a149f7994598e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","hash":"e3a3e744d6ef8ddf1d75a37ba549eaf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","hash":"fe2489ea57393e2508d17e99b05f9c99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","hash":"8c915cd8772100c3b3a4cf1dd0f13141"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","hash":"0c42a29db0996b7d74b3f07560d669d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","hash":"78326e9e1cc2cd7fb0fd3400580b8497"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","hash":"46fb99dbb9a3eb279a14292c7a2ab6f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","hash":"57d00efb9731df717e74f763f9b72577"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","hash":"ac2880d91a3333c4d0e0b9a152bc7935"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","hash":"35c3a0e09f2dcf608b806f259c306883"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","hash":"698a6fc4361dd42bae9034c9c2b6cf7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","hash":"dbac7b1c74bd316f8411f75d43c00c52"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","hash":"8a5443f88214c3152f56a8a22f575f7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","hash":"f483e18d0caffec1965cc4fc4587bced"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","hash":"fb2baf298dad58d749bdaf4fc7d2c6b7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","hash":"5854a36494004175430d4b4355622d7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","hash":"4ae7cf672458e9048b8349c46c96091b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","hash":"ea191ed02800df2436f2ba4d1443acd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","hash":"7c57a9163e2c905ac90a6616e117766f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","hash":"75a750ac4a72e0cbc0915e941a5999b6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","hash":"ac8e4f07fe57a180a83a79d97030a4ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","hash":"b22f9d7fec12cc1b3c07d68eecbae551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","hash":"e8ab94e11d480f9f75e63e48dfb7bd3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","hash":"f5e9f8707b2850da3c9200b217963cc6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","hash":"bfc66f055c8ce27beae0b3ae05350318"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","hash":"08b4e67b157b8770f50c3e1593586101"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","hash":"e090d08a99570e1416246ab66058c49d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","hash":"9d273d5a3c1851b0313cd949e7f84355"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","hash":"a1be5291e9ce315ce3e7ad6598d6edb7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","hash":"3ec266c46c85603471447b253038693a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","hash":"20c06004fe8ded0341d6b7d4ddd9fc63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","hash":"76df0f76487ecb24f1fcaaabd1fc8258"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","hash":"5345d700e34b8a39fc14cfa788794b70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","hash":"3de0b02c72ffa2dbcd4241d85896ffa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","hash":"c0da8171c63f0ab4e822dd094fc2c595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","hash":"101afb5724d465fef432403afe4af239"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","hash":"d3e8015d1a7bccc3005d76a069edf012"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","hash":"da1fc35cf373dff56586ba1d31254ff0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","hash":"ec5409b8e30f22b65a7eee1b00a12d06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","hash":"d0885097eb9ccba90210852d52fc83e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","hash":"677d8642864682752cf5fa1727f11e45"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","hash":"9de25bd91716e1d1dc40d622d4694542"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","hash":"e3fcfca0756d2591ba7a72d8cb8073b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","hash":"5cfb987e1a4ea727dbbc7abb10e087a6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","hash":"cab113513a4eaf18f43c2ff766115379"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","hash":"072675f16dc002f7be3914b33aa7d20b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","hash":"46b900fb75f7497e307a6213009349a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","hash":"04dd39d6f80a5425d8df2875f2833711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","hash":"1ba052cc7c20457f24cdff4d601afdd7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","hash":"2a24aacde74ba309d650ee8efbdce52e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","hash":"c96cf3ee77edfc9062087021323ef01c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","hash":"b95b66e84724047193f602210d547054"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","hash":"2c25776d2e769ec49cc16f5058c5c009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","hash":"7504c44d1fa6150901dd65ec78877be0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","hash":"bc1745cbace394e492a6f9c8050b91bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","hash":"d84f409f2f0e14c957e42d8c74175a1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","hash":"b2015570257a2a6579f231937e7dea0e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","hash":"f4963d4fde9ade847490b09b5add6c40"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","hash":"4d161916b3415cf41dd4e88b9bc495c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","hash":"d0e212b8f3ed7108cee45147dd0f565a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","hash":"7c18da4e6b74ad62497f3cd0d139507c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","hash":"b94fea6e4739a640ef5ab444cce2ead3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","hash":"2249cf40988918b481c0f2452a6f6430"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","hash":"9a963571e5d30e052aba3137cb08afde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","hash":"7d4e6658c86d17b6aad6ea88d538449c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","hash":"0bd83545538b43c50d41386ffe0ac02c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","hash":"e8cea99d6204f5bfb4d0e59002c95e39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","hash":"87232fd9fcb98fdb45b1c8e3450e0bd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","hash":"80c27ebf6b325589047ce9dc21922955"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","hash":"c449771c967516117fccd35f80fc301a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","hash":"c58890a97d5cf176bc4d91c6833662d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","hash":"bae12b316850abe40fa3c581a7dea21c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","hash":"bc8cb2656c892c7107ece225b2c3ad4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","hash":"3b563d880fda5f7afb0a177fdc4dade7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","hash":"561259f5f93b99661449b037a36e7d7e"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","hash":"c2c2e365f320e7c6db65bbaede9544c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","hash":"3b49ce9fe842fb8f8413f8de51949823"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","hash":"4d69882445eaa1de4c2e1555c9a08a9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","hash":"90fd9ee9e96f1bead7267f7ad93dee2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","hash":"88ea97c9aa108e7dfd5d70c21aa809ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","hash":"6c66821ec0d637772e147c298645e478"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","hash":"206b1db3ce5f7b9e5efd220712f8d391"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","hash":"6268ac9b947807a9c6e33f4e24c5ea9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","hash":"17adf1a85ae0d46ce1611f56796dc2c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","hash":"2eff7feead43dfce5967b176c1c0013f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","hash":"a6a5683319eaf061f2f8448162cb8885"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","hash":"0094f20a394b14efbe348499ecec7d8d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","hash":"4da8a7e66b441d643caff99f743d9f69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","hash":"8db17f20e0a12c4bb97383d8d4894853"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","hash":"2eb2de173e53bab6a0a033f89856eae6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","hash":"cb63d73a47fccf6996c81ace196d012b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","hash":"e501f7efeecfca84ff857bd4f80b3ec4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","hash":"a4d65554703b39f73fab92daa1a95136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","hash":"185880d58f40f0b6c9d6f549fc830da8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","hash":"5bd42c05ffd396b9c61d5a82739deea4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","hash":"4b4bb8cbba78e5abac9cf3a216769ccf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","hash":"d46d2121000866bd902db8a26fa1fc3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","hash":"2b77873b8c720bf68e043ce7acd96985"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","hash":"433b37dcc0e33393a88d42baea923fa2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","hash":"8553c507cc30d2d9144adb536fa7d338"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","hash":"e8f54db789c896f29242a5d5ac7ae742"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","hash":"2ffd4331d4ce18eb39bd200f76368dbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","hash":"809f1f0bbe7ee77e69f003952a5525d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","hash":"d97019cfa3be6371779fc0e65f2bc118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","hash":"088b09d02a0f2cafcd87b0fe5f66c83e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","hash":"cb454929d7810d3ee5aa5fc28283d3fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","hash":"0c2a39fe9ac2a3573ea263d944a7d4cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","hash":"0981d0ab711c3d970bf986b59e302ec3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","hash":"1b20a6e406ca8e79675b2ebd9b362d10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","hash":"63473e31f03ea66a38affa41fd783752"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","hash":"b062a8e2dade00779072d1c37846d161"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","hash":"32c008e9d504437aa016240b82566276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","hash":"a1767e0bdb8f6eaebb569c18166e3459"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","hash":"09678623b04063ee4667ff9d46c9adf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","hash":"b360050c2db89b25ecc98cecb0ef8155"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","hash":"77e65a235c67b7d9cbd8e34356b320f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","hash":"005fa9073603c7ee7b06d03658207e2a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","hash":"f13353269669d7b19e3768edaeda5caa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","hash":"2b5fbc54f77ca9c1e5ac90eb3c242554"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","hash":"201730b61cf27247fa4df16398e6dccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","hash":"32a7e3c5b9a8ba1f958c94f1c7ca6e36"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","hash":"f89e43c1dd5f54c745d4a22e7f629e62"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","hash":"7157fe770547a841f9b3e8f7b6765c4a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","hash":"a1fd89ba2ce1c781946ebc5f37479b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","hash":"9ef38c4477b39a88b44a7c9bb85add99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","hash":"2f711a88a049130159adb3f7867423c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","hash":"effb55ac95be419ba221494120497420"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","hash":"1fc60cea565f8ae6d7b4b9c645782ecb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","hash":"1ef43d7012623d3fb787b55f72fb9d87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","hash":"e8149b1e154e1576100fdb79402a824b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","hash":"65d7efb36f1c0981aeb1aa5ca2dc981b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","hash":"e134f845554105652ee1ccdee3595804"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","hash":"2a7b06785c3ebd6af8186adc2052947c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","hash":"52de52753447696c8bf45bf27bc1a8e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","hash":"3b0b3a91aa8c0be99a4bb314280a8f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","hash":"99f23e7e1e32cbca7a688f042454f8fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","hash":"f173549805fd3bdf5ab3b788d3861820"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","hash":"1c5b1dc918055cc35f7c0579f382e24a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","hash":"c2c3d1e678b282fa813c80fa6e6d7379"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","hash":"a54ea9c741a831aff5119d5eabf206b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","hash":"688bffad5a764522afeec286aaee8616"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","hash":"14a9b355cf1f98f9ec1f324162d14c61"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","hash":"cb1b046d23089a961b250ad318ffcd91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","hash":"87b38375a46d6b2fbdaa3ddf8e552593"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","hash":"c741a13227ee01cd4566adb6aae50122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","hash":"8c14eb65e1d80381cac744a2a237818a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","hash":"2d0c70561d7f1d35b4ccc7df9158beed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","hash":"fb5b7d622494887420a728198866de62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","hash":"18a3a7548a40186c8bd9a36c25d7b88f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","hash":"477b648fb07205e73ccb0e9a5e8182d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","hash":"9dacd3228ef8a541f6856788c1d4da19"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","hash":"0e7b89fb20f61bf1a1096942d0cf889c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","hash":"bfcb8efae16b9f03e09ee2adbac97777"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","hash":"3f5e8feebce49c954d9c5ac1cda935c1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","hash":"9f2eb24284aeaa1bacc5629ddb55b287"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","hash":"719246762bd82aaa24c45a11bebbf000"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","hash":"b6bcae6974bafba60ad95f20c12c72b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","hash":"87ed94159c6cc382cbe369889adf2645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","hash":"f09da56112028c2b23759b17c2128ffe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","hash":"b388f6cd7e3b2f6c3521e5d0b74fc259"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","hash":"8a451864f1a46f19700d46fc5d4cbd39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","hash":"510b78d72d59a887b1ccc3deb30c44c1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","hash":"99dd7740cb7ac228673d079cdd12490a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","hash":"8589d430ab74676555c4aa6b8b442af3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","hash":"a44a613f8bcb13fb3e767a28823e5b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","hash":"a6f0f004f94c7166d2961fba341637c4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","hash":"51a93044fe489d37f82f368179e3d302"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","hash":"fbdb7eedf9f48948986e303f68e36ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","hash":"132d11deea43a7c9373e6bce97682c94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","hash":"126c63b07d1b425e904b735cdac85afd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","hash":"1abea6cc1b12dbf5811214407d955b98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","hash":"54e62d85cb0f15d21b510ba8342615aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","hash":"80ddce0052f069a2e288b0c11c9fe0cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","hash":"7ae1eded395747066e88e3923431bc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","hash":"91480f38df85d142de41e5bd0b154d3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","hash":"22b26473ffd350c0df39ffb8e1a4ba86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","hash":"c48d8168694f9c8218f2e6389b4d09d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","hash":"12e47d3f4b91a456d52a5e37594dcdb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","hash":"ecac9109d190060de510a811e0b783d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","hash":"bbeb4833d5502fa794125abfb1594527"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","hash":"9fabe78c4b21534ddc8d87708a5b5886"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","hash":"7c559786dbc1bfbb63a595a7ae3b8e9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","hash":"848a60a453f4e7e02f5b228458f9a20e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","hash":"c1da5c2e88951f9ab78eb684ea6ea005"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","hash":"fe48bdfc31adc4f7e657c36074278dca"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","hash":"17a240d950bc31f50b35a8fb23845352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","hash":"c8c2d53f5b106c425a786e68d00b6415"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","hash":"6e800790e7858e8e1cdc73c8cc09d719"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","hash":"04d38c19b0c3dba61b730122d76ec4d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","hash":"c371589e60cf6e82a661a1f9c1ef8176"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","hash":"b03280f49bd251d8320667ffc244c613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","hash":"b7daa46d4dace857514806769032077d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","hash":"3d97078429fca38a278d2fe38c9fbef3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","hash":"90c1fe2fd81558e20d588ef846f68876"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","hash":"e4973bdb8ceac8b88cdefee5f56f0fa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","hash":"5444a9f54bf4158d83411e292ca910d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","hash":"8df20838abdc91f514eff154c048d540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","hash":"9c4a94ccae77fabd6ced0b6fb26bbcb1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","hash":"8e5ed035694ea390cc586a3c717b9f2c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","hash":"7047d90229336cb3caa0fff5bb3dafa5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","hash":"eba156339bfb71b71dbe1bae4eac2f10"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","hash":"23c3171f57f3520aebc7df7c99927a2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","hash":"ca0af41a91bd98a37c4671c6756df973"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","hash":"6c54f90e0db5f42a13be6b3efeb4a04d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","hash":"ad8955cdfbda21f8ebbc146a61748940"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","hash":"bb96a0e40a5198f25ff6a8b1dfd62a58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","hash":"b5f0b0da99e8a07d58c21ae071800404"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","hash":"e9f9ff747a67938d4e7642c652d52393"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","hash":"0c30a117b0d1fd5c94980510832b81d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","hash":"27ba12c7559ee577cf56315e3d5cb5a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","hash":"d8491440d986e091060129019477bb3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","hash":"3af527494c80e2ab83f264815e12592b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","hash":"559dc718c8701191a2b6ac606aa086c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","hash":"8226499d3c76c47d34329002f95ba90a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","hash":"701de2754bd553eb8fd3f8b90cc9b927"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","hash":"7dae504d7c9e221fb01d1901a657407b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","hash":"8ef064ff25b632dd064e478366b75af9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","hash":"4bac9f63bc7aa9c5e5104179e86c64a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","hash":"ead64055657e29026f4f52cccdf90cb9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","hash":"a341c761d23d4c69ef0ae27385658e27"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","hash":"07758299bbd2261712f35210ee2f645b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","hash":"ff558eecb6fa7834f9f31113f0cc723a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","hash":"4814f7a1c3a7509ddb71fa9f13b2e169"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","hash":"4f5b3d095e8224c7a1749a2de96e5f79"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","hash":"8abcbb724ffa31d2cf158a95c588db62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","hash":"991902b33f1d81c417b707a41341ed59"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","hash":"00b08c6f5f7fbeb394b25a63d950c395"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","hash":"2da6282b5a33b9a2218f60399505dbfc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","hash":"faa0ac8a10d4bbddf1ff7f9126a11f2b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","hash":"52d0a7184d706efef87898ea7eef897d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","hash":"749be25c78d16a260f673757f8078123"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","hash":"c98d039d1ce1e92fa79f1039f0263385"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","hash":"eb7dbdce15d95937efbdc70ed6f37425"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","hash":"4511b6cbaa8c34b467724cd8753fd441"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","hash":"8440fe5f1989837b6ada359898e86c1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","hash":"a54fd4631b3a9d7164a178e5e276aa72"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","hash":"8d5f14224aba09fa1d068eb4385aace2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","hash":"d84ae47a3c688bd889f442426f39be3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","hash":"eb566da87862e7874130e9aa7dc10180"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","hash":"9ca4ca47452f1823249f746da7dd2b5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","hash":"71a9506357890cdcb2ff21d611c4a9f6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","hash":"9510b7a2f095e041d6b01024407d92ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","hash":"13db4f76c4c3dacee24311db33dffb5a"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/App","hash":"63f843d58aeb5458478c386cc128dc29"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","hash":"63d58416836c36cc1685e1b404d4a1e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","hash":"49fbf9eb3339e21c5890c546bed68ad7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","hash":"01deb3f3bd9691f24aea50c4d7ff1a34"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","hash":"fff8e299112c38dd03e2e918a84e52c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","hash":"40892109ac9ef914afc5acee5b825164"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","hash":"d35b72b249d19f54a4cd6f22ff3299e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","hash":"326f2ffb37492fc588de76cf07680943"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","hash":"c83f257da86decec9584473cf41f0ee0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","hash":"44274bbf7beabfe4118db68f399823b5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","hash":"020552519d966b598cd3bb17849a3a49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","hash":"61c71bdda6ca0e69558b10c76f7f2d0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","hash":"d235f51d48e43d80a46b35d3ac1a7135"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","hash":"6394f8ce9f77e64f3433a8a10ff11fc5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","hash":"c84c72c28625a46ce70ed3a8b7b1f134"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","hash":"0a6568148a914b28cdeeabaf131dd0ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","hash":"e54cc4c43086300a6e6c976bfcc4b577"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","hash":"101ff6d49da9d3040faf0722153efee7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","hash":"b0af2681de06f072c797fb66bab4213b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","hash":"9916a2d85ee324e7b395bec41a75db58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","hash":"b9531c458d313a022930a0842db8201e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","hash":"33f365e8e51713d9712771b0adcbbca3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","hash":"db799bf48af97b7c0edc93ad96b4a6da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","hash":"e40f20699182eb1de17efb2d02d1bd9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","hash":"74c6c3273b16f42b3fbba78169469f94"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","hash":"ea5416329e2b15ccc3c6ba2082e5b17d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","hash":"df941eca11a421d04edd92726e3a4321"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","hash":"43087afd2f07c2185dfff2ea8c40cbed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","hash":"c3df4e83c11e996eff52db97215801cd"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data","hash":"8014bc594cdeea049da1190cd894479e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","hash":"e7c9c404d1d2e95afdf4becc03f3f1f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","hash":"789e79772bba1132b3efdb60636a3ccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","hash":"6656ba0c69fefef80b8cae101896c029"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","hash":"5184895d365f664a514993d279af93c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","hash":"d7da19c57ae21b84b31832940bf36c95"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","hash":"1649ee82914f6ad1fd46de466dc03378"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","hash":"051453bb7d9c8983ad2fb529b4ef462f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","hash":"bbc12110db0cd0fcb35a4d45d8c97f5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","hash":"286a67c1ee4d4fa64043f405f661426e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","hash":"63f89c285fda1a11134696c95a5d2c7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","hash":"a6f86b07a971f37494568319ea7cb2c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","hash":"116458bf79c178c3089f12f2bd57e611"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","hash":"f94fe4f82b1dd6f2eebfc0049563105f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","hash":"8388d5e13155ebde873438c26dc4ca33"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","hash":"1f336a83ee9c6cc00bf8a24d2376ebda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","hash":"1871ae3488fd813309b5d8039333de92"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","hash":"adb3d6068a5c45819a04bd2a6f3ab683"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","hash":"bd3e86d27c38dca6dccbe5ac5e7c7663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","hash":"b5b6d18d1e7d2f546507f52385a96d31"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","hash":"f487ad099842793e5deeebcc3a8048cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","hash":"261c95b385a12a314819fc59b03218e1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","hash":"38d7213cd28308ac1f0bd5d81544c794"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","hash":"81ba6d01aa27472e0e1beeadb760ab15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","hash":"65060cb085dab38fcd1a379510c78b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","hash":"ff2dc138db29ec45cbaf3ffd80a036fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","hash":"e09da93d64fbc8904258aa814d093447"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","hash":"a3cb494a3157a15b4bc6e112bd457b2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","hash":"13e3605e178c6c5b63b2ffc79efb6fa1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","hash":"4cb782b79f6fc5792728e331e81a3558"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","hash":"5276912c02c2652dae0fe549d6d4db3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","hash":"f0c6d5d05fbdc95ab84f1a63894b7be6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","hash":"e24d78f8b44fa77d94cee446aba26b69"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","hash":"61573e3ac2c590bbd1aa108ff2befe4e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","hash":"d7466bb710671e1babcb397057b89abb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","hash":"8117e1fa6d39c6beca7169c752319c20"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","hash":"41696c18e708950dccaf7cb4f5b7b195"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","hash":"8e9a282a7834275740dbac1f3d8f77e9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","hash":"c923a6390994ceeb31124b620be66886"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","hash":"1eb9c499979adc0aa7a4c188cb354fa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","hash":"550b84fb8387deb93f86f5f654e7fc5e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","hash":"aa5e38a67607d3ac92328300d453f203"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","hash":"ca6dcb9cea6b00d39a1deba4017fbde5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","hash":"efd86bd9a7183660b902f2528da33973"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","hash":"975c2b518f6bdf0f423f19ee2d20f037"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","hash":"d19d18ba59c99c56f5cd539e808ac093"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","hash":"e8b32b6d7c1328dfb1968caef8249452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","hash":"2f66fd533c14db9ae785e3fa83c39692"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","hash":"f75f31535e16b018e2a5f9a968b7254c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","hash":"01049ee9adcd36bdba77ebdbf08c8311"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","hash":"32f5f78e5648f98d8b602c6233aa4fc5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","hash":"21f20162e45e5a6ed9d59115951fff5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","hash":"692c5789339c99399c7a60abebed4867"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","hash":"4db80cc65121c34e697b03dee0d589f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","hash":"e0434f358d6cfe80754357597dda5e2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","hash":"fc6ac74a8ad779b64bf7e626552ecb2a"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","hash":"cac17f3e87ed4c54d051f947b087934e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","hash":"05778db9e882b22da2f13083c9f28e0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","hash":"9d1525a634d27c83e1637a512a198b4f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","hash":"e8ef425330dd4e0f06b8cdb9762f3d38"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","hash":"d4f2c32d896c5cb74142f43f86b908ea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","hash":"6a67d38bafe568f1b4047286d586fbbc"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","hash":"45e9f88a67f4bfb4010486becf9b6ed5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","hash":"d7393d6e408c5f8cf5af1efbf79fe17b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","hash":"d623b1e2af43bcd9cde14c8c8b966a8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","hash":"251708085912ebabc0559c31d7f9ef09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","hash":"c74d6bfe6ed9493e9a15a793e240491f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","hash":"ee68bf1c0349b8c6530da60950fa4359"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","hash":"d98eaef69fe0b763e12fde9bb4b63a8a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","hash":"c93f10f7ab0acf4285085b5125dd1bc0"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart","hash":"b8aaf6e23756468123709d97b2941714"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","hash":"5369274e0f2aea3db2ae228646de17c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","hash":"478e1071c9f577b6cabb8d72c36de077"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","hash":"f627691ae693e673d0a28ee10fa7ef21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","hash":"cebf7c8a42cf1ec0eb4c3cc0c1c9bd99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","hash":"e6b1d4b1f712225ec2e095ded085195a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","hash":"bef69459165c25c77ef86a22c5a37605"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","hash":"27f8ff5da1c6125dcc748d894d5fd5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","hash":"cc0ab0117e8a0a54ec3efe6d9251860e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","hash":"fb92f0b8decb7b59a08fe851e030948d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","hash":"8051a4ac9b61f1304162308056f35ca9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","hash":"d6f1398a30e5929b4deccbeb0321c7df"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","hash":"688492d1b07b6e1942711100803e8771"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","hash":"d236c79282a2d6cf63ec4d7097400744"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","hash":"c70e6da8344437d843e7eb009fd18da1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","hash":"700328ab0177ddfd9a003a8c15619c1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","hash":"39221ca00f5f1e0af7767613695bb5d2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","hash":"6aee7a8b65e3407c8a156fc94c3e052b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","hash":"df6ed53abf7ae705a620f157326aa612"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","hash":"0cb06ef1fbbec09f85b6b40cdeaa2f9a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","hash":"72d0ca199b14f8ad245f36eede78e596"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","hash":"58ed42eb75db18120985e92f14d67c0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","hash":"d731e1b690975788d014e6df127b2a9a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","hash":"3984ed91c254da74e99364eeb9eef452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","hash":"06e25506dd42326f711f5a02366048ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","hash":"1355e7c034fb490a3da4b604bf4a245e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","hash":"892528317c4253ae78167230f7d4beba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","hash":"0a7c8ea575635aba0b835cbf35892f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","hash":"507fd70b4d332ca05a060defc0a30098"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","hash":"7f0426ad53c7e79c8cd32d487e5118ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","hash":"3e2055944da449718bf0c26748b9d102"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/App.framework/App","hash":"1b12a18ef74d2cbf992040298a8b0dad"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","hash":"0d4ed62bca671639dab18b4b00e56c06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","hash":"daa0c9b859ed1959e6085188a703f387"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","hash":"ff8176887d706346f1adf9b10d93223a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","hash":"530313c1da5269e06b8a8f6166b905af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","hash":"838b1a8d04253966a27bce11dc98a30f"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","hash":"424391b8ac9623400ffc82b20fe293cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","hash":"2c91507ecca892cf65c6eaf3fbe0a7e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","hash":"b9b84bf4881138ace165fd23b39a89d6"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","hash":"bfc483b9f818def1209e4faf830541ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","hash":"3e7ca9cfe22d164ba5ed448658327a56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","hash":"982726fdb49b5659a34bef13c46732cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","hash":"9ebddb9a0743de208281e764b9454978"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","hash":"d8221989cee24f5d97fddbb2a535b34f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","hash":"543079fc1d0c7864e7a179f3dcaeb44a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","hash":"ce98eef91a240aa9f848a1b9ab61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","hash":"9f9b79f577d9fdf4f20c17a26a2f1d57"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","hash":"3c4879149bc0b27f216987d9377b87a6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","hash":"7ec68a5bb3492720f51417187a4c483c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","hash":"1f408d5024cb1ebaff1bdc7d2d642b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","hash":"3f85e3e092ec589ddf41b6b55333a0ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","hash":"79b897f47b1a509090e36c269beee3c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","hash":"6d23ba25bcceae20030197d48ceef15d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","hash":"64a2261cfb426cbc1bf5f5985fed327d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","hash":"8a380c86046c073f7ca67b32ce9ecec7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","hash":"58a520f0e39b9e2df9528496ad1a2c9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","hash":"81a6a107cbfd5dc1c55af9a93189bc5d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","hash":"5e4449e268519798f85916834694e7e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","hash":"673c6fc6ba5a1499362db4bad82b3f10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","hash":"f4b52208f2ac65794c0722ae22b2ed5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","hash":"bc24832d7688f6f72fb58ca8955b25ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","hash":"8d98dded771d32c2da930062f63dced4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","hash":"c29035e43b5763692f19fbe5887474f8"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","hash":"c22dc25aee98f0025778b81318f57e35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","hash":"c7971cf1277d543b2ed589e71c15cf56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","hash":"a8f2c6aa382890a1bb34572bd2d264aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","hash":"e2f7d6fbeb362176a24cb422a6dd8193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","hash":"905cf0b0433d17c9fff9598ca1e5a815"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","hash":"acfd72852e16d10d8797be366c796133"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","hash":"573ec6f55c4e9da27e0e8c6b69226069"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","hash":"b69f3e8fdd39060d1bb88769c6d5f731"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","hash":"c5e481f1a4ef788a50f4aa68fb4c0d7c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","hash":"92a9dd086197603283733846748c6096"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","hash":"564c7ccd87ca886f79f40db2feda663e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","hash":"fbc5d5b64be654228c88182f2f0e9f1e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","hash":"3fe26220f09819b16b15bfd2aec7696b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","hash":"690a90a4ee81c904e39ecef223720fe5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","hash":"f47fc7f755f69c147dbc7d4cac57f0da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","hash":"9e46991f24156e5892fd1b8c3e0eedf5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","hash":"3002576a5d7eb8e97c03a9fb8042a016"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","hash":"0f829dc142100de0ad5bd4320315b191"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","hash":"903d9a8ecbea5b745da3432d5197d5bf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","hash":"383362c943d53b1e9cb7db84db0427f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","hash":"eab95de42c453db7187ae1bfefc4a481"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","hash":"2c5cc6e45f5ec0f541dc47f326986431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","hash":"e81341d4c5ee8dc65f89ae4145cf2107"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","hash":"3bb0652e163327c58784ce2a2b882a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","hash":"0a120ca3aa00e2a367ad33648b49a1e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","hash":"31bef5128dcadbf7d3e638769a5ccb63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","hash":"02880799cbd012d681a8d898a1293e67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","hash":"f6da0daf266187d3ab6ea8ae16772aec"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","hash":"488d308a0cd45bf398708879506a91e3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","hash":"f63bc535d25a8bcf67f0acc5d71c9252"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","hash":"1770aee1a90fac6336e3664811736471"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","hash":"1ac261c28033869c8bcf9caaedf74f6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","hash":"490acbbb52ad35888f5a430a33c0650a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","hash":"9cbb91c1b2e44cbd834663485bf49156"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","hash":"bb644b5f4cdf7ece840f06a3017bfe54"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","hash":"32a992510b885844e290cefcd5d09ce4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","hash":"311f57c9efa242be81f6bff4085b694f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","hash":"82f04582d6435fe28d0de62ac8646291"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","hash":"deccbe5e50fd283d096b079c3830b295"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","hash":"ae88281d46a999e81dd2d63a97bad90b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","hash":"2d616b6da53dd3a5bdc86abaca3656c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","hash":"d678e87e7d7f75d05ddc20a878f28313"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","hash":"fd037bb7e5e0417b1b57b2589825c2ed"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","hash":"a64d04b7a2bbc33416829490aac5ad1f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","hash":"1f2f230ab658e9a20934e8821367f21d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","hash":"5a938eb8e6d0513d8448fe7adf46ffd6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","hash":"9a7022bcfa03c67d126e948062508201"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","hash":"457e52ba79ae9fce0c83b6b927999443"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/app.dill","hash":"442ed282409fdd3b28ff6841a6c38359"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","hash":"b699e128d86de6c400fab59bf5ed37cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","hash":"ea534a294d4f0ad77470def3a308074d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","hash":"18149c55b175306f694fd72c293e8a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","hash":"3bd1bac4de6d891e214330108e1c981d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","hash":"7b5d3028b282375b07c851ec6378a9f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","hash":"ad3271502e45fbefbae041fe273fcc78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","hash":"acf1a155ed6a399140bf98cbadc44ae7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","hash":"f2635eeaaf9379b39e0c48d203b260b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","hash":"1f4f05a739274cdeb88c110bc6561ae8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","hash":"1a1eb3e518bd114812bdfba4bd5f9b88"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","hash":"7776cb84483a65e3498638a8beff3cbd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","hash":"7e48865e3a52a9c6fc91567a38b0bcef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","hash":"aae04d9745367d56247b3ec312b3e293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","hash":"cc825b21e6408725444839a8cf7c1a59"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","hash":"e68148de255875ff9116acca5baea852"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","hash":"e4b34d42cb8324d0485b25f1d3d9c1bf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","hash":"a39ccba3f049cbdd03baf58f3ada518f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","hash":"89957c2f5ea5ec355763d9f11292c31d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","hash":"1c25a05549a494efabe301603e12708b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","hash":"8e034e45f13ce8b73e41fdb6cca61eda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","hash":"35d2717563d5dd00e0ab617e09f81f7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","hash":"91202b337594bdb4b484c2edc999bd71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","hash":"2e897a9797ccadaa99c58bc96f4a1579"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","hash":"d280977d9f2ef2bfa87ed3f1a79cebc2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","hash":"c0fe6462e3a08d6d6afbf4f66130d494"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","hash":"1d2e6a12d8aa883fa1fa8f893d4020f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","hash":"7e38424729d139f4ac1ff5183cd59303"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","hash":"42cc52074bf3141c7247f972797790e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","hash":"14c5e92c3e535ae197e3d7b784ba98c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","hash":"26bd7410bad665cd40432c609e68e6a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","hash":"9701dc524a39fdc327239fea530ba5ff"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","hash":"03f36dcee465715c1854d772cff3153a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","hash":"b259b177c1515fa5820f8213e12fa75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","hash":"0f4cb9768fb17bf7a5d45753b15a2092"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","hash":"67a67689c5e814c245beae89edfa8ec5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","hash":"9a478fed4f2f15993c892e33f6fd766b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","hash":"0f4062e6adecb15307af04936ed11620"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","hash":"dbf4f1e95289bc83e42f6b35d9f19ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","hash":"06631ae8e7ca29e992612634b7d3cd13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","hash":"7608d7808a2946263f05be6a6ef8a380"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","hash":"131899d6899385466c5c59327fd335a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","hash":"35c9371cbb421753e99a2ca329107309"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","hash":"08fd4267e134da8246d879f2e0690f32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","hash":"c8030797f5e00da5da18972f7f5c199e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","hash":"81077a53c1678d32bb002301d64d0548"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","hash":"c359a6e952958e57c58e53ead868196a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","hash":"7f4dc5e612a2925e1f1c0cef8061d976"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/animation.dart","hash":"b3dbc4e6cac78b2c99e3aa5e9e498ea1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","hash":"4e84d0303aa781634ad57d9b48af9b00"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","hash":"e053a4d625695a213cd7cad71553d131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","hash":"ab372d30d4bd7bb5e6647f2366297367"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","hash":"054bfcd73a86c30af1991fffff345b06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","hash":"3675358158b6f10be4f0123bc1c01238"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","hash":"f70e9fcb5bea790c73d51431ae8e976f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","hash":"447b270ddd29fa75f44c389fee5cadd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","hash":"0d00a012348d802a099ed222dd200d3c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","hash":"441044fd503112e85b6dade63f2bd1a0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","hash":"90710e516bb97142b02e2fd5553bf85c"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag","hash":"7c315c6fb1cab5ab624907011f583952"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","hash":"170fe4655f45b54388ab850399d92895"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","hash":"51e2008bb51dbb90407c3647c4ed2406"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","hash":"51fa10cf30bde630913ff4c6e40723ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","hash":"e9cfd387e25a97481b410a866e285f5c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","hash":"ebb6556f0ed9f93f8b9de389cb10c2af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","hash":"bc45e1baf7e4cea03c09368d65b32338"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","hash":"c6fe70279c1fabcc739026bb9cfb2eb8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","hash":"f5e211d8beeb6fe549de90fbc48a4a35"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/Flutter.framework/Flutter","hash":"983052fa69f9fc5673cbf5fa2c5bf691"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","hash":"e85b4f3cf370581b3ef11497a9a5bce3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","hash":"2cea8c8bd84e28a8e8b7a655e35ce643"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","hash":"7ef61738fd4e99b34b3379c2f6cf3141"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","hash":"e8a46aad9b09df8e467cb1c6829ff35e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","hash":"973f29ba555dccb1b2450b3831f03e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","hash":"e4868d928bcb5b32093caa9f9720c7cb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","hash":"e8a1d220d69629ac54c287b5f096fbf8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","hash":"f09d6224689342ce8e364e6ba5fea1c7"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z","hash":"c93bc1cf721aa7b4890cd8b37807e578"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","hash":"323be88f9396112a89f1f6dae5b16551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","hash":"f18395f9df21a2e56aa5f8f498da93d6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","hash":"0858e2f9683c0d9bd14362f037286f37"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","hash":"386a816011478bba19bf6973ff137cfd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","hash":"08f6a3a08249e2eba137da4752e72bb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","hash":"88e82a2807d91088b55f29e00aa780d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","hash":"a4452128d10ae55b5e2c701edda87207"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","hash":"7525ba8f2df029fe86fe08725d060d3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","hash":"b5c8f4dba868efb80ed69fcd5a7d3f07"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","hash":"7c221e43840709e4bd38f48c2a909989"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","hash":"157add6fe297fe09245c48cb7a918b41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","hash":"167092121b204ecb5c86516fcf26d05a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","hash":"bf44bc2460fa88f9386f3b647c10bb80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","hash":"63c306461db5c60830794d4def8b7e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","hash":"1312aed2c5e59964982eb7c85c7430c3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","hash":"c7125c517aa8cac22da28ac6e36eef79"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","hash":"6648a14df2e64bca06988745d17f14e1"},{"path":"/Users/decode/work/flutter/bin/internal/engine.version","hash":"6065afae0f787ef56cf3c06e17cf8c4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","hash":"9343b5b49309dcad89c11b6151526278"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","hash":"aa4b5c0cdb6a66685350611b29ca9d38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","hash":"f9ba98375098bc49c41b86dd961e2a5a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","hash":"0f62d58980340b028d6c7a94848693ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","hash":"5ea6f3bff5e08b2791946afb64deadae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","hash":"7f34290bd4853b35be31761b6c7d3864"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","hash":"805d0b620c3aa5e672740e948a1f4d9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","hash":"5e568872f7db50efc3ab16b3deb3d72c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","hash":"69d3c18c01655ebb418fcff2327c10a1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","hash":"7f6c267be8df852637226ab1708d5417"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","hash":"cbfcf5c82f1f0857a2300a2d17b71cf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","hash":"7d9bef290415f78dee8bc0fdd47025f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","hash":"309fca388c4496bad5fbfe0dc5f79fdf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","hash":"206832bc71a4fbdfd4a077b6f35e6333"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","hash":"3843f59e1c5febcb8443f79f1e8d4eee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","hash":"8a3919d89072fa859d8d30ce69a89448"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","hash":"c0e496ed40e0cb9154c5418657d2fa2e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","hash":"d14136e243131a8fe9357941eca1bd70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","hash":"5b539bedaf82a69ffd5c93fe8cb16465"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","hash":"187d36be28f01a2fb9747610a07b786c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","hash":"016c8ca1fd284bdbde5784241f314576"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","hash":"ef25c8f7ff1f10a43eecb0a0f44b38ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","hash":"3a2d505268f5446e5f7694776b69b407"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","hash":"11fb74cfad9b61d3e33c48500bd644c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","hash":"2981afacc7a836ccc661fd0be2eb0681"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","hash":"b324a1cbdb9418b4698cfec22372af7d"}]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/App.framework/App b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/App.framework/App new file mode 100755 index 000000000..545446230 Binary files /dev/null and b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/App.framework/App differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/app.dill b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/app.dill new file mode 100644 index 000000000..421e2f856 Binary files /dev/null and b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/app.dill differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_ios_bundle_flutter_assets.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_ios_bundle_flutter_assets.stamp new file mode 100644 index 000000000..583d857e5 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_ios_bundle_flutter_assets.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/app.dill","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/App.framework/App","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Runner/Info.plist","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","/Users/decode/work/flutter/packages/flutter/LICENSE"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/App","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/Info.plist","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_universal_framework.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_universal_framework.stamp new file mode 100644 index 000000000..d0ad6e1c9 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_universal_framework.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/App.framework/App"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_unpack_ios.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_unpack_ios.stamp new file mode 100644 index 000000000..ba00437c2 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/debug_unpack_ios.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart","/Users/decode/work/flutter/bin/internal/engine.version"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/Flutter.framework/Flutter"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/flutter_assets.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/flutter_assets.d new file mode 100644 index 000000000..31c48eb03 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/flutter_assets.d @@ -0,0 +1 @@ + /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z: /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/pubspec.yaml /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/ios/Runner/Info.plist /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json /Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf /Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE /Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE /Users/decode/work/flutter/packages/flutter/LICENSE \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/gen_dart_plugin_registrant.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/gen_dart_plugin_registrant.stamp new file mode 100644 index 000000000..e48ee97ae --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/gen_dart_plugin_registrant.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/gen_localizations.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/gen_localizations.stamp new file mode 100644 index 000000000..1b2d28c4e --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/gen_localizations.stamp @@ -0,0 +1 @@ +{"inputs":[],"outputs":[]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/kernel_snapshot.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/kernel_snapshot.d new file mode 100644 index 000000000..632c3868b --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/kernel_snapshot.d @@ -0,0 +1 @@ +/Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/app.dill: /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/main.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart /Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart /Users/decode/work/flutter/packages/flutter/lib/material.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/utility_functions.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/app_router.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/navigation_service.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart /Users/decode/work/flutter/packages/flutter/lib/widgets.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/home_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/meeting_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/preview_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/receive_call.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart /Users/decode/work/flutter/packages/flutter/lib/foundation.dart /Users/decode/work/flutter/packages/flutter/lib/services.dart /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart /Users/decode/work/flutter/packages/flutter/lib/rendering.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart /Users/decode/work/flutter/packages/flutter/lib/scheduler.dart /Users/decode/work/flutter/packages/flutter/lib/cupertino.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart /Users/decode/work/flutter/packages/flutter/lib/animation.dart /Users/decode/work/flutter/packages/flutter/lib/gestures.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart /Users/decode/work/flutter/packages/flutter/lib/painting.dart /Users/decode/work/flutter/packages/flutter/lib/semantics.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/join_service.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart /Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart /Users/decode/work/flutter/packages/flutter/lib/physics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/kernel_snapshot.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/kernel_snapshot.stamp new file mode 100644 index 000000000..714a2e87c --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/kernel_snapshot.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","/Users/decode/work/flutter/packages/flutter/lib/material.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","/Users/decode/work/flutter/packages/flutter/lib/services.dart","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","/Users/decode/work/flutter/packages/flutter/lib/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","/Users/decode/work/flutter/packages/flutter/lib/painting.dart","/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/physics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/app.dill"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/outputs.json b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/outputs.json new file mode 100644 index 000000000..2a96d5e68 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c8a732d3049414d121c7ba56cff1e323/outputs.json @@ -0,0 +1,15 @@ +[ + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/Flutter.framework/Flutter", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/App", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/Info.plist", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json", + "/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/build/ios/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z" +] diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/.filecache b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/.filecache new file mode 100644 index 000000000..a1201e6dd --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/.filecache @@ -0,0 +1 @@ +{"version":2,"files":[{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","hash":"6eee5dad1885940a6f6f69328059bd19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","hash":"77fcee8d4672891b204152fd54ec8143"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","hash":"21db6d3de86086328513d01b906be30e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","hash":"ea2d0e58ef3ab5bb9ac77120ef2c1b53"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","hash":"89cdb68e09dda63e2a16d00b994387c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","hash":"63190b810e77cfebf3de760baaf59832"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","hash":"d97a506e94a9f098ecdb1483ca9707af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","hash":"27d4fdebf2e43cf2714e652761621e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","hash":"8635fbec89c2cc03404a2a3233d31bbc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","hash":"f6a7f0346e2863d7c1a206c16b1ab6f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","hash":"3e7ed5e99c20e893e0b98e6465f6be6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","hash":"f8fb1733ad7ae37b3d994f6f94750146"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","hash":"72930239a9378ce977a67804fe0a7c93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","hash":"2fa5623be6e2680ff9befb49dbb5102f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","hash":"cb595dc1e32ae1c22e55b0971067c9df"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","hash":"ab35fb35a2d6cac70b40210ff2304fd0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","hash":"9ef39006752e689eac18ae6928857c3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","hash":"1112185143b6fe11ce84e1f3653b2b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","hash":"fd2a12edfd4b98e55a3b84dc04d027b2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","hash":"44919c3936c0c4f7fcbd5caab7d1a713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","hash":"96b43446a0218f1b99aee172484cfcaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","hash":"1d810658458f13613a213d5d8cb8fe71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","hash":"334d5b02e9aa5fc27e87fdf1a49140cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","hash":"9d633da4b6e0a89f1c7cd8451b8fb9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","hash":"563354fcceca6f2c834a5707c2cd9e13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","hash":"99b0752bf6b7a9261349ee9307cbeaaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","hash":"5487cd3f918d930318d60978428d44b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","hash":"81859a4dbd7cc98b9025645ba344330b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","hash":"0c48f1cd824d3a7169a8cad9385b2147"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","hash":"9422bcb42f545a3d7fad54a0559effc2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","hash":"cbd0196f25d2f055736beb3052a00c19"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","hash":"1a773319137363e711d5189770d4517c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","hash":"ecc7f9827d87dcf6cb23310e70449242"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","hash":"4beb2c0ba82d1328030dc7ff68932b22"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","hash":"6b92d8f12a7fb46649297e25d2cf2b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","hash":"e6a9736eaffdc7d075f11980955fd5e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","hash":"4af79c5c69ccf0cae6ab710dfb84b125"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","hash":"ce9abf977da56e384357b8da18e68cf2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","hash":"d5a62fdcbdcfbb765af4b2c4c30adb47"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","hash":"d83aaf70ed7e980bc976d12b8f31a5c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","hash":"328ff975234df68963cb19db907493ff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","hash":"c4248f249f3e54dbf2f102c850065769"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","hash":"8ff79ac46e7b7c3daaab8484ef94370f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","hash":"d755fc45af3dc64d82c199592ba93faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","hash":"d6a5413022b7739de38c1d30783ec8d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","hash":"418e1664a31b32fc7ee9b7c90f31a67c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","hash":"f9144bb1e0700c5e3341cab1dd29235b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","hash":"a3aa38647fd73e6e6fa27450d34c042f"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","hash":"08d323a9150badb65749c7e42ad05b8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","hash":"0a31dcaeb18fc2ec730e799a0bdd0397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","hash":"8197b93568cea109f4eae8aad4626090"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","hash":"96acd6f3aa049313e96a021442c0efd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","hash":"a3e505f75958f86716a4b6e3f79c3be4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","hash":"9a74595c2e95795b6c96d74f2b6bcca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","hash":"5850e52a3ead8b05860e0f35283a43fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","hash":"fab8d6d1b0e81315a3d78131394d31e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","hash":"2c5d1ee339121f9ae1445e93c3fb5486"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","hash":"3d637d82142ce722be3fff1b564a3a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","hash":"698b7b5743b9cfa0aa9d08de156d04b6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","hash":"b3d51ec0dc553b1b1e883e087d5c73cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","hash":"532a272d043c3dccd91b63d1b428dac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","hash":"bfbcdf98f1800a358974017a5a244b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","hash":"314ccd23936a8da782622ec4912af301"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","hash":"29ae3edba712168bb4fbffb16b2f6aea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","hash":"2ddbf2700473f3391a4be0cb9202e299"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","hash":"b7ae6a21a9a41ce292d8ce22be59102c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","hash":"fd48fe375392a882e621f95b35695b1d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","hash":"f38a99a51f4062e7861bb366f85265d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","hash":"78c252bf8f53d91680bc4ce87a981f7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/material.dart","hash":"88af7ef9b0a369709fd232b83942f5c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","hash":"20956ccacef6e41926ba780a442ded4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","hash":"e6717e820802970026778f01d782a208"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","hash":"565097e561f05b1bfab2b3e5bb1bc476"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","hash":"187f4d908f2120bbcd31bf3090dff5ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","hash":"0982f3329e89cc9a5f58e22b8b9f522d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/painting.dart","hash":"0b006f9af878b6cbe7e6fbad8ad05390"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","hash":"4e7d79277a17c733fd4e47fedc834b12"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","hash":"0eef32ab9b2cf423c48e89f2dcd9bd6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","hash":"7cf915b7566678369785993dd6d97018"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","hash":"6cefb715fb27bae29486a74cc607f9db"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","hash":"6b1e7684c07bd93ed9433f5be917a56b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","hash":"8ec8806c9098aee315949fb5ff5bc0fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","hash":"33f1d84eaf01ea35e4d6bdce4c81b862"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","hash":"dac77e15418b6e85ba8237aa7af31c09"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","hash":"18c04a8f8132af2c1b1de5af6909025c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","hash":"462df06e63c35293d84890049542ddce"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","hash":"42f8bce392a960bb25a61723f20af8d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","hash":"73a1264f4048161cf1e020b447b014a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","hash":"4e87dbcd00020a3ee9f14722e8c75ab3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","hash":"38e17b28106d00f831c56d4e78ca7421"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","hash":"9801ff6632dd0a6938381b54bc163196"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","hash":"792cf5ae893012a7a57a7de753af1110"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","hash":"bfe86f49f28a9914bd7144dbb3aa6721"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","hash":"7b7fcd3f415f29a260e0d5f15c7d9565"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","hash":"e93daf002837e58e2c7e3348062e6ad9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","hash":"265da611bd90e5b3f22b0e399086e1a8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","hash":"b99c4e1adbe94f8d8b8a34b18b5582d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","hash":"fcd0c8e5b3533ede79824283fd8c1717"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","hash":"cfd6ab50f4e4587f01bea319b728817e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","hash":"27a56f8a1d0cc8cdc6879f7415ef63dd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","hash":"a3068ae1637db004de0bcac7634f398e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","hash":"a9d0ac8febdea9748b1e274e2453730d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","hash":"9f8044c6733c0e51933354ab35295e29"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","hash":"eb1f091dfc256bc49d734c8cea9210e8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","hash":"500547c3b30c59fe1ff3c4b559e52e84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","hash":"a9cf3c682c9b87a18b053337bd6c25f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","hash":"ffc342f17ab331ffaa598a60d029c81a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","hash":"2cecbc714aea63bc341bdeecb0a1d079"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","hash":"645e6e5a42aafa161b24b84bd41fb0ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","hash":"adb6794ae38420a92bd5acb06371b491"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","hash":"b9a5134d01050fc5c9f07d40c68d30db"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","hash":"dfebc31c7148db77769412808653a26d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","hash":"5ca0b5786bf63efd4fc72fcecfe1b36c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","hash":"b04282840d037f7e4943e8ec88a12d02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","hash":"9f52d5022bc55475a52ec44288a06e32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","hash":"e3cdba21732fe10342e87f1c90c75b77"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","hash":"733eb3422250897324028933a5d23753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","hash":"abcb2d6facc18b2af070cb86cbb1c764"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","hash":"671d1776ee902611d49f2fd8cb0cc926"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","hash":"ac1235401776e9d976fcae06c4a1bf69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","hash":"39ce21a3ec5d12c9ef5f1e25826775fa"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","hash":"c5d0f45d6de3d145586b46a241a8baa2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","hash":"0bed54eea911a00191131999c1d9654d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","hash":"d975e51852aa1802c81c738dcb4c348d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","hash":"c6b4e0361b3e5080435faea02182ce52"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","hash":"65b026cff392b7d45d6389e48f773d66"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","hash":"005d333eb3e7be6129b49f470bf2a6c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","hash":"6f79b9f026e6e1088cca4c0fac700dd4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","hash":"04343e5e00f2d4a6a59ceee530334dff"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","hash":"5fd3fdb47733961793df2747ede9f8dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","hash":"cc1b73dd41313e37b411b814e333bbe2"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","hash":"ea4e1dc2a5c695efd31b4f944aa6f2ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","hash":"8504cc2dbcc3473a3f42005a04f802b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","hash":"b41739c7771e51de19e76067f9a2671f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","hash":"c32808b4f482b38284e56ea62fd8fcf5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","hash":"e3ed79a2455f7742d0f030dc4a7f7097"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","hash":"9bd1ea1b5932d9ddcb2a49922c96bfc4"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","hash":"145f2173cdc142488f7858e01cc970d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","hash":"034db2896155ca6ffedf49a9b6447708"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","hash":"90d2e3f81c2871fed636143007914657"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","hash":"9325b94e09a773e59eccfedc0dee4711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","hash":"362b1506a336f9a85d0eabb816b63060"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","hash":"3dc027f858c390ed73078fb86ce17bdb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","hash":"edb8edf3942edaeab666e53450efa2c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","hash":"80bef275fa3274c803905212efaa81ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","hash":"5fca18b5c21ccb54bb45fca9a8c230eb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","hash":"b8cec7a5e5d9ccffefa0e7539e92e49f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","hash":"45870d790f29284ea39915e0b2e4ecaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","hash":"288419bf7d5c385c3e0f777da93f9e75"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","hash":"f84a756607dcda1883de021ac706b6dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","hash":"4a5960383439d4ef8fe8b42450ac3be5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","hash":"476383869aff7b87579a7753e47722d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","hash":"96a77b3df76ebda77a5525db0c94a40e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","hash":"ca775fd1da8b4c902a08d53153ec4ab1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","hash":"aa2543ffe35df101f33108e6243f5b9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist","hash":"a25bf969a6a92bae1dbdf68f4e6e5b3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","hash":"4ae8e4147fb1b7f552f1d6c428ef77c9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","hash":"1e4b9425e7c56b52cd233c8b17fcce78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","hash":"60baff7460853877cbb929f66b052733"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","hash":"c703d5a115a88c99fc446006b39e554c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","hash":"07b8cb7ecb64e1fdb5d81b48b4bcd829"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","hash":"30b1ecc00d3e12d33f3f5f3861fbb816"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","hash":"ea66c182859f2263bd2be879287d7325"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","hash":"0fa41fe32675f159259d614ff80ad5ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","hash":"36b6d958e428191d36c3fc7ff3f272af"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/App","hash":"b0c7b9b20b9bc2ae077c4fb5c911a9dd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","hash":"55699f42160ec7cd28e59b3d85b16679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","hash":"57dea595cd79ae393b4b195d632cafa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","hash":"9d79df38c954cb1d6aef9a622fb16826"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","hash":"f5679fafea18b2907b3995e2f751f15f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","hash":"1af4ec1307aa8270fb0739708f0c0882"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","hash":"319c25a79e3bd23b58ab78b5a0aa0d34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","hash":"6e26bdc5ab4d4d183549b8766786c663"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","hash":"49f7081dc5d9a05d4fc221fbfcfaba04"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","hash":"257ca4608e7d75f1db8d4c3ab710ac70"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","hash":"96697a47b1bf47f8a0a957b3c095b8b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","hash":"c4f6ed7cb2df39d4e4c5e73512f0e27b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","hash":"60791527ef7b7b0e4bcf56106682aa99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","hash":"bd1315cfa157d271f8a38242c2abd0d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","hash":"99d5ab829b70ca98223a892d2d09a553"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart","hash":"c517fb54b3d66b22988ad7c8d07c6f53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","hash":"2da52edd1b7a1dcc8df44ef7e4601583"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","hash":"fda9c6f48f58c23eab466cd8565a77fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","hash":"7050c8c94b55eb51260ca54708b460fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","hash":"f646bd33e4b4047f7cbfcd5960072e4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","hash":"0e9ade359ff29a3a17224025ea6bfd30"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","hash":"e7255e0049813e935232face99f33ef1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","hash":"26d4445aa83cf6b5cce2fb52c6f3674e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","hash":"e7a50fb0ceb5c66e2988808e21808aa6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","hash":"fe52344c0c5470d7f044c347de68987e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","hash":"f404c13ab6ba7fca8a465852af425026"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","hash":"251c46a18cddea6662d3285c95e7e991"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","hash":"974d0c452808a1c68d61285d0bd16b28"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","hash":"7ad4b1f7d7435272c14803d189af6d13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","hash":"9b336c2a5b6668dc801b1d8c89124b1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","hash":"443fe4357544b85c13ef051cf37a602f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","hash":"c3234cde75105b7fb54ae124e1af3e93"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","hash":"d20e1a7a4860303669f49b2fcf70cc1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","hash":"b1360160e39a2f36567fb0df8ba7e03a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","hash":"cce72b7435a0a5aafcb3cca344af00e2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","hash":"ed6bc3c2d3f1ffcbdcea972d430440eb"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","hash":"05b02a903db9d6845d22e98753e081c3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","hash":"bd4687a32363d17bbc130e0af577152c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","hash":"2c822e790480edf5d56f0b6001bb05ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","hash":"ac9cc8c75e7732738ac8deb81fccedfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","hash":"5019b5d158fcebc32762c014fa2c9b0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","hash":"67d4bb390f36e86565a02e8437511790"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","hash":"c9f68b9d0206a1a71be33f572d419b74"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","hash":"114f4cc9fde49fc429c98ef77f626431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","hash":"cdb411d670a094822c46ead81fc1c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","hash":"188d03c92376ce139ce247b0f9b0946e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","hash":"03372d734d84040c509f3cacf8315edf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","hash":"263d65011d90bee92deefb163c823890"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","hash":"a1e4de51bdb32e327bf559008433ab46"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","hash":"215ea407318b75782d0a36692e036ca8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","hash":"ae5863ea476e0f897d69f2342c85437c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","hash":"5f5c07df31f7d37780708976065ac8d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","hash":"3c72e68db8be4e65cb349ff74568eb53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","hash":"d62b3af98fb22fa468d83954bf069d5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","hash":"ff2cc2a4a374dafed8b1d437480a6f07"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","hash":"cf72bd613d277b76bf935e6c5bfc157d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","hash":"db4d1d27ac8f3c67e5c3e8209d2827dc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","hash":"11565ddf9ff6c5542734e969d7abdb9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","hash":"7bfefcc0929d945fa61bb7870de1f659"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","hash":"811f24def860b7ba8a50bf101cca1188"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z","hash":"c93bc1cf721aa7b4890cd8b37807e578"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","hash":"5bd4f0c87c75d94b51576389aeaef297"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","hash":"c22745b15d4a47feb3c75857d8d9e0b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","hash":"5275d424aba5c931a30e6bd3e467027d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","hash":"2430a12d4750c3c76ef07d29bb6f6691"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","hash":"98947dc53131e00bf0eb82564931fabf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","hash":"a641dfaf4d467277c7075e54e33dc55c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","hash":"359388897ae53df8791213c31ef05fe6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","hash":"4eb115890ef287afe9c85387313602fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","hash":"fd597da8144be9d29dfc1d1ff0733dcf"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","hash":"fc5a943b4066ed396263dcaa72d202c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","hash":"22843b6f1d2688461f7802211ecd1836"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","hash":"b1f861676f6495e6b884459f0d1ce964"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","hash":"351ed98071b53d3c2e98d376f2a65a74"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","hash":"82030078ff5d06d4efd4970a53c03669"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","hash":"0d86d4ba2e01e5e62f80fcf3e872f561"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","hash":"74b9d525d5d35a3f13d7da102d6ddcfa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","hash":"14271dedbdbf4826f17d0dc67aaf4d14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","hash":"7697e9da7ec5cf202868f4335cf03549"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","hash":"e6c901b6ad02eac173f31cc971b5b703"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","hash":"7fed4fc7352633413ea4f08ca1087df8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","hash":"2dfc9e555b9df3380a6502bdfab9527a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","hash":"a457593201de333a2db90ca058632293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","hash":"f4b67c136a2189470329fd33ebe57cb3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","hash":"59241e0339f42c809368fc054b767aba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","hash":"22f170a8dc9abfac2942555e83589e1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","hash":"652ae9f598ccacec05fab019b21545ad"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","hash":"d8ac599f1de0f55b47ac48f3bff96af1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","hash":"857c8e3b5e2aaec115da9d5f5dc48c32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","hash":"63301a1f08f8a8b9808b22662f4c1bba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","hash":"9886ca25d16f34e46171e428c5014d21"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","hash":"d0da5ea7955f48054ae624e16528193f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","hash":"b935a1b9045bfaea3990a510732d5824"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","hash":"80e7f6041ae080a76c34cbb7a363fc1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","hash":"2f874d84d25897cae53e33b4dbfa3350"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","hash":"d2a2d8377af7f577a4e2b4fadc6a638e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","hash":"4449a9ff2f8ef7121f4e0e47a6cf4bb6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","hash":"3ef55cc59bb88a61c8bf5f1ea2faadf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","hash":"356b3a7986bcd450e76a3fde0d5c6e0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","hash":"355cd0132946f4de06b53d2d53d0f608"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","hash":"68990009a2ffd358f279c0941f5acb15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","hash":"c23a0415bdaf55efdf69ac495da2aa9b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","hash":"14acd577a81cd5aa871c66f430b95d97"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","hash":"81e9a073bd391f4db986dc7bef2f63a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","hash":"e7715c9d0c6652b0ed4cf68026a01618"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","hash":"8abcecb81f99bbc024b3ed169c86b95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","hash":"a2e5169f4b87d1c004d984b1a5653192"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","hash":"f158ffadca730ab601c60307ba31a5e4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","hash":"cb97666041e54bac4d71760123d6723b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","hash":"98bd090c9889935692ba3e10dfbeb355"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","hash":"bbf5b492c8e9be5dadd80d566cce37e7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","hash":"1e7180abd4c05b29d6f62162c16d57a2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","hash":"91d3fd03ed8299fe37d1486bd87ae6e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","hash":"1bc3a9b4f64729d01f8d74a883befce2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","hash":"591e01a4cb4c63927e5c090b0d064505"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","hash":"a9e643bffeac9afc79115446b7cb7c9f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","hash":"9eb9cc50cf100f8006d01f4027d2f5ec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","hash":"3100acc654ddb312b6bbba471958fec8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","hash":"775ae14a90b86bb0668e9fcf6e6b1b6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","hash":"bb2ac94158003f0a8e831eb24259f495"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","hash":"142ba8c5793aa338f44b464329dd0699"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","hash":"b0f02b65ee2c6c7bb94c4ca6f1f29a6b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","hash":"1071242e6247c3ce723a11943d44b785"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","hash":"bd5ab55eaa960294d369e4aa6d62ec01"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","hash":"ebb00b4189561689271ac8ff24815bc7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","hash":"7d69bfb2afa429b85b7c3d5075843765"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","hash":"df699735e3bcd730f16ce377d562f787"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","hash":"91cad0986934fa662f3e4d5593174581"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","hash":"8dd3f3f889e2a13598d1e7f392425e21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","hash":"ac6376ef781bca02855c6494af606fcd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","hash":"b29d68425258d60c8a5d005a3a42e756"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","hash":"002be4c072c0cc5c5e72b5ff6d0c490b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","hash":"e82a9b67ba33ae635b9b083ef147fb9b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","hash":"8c3ac5572a7395ff0d93be40536e79e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","hash":"2b3d562385f18f088a55dad322dee674"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","hash":"6e00cb0d78bf0bfd57716b6f925d1947"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","hash":"3c69df4cfc2d7e997dfcc783f5326a4a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","hash":"95586aad0f0a7b13580767122c5ce9d8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","hash":"24c1035fad541d49bd16d2b2bdd194b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","hash":"a5266adbd58aab45e34dc05f787ca535"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","hash":"4f683ee2e1b110e70e51ebbf8db44352"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","hash":"993df9991302d75495941ede09bf8122"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","hash":"2abd2c9a42d4caf2b4f1640d68b02fd5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","hash":"5bd9412bfb7a85a944c17f7271c47e73"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","hash":"7fa73a415cd2df461af3c4b0439f687f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","hash":"655cab5b26d8bd0b3fdda75a616f60a7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","hash":"76a75a9f331e9c7b2c22eaf454299641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","hash":"2e7c0078255c745b56a2bf1bf7992df3"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","hash":"2b64d8bbdf8a7af016b43ea6d75fab37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","hash":"21bf6725b1fc374f03ae5b2cb46bd95b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","hash":"7d2bdb4801fc8b3a110f36d5e5fa59f5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","hash":"638c6d804d20c1f83790f7f10c4af408"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","hash":"e5e651253aded8004c5fa54b6bb659e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","hash":"e3dbadbe1770d097ca122e6b5f3cc541"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","hash":"91ec123214e148442cb5c4cec58da540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","hash":"30d8aa5cd9bce4059a61d3ad5a5f432a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","hash":"e6cc47e6123c91543e86f0c9983c26da"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","hash":"6a2092bc6e531cf53fd4151ac189cfd4"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","hash":"01dccfcb76cb49108f19d82eaf90e822"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","hash":"f365fc9346ed92a347bd6659be254ab4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","hash":"79640e9b38fd9ad1126240bb2d3e5f7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","hash":"32c8f2d4dc53cfe56f5fa637be2c52e7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","hash":"1379bbaf280401527c2248647c9c158f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","hash":"d1ab0260adff28180e562e884513c3e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","hash":"a03cc6311acd362bf8e7168e8d31da05"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","hash":"1696ca88c21e3e3b9545f2b5a4736f03"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","hash":"bba56d888d73de62a45f74323e448a7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","hash":"70aa5bdfead16e28cc5d09e987f3dcd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","hash":"c4f3f94bbecf67e4419ca6a8e97d8715"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","hash":"b48ba72a2d5d084d297c3d78e351036e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","hash":"3d54ff724ed3381d38104d6603406b8a"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/app.dill","hash":"442ed282409fdd3b28ff6841a6c38359"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","hash":"ef83fcd13366d1d61c5dbb5c6aae5ead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","hash":"db0d5438467c4c7c0df8a6833226242c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","hash":"299bd3979d7999412945ac4e3199cdcf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","hash":"fbd23a681c22b782bdb58d139c07cca6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","hash":"148c709e17c08f50d3daa670b9f91f12"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","hash":"11e87c02beec338363a30c8f2f49c522"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","hash":"368a628be82e16cf17725d00a83f582c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","hash":"ce35872fe5da155b423c29a2ad542b7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","hash":"bf2738395eea842961e96f4203e03df1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","hash":"46b0774ca33285fd90e42ad91bf706fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","hash":"82d7c6fddc8b4938a5b95f203e86dbf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","hash":"8a2a6e194bea6968fce6409b962bf485"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","hash":"f4c1352de009ea30833ce873d8488617"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","hash":"119ed2f372555dcadabe631a960de161"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","hash":"4938fe6e2b4853e0b4e445e64bef9b6b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","hash":"7dc929eb036d49956284257b4e0d83d0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","hash":"81b2d2a545e6f66510367ee8d4bdbf51"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","hash":"856b5a01bc613989f211a44d67f2c4c5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","hash":"a0f3046203c24b39a0d5e7eb2e605cd5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","hash":"cfdbbeecafa9afe958cc12f0363e0f2e"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","hash":"67918403456e9e1c17b3375ea708292c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/services.dart","hash":"b74bf26ae8105a75eb390fed5aaf29cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","hash":"ea7b5731a74e12ea2a31a21b8c188444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","hash":"fbac444a17bbc7b00af608ec29e0de4f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","hash":"36280c072e87476893ba441b9b25bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","hash":"df55cb6d988b8526b5c461f103fa9ef2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","hash":"8519987f955d72de5736f71fe1b3b96d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","hash":"bdb69d0ad764dcf2d42d8fca35fb9ade"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","hash":"2b6129307d0fa6394c84e3a4ac5136e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","hash":"b3263d1ee9aaef112570bcd31aae9ca8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","hash":"ff49202dfcd82a646d59d2012330173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","hash":"b80f25d51570eededff370f0c2b94c38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","hash":"439c16468a275d15a70b82809ebf6692"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","hash":"2b03803c213a3023f14b3e4849a52b64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","hash":"7725ee45d15fa56992b64ca1060bcfef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","hash":"881b5c11f52613550e6dbfcc45a2dc49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","hash":"c87e19f7c886263df8586146fe147faf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","hash":"3e82e75a5b4bf22939d1937d2195a16e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","hash":"7ec268e37049e5c22e226c94df1776b3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","hash":"8ec86c62ef84ec90ddf5232d5843fd37"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","hash":"b3531fa45ed93b73298389e029c9fa8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","hash":"739bb2e85022ddfb653590b93216942a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","hash":"7ce4485fb80ddad6acd68abaf480ecec"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","hash":"8dfa8d9ef8888059e8c7567b5bdf037d"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin","hash":"442ed282409fdd3b28ff6841a6c38359"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","hash":"fce75150bcb08fa104fded6310750474"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","hash":"aea224eef2ce1d7e59c255050e32538b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","hash":"3ffbd6fc0995838940a61cba006cbaa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","hash":"50298dec288c3e23499a59305365a9ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","hash":"35dab6b93fcd39905685afc374195190"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","hash":"567e295b927cce4c1ac15de8b037db44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","hash":"30a21255788cb6464ab33c6b40c932eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","hash":"9952a908c43edacce7d554bb12e4d9b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","hash":"2accc934e05b459de8fe3362f452102f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","hash":"81a875af62f7ff0581e985d509541da4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","hash":"ac54fa631e760555c0b0488ec73f7c95"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","hash":"3d26622e062df504e7d6d5ecf06c1d32"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","hash":"dc1130be2c52737b89868ba302a4bde3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","hash":"74ffe935dac1b387e33d85915c6bca90"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","hash":"58b20f802baf08f63dcbf4eae87a754e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","hash":"1dac993c7444b99a17f2dcf45acaca97"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","hash":"dbff400b121e6f844298946531d490a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","hash":"83dde9913aa4a689b698d2ba5ec7c676"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","hash":"c71d56c5b6118cacfaf95d34850b080c"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart","hash":"abe9e60504b0c374da79d94794dc79c7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","hash":"b6f7217e92bd0cd6308e102b91a73ee7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","hash":"3e3350346bb70b12a7319e286f300f02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","hash":"dfcc453f5331ec6f2c70cda394065785"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","hash":"b76ebf453c4f7a78139f5c52af57fda3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","hash":"faa4ca37423c4ebc1968a9922537ee82"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","hash":"c324914d8137036411457678f3c69dc0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","hash":"69c59af240ed814583dc1635986b09d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","hash":"8778186a2505e7ec97a1085c9b26d136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","hash":"caac146b9d46a9d99ac6d588e06806af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","hash":"bc5f5368bd36c6369f2502927e08f4af"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","hash":"3bf69bfd4070ddbf2b64ce381c00975d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","hash":"05f3174f379af4ccd07fccea88487a40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","hash":"9a213a6ad0048a7638eb152b56018b0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","hash":"bf9deb76f520208269fedb1ee05992bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","hash":"06ab11848273dcdc3ea237593b87fe98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","hash":"6c7a86378419565d1822850ce87fcb02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","hash":"be8d91eefea139196c14b817299d181f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","hash":"6a2eb1282073818aa4ea64025b0d8769"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","hash":"0fc8427a68447ca1f35a819654791edb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","hash":"8bfab809ab4a9e9720f7a2ca9ae31a03"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","hash":"4a01954c6cb77f1d4f678b32ae946189"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","hash":"9925a270672aceb04e6ec7d0251bf73a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","hash":"6dbd011ca31387e3192d39c999a1dd9f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","hash":"3b7aae008ce78bafe833b0b75669f461"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","hash":"a636b243377d435c9c285533d7db1f2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","hash":"c91107c565c54394f296558118413974"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","hash":"d3c7b8f49006b6d9ca76880dff779193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","hash":"684f3b90c3d984dee726e0dc1fc9732c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","hash":"00d16ae308855ddbf3762e4dbafd62d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","hash":"8e72f0f11bfc09b5d4d7791fd23c4227"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","hash":"6bc029efa11f69cb20f3abf8436e9088"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","hash":"6410a04c8e4b96d057e245179c5b7247"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","hash":"8986177ba204a808c603c35260601cce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","hash":"3ef978aecc3ea1c21fe37ce189d94a55"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","hash":"4ce6f3c41ded0f3794fe3f0106ab971a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","hash":"eade7bbc9bacbd78204c7ffdde55ddbd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","hash":"200c53b613dda088d30967fa0f689d53"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","hash":"9ac903cffbc9fc815782d8e0bcea7e64"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","hash":"d5da49989b2fec96c7bf048f237909ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","hash":"89d496fd298521d95b4130a2ec9757ba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","hash":"1e3139880d4a71af922ea4538ed3a693"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","hash":"6e40ff949fd347e34e4827db183ab0f7"},{"path":"/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","hash":"93fccc5a13669d1df317968de5b2590c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","hash":"22aea0b7487320a5aeef22c3f2dfc977"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","hash":"f712a6d1a54fde3b5c6c41dbe7d8d06a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","hash":"cff2e2ada5d309a662cb05bb0b3745d5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","hash":"090663daff7862a91458a7b8ca03e4f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","hash":"adccd59261d4d308580e3770cd0bd118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","hash":"ad4d82cd4898aebe901db7406316ab82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","hash":"d931d0c43164be8791bda3f70ee1aa80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","hash":"7d4ac5744bd9691f24fc3fc585a139aa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","hash":"331387ea77fae9eee85b67f5e31abf6c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","hash":"61309d04374f7afb4ec42e6bdc24e920"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","hash":"ebfa6ac15e746da747f5533d2a54c06b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","hash":"e7aa6d241a553e6e49b6128929a0ac89"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","hash":"8fa30dbbbc4cdd0646a81c9f5cea46f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","hash":"42074e2b3250cd1eab474db9941ed08a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","hash":"61fc5d47f00a6477275a3102fea8cbf1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","hash":"0aeb0a21974fb6c312f3478d81b51f93"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","hash":"32bea27a87f9093daeefaa52829f687c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","hash":"3f29e94ce4c6c07d1bcb3dc510b9feaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","hash":"296cef41d634abf372fb89f66b82434b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","hash":"124e39caf0044d319a0a82f95cce01d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","hash":"0491e1cca60da329c2e03c48abde07c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","hash":"9190f2442b5cf3eee32ab93156e97fb1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","hash":"0fc01b4e9beb5706e036ee4dd2a18994"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","hash":"bf3aeab9379cee97ddcc69d885a477f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","hash":"669c88cbef458b3b049bad5ff3c2dfbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","hash":"42e9d4d3462785bf39af0270d42722e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","hash":"6833d204d709534191c3e0ffae1b3f64"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","hash":"8fefc83c9b77e76fcd2dabbe8cef1b8a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","hash":"ab19cb2ef34f667e464bf6f7276a4090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","hash":"25fc1338a5818b8b96655ddd6b3d5fa3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","hash":"7d3f2619c15bb38d440a3ae894893177"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","hash":"2ced89ae106e1607e18ce3ef17b79bf4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","hash":"09f75080be8aa63c54de8f0f13d49397"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","hash":"b78151963bec1265cdd95f4e4c83a75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","hash":"38e9bbf0c4b9be4d755c28884b84b322"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","hash":"d1410f48ac374235aaad55cba40bc4be"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","hash":"8b6bc5fa08a6b7106be8385bef8d3f87"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","hash":"4d9855c5c4a2df0057ef4b01975075e4"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/Info.plist","hash":"a25bf969a6a92bae1dbdf68f4e6e5b3b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","hash":"9c094b5d96bcff2f7c3ce85ce3101679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","hash":"c458aafc65e8993663c76f96f54c51bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","hash":"60b4523b7d94f2184414a314335fd486"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","hash":"0778c4eafda29c528f4a402f09dc681b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","hash":"31c7443c821ddc575659a119a00bb42f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","hash":"bba71a5811a4c39e16cfd7087e7d5f82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","hash":"d069d474f3092042e67cd7de4bdb82ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","hash":"83228a1ae32476770262d4ff2ac6f984"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","hash":"686731748d53f10cd1bdd7b457113206"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","hash":"cc930e72835a0bc8e575042197dbcfce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","hash":"ef3c172e10ae4e723ca920d42664a09e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","hash":"49f0f0e91f5b1be29100e9d755a0db02"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","hash":"917487cb133bd9030e72e0e06856f5ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","hash":"12fd812a55e344d79f493c9c78d3e6c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","hash":"479493da08b4e2137fc162ff23bef99b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","hash":"9df03a340058a4e7792cd68745a4320c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","hash":"ccb08191f9bcfb4f1a62504278ce3a1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","hash":"1f334b50f4df781bbbfab857581c3540"},{"path":"/Users/decode/work/flutter/packages/flutter/LICENSE","hash":"1d84cf16c48e571923f837136633a265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","hash":"cfe784116ec12e5b030a3a909043f0eb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","hash":"84e5f15faf70cd8517f45973b9e93dbb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","hash":"1026f587763defb6fb1eec88c2154a3d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","hash":"0722b5d6745ce6645d6caf63b2aedd89"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","hash":"6a692cbfb0ac7d94ac51f7476c2b32b9"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","hash":"e7a14e1ca3a2e91ab267ff401ce30bfd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","hash":"8559baab97364a51be134a959392660a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","hash":"11ddb14d335c7abe7d01544d689a9cfc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","hash":"83111e0bb0ef4128feae2edf7166be2f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","hash":"fa6839623ecc7d14a4396269172b75fa"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","hash":"11a634821b3bce05dac94f3dabe52a75"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","hash":"d17e0458ef2b4cdffbc13c8b6b441a9e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","hash":"eabaa11e875f30c638dbea199dc82f44"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","hash":"40fa279b08807ed54fc6415e40e74890"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","hash":"5beb6330c4fbaf6bf4abd034e6b7b67c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","hash":"a2a594ac094ed456446650f38b32cc3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","hash":"b71ae933bdc407aa375dba5f378198a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","hash":"8ebb687266ac064712bb7ff7158d106f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","hash":"b9e3ed70ab5e8c760f86ccdb79a5d039"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","hash":"b784d4742c3dd4477e99f44c2a254907"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","hash":"dfc46bfa781540b08b8225ac9a0b9b29"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","hash":"06ea9940aad3bb36f23d75399f50cc25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","hash":"e6131583e11852cce5dc36b190644131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","hash":"43afda18b80de74d64e5858c6e99760f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","hash":"fb2d46e6b265c0c0ea1af0e6eb6c0b16"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","hash":"24072c05f67aa1bd35a3389621d80c25"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","hash":"2e8b626fa3b55a9701a9e465056b3c34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","hash":"6a0fa6360b3aca8deb85dc7d88176eb8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","hash":"3ef73748f32e082c00f63c8ba34aa377"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","hash":"e9156196a451437aec06485acd41e3a3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","hash":"95c52f75b6732050b2b87ad920f3cf14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","hash":"62da8696885bd25977675ac4f7f1aef9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","hash":"168044116891b9bbe45f3d5f7ed816e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","hash":"531d1d96bce7aa59a6109c02ac538cb0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","hash":"6b9e435854586ad0262f2df15faf9652"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","hash":"d4bfff67af034e60b49e5d8c762d827d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","hash":"0751e731a4a73fbac2f26a98ce39f8ad"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","hash":"a3646639b0d0ef7795bc7559e7b991ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","hash":"580a1c9361f66db5377d1151704dc77c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","hash":"2a0b9a600ec09eae15ecb49408c970fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","hash":"7eedf91ebecf044f8689850d664468ed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","hash":"c42eded8d81eb7061382c1b780cccc17"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","hash":"b12267aa6ec80a40cec57548a12debf3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","hash":"6a7cef816d662014b8fff82eafd4bc39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","hash":"45a20da2b86984fa0b29030dd190c75d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","hash":"49510c76201a05eba3c239a16896508b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","hash":"5ed8acdae7dd3501b64b0ff3e33c1f45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","hash":"937d30420745a1cd13700541c6622560"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","hash":"b0e54f78383dbb310229e9a2f1174938"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","hash":"26c15a7df63d4298c4b3951a0450e9fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","hash":"ffe0703cf67f433a0cfcc9b87e730898"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","hash":"6a65e9988b21768c80a49713778c2cd0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","hash":"46a3d1bc9290ef51b685700434b32b44"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","hash":"8634bd2ef9d127a2cd8a1c6478924c2a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","hash":"32efb5a6b870c4f1cb43ba00aba6351e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","hash":"f5af2a566953c579de1c0a3522632033"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","hash":"0eb0ac1ff445407819f2e7efafd0ec8d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","hash":"b2cedc16db668bbe5b025bbbba69c6d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","hash":"8865f4ba0316aa33cd4b8e48694ae276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","hash":"8dcbf9c6d1b75bd1af118ae233e7639f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","hash":"c808f81414eea878b72b91f90e2858e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","hash":"6f02df4fb5ddc74004c941b6a039a1e1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","hash":"5e896196ff7ca3b52fffb0aa2866873c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","hash":"53d7f3e3fc0a4263c5c52c08eb9d107d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/physics.dart","hash":"6e29d5e69c5745a45214fe14da377c1a"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","hash":"1f57869f0fe9efea648d71823e512b8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","hash":"76d339b78cfd7fa3b43da126d24f6662"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","hash":"e525624c777f81ae3166844928814efd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","hash":"bd34896b1432d6f707498d3df7a7c3ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","hash":"92822ea2edbf875f4f02ee0df917a511"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","hash":"d00bb38035b66ea4837b0e3836742215"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","hash":"fcfae3ecf984ee7d09081c2a7898dcab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","hash":"8fec1bb0c768b230066dba96aac40ff5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","hash":"2775727a104b34e20ef16dc30f5baeaf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","hash":"5aa6d283a0d9edaf16e2987bba97111e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","hash":"a131fd3e2eeda716ebe839391d9af175"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","hash":"c5ecbaa65517267fe86dc298ec449627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","hash":"87e6007f2e4468fd84513f05cafcca2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","hash":"9e01d9cd61659f3d0ec6a98a92293d76"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","hash":"d85e44f8ceae50ad608a330fae758f0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","hash":"61c96752b1e816d7add82a5c9881a31f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","hash":"0457a594f4c14181f802c54252615c81"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","hash":"59d07e46049ce7af5b20d0bc808aedcc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","hash":"900f6993636e3b9ce2be24d38150722d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","hash":"30d1084d64be284ca139e2f082e18773"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","hash":"f76941994ddf30e398313421f1588d85"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","hash":"c75c1b6e41b334befa8fea8f40a1012e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","hash":"542c329c98e02e449591773d3c7a7364"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","hash":"51aacf05a9f117da54a963931538b538"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","hash":"711adece1d277c89c00ac553ca718ffd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","hash":"457092647c06b9d19ea071d0ef4fba09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","hash":"7f3b4e775cb1472996a0505423dd47f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","hash":"bf09e04ad2dae39eaaa1be1eb491ca67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","hash":"f3ed1f2bbf9255947413e97c37fc8170"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","hash":"b7a33886acf5e1ae7958146ee3dca9a9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","hash":"4bc0791cae09df89eaa7f2873b01d70a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","hash":"e3104f80561c2766e0404a2e86c1eb4b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","hash":"7154b3b2612920bcf76384c4336b75dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","hash":"cc30d285217e268fa4f3d630ec6c106b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","hash":"24c5cc49ad84eff945c729b1956b2cd8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","hash":"282eed7f135fdf9ac7bed4ce4faf2431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","hash":"42b5cfc1bbde00b6a98563e9e6967232"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","hash":"8ce0a70b958b78f9a2ce2e10d96063d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","hash":"b57fb186ac13e07cabcf79e9203ce0f8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","hash":"c6a45f573f549f569f65331bf54ec4b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","hash":"be7fd149b14f26a8cf158cc573e6f8b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","hash":"76f78a740b294787efda8a8aadd06648"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","hash":"35acbeef9c7f61e14ad7d0eb8a6aac3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","hash":"886142a229b0dda691ec6b45f89b6db3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","hash":"55d87de41cd8f095ff29b79280667bce"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","hash":"55380226455ea534ad3f21ab09fa4cae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","hash":"bfb39b98783e4013d9fe5006de40874d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","hash":"f51a4cccdeb513773de9af509f073dcf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","hash":"42d5bf7c22ac609351e84dbc39b12bf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","hash":"3418e2ba1365bf8820838eae0da072fc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","hash":"987dfee9ed944d2007a00e521d4fbbe4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","hash":"d5fead7a94377fb7b73964d9144c6cbb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","hash":"4a64d3243f3e64ba6289d9c05d2d8352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","hash":"e87720fd4927910caa07008c23ddba6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","hash":"cd6ec63f7e53e31b1a8a5ed8a84995bb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","hash":"c3eb7baf4000b511ca5b10c22dbb3314"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","hash":"3e30d0b7847f22c4b3674358052de8b5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","hash":"b1d7b10a451a7a5680c4473652e4e3c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","hash":"08c2e37a2ae282c740bfe820f238eca1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","hash":"876f767cba36d5e85f168016daf2fecd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","hash":"2cbd59c713944d0838677c099dee647b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","hash":"a3aa36a805436731699f39e6bf524087"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","hash":"835f074a18cdd0d574266ada0993083d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","hash":"3323850953be5c35d320c2035aad1a87"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","hash":"d3264cd95201959c47206467ced2cc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","hash":"011b312a6ef99efa780c4fa8136a56d3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","hash":"85f5251e2d480320cf86ef4464727d2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","hash":"ddb4156cc60123adcacc058e16a149c4"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","hash":"e92f281d8b4f90867a8092a830c84e87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","hash":"9ac2b8f7c9eba819c8aee376fdde1ad2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","hash":"04e7480fb89755fcc5f64f7d80ca610f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","hash":"e4ee21048ab83cc50d61ac3784afa9f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","hash":"96ed798bc7e796289016d6e02421839d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","hash":"5a24e81c5dfc83ccdcd39f7e55f04753"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","hash":"6c79df081f525e2e5c9b4c40ce4b9bd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","hash":"ba03f9104fbe5f86eb4fe59a55a5bf84"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","hash":"34b8b9a525c2edf0191fbd9f925005c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","hash":"54363b635c5af0166a92a944822afcdc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","hash":"94bcda3ece81c51b940128304723207b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","hash":"6b50cbba82bb3e71726b42432c99fd3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","hash":"e067ca68c97d0e48e0ad590b2c8ccb98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","hash":"4b1ca4de6a5eee477b785b591d8a28f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","hash":"3007a85885c8729a7f98628f002c9439"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","hash":"ec004619fab55892c218a0adf229b561"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","hash":"d9c1075cfc34fe12d9eff9286ae10345"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","hash":"e71d390cbb4f63b91608b6ae8a37321c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","hash":"901fb8012bd0bea60fea67092c26b918"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","hash":"cd43cd94616b70eea89a1dd0ecd25969"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","hash":"141e9b257bbdd7538861bb084fff79ca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","hash":"da14b1fa0730fd08c362246e87f84f0f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","hash":"6570ec9fa980d0f831f98aff35b3a1ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","hash":"12b5c836341ab1bc20b9f278f54b9100"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","hash":"eeca328d147c15b45c2f02a4093dee86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","hash":"c2f30f0829e63ccf0449de5982e324b4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","hash":"ab7f9e1c4cf503e32f4c64defec28a06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","hash":"1adcc56e3affffb23739c7c9d8a5fca0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","hash":"4a91b5cf945c2bc9e2a4c289df61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","hash":"43268fa3ac45f3c527c72fc3822b9cb2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","hash":"34a2904f465e07aeee9671eaa1841603"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","hash":"c5e89efad0dec2ca225efaba106f1009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","hash":"8d080b6e86801960351d947b03422647"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","hash":"1ff78858694fe6ce139b702533f09ac9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","hash":"4b7fdaf8eb582d24d5ce30f8ccfeb47d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","hash":"4a7e1cc400a1f83dc5d388d347e0c1d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","hash":"4fb96b9e2073cadc554a25b36f55e6dd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","hash":"5100fa4b1b76b6c6bdb2377f34e88c98"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","hash":"3fe6a46238f7699ff1039e43a3157acc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","hash":"b0024ed9cc48302fac493ce4334ad305"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","hash":"aaeaa3689d512d45aa36116404185613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","hash":"d4f2e5f5bf05006a98a9ec38dfb91641"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","hash":"34805aed0d0a89fb081a78edc767bcca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","hash":"fb76e9ed5173ac1ae6a6f43288581808"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","hash":"5b7288fb6b6a565fae69135814261e35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","hash":"fd8e17ae72fb97a796493a41bee55c25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","hash":"4817a73df1c313cf6a6eb86774e7fc99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","hash":"e4323ae67bf5fad2112cf257b91b64d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","hash":"e3595ce1e159aa04bc09f69c5168c454"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","hash":"8a899256e5ac320579b269ee9b2567a8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","hash":"911148240fa2017589039df8adbdbd7d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","hash":"9eb00667159a0046d27b803bc3be86cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","hash":"7f8a376d7b21fcfab175a8adaf39773a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","hash":"38df7f10e1de0ca59f93b7e21e6428fc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","hash":"ce1cedd9270d5130bb4be660d13d846e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","hash":"3ebce28fe3575a15329d8dc59ee7ca4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","hash":"7a2ec4e09818130f24b840639231c64b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","hash":"4f36e38eaf3608ec18c70c13942510bd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","hash":"0711824f5f77fc221ca16dd2833c1db4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","hash":"555cb79bdeff77e5a998348ff955de91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","hash":"0bc946660b54448bb6d71993b97df709"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","hash":"fa29e9b0d579c1ea85e444240a4b9679"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","hash":"8672eaa73f78b6304690ad35fad337ce"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","hash":"528e19807cd069a9195f4ea136226cd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","hash":"d4d8de3042f1567cf3c3e4c69035e122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","hash":"b7943d020a6c7b63a2483143ecf5f6d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","hash":"665aca3a93721bc97cb6aeaae166ce98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","hash":"04d9c37a08f8b92fefb564624a931627"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","hash":"3b694fc6637206a6a63f48dc6460d032"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","hash":"a2832c8e34e1ff435ac8591c9a182348"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","hash":"63cce47fa0e04330662244b0f8617d1c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","hash":"81e0e3eb37bee6df055243fe36159762"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","hash":"34650bbb402bea0d9e0905df4adadaae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","hash":"cff85360d3ed608c6c25e665f1d62d82"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","hash":"6c285209364e3e656137323d51ad39c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","hash":"9400739d7cb0134c1710855d1e75a996"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","hash":"b5172d7f7c209661c70b4574107cd774"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","hash":"4b5d82ddeb09bc46ae0e980616ce0109"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","hash":"8daf6ce8e54d46d3b37a3a7c61e393fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","hash":"aa4c24c010fb444c843ce3dc261a569f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","hash":"6566a35ff0dea9376debf257bdb08fba"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","hash":"1615400e2e1007e9330ef9c77db7fba9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","hash":"9d8a7927ca14b15f3473e211789eaa52"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json","hash":"dc3d03800ccca4601324923c0b1d6d57"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","hash":"3f80d418ed7e7aec7e3dac422ccc4fda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","hash":"4c07a36206ab3ca200d52d7f24127233"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","hash":"fbab404ac750764afa92bbfbfdfa41e3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","hash":"f5c7e9c345ce092ba11c9706c0994f77"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","hash":"9e2dc24fb141c54394f013ec20569c50"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","hash":"6d567c275cc8a8f7488526dd82502d08"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","hash":"f40ee654b1e7792799165eb9d04173e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","hash":"b77671e5f5450772922cecb671595186"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","hash":"a485f5c7307db6bbba1d3388b528a770"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","hash":"b8e31732ebc0cea1a9300fb3fbfd1488"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","hash":"498db4873b660f741326f9c4061a2584"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","hash":"d079c201b77316f3b83b37bfb2f06a60"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","hash":"074b866f17aee09c76583b075e83cb8c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","hash":"fdc78d4e397e4c145a0b1c859715e6af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","hash":"3d57a7a19c5e8b51d63231a87a9b6fd9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","hash":"959489b18fda284c434701586b43c66b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","hash":"1c65e4f1e29a4f9e5595513d9f11c4f7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","hash":"fb71dd46672c822515f03f8f0dddbcb8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","hash":"7656627b51b07565889084020b5078d6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","hash":"3eb370b59dae381bbca5781ca5f11add"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","hash":"bb3e5fdde3ad97a1e69402918c22f214"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","hash":"3344aee98c44f74ea6fb76c2726dfded"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","hash":"038416fd6da9501daae9bc9552db8384"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","hash":"b863a3ac709501ff91023cec155d5090"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","hash":"8eb7f9d0796943d7edb0bc187df830f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","hash":"e9383af731a68adb6b314ec5b1068a45"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","hash":"8a3ebe88566064230a8c53e90fb9a5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","hash":"2bd22809ea7f834be075f6bbc989c61a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","hash":"c7ad70d1b453c3200a2c25b6f5ca4604"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","hash":"9c4bb35923984b738cf58549005ae256"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/Flutter.framework/Flutter","hash":"3fd91fd8921c30908a8665b28845544a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","hash":"e2dc9f40339f72e3b0e309272c5ceaa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","hash":"0978d318570cd386e77d76932a179c4c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","hash":"e93367ad4cf679639319dc0f2c7688dc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","hash":"d832c1395fd093f66961840fb3c4e795"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","hash":"6d12493069f2abe32b2c0ce97b36f663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","hash":"9936f30321ebd2d53045f2c2bb4f91f0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","hash":"9e22ead5e19c7b5da6de0678c8c13dca"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","hash":"726c40ba1ec292d536301fe64a18e83b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","hash":"1b3e0df1cc1fdb0ff927760c5c7dceda"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","hash":"c089bcb51f4d22da206b5e3dc203c720"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","hash":"d3f74d846a99e580843bade81eec9e2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","hash":"0941b23f5841e31aad0d25b4ca38293b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","hash":"3f6fe76fd1b6ce55578b873386c13ff7"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/App.framework/App","hash":"573bd4443da74d1a4db51c6487434c6c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","hash":"7e3a59cfc4c1fe568c6bddbca28625ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","hash":"bf3e3c95be806ad85836f764c3b6c72b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","hash":"5acfa8abbd3e0d70f514ac65e7da5061"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","hash":"7f164e577cfcf8c8295947195cde2a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","hash":"79ed68fe678281de2561462a198ea941"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","hash":"298e2d00cd7707d6efa4de9bf430330e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","hash":"dedd3e5e4d23fb7908a54c94eb1c9adc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","hash":"9b9639fb37f3307761e011646c3a3ce0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","hash":"44b8efa69ec831d1a0ce74c20ecc27b4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","hash":"ad1c0bc683df393671fbf67b53068803"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","hash":"7c46db5c279bfd34b41aee4e64ba88f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","hash":"fab272ec14b6139c58bfc5c4ebe4ead1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","hash":"4526ea37fae95754b3fafdc5394475f9"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Runner/Info.plist","hash":"e00874b2bed7996431812a14e6527d8a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","hash":"c6f8b638d691a2bba7362cd598d93ef8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","hash":"033c74f582e22e3337b9588f306211d7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","hash":"823c66be3a8d17bc0c146c6b7f83062c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","hash":"db1783b3083765425632b2ca451dbbc8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","hash":"687bbf9e1a7bddd4b55174fb07cb6919"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","hash":"c9d67cc655fb9b02d52b68e9f039bc41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","hash":"51ffa7b452686eecd94ed080a1da4275"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","hash":"e2d2090c2a39f7902893e64150fe82b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","hash":"146741f6f87d6612ee7bbf6a6fa9c119"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","hash":"d9bab5fd98c4aeb46f0ee46466d27592"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","hash":"36cb8d9d9c95b1f5f64ca8f983d5c987"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","hash":"8bae075f6533238e997073d1c4342ee2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","hash":"2e0e0e4e8c040ded0b0a7a22afba6066"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","hash":"73b175f4bfcea68d6b2e6668047ffc70"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","hash":"4ed409d0342640995ce72f04370a33f5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","hash":"598a75ad8b988bb14ac22ad62acabc10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","hash":"e9f463669bd6dfea2166dcdcbf392645"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","hash":"c0eab13b5f00b7d01f2e840be85b3a94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","hash":"813ce513d5d942ef02118ea7a8f0869f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","hash":"3c68a7c20b2296875f67e431093dd99e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","hash":"163f0d1be71ecdac16d6010f08d034a0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","hash":"3aaf04a3a450c1b6a144f84f3c778573"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","hash":"f901250cbd5c13750f08f7888069e632"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","hash":"a7ea1d5d956ca8f43c49a71c61b61595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","hash":"449e5e076d88fdec0781d58650e1b713"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","hash":"a4a5a4186c28c8e4e7ef38558ae2fa14"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","hash":"5145b27b3db429f9f1da26cfe563bd02"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","hash":"1e0b9c706c2f52ef8c68d71e059b368d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","hash":"35a5d2ef7726ea70bf4081f7566c96f7"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","hash":"e7d4ad013f2bb1be7be15dd100e3c5cb"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart","hash":"e34e3802a803f306e616e2090802a868"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","hash":"1824c826f0f8d8a85bda7e1f0bb1dead"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","hash":"d19848a34d5b4e5fe3e2ea44195d6dae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","hash":"da856751b95477557d7f15c5844b9bde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","hash":"f5c94ee1d5dde386af79c59872fd148d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","hash":"406792dd8d248088cd84be85cf7c62fe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","hash":"c8515afa8e555bfec16e832598d4e5ab"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","hash":"41bb908ec3d8ec35ccdccc0ff08e09c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","hash":"9ce6595770687511a1c77ace6f55bddc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","hash":"33aa9632d38a7855ec7452224f80471c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","hash":"38dc31b8820f5fd36eedbf7d9c1bf8d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","hash":"5a0440a1ca131754cd92d8adcf93c8c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","hash":"4df1293c0ca4ba2371070c07770510a9"},{"path":"/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","hash":"6e92335d98b127f7240ff5294e257c26"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","hash":"fe6862ad950dd8849a69b71513319a5f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","hash":"e0c22343cfc4e2772a491e04ba0d7fb0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","hash":"9e3b68924814d1e0d7f46f7ce20fa741"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","hash":"942b357f6a2c3f3bd946cb557426178e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","hash":"e6e960458fc831c2981997244673c139"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","hash":"8bfa3b5210d4eaa65b8f5520fb864636"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","hash":"a48ea636b7f2a32cdb71df23faa3451b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","hash":"f82b335ee8dd9ad923f619f83c130ecb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","hash":"056ba78280a44883e05c65a88771b4e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","hash":"9e813ae0507e226c633ee55b4381e444"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","hash":"a5636cabd205b19f4d440f7ed4ab56b0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","hash":"89ac6e1a99054eb05805c6e7a6f58e6f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","hash":"8f4de032f1e2670ca51ce330a4de91a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","hash":"f12ebda2bd0dc61bafcb6669fa9ad431"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","hash":"e973169d55c1b0907b263fce8328bc84"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","hash":"06c73ad137e5db31d7e6ba4258ac13c7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","hash":"f0b223d5921ef09003438d729371184b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","hash":"95d8d1f6a859205f5203384e2d38173a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","hash":"7913ef92f8723845c6b90719875b753d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","hash":"3b50c5a9642520832ec2c51c8efef598"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","hash":"1abf43dc3d3cb88360ea799cb926ae25"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","hash":"9f9dd658ff05133ca61619a54fdcf728"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","hash":"39062f759b587cf2d49199959513204a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","hash":"758d8cac59a8861109cb1c0c455130b7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","hash":"ea88a0c45477c2656a699201e15fc8bf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","hash":"12bb0c18faaed956b27d405dabcd96cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","hash":"d75954340a0c7770eb9a149f7994598e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","hash":"e3a3e744d6ef8ddf1d75a37ba549eaf4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","hash":"fe2489ea57393e2508d17e99b05f9c99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","hash":"8c915cd8772100c3b3a4cf1dd0f13141"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","hash":"0c42a29db0996b7d74b3f07560d669d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","hash":"78326e9e1cc2cd7fb0fd3400580b8497"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","hash":"46fb99dbb9a3eb279a14292c7a2ab6f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","hash":"57d00efb9731df717e74f763f9b72577"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","hash":"ac2880d91a3333c4d0e0b9a152bc7935"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","hash":"35c3a0e09f2dcf608b806f259c306883"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","hash":"698a6fc4361dd42bae9034c9c2b6cf7b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","hash":"dbac7b1c74bd316f8411f75d43c00c52"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","hash":"8a5443f88214c3152f56a8a22f575f7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","hash":"f483e18d0caffec1965cc4fc4587bced"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","hash":"fb2baf298dad58d749bdaf4fc7d2c6b7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","hash":"5854a36494004175430d4b4355622d7d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","hash":"4ae7cf672458e9048b8349c46c96091b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","hash":"ea191ed02800df2436f2ba4d1443acd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","hash":"7c57a9163e2c905ac90a6616e117766f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","hash":"75a750ac4a72e0cbc0915e941a5999b6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","hash":"ac8e4f07fe57a180a83a79d97030a4ee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","hash":"b22f9d7fec12cc1b3c07d68eecbae551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","hash":"e8ab94e11d480f9f75e63e48dfb7bd3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","hash":"f5e9f8707b2850da3c9200b217963cc6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","hash":"bfc66f055c8ce27beae0b3ae05350318"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","hash":"08b4e67b157b8770f50c3e1593586101"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag","hash":"7c315c6fb1cab5ab624907011f583952"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","hash":"e090d08a99570e1416246ab66058c49d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","hash":"9d273d5a3c1851b0313cd949e7f84355"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","hash":"a1be5291e9ce315ce3e7ad6598d6edb7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","hash":"3ec266c46c85603471447b253038693a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","hash":"20c06004fe8ded0341d6b7d4ddd9fc63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","hash":"76df0f76487ecb24f1fcaaabd1fc8258"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","hash":"5345d700e34b8a39fc14cfa788794b70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","hash":"3de0b02c72ffa2dbcd4241d85896ffa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","hash":"c0da8171c63f0ab4e822dd094fc2c595"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","hash":"101afb5724d465fef432403afe4af239"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","hash":"d3e8015d1a7bccc3005d76a069edf012"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","hash":"da1fc35cf373dff56586ba1d31254ff0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","hash":"ec5409b8e30f22b65a7eee1b00a12d06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","hash":"d0885097eb9ccba90210852d52fc83e2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","hash":"677d8642864682752cf5fa1727f11e45"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","hash":"9de25bd91716e1d1dc40d622d4694542"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","hash":"e3fcfca0756d2591ba7a72d8cb8073b9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","hash":"5cfb987e1a4ea727dbbc7abb10e087a6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","hash":"cab113513a4eaf18f43c2ff766115379"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","hash":"072675f16dc002f7be3914b33aa7d20b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","hash":"46b900fb75f7497e307a6213009349a4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","hash":"04dd39d6f80a5425d8df2875f2833711"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","hash":"1ba052cc7c20457f24cdff4d601afdd7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","hash":"2a24aacde74ba309d650ee8efbdce52e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","hash":"c96cf3ee77edfc9062087021323ef01c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","hash":"b95b66e84724047193f602210d547054"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","hash":"2c25776d2e769ec49cc16f5058c5c009"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","hash":"7504c44d1fa6150901dd65ec78877be0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","hash":"bc1745cbace394e492a6f9c8050b91bc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","hash":"d84f409f2f0e14c957e42d8c74175a1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","hash":"b2015570257a2a6579f231937e7dea0e"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json","hash":"a676c5fab258c180de51431377e2c85a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","hash":"f4963d4fde9ade847490b09b5add6c40"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","hash":"4d161916b3415cf41dd4e88b9bc495c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","hash":"d0e212b8f3ed7108cee45147dd0f565a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","hash":"7c18da4e6b74ad62497f3cd0d139507c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","hash":"b94fea6e4739a640ef5ab444cce2ead3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","hash":"2249cf40988918b481c0f2452a6f6430"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","hash":"9a963571e5d30e052aba3137cb08afde"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","hash":"7d4e6658c86d17b6aad6ea88d538449c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","hash":"0bd83545538b43c50d41386ffe0ac02c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","hash":"e8cea99d6204f5bfb4d0e59002c95e39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","hash":"87232fd9fcb98fdb45b1c8e3450e0bd6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","hash":"80c27ebf6b325589047ce9dc21922955"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","hash":"c449771c967516117fccd35f80fc301a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","hash":"c58890a97d5cf176bc4d91c6833662d3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","hash":"bae12b316850abe40fa3c581a7dea21c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","hash":"bc8cb2656c892c7107ece225b2c3ad4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","hash":"3b563d880fda5f7afb0a177fdc4dade7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","hash":"561259f5f93b99661449b037a36e7d7e"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","hash":"c2c2e365f320e7c6db65bbaede9544c6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","hash":"3b49ce9fe842fb8f8413f8de51949823"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","hash":"4d69882445eaa1de4c2e1555c9a08a9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","hash":"90fd9ee9e96f1bead7267f7ad93dee2b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","hash":"88ea97c9aa108e7dfd5d70c21aa809ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","hash":"6c66821ec0d637772e147c298645e478"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","hash":"206b1db3ce5f7b9e5efd220712f8d391"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","hash":"6268ac9b947807a9c6e33f4e24c5ea9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","hash":"17adf1a85ae0d46ce1611f56796dc2c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","hash":"2eff7feead43dfce5967b176c1c0013f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","hash":"a6a5683319eaf061f2f8448162cb8885"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","hash":"0094f20a394b14efbe348499ecec7d8d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","hash":"4da8a7e66b441d643caff99f743d9f69"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","hash":"8db17f20e0a12c4bb97383d8d4894853"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","hash":"2eb2de173e53bab6a0a033f89856eae6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","hash":"cb63d73a47fccf6996c81ace196d012b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","hash":"e501f7efeecfca84ff857bd4f80b3ec4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","hash":"a4d65554703b39f73fab92daa1a95136"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","hash":"185880d58f40f0b6c9d6f549fc830da8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","hash":"5bd42c05ffd396b9c61d5a82739deea4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","hash":"4b4bb8cbba78e5abac9cf3a216769ccf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","hash":"d46d2121000866bd902db8a26fa1fc3e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","hash":"2b77873b8c720bf68e043ce7acd96985"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","hash":"433b37dcc0e33393a88d42baea923fa2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","hash":"8553c507cc30d2d9144adb536fa7d338"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","hash":"e8f54db789c896f29242a5d5ac7ae742"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","hash":"2ffd4331d4ce18eb39bd200f76368dbf"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","hash":"809f1f0bbe7ee77e69f003952a5525d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","hash":"d97019cfa3be6371779fc0e65f2bc118"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","hash":"088b09d02a0f2cafcd87b0fe5f66c83e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","hash":"cb454929d7810d3ee5aa5fc28283d3fd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","hash":"0c2a39fe9ac2a3573ea263d944a7d4cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","hash":"0981d0ab711c3d970bf986b59e302ec3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","hash":"1b20a6e406ca8e79675b2ebd9b362d10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","hash":"63473e31f03ea66a38affa41fd783752"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","hash":"b062a8e2dade00779072d1c37846d161"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","hash":"32c008e9d504437aa016240b82566276"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","hash":"a1767e0bdb8f6eaebb569c18166e3459"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","hash":"09678623b04063ee4667ff9d46c9adf9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","hash":"b360050c2db89b25ecc98cecb0ef8155"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","hash":"77e65a235c67b7d9cbd8e34356b320f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","hash":"005fa9073603c7ee7b06d03658207e2a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","hash":"f13353269669d7b19e3768edaeda5caa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","hash":"2b5fbc54f77ca9c1e5ac90eb3c242554"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","hash":"201730b61cf27247fa4df16398e6dccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","hash":"32a7e3c5b9a8ba1f958c94f1c7ca6e36"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","hash":"f89e43c1dd5f54c745d4a22e7f629e62"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","hash":"7157fe770547a841f9b3e8f7b6765c4a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","hash":"a1fd89ba2ce1c781946ebc5f37479b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","hash":"9ef38c4477b39a88b44a7c9bb85add99"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","hash":"2f711a88a049130159adb3f7867423c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","hash":"effb55ac95be419ba221494120497420"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","hash":"1fc60cea565f8ae6d7b4b9c645782ecb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","hash":"1ef43d7012623d3fb787b55f72fb9d87"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","hash":"e8149b1e154e1576100fdb79402a824b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","hash":"65d7efb36f1c0981aeb1aa5ca2dc981b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","hash":"e134f845554105652ee1ccdee3595804"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","hash":"2a7b06785c3ebd6af8186adc2052947c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","hash":"52de52753447696c8bf45bf27bc1a8e6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","hash":"3b0b3a91aa8c0be99a4bb314280a8f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","hash":"99f23e7e1e32cbca7a688f042454f8fd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","hash":"f173549805fd3bdf5ab3b788d3861820"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","hash":"1c5b1dc918055cc35f7c0579f382e24a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","hash":"c2c3d1e678b282fa813c80fa6e6d7379"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","hash":"a54ea9c741a831aff5119d5eabf206b8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","hash":"688bffad5a764522afeec286aaee8616"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","hash":"14a9b355cf1f98f9ec1f324162d14c61"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","hash":"cb1b046d23089a961b250ad318ffcd91"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","hash":"87b38375a46d6b2fbdaa3ddf8e552593"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","hash":"c741a13227ee01cd4566adb6aae50122"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","hash":"8c14eb65e1d80381cac744a2a237818a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","hash":"2d0c70561d7f1d35b4ccc7df9158beed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","hash":"fb5b7d622494887420a728198866de62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","hash":"18a3a7548a40186c8bd9a36c25d7b88f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","hash":"477b648fb07205e73ccb0e9a5e8182d7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","hash":"9dacd3228ef8a541f6856788c1d4da19"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","hash":"0e7b89fb20f61bf1a1096942d0cf889c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","hash":"bfcb8efae16b9f03e09ee2adbac97777"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","hash":"3f5e8feebce49c954d9c5ac1cda935c1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","hash":"9f2eb24284aeaa1bacc5629ddb55b287"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","hash":"d2e1c26363672670d1aa5cc58334a83b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","hash":"719246762bd82aaa24c45a11bebbf000"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","hash":"b6bcae6974bafba60ad95f20c12c72b9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","hash":"87ed94159c6cc382cbe369889adf2645"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","hash":"f09da56112028c2b23759b17c2128ffe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","hash":"b388f6cd7e3b2f6c3521e5d0b74fc259"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","hash":"8a451864f1a46f19700d46fc5d4cbd39"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","hash":"510b78d72d59a887b1ccc3deb30c44c1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","hash":"99dd7740cb7ac228673d079cdd12490a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","hash":"8589d430ab74676555c4aa6b8b442af3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","hash":"a44a613f8bcb13fb3e767a28823e5b40"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","hash":"a6f0f004f94c7166d2961fba341637c4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","hash":"51a93044fe489d37f82f368179e3d302"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","hash":"fbdb7eedf9f48948986e303f68e36ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","hash":"132d11deea43a7c9373e6bce97682c94"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","hash":"126c63b07d1b425e904b735cdac85afd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","hash":"1abea6cc1b12dbf5811214407d955b98"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","hash":"54e62d85cb0f15d21b510ba8342615aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","hash":"80ddce0052f069a2e288b0c11c9fe0cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","hash":"7ae1eded395747066e88e3923431bc3a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","hash":"91480f38df85d142de41e5bd0b154d3f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","hash":"22b26473ffd350c0df39ffb8e1a4ba86"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","hash":"c48d8168694f9c8218f2e6389b4d09d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","hash":"12e47d3f4b91a456d52a5e37594dcdb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","hash":"ecac9109d190060de510a811e0b783d9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","hash":"bbeb4833d5502fa794125abfb1594527"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","hash":"9fabe78c4b21534ddc8d87708a5b5886"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","hash":"7c559786dbc1bfbb63a595a7ae3b8e9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","hash":"848a60a453f4e7e02f5b228458f9a20e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","hash":"c1da5c2e88951f9ab78eb684ea6ea005"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","hash":"fe48bdfc31adc4f7e657c36074278dca"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","hash":"17a240d950bc31f50b35a8fb23845352"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","hash":"c8c2d53f5b106c425a786e68d00b6415"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","hash":"6e800790e7858e8e1cdc73c8cc09d719"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","hash":"04d38c19b0c3dba61b730122d76ec4d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","hash":"c371589e60cf6e82a661a1f9c1ef8176"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","hash":"b03280f49bd251d8320667ffc244c613"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","hash":"b7daa46d4dace857514806769032077d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","hash":"3d97078429fca38a278d2fe38c9fbef3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","hash":"90c1fe2fd81558e20d588ef846f68876"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","hash":"e4973bdb8ceac8b88cdefee5f56f0fa0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","hash":"5444a9f54bf4158d83411e292ca910d5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","hash":"8df20838abdc91f514eff154c048d540"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","hash":"9c4a94ccae77fabd6ced0b6fb26bbcb1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","hash":"8e5ed035694ea390cc586a3c717b9f2c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","hash":"7047d90229336cb3caa0fff5bb3dafa5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","hash":"eba156339bfb71b71dbe1bae4eac2f10"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","hash":"23c3171f57f3520aebc7df7c99927a2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","hash":"ca0af41a91bd98a37c4671c6756df973"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","hash":"6c54f90e0db5f42a13be6b3efeb4a04d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","hash":"ad8955cdfbda21f8ebbc146a61748940"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","hash":"bb96a0e40a5198f25ff6a8b1dfd62a58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","hash":"b5f0b0da99e8a07d58c21ae071800404"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","hash":"e9f9ff747a67938d4e7642c652d52393"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","hash":"0c30a117b0d1fd5c94980510832b81d0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","hash":"27ba12c7559ee577cf56315e3d5cb5a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","hash":"d8491440d986e091060129019477bb3c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","hash":"3af527494c80e2ab83f264815e12592b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","hash":"559dc718c8701191a2b6ac606aa086c8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","hash":"8226499d3c76c47d34329002f95ba90a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","hash":"701de2754bd553eb8fd3f8b90cc9b927"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","hash":"7dae504d7c9e221fb01d1901a657407b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","hash":"8ef064ff25b632dd064e478366b75af9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","hash":"4bac9f63bc7aa9c5e5104179e86c64a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","hash":"ead64055657e29026f4f52cccdf90cb9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","hash":"a341c761d23d4c69ef0ae27385658e27"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","hash":"07758299bbd2261712f35210ee2f645b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","hash":"ff558eecb6fa7834f9f31113f0cc723a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","hash":"4814f7a1c3a7509ddb71fa9f13b2e169"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","hash":"4f5b3d095e8224c7a1749a2de96e5f79"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","hash":"8abcbb724ffa31d2cf158a95c588db62"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","hash":"991902b33f1d81c417b707a41341ed59"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","hash":"00b08c6f5f7fbeb394b25a63d950c395"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","hash":"2da6282b5a33b9a2218f60399505dbfc"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","hash":"faa0ac8a10d4bbddf1ff7f9126a11f2b"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","hash":"52d0a7184d706efef87898ea7eef897d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","hash":"749be25c78d16a260f673757f8078123"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","hash":"c98d039d1ce1e92fa79f1039f0263385"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","hash":"eb7dbdce15d95937efbdc70ed6f37425"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","hash":"4511b6cbaa8c34b467724cd8753fd441"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","hash":"8440fe5f1989837b6ada359898e86c1b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","hash":"a54fd4631b3a9d7164a178e5e276aa72"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","hash":"8d5f14224aba09fa1d068eb4385aace2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","hash":"d84ae47a3c688bd889f442426f39be3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","hash":"eb566da87862e7874130e9aa7dc10180"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","hash":"9ca4ca47452f1823249f746da7dd2b5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","hash":"71a9506357890cdcb2ff21d611c4a9f6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","hash":"9510b7a2f095e041d6b01024407d92ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","hash":"13db4f76c4c3dacee24311db33dffb5a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","hash":"63d58416836c36cc1685e1b404d4a1e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","hash":"49fbf9eb3339e21c5890c546bed68ad7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","hash":"01deb3f3bd9691f24aea50c4d7ff1a34"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","hash":"fff8e299112c38dd03e2e918a84e52c0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","hash":"40892109ac9ef914afc5acee5b825164"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","hash":"d35b72b249d19f54a4cd6f22ff3299e9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","hash":"326f2ffb37492fc588de76cf07680943"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data","hash":"8014bc594cdeea049da1190cd894479e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","hash":"c83f257da86decec9584473cf41f0ee0"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","hash":"44274bbf7beabfe4118db68f399823b5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","hash":"020552519d966b598cd3bb17849a3a49"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","hash":"61c71bdda6ca0e69558b10c76f7f2d0b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","hash":"d235f51d48e43d80a46b35d3ac1a7135"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","hash":"6394f8ce9f77e64f3433a8a10ff11fc5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","hash":"c84c72c28625a46ce70ed3a8b7b1f134"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","hash":"0a6568148a914b28cdeeabaf131dd0ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","hash":"e54cc4c43086300a6e6c976bfcc4b577"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","hash":"101ff6d49da9d3040faf0722153efee7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","hash":"b0af2681de06f072c797fb66bab4213b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","hash":"9916a2d85ee324e7b395bec41a75db58"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","hash":"b9531c458d313a022930a0842db8201e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","hash":"33f365e8e51713d9712771b0adcbbca3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","hash":"db799bf48af97b7c0edc93ad96b4a6da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","hash":"e40f20699182eb1de17efb2d02d1bd9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","hash":"74c6c3273b16f42b3fbba78169469f94"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","hash":"ea5416329e2b15ccc3c6ba2082e5b17d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","hash":"df941eca11a421d04edd92726e3a4321"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","hash":"43087afd2f07c2185dfff2ea8c40cbed"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","hash":"c3df4e83c11e996eff52db97215801cd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","hash":"e7c9c404d1d2e95afdf4becc03f3f1f1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","hash":"789e79772bba1132b3efdb60636a3ccb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","hash":"6656ba0c69fefef80b8cae101896c029"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","hash":"5184895d365f664a514993d279af93c6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","hash":"d7da19c57ae21b84b31832940bf36c95"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","hash":"1649ee82914f6ad1fd46de466dc03378"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","hash":"051453bb7d9c8983ad2fb529b4ef462f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","hash":"bbc12110db0cd0fcb35a4d45d8c97f5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","hash":"286a67c1ee4d4fa64043f405f661426e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","hash":"63f89c285fda1a11134696c95a5d2c7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","hash":"a6f86b07a971f37494568319ea7cb2c2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","hash":"116458bf79c178c3089f12f2bd57e611"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","hash":"f94fe4f82b1dd6f2eebfc0049563105f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","hash":"8388d5e13155ebde873438c26dc4ca33"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","hash":"1f336a83ee9c6cc00bf8a24d2376ebda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","hash":"1871ae3488fd813309b5d8039333de92"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","hash":"adb3d6068a5c45819a04bd2a6f3ab683"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","hash":"bd3e86d27c38dca6dccbe5ac5e7c7663"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","hash":"b5b6d18d1e7d2f546507f52385a96d31"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","hash":"f487ad099842793e5deeebcc3a8048cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","hash":"261c95b385a12a314819fc59b03218e1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","hash":"38d7213cd28308ac1f0bd5d81544c794"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","hash":"81ba6d01aa27472e0e1beeadb760ab15"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","hash":"65060cb085dab38fcd1a379510c78b89"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","hash":"ff2dc138db29ec45cbaf3ffd80a036fa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","hash":"e09da93d64fbc8904258aa814d093447"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","hash":"a3cb494a3157a15b4bc6e112bd457b2f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","hash":"13e3605e178c6c5b63b2ffc79efb6fa1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","hash":"4cb782b79f6fc5792728e331e81a3558"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","hash":"5276912c02c2652dae0fe549d6d4db3b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","hash":"f0c6d5d05fbdc95ab84f1a63894b7be6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","hash":"e24d78f8b44fa77d94cee446aba26b69"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","hash":"61573e3ac2c590bbd1aa108ff2befe4e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","hash":"d7466bb710671e1babcb397057b89abb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","hash":"8117e1fa6d39c6beca7169c752319c20"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","hash":"41696c18e708950dccaf7cb4f5b7b195"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","hash":"8e9a282a7834275740dbac1f3d8f77e9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","hash":"c923a6390994ceeb31124b620be66886"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","hash":"1eb9c499979adc0aa7a4c188cb354fa7"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","hash":"550b84fb8387deb93f86f5f654e7fc5e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","hash":"aa5e38a67607d3ac92328300d453f203"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","hash":"ca6dcb9cea6b00d39a1deba4017fbde5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","hash":"175792518e4ac015ab6696d16c4f607e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","hash":"efd86bd9a7183660b902f2528da33973"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","hash":"975c2b518f6bdf0f423f19ee2d20f037"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","hash":"d19d18ba59c99c56f5cd539e808ac093"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","hash":"e8b32b6d7c1328dfb1968caef8249452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","hash":"2f66fd533c14db9ae785e3fa83c39692"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","hash":"f75f31535e16b018e2a5f9a968b7254c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","hash":"01049ee9adcd36bdba77ebdbf08c8311"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","hash":"32f5f78e5648f98d8b602c6233aa4fc5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","hash":"21f20162e45e5a6ed9d59115951fff5e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","hash":"692c5789339c99399c7a60abebed4867"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","hash":"4db80cc65121c34e697b03dee0d589f0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","hash":"e0434f358d6cfe80754357597dda5e2d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","hash":"fc6ac74a8ad779b64bf7e626552ecb2a"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","hash":"cac17f3e87ed4c54d051f947b087934e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","hash":"05778db9e882b22da2f13083c9f28e0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","hash":"9d1525a634d27c83e1637a512a198b4f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","hash":"e8ef425330dd4e0f06b8cdb9762f3d38"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","hash":"d4f2c32d896c5cb74142f43f86b908ea"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","hash":"6a67d38bafe568f1b4047286d586fbbc"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","hash":"45e9f88a67f4bfb4010486becf9b6ed5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","hash":"d7393d6e408c5f8cf5af1efbf79fe17b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","hash":"d623b1e2af43bcd9cde14c8c8b966a8b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","hash":"251708085912ebabc0559c31d7f9ef09"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","hash":"c74d6bfe6ed9493e9a15a793e240491f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","hash":"ee68bf1c0349b8c6530da60950fa4359"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","hash":"d98eaef69fe0b763e12fde9bb4b63a8a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","hash":"c93f10f7ab0acf4285085b5125dd1bc0"},{"path":"/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart","hash":"b8aaf6e23756468123709d97b2941714"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","hash":"5369274e0f2aea3db2ae228646de17c2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","hash":"478e1071c9f577b6cabb8d72c36de077"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","hash":"f627691ae693e673d0a28ee10fa7ef21"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","hash":"cebf7c8a42cf1ec0eb4c3cc0c1c9bd99"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","hash":"e6b1d4b1f712225ec2e095ded085195a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","hash":"bef69459165c25c77ef86a22c5a37605"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","hash":"27f8ff5da1c6125dcc748d894d5fd5d4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","hash":"cc0ab0117e8a0a54ec3efe6d9251860e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","hash":"fb92f0b8decb7b59a08fe851e030948d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","hash":"8051a4ac9b61f1304162308056f35ca9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","hash":"d6f1398a30e5929b4deccbeb0321c7df"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","hash":"688492d1b07b6e1942711100803e8771"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","hash":"d236c79282a2d6cf63ec4d7097400744"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","hash":"c70e6da8344437d843e7eb009fd18da1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","hash":"700328ab0177ddfd9a003a8c15619c1a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","hash":"39221ca00f5f1e0af7767613695bb5d2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","hash":"6aee7a8b65e3407c8a156fc94c3e052b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","hash":"df6ed53abf7ae705a620f157326aa612"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","hash":"0cb06ef1fbbec09f85b6b40cdeaa2f9a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","hash":"72d0ca199b14f8ad245f36eede78e596"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","hash":"58ed42eb75db18120985e92f14d67c0d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","hash":"d731e1b690975788d014e6df127b2a9a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","hash":"3984ed91c254da74e99364eeb9eef452"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","hash":"06e25506dd42326f711f5a02366048ef"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","hash":"1355e7c034fb490a3da4b604bf4a245e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","hash":"892528317c4253ae78167230f7d4beba"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","hash":"0a7c8ea575635aba0b835cbf35892f9b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","hash":"507fd70b4d332ca05a060defc0a30098"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","hash":"7f0426ad53c7e79c8cd32d487e5118ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","hash":"3e2055944da449718bf0c26748b9d102"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","hash":"0d4ed62bca671639dab18b4b00e56c06"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","hash":"daa0c9b859ed1959e6085188a703f387"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","hash":"ff8176887d706346f1adf9b10d93223a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","hash":"530313c1da5269e06b8a8f6166b905af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","hash":"838b1a8d04253966a27bce11dc98a30f"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","hash":"424391b8ac9623400ffc82b20fe293cb"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","hash":"2c91507ecca892cf65c6eaf3fbe0a7e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","hash":"b9b84bf4881138ace165fd23b39a89d6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","hash":"bfc483b9f818def1209e4faf830541ac"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","hash":"3e7ca9cfe22d164ba5ed448658327a56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","hash":"982726fdb49b5659a34bef13c46732cc"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","hash":"9ebddb9a0743de208281e764b9454978"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","hash":"d8221989cee24f5d97fddbb2a535b34f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","hash":"543079fc1d0c7864e7a179f3dcaeb44a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","hash":"ce98eef91a240aa9f848a1b9ab61e55b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","hash":"9f9b79f577d9fdf4f20c17a26a2f1d57"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","hash":"3c4879149bc0b27f216987d9377b87a6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","hash":"7ec68a5bb3492720f51417187a4c483c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","hash":"1f408d5024cb1ebaff1bdc7d2d642b34"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","hash":"3f85e3e092ec589ddf41b6b55333a0ae"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","hash":"79b897f47b1a509090e36c269beee3c4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","hash":"6d23ba25bcceae20030197d48ceef15d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","hash":"64a2261cfb426cbc1bf5f5985fed327d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","hash":"8a380c86046c073f7ca67b32ce9ecec7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","hash":"58a520f0e39b9e2df9528496ad1a2c9c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","hash":"81a6a107cbfd5dc1c55af9a93189bc5d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","hash":"5e4449e268519798f85916834694e7e8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","hash":"673c6fc6ba5a1499362db4bad82b3f10"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","hash":"f4b52208f2ac65794c0722ae22b2ed5a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","hash":"bc24832d7688f6f72fb58ca8955b25ab"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","hash":"8d98dded771d32c2da930062f63dced4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","hash":"c29035e43b5763692f19fbe5887474f8"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","hash":"c22dc25aee98f0025778b81318f57e35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","hash":"c7971cf1277d543b2ed589e71c15cf56"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","hash":"a8f2c6aa382890a1bb34572bd2d264aa"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","hash":"e2f7d6fbeb362176a24cb422a6dd8193"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","hash":"905cf0b0433d17c9fff9598ca1e5a815"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","hash":"acfd72852e16d10d8797be366c796133"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","hash":"573ec6f55c4e9da27e0e8c6b69226069"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","hash":"b69f3e8fdd39060d1bb88769c6d5f731"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","hash":"c5e481f1a4ef788a50f4aa68fb4c0d7c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","hash":"92a9dd086197603283733846748c6096"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","hash":"564c7ccd87ca886f79f40db2feda663e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","hash":"fbc5d5b64be654228c88182f2f0e9f1e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","hash":"3fe26220f09819b16b15bfd2aec7696b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","hash":"690a90a4ee81c904e39ecef223720fe5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","hash":"a60894397335535eb10b54e2fff9f265"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","hash":"f47fc7f755f69c147dbc7d4cac57f0da"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","hash":"9e46991f24156e5892fd1b8c3e0eedf5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","hash":"3002576a5d7eb8e97c03a9fb8042a016"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","hash":"0f829dc142100de0ad5bd4320315b191"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","hash":"903d9a8ecbea5b745da3432d5197d5bf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","hash":"383362c943d53b1e9cb7db84db0427f6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","hash":"eab95de42c453db7187ae1bfefc4a481"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","hash":"2c5cc6e45f5ec0f541dc47f326986431"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","hash":"e81341d4c5ee8dc65f89ae4145cf2107"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","hash":"3bb0652e163327c58784ce2a2b882a7c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","hash":"0a120ca3aa00e2a367ad33648b49a1e5"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","hash":"31bef5128dcadbf7d3e638769a5ccb63"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","hash":"a086f9770acbfc6a5e421b49411d9415"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","hash":"02880799cbd012d681a8d898a1293e67"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","hash":"f6da0daf266187d3ab6ea8ae16772aec"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","hash":"488d308a0cd45bf398708879506a91e3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","hash":"f63bc535d25a8bcf67f0acc5d71c9252"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","hash":"1770aee1a90fac6336e3664811736471"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","hash":"1ac261c28033869c8bcf9caaedf74f6e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","hash":"490acbbb52ad35888f5a430a33c0650a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","hash":"9cbb91c1b2e44cbd834663485bf49156"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","hash":"bb644b5f4cdf7ece840f06a3017bfe54"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","hash":"32a992510b885844e290cefcd5d09ce4"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","hash":"311f57c9efa242be81f6bff4085b694f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","hash":"82f04582d6435fe28d0de62ac8646291"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","hash":"deccbe5e50fd283d096b079c3830b295"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","hash":"ae88281d46a999e81dd2d63a97bad90b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","hash":"2d616b6da53dd3a5bdc86abaca3656c8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","hash":"d678e87e7d7f75d05ddc20a878f28313"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","hash":"fd037bb7e5e0417b1b57b2589825c2ed"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","hash":"a64d04b7a2bbc33416829490aac5ad1f"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","hash":"1f2f230ab658e9a20934e8821367f21d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","hash":"5a938eb8e6d0513d8448fe7adf46ffd6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","hash":"9a7022bcfa03c67d126e948062508201"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","hash":"457e52ba79ae9fce0c83b6b927999443"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","hash":"b699e128d86de6c400fab59bf5ed37cd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","hash":"ea534a294d4f0ad77470def3a308074d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","hash":"18149c55b175306f694fd72c293e8a4d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","hash":"3bd1bac4de6d891e214330108e1c981d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","hash":"7b5d3028b282375b07c851ec6378a9f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","hash":"ad3271502e45fbefbae041fe273fcc78"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","hash":"acf1a155ed6a399140bf98cbadc44ae7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","hash":"f2635eeaaf9379b39e0c48d203b260b1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","hash":"1f4f05a739274cdeb88c110bc6561ae8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","hash":"1a1eb3e518bd114812bdfba4bd5f9b88"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","hash":"7776cb84483a65e3498638a8beff3cbd"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","hash":"7e48865e3a52a9c6fc91567a38b0bcef"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","hash":"aae04d9745367d56247b3ec312b3e293"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","hash":"cc825b21e6408725444839a8cf7c1a59"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","hash":"e68148de255875ff9116acca5baea852"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","hash":"e4b34d42cb8324d0485b25f1d3d9c1bf"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data","hash":"40337392a05861cf7101bbb7627a82a2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","hash":"a39ccba3f049cbdd03baf58f3ada518f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","hash":"89957c2f5ea5ec355763d9f11292c31d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","hash":"1c25a05549a494efabe301603e12708b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","hash":"8e034e45f13ce8b73e41fdb6cca61eda"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","hash":"35d2717563d5dd00e0ab617e09f81f7f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","hash":"91202b337594bdb4b484c2edc999bd71"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","hash":"2e897a9797ccadaa99c58bc96f4a1579"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","hash":"d280977d9f2ef2bfa87ed3f1a79cebc2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","hash":"c0fe6462e3a08d6d6afbf4f66130d494"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","hash":"1d2e6a12d8aa883fa1fa8f893d4020f2"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","hash":"7e38424729d139f4ac1ff5183cd59303"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","hash":"42cc52074bf3141c7247f972797790e6"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","hash":"14c5e92c3e535ae197e3d7b784ba98c9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","hash":"26bd7410bad665cd40432c609e68e6a9"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","hash":"9701dc524a39fdc327239fea530ba5ff"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","hash":"03f36dcee465715c1854d772cff3153a"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","hash":"b259b177c1515fa5820f8213e12fa75e"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","hash":"0f4cb9768fb17bf7a5d45753b15a2092"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","hash":"67a67689c5e814c245beae89edfa8ec5"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","hash":"9a478fed4f2f15993c892e33f6fd766b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","hash":"0f4062e6adecb15307af04936ed11620"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","hash":"dbf4f1e95289bc83e42f6b35d9f19ebe"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","hash":"06631ae8e7ca29e992612634b7d3cd13"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","hash":"7608d7808a2946263f05be6a6ef8a380"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","hash":"131899d6899385466c5c59327fd335a3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","hash":"35c9371cbb421753e99a2ca329107309"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","hash":"08fd4267e134da8246d879f2e0690f32"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","hash":"c8030797f5e00da5da18972f7f5c199e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","hash":"81077a53c1678d32bb002301d64d0548"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","hash":"c359a6e952958e57c58e53ead868196a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","hash":"7f4dc5e612a2925e1f1c0cef8061d976"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/animation.dart","hash":"b3dbc4e6cac78b2c99e3aa5e9e498ea1"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","hash":"4e84d0303aa781634ad57d9b48af9b00"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","hash":"e053a4d625695a213cd7cad71553d131"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","hash":"ab372d30d4bd7bb5e6647f2366297367"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","hash":"054bfcd73a86c30af1991fffff345b06"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","hash":"3675358158b6f10be4f0123bc1c01238"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","hash":"f70e9fcb5bea790c73d51431ae8e976f"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","hash":"447b270ddd29fa75f44c389fee5cadd1"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","hash":"46158b74167f78e44896e35a92c7c5e0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","hash":"0d00a012348d802a099ed222dd200d3c"},{"path":"/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","hash":"441044fd503112e85b6dade63f2bd1a0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","hash":"90710e516bb97142b02e2fd5553bf85c"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","hash":"170fe4655f45b54388ab850399d92895"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","hash":"51e2008bb51dbb90407c3647c4ed2406"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","hash":"51fa10cf30bde630913ff4c6e40723ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","hash":"e9cfd387e25a97481b410a866e285f5c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","hash":"ebb6556f0ed9f93f8b9de389cb10c2af"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","hash":"bc45e1baf7e4cea03c09368d65b32338"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","hash":"c6fe70279c1fabcc739026bb9cfb2eb8"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","hash":"f5e211d8beeb6fe549de90fbc48a4a35"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","hash":"e85b4f3cf370581b3ef11497a9a5bce3"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","hash":"2cea8c8bd84e28a8e8b7a655e35ce643"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","hash":"7ef61738fd4e99b34b3379c2f6cf3141"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","hash":"e8a46aad9b09df8e467cb1c6829ff35e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","hash":"973f29ba555dccb1b2450b3831f03e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","hash":"e4868d928bcb5b32093caa9f9720c7cb"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","hash":"e8a1d220d69629ac54c287b5f096fbf8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","hash":"f09d6224689342ce8e364e6ba5fea1c7"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","hash":"323be88f9396112a89f1f6dae5b16551"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","hash":"f18395f9df21a2e56aa5f8f498da93d6"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","hash":"0858e2f9683c0d9bd14362f037286f37"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","hash":"386a816011478bba19bf6973ff137cfd"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","hash":"08f6a3a08249e2eba137da4752e72bb4"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","hash":"88e82a2807d91088b55f29e00aa780d9"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","hash":"a4452128d10ae55b5e2c701edda87207"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","hash":"7525ba8f2df029fe86fe08725d060d3e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","hash":"b5c8f4dba868efb80ed69fcd5a7d3f07"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","hash":"7c221e43840709e4bd38f48c2a909989"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","hash":"157add6fe297fe09245c48cb7a918b41"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","hash":"167092121b204ecb5c86516fcf26d05a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","hash":"bf44bc2460fa88f9386f3b647c10bb80"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","hash":"63c306461db5c60830794d4def8b7e7b"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","hash":"1312aed2c5e59964982eb7c85c7430c3"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","hash":"c7125c517aa8cac22da28ac6e36eef79"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","hash":"6648a14df2e64bca06988745d17f14e1"},{"path":"/Users/decode/work/flutter/bin/internal/engine.version","hash":"6065afae0f787ef56cf3c06e17cf8c4d"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","hash":"9343b5b49309dcad89c11b6151526278"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","hash":"aa4b5c0cdb6a66685350611b29ca9d38"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","hash":"f9ba98375098bc49c41b86dd961e2a5a"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","hash":"0f62d58980340b028d6c7a94848693ae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","hash":"5ea6f3bff5e08b2791946afb64deadae"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","hash":"7f34290bd4853b35be31761b6c7d3864"},{"path":"/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","hash":"805d0b620c3aa5e672740e948a1f4d9d"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","hash":"5e568872f7db50efc3ab16b3deb3d72c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","hash":"69d3c18c01655ebb418fcff2327c10a1"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf","hash":"e7069dfd19b331be16bed984668fe080"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","hash":"7f6c267be8df852637226ab1708d5417"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","hash":"cbfcf5c82f1f0857a2300a2d17b71cf0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","hash":"7d9bef290415f78dee8bc0fdd47025f2"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","hash":"309fca388c4496bad5fbfe0dc5f79fdf"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","hash":"206832bc71a4fbdfd4a077b6f35e6333"},{"path":"/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","hash":"b3a1842db250354626971c5626f6f0b8"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","hash":"3843f59e1c5febcb8443f79f1e8d4eee"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","hash":"7b710a7321d046e0da399b64da662c0b"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","hash":"8a3919d89072fa859d8d30ce69a89448"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","hash":"c0e496ed40e0cb9154c5418657d2fa2e"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","hash":"d14136e243131a8fe9357941eca1bd70"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","hash":"5b539bedaf82a69ffd5c93fe8cb16465"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","hash":"187d36be28f01a2fb9747610a07b786c"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","hash":"016c8ca1fd284bdbde5784241f314576"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","hash":"ef25c8f7ff1f10a43eecb0a0f44b38ba"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","hash":"3a2d505268f5446e5f7694776b69b407"},{"path":"/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","hash":"11fb74cfad9b61d3e33c48500bd644c0"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","hash":"2981afacc7a836ccc661fd0be2eb0681"},{"path":"/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","hash":"b324a1cbdb9418b4698cfec22372af7d"}]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/App.framework/App b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/App.framework/App new file mode 100755 index 000000000..f25a58c4f Binary files /dev/null and b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/App.framework/App differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/app.dill b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/app.dill new file mode 100644 index 000000000..421e2f856 Binary files /dev/null and b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/app.dill differ diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_ios_bundle_flutter_assets.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_ios_bundle_flutter_assets.stamp new file mode 100644 index 000000000..97b791c4a --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_ios_bundle_flutter_assets.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/app.dill","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/App.framework/App","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/icon_tree_shaker.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/pubspec.yaml","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Runner/Info.plist","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json","/Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf","/Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE","/Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE","/Users/decode/work/flutter/packages/flutter/LICENSE"],"outputs":["/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/App","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/Info.plist","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json","/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_universal_framework.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_universal_framework.stamp new file mode 100644 index 000000000..8699c797c --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_universal_framework.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/App.framework/App"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_unpack_ios.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_unpack_ios.stamp new file mode 100644 index 000000000..41a50ea70 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/debug_unpack_ios.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/ios.dart","/Users/decode/work/flutter/bin/internal/engine.version"],"outputs":["/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/Flutter.framework/Flutter"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/flutter_assets.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/flutter_assets.d new file mode 100644 index 000000000..30ea69d96 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/flutter_assets.d @@ -0,0 +1 @@ + /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json /Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z: /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/pubspec.yaml /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/ios/Runner/Info.plist /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/ios/Flutter/AppFrameworkInfo.plist /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/assets/CupertinoIcons.ttf /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/assets/sdk-versions.json /Users/decode/work/flutter/bin/cache/artifacts/material_fonts/MaterialIcons-Regular.otf /Users/decode/work/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_web-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_web-2.5.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/js-0.6.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/lints-2.0.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_android-10.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_apple-9.0.7/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_windows-0.1.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.14/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/LICENSE /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/LICENSE /Users/decode/work/flutter/bin/cache/pkg/sky_engine/LICENSE /Users/decode/work/flutter/packages/flutter/LICENSE \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/gen_dart_plugin_registrant.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/gen_dart_plugin_registrant.stamp new file mode 100644 index 000000000..e48ee97ae --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/gen_dart_plugin_registrant.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/gen_localizations.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/gen_localizations.stamp new file mode 100644 index 000000000..1b2d28c4e --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/gen_localizations.stamp @@ -0,0 +1 @@ +{"inputs":[],"outputs":[]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/kernel_snapshot.d b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/kernel_snapshot.d new file mode 100644 index 000000000..76b66b34d --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/kernel_snapshot.d @@ -0,0 +1 @@ +/Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/app.dill: /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/main.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart /Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart /Users/decode/work/flutter/packages/flutter/lib/material.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/utility_functions.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/app_router.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/app_navigation/navigation_service.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart /Users/decode/work/flutter/packages/flutter/lib/widgets.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/home_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/meeting_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/preview_page.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/receive_call.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart /Users/decode/work/flutter/packages/flutter/lib/foundation.dart /Users/decode/work/flutter/packages/flutter/lib/services.dart /Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart /Users/decode/work/flutter/packages/flutter/lib/rendering.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart /Users/decode/work/flutter/packages/flutter/lib/scheduler.dart /Users/decode/work/flutter/packages/flutter/lib/cupertino.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart /Users/decode/work/flutter/packages/flutter/lib/animation.dart /Users/decode/work/flutter/packages/flutter/lib/gestures.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart /Users/decode/work/flutter/packages/flutter/lib/painting.dart /Users/decode/work/flutter/packages/flutter/lib/semantics.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/join_service.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart /Users/decode/work/100ms-flutter/100ms-flutter/sample\ apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart /Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart /Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart /Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart /Users/decode/work/flutter/packages/flutter/lib/physics.dart /Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart /Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart /Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart /Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart /Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart /Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart /Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart /Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart /Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart /Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart /Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart /Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart /Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart /Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart /Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart /Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart /Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart /Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart /Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart /Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart /Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart /Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart /Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart /Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart /Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart /Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart /Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart /Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart /Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart /Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart /Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart /Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart /Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart /Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart /Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart /Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart /Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart /Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart /Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/kernel_snapshot.stamp b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/kernel_snapshot.stamp new file mode 100644 index 000000000..6422faaf9 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/kernel_snapshot.stamp @@ -0,0 +1 @@ +{"inputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/package_config_subset","/Users/decode/work/flutter/packages/flutter_tools/lib/src/build_system/targets/common.dart","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/flutter/bin/internal/engine.version","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/main.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart","/Users/decode/work/flutter/packages/flutter/lib/src/dart_plugin_registrant.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/firebase_core.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/firebase_messaging.dart","/Users/decode/work/flutter/packages/flutter/lib/material.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/utility_functions.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/app_router.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/app_navigation/navigation_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/path_provider_android.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/path_provider_foundation.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/share_plus.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/path_provider_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/firebase_core_platform_interface.dart","/Users/decode/work/flutter/packages/flutter/lib/widgets.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core-2.13.0/lib/src/firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/firebase_messaging_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging-14.6.1/lib/src/messaging.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/about.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/action_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/arc.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/back_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/badge_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/banner_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_style_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/calendar_date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/card_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/checkbox_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/chip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/choice_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/circle_avatar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/color_scheme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_source.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/data_table_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dialog_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/divider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/dropdown_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevated_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/elevation_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expand_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_panel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/expansion_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filled_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/filter_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flexible_space_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_location.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/floating_action_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/grid_tile_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icon_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_highlight.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_ripple.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_sparkle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/ink_well.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_chip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_date_picker_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/input_decorator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/list_tile_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/material_state_mixin.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_anchor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/mergeable_material.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_drawer_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/navigation_rail_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/no_splash.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/outlined_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/page_transitions_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/paginated_data_table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/popup_menu_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/progress_indicator_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/radio_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/range_slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/refresh_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/scrollbar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/search.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/segmented_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selectable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/selection_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/shadows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/slider_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/snack_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/stepper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/switch_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_bar_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tab_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tabs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_button_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_form_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_selection_toolbar_text_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/time_picker_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggle_buttons_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/toggleable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/tooltip_visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/typography.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/cloud_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/entities.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/flutter_callkit_incoming.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler-10.2.0/lib/permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/home_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/meeting_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/preview_page.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/receive_call.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/path_provider_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_android-2.0.22/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_foundation-2.1.1/lib/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/path_provider_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/share_plus_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/share_plus_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/folders.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3/lib/src/path_provider_windows_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/collection.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/messages.pigeon.dart","/Users/decode/work/flutter/packages/flutter/lib/foundation.dart","/Users/decode/work/flutter/packages/flutter/lib/services.dart","/Users/decode/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3/lib/plugin_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/mocks.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/pigeon/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_core_exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/firebase_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/method_channel/method_channel_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_app.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.8.0/lib/src/platform_interface/platform_interface_firebase_plugin.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/vector_math_64.dart","/Users/decode/work/flutter/packages/flutter/lib/rendering.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/actions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_cross_fade.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/animated_switcher.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/annotated_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/async.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autocomplete.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/automatic_keep_alive.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/banner.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/basic.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/bottom_navigation_bar_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/color_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_button_item.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/context_menu_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_selection_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dismissible.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/display_feature_sub_screen.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/disposable_build_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/drag_target.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/dual_transition_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/editable_text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/fade_in_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_manager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_scope.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/focus_traversal.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/form.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/framework.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/gesture_detector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/grid_paper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/heroes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_filter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/image_icon.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/implicit_animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_model.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/inherited_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/interactive_viewer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/media_query.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/modal_barrier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigation_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/nested_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/notification_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/orientation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overflow_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/overscroll_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_storage.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/page_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/pages.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/placeholder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_menu_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_selectable_region_context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/preferred_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/primary_scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/raw_keyboard_listener.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/reorderable_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/restoration_properties.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/routes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/safe_area.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_activity.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_aware_image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_configuration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_metrics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_notification_observer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_physics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selectable_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/selection_container.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/semantics_debugger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shared_app_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/shortcuts.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/size_changed_layout_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_layout_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/sliver_prototype_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/slotted_render_object_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/snapshot_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spacer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/status_transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tap_region.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_editing_intents.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_anchors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/text_selection_toolbar_layout_delegate.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/ticker_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/title.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/transitions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/tween_animation_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/unique_widget.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/value_listenable_builder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/visibility.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_inspector.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/widget_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/will_pop_scope.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/platform_interface/platform_interface_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/notification_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/remote_notification.dart","/Users/decode/work/flutter/packages/flutter/lib/scheduler.dart","/Users/decode/work/flutter/packages/flutter/lib/cupertino.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/animated_icons_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/add_event.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/arrow_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/close_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/ellipsis_search.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/event_add.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/home_menu.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/list_view.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_arrow.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_close.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/menu_home.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/pause_play.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/play_pause.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/search_ellipsis.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/material/animated_icons/data/view_list.g.dart","/Users/decode/work/flutter/packages/flutter/lib/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/gestures.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/material_color_utilities.dart","/Users/decode/work/flutter/packages/flutter/lib/painting.dart","/Users/decode/work/flutter/packages/flutter/lib/semantics.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/cloud_functions_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions-4.3.1/lib/src/https_callable_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_event.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/uuid-3.0.6/lib/uuid_util.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/crypto.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/join_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/draggable_widget.dart","/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/lib/hmssdk/hmssdk_interactor.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/hmssdk_flutter.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/enums.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5/lib/src/method_channel_path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/path.dart","/Users/decode/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+3/lib/xdg_directories.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/cross_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/platform_interface/share_plus_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.2/lib/url_launcher_linux.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/url_launcher_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus-6.3.0/lib/src/windows_version_helper.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/url_launcher_windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/win32.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/ffi.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/algorithms.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/boollist.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/canonicalized_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/comparators.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/equality_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/iterable_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/list_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/priority_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/queue_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/union_set_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/unmodifiable_wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/wrappers.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/annotations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/assertions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/bitfield.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/change_notifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/collections.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/consolidate_response.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/diagnostics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/isolates.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/key.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/licenses.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/math.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/memory_allocations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/node.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/observer_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/persistent_hash_map.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/platform.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/print.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/serialization.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/stack_frame.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/synchronous_future.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/unicode.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/asset_bundle.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/autofill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binary_messenger.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/clipboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/deferred_component.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/font_loader.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/haptic_feedback.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/hardware_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_key.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/keyboard_maps.g.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codec.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/message_codecs.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_cursor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/mouse_tracking.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_channel.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/platform_views.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_android.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_ios.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_linux.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_macos.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_web.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/raw_keyboard_windows.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/restoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/spell_check.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_channels.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_chrome.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_navigator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/system_sound.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_boundary.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_editing_delta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_formatter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_input.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/text_layout_metrics.dart","/Users/decode/work/flutter/packages/flutter_test/lib/flutter_test.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/aabb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/colors.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/error_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/frustum.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/intersection_result.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/matrix4.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/noise.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/obb3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/opengl.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/plane.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quad.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/quaternion.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/ray.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/sphere.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/triangle.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/utilities.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector2.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector3.dart","/Users/decode/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/src/vector_math_64/vector4.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/animated_size.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_layout.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/custom_paint.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/editable.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/error.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flex.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/flow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/layout_helper.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_body.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/list_wheel_viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/mouse_tracker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/object.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/paragraph.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/performance_overlay.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/platform_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/proxy_sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/rotated_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/shifted_box.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fill.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_fixed_extent_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_grid.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_list.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_padding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/sliver_persistent_header.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/stack.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/table_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/texture.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/tweens.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/viewport_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/rendering/wrap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/physics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/widgets/_platform_selectable_region_context_menu_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/method_channel_messaging.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/priority.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/service_extensions.dart","/Users/decode/work/flutter/packages/flutter/lib/src/scheduler/ticker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/activity_indicator.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/adaptive_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/app.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/bottom_tab_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/context_menu_action.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/date_picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/dialog.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/form_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icon_theme_data.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/icons.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/interface_level.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_section.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/list_tile.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/localizations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/magnifier.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/nav_bar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/picker.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/refresh.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/route.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/scrollbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/search_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/slider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/switch.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_scaffold.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/tab_view.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_field.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_form_field_row.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_selection_toolbar_button.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/text_theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/theme.dart","/Users/decode/work/flutter/packages/flutter/lib/src/cupertino/thumb_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animation_controller.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/animations.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/curves.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/listener_helpers.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween.dart","/Users/decode/work/flutter/packages/flutter/lib/src/animation/tween_sequence.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/arena.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/constants.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/converter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/drag_details.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/eager.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/events.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/force_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/gesture_settings.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/hit_test.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/long_press.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/lsq_solver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/monodrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multidrag.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/multitap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_router.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/pointer_signal_resolver.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/recognizer.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/resampler.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/scale.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/tap.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/team.dart","/Users/decode/work/flutter/packages/flutter/lib/src/gestures/velocity_tracker.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/blend/blend.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/cam16.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/viewing_conditions.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/core_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/palettes/tonal_palette.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_celebi.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wsmeans.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/quantizer_wu.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/scheme/scheme.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/score/score.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/alignment.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/basic_types.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/beveled_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/border_radius.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/borders.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_fit.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/box_shadow.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/circle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/clip.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/colors.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/continuous_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/decoration_image.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/edge_insets.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/flutter_logo.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/fractional_offset.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/geometry.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/gradient.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_cache.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_decoder.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_resolution.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/image_stream.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/inline_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/matrix_utils.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/notched_shapes.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/oval_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/paint_utilities.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/placeholder_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/rounded_rectangle_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shader_warm_up.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/shape_decoration.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/stadium_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/star_border.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/strut_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_painter.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_span.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/text_style.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/binding.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/debug.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_event.dart","/Users/decode/work/flutter/packages/flutter/lib/src/semantics/semantics_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/firebase_functions_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/https_callable_options.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/platform_interface/platform_interface_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/json_annotation.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/android_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/call_kit_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/ios_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/flutter_callkit_incoming-2.0.0/lib/entities/notification_params.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/method_channel_permission_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_handler_platform_interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permission_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/service_status.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hmac.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/md5.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha1.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha256.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/http.dart","/Users/decode/.pub-cache/hosted/pub.dev/draggable_widget-2.0.0/lib/model/anchor_docker.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/common/platform_methods.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_camera_facing.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_peer_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_preview_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_room_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_kind.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_update.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_update_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_message_recipient_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_log_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_stats_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_track_init_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_Quality_limitation_reason.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_simulcast_layer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_in_sufficient_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/hmssdk.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_permissions.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_preview_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_publish_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_role_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_speaker.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_resolution.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_video_track_setting.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/platform_method_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/ui/meeting/hms_video_view.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_track_change_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_peer_removed_from_room.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_recipient.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_logs_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_actions_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_message_result_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_action_result_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_peer.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_meeting_url_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_local_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_audio_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_remote_video_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtc_stats.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_video_scale_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_network_quality.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_stats_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_device.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_audio_mixing_mode.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_file_player_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_mic_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_mixer_source.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_screen_broadcast_audio_receiver_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_settings.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_quality_limitation_reasons.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_definition.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_subscribe_degradation_params.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_android_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_pip_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_ios_screenshare_config.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_log_list.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_camera_controls.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_store.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/context.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/path_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/process.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7/lib/src/get_application_id_real.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/x_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0/lib/method_channel/method_channel_share.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/src/url_launcher_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.3/lib/src/messages.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/bstr.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/callbacks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/constants_nodoc.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/guid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/inline.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/macros.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/structs.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/types.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/winmd_constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/dialogs.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/int_to_hexstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/list_to_blob.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_ansi.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/set_string_array.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/extensions/unpack_utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/advapi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bluetoothapis.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/bthprops.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comctl32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/comdlg32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dbghelp.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dwmapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/dxva2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/gdi32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/iphlpapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/kernel32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/magnification.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/ole32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/oleaut32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/powrprof.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/rometadata.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/scarddlg.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/setupapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/shell32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/user32.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/uxtheme.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/version.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winmm.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winscard.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/winspool.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/wlanapi.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/xinput1_4.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_apiquery_l2_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_comm_l1_1_2.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_handle_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_sysinfo_l1_2_3.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_core_winrt_string_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_shcore_scaling_l1_1_1.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/win32/api_ms_win_wsl_api_l1_1_0.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/api_ms_win_ro_typeresolution_l1_1_0.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/combase.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iapplicationactivationmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxfilesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplication.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestapplicationsenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestospackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependenciesenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackagedependency.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestpackageid.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestproperties.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader3.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader4.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader5.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader6.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxmanifestreader7.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iappxpackagereader.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiocaptureclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudioclock.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiorenderclient.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessioncontrol.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiosessionmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iaudiostreamvolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ibindctx.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ichannelaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iclassfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpoint.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iconnectionpointcontainer.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idesktopwallpaper.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/idispatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumidlist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienummoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworkconnections.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumnetworks.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumspellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumstring.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumvariant.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ienumwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ierrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialog2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifiledialogcustomize.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileisinuse.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifileopendialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ifilesavedialog.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iinspectable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iknownfoldermanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdevice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/immdeviceenumerator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imodalwindow.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/imoniker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetwork.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworkconnection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/inetworklistmanagerevents.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistfile.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersistmemory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ipersiststream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iprovideclassinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/irunningobjecttable.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensor.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensorcollection.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensordatareport.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isensormanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isequentialstream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellfolder.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitem2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemarray.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemfilter.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemimagefactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellitemresources.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllink.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdatalist.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishelllinkdual.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ishellservice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isimpleaudiovolume.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttoken.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeechobjecttokens.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellchecker2.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerchangedeventhandler.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellcheckerfactory.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispellingerror.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispeventsource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispnotifysource.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ispvoice.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/istream.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/isupporterrorinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/itypeinfo.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iunknown.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iuri.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/ivirtualdesktopmanager.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemclassobject.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemconfigurerefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemcontext.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemhiperfenum.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemlocator.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemobjectaccess.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemrefresher.dart","/Users/decode/.pub-cache/hosted/pub.dev/win32-3.1.3/lib/src/com/iwbemservices.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/allocation.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/arena.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf8.dart","/Users/decode/.pub-cache/hosted/pub.dev/ffi-2.0.1/lib/src/utf16.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart","/Users/decode/.pub-cache/hosted/pub.dev/collection-1.17.0/lib/src/empty_unmodifiable_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/meta-1.8.0/lib/meta_meta.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_bitfield_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_isolates_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/foundation/_platform_io.dart","/Users/decode/work/flutter/packages/flutter/lib/src/services/_background_isolate_binary_messenger_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_goldens_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_matchers_io.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/accessibility.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/all_elements.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/animation_sheet.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/binding.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/controller.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/deprecated.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/event_simulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/finders.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/frame_timing_summarizer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/goldens.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/image.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/matchers.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/nonconst.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/platform.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/restoration.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/stack_manipulation.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_async_utils.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_compat.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_default_binary_messenger.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_exception_reporter.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_pointer.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_vsync.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/widget_tester.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/window.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/characters_impl.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/clamped_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/friction_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/gravity_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/spring_simulation.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/tolerance.dart","/Users/decode/work/flutter/packages/flutter/lib/src/physics/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.5.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/math_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/utils/color_utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/hct/hct_solver.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider_lab.dart","/Users/decode/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0/lib/quantize/point_provider.dart","/Users/decode/work/flutter/packages/flutter/lib/src/painting/_network_image_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_firebase_functions.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/allowed_keys_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/checked_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/enum_helpers.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_converter.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_enum.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_key.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_literal.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_value.dart","/Users/decode/.pub-cache/hosted/pub.dev/permission_handler_platform_interface-3.9.0/lib/src/method_channel/utils/codec.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/digest_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/hash_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/crypto-3.0.2/lib/src/sha512_fastsinks.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/base_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/byte_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_request.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/exceptions/hms_exception_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/manager/hms_sdk_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_session_metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/service/platform_service.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_audio_node.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_date_extension.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_browser_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_server_recording_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_rtmp_streaming_state.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_key_change_listener_method.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/enum/hms_logs_update_listener.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_key_change_observer.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/local_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/interface/platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/platform-3.1.0/lib/src/testing/fake_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/internal_style.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/parsed_path.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/posix.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/url.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/style/windows.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/exceptions.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/local_process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_manager.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/process_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/mime.dart","/Users/decode/.pub-cache/hosted/pub.dev/path_provider-2.0.12/lib/path_provider.dart","/Users/decode/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1/lib/method_channel_url_launcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/async_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/test_api.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/fake_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/stack_trace.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/_binding_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/declarer.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/group_entry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/invoker.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/message.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/runtime.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/state.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/suite_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/fake.dart","/Users/decode/work/flutter/packages/flutter_test/lib/src/test_text_input_key_handler.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/table.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/constants.dart","/Users/decode/.pub-cache/hosted/pub.dev/characters-1.2.1/lib/src/grapheme_clusters/breaks.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/_flutterfire_internals.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/method_channel_https_callable.dart","/Users/decode/.pub-cache/hosted/pub.dev/json_annotation-4.8.0/lib/src/json_serializable.g.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_data.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_client.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/http_parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/multipart_file_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/boundary_characters.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_hls_variant.dart","/Users/decode/.pub-cache/hosted/pub.dev/hmssdk_flutter-1.6.0/lib/src/model/hms_simulcast_layer_settings_policy.dart","/Users/decode/.pub-cache/hosted/pub.dev/path-1.8.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/process-4.2.4/lib/src/interface/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/cross_file-0.3.3+4/lib/src/types/base.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_multipart_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_shared.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/mime_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/expect_async.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/future_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/never_called.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/prints_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/stream_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/throws_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/hooks.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/scaffolding.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/default.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/clock.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/unparsed_frame.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/timeout.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/metadata.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/closed_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/live_test_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/test_failure.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/operating_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/frontend/fake.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/interop_shimmer.dart","/Users/decode/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.3.1/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/cloud_functions_platform_interface-5.4.1/lib/src/method_channel/utils/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/typed_buffers.dart","/Users/decode/.pub-cache/hosted/pub.dev/http-0.13.4/lib/src/io_streamed_response.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/authentication_challenge.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/case_insensitive_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/http_date.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/media_type.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/bound_multipart_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/char_code.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/default_extension_map.dart","/Users/decode/.pub-cache/hosted/pub.dev/mime-1.0.4/lib/src/magic_number.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/core_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/custom_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/description.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/equals_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/error_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/interfaces.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/iterable_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/map_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/numeric_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/operator_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/order_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/string_matchers.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/type_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/util.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/expect/util/placeholder.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/async.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_formatter.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/on_platform.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/retry.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/skip.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/tags.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/configuration/test_on.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/spawn_hybrid.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/scaffolding/test_structure.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/stopwatch.dart","/Users/decode/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_chain.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/stack_zone_specification.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/lazy_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/stack_trace-1.11.0/lib/src/vm_trace.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/boolean_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/platform_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/util/identifier_regex.dart","/Users/decode/.pub-cache/hosted/pub.dev/typed_data-1.3.1/lib/src/typed_buffer.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/scan.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/decoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/encoder.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/feature_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/pretty_print.dart","/Users/decode/.pub-cache/hosted/pub.dev/matcher-0.12.13/lib/src/having_matcher.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/term_glyph.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_cache.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/async_memoizer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/byte_collector.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/cancelable_operation.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/chunked_stream_reader.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/event_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_consumer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/delegate/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/future_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/lazy_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/null_stream_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/restartable_timer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/error.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/future.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/result.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/value.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/single_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/sink_base.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_closer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_group.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_queue.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_extensions.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_splitter.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_subscription_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_zip.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/subscription_stream.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed_stream_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/stack_trace_mapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/backend/remote_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/test_api-0.4.16/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/line_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/string_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/source_span.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/all.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/impl.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/none.dart","/Users/decode/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/src/chunked_coding/charcodes.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/forwarding/forwarding_random_access_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/link.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/io.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/ascii_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/unicode_glyph_set.dart","/Users/decode/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/src/generated/top_level.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/typed/stream_subscription.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/capture_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_sink.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/result/release_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/reject_errors.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/handler_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/stream_transformer_wrapper.dart","/Users/decode/.pub-cache/hosted/pub.dev/async-2.10.0/lib/src/stream_sink_transformer/typed.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/close_guarantee_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/delegating_stream_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/disconnector.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/json_document_transformer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/multi_channel.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_completer.dart","/Users/decode/.pub-cache/hosted/pub.dev/stream_channel-2.1.1/lib/src/stream_channel_controller.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/eager_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/src/relative_span_scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/file.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/location_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_exception.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_mixin.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/span_with_context.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/ast.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/evaluator.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/intersection_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/parser.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/union_selector.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/validator.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/interface/error_codes_dart_io.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_directory.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_link.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/highlighter.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/utils.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/visitor.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/scanner.dart","/Users/decode/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/src/token.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/common.dart","/Users/decode/.pub-cache/hosted/pub.dev/file-6.1.4/lib/src/backends/local/local_file_system_entity.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/charcode.dart","/Users/decode/.pub-cache/hosted/pub.dev/source_span-1.9.1/lib/src/colors.dart"],"outputs":["/Users/decode/work/100ms-flutter/100ms-flutter/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/app.dill"]} \ No newline at end of file diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/outputs.json b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/outputs.json new file mode 100644 index 000000000..30a411c11 --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/c970366aa2a6e28e1f732d59bfa170d7/outputs.json @@ -0,0 +1,15 @@ +[ + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/Flutter.framework/Flutter", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/vm_snapshot_data", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/isolate_snapshot_data", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/kernel_blob.bin", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/App", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/Info.plist", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/packages/hmssdk_flutter/lib/assets/sdk-versions.json", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/shaders/ink_sparkle.frag", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/AssetManifest.json", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/FontManifest.json", + "/Users/decode/Library/Developer/Xcode/DerivedData/Runner-aonfzykmxfxmpmgzsnypphvdfwxp/Build/Products/Debug-iphoneos/App.framework/flutter_assets/NOTICES.Z" +] diff --git a/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart b/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart new file mode 100644 index 000000000..d577f11ea --- /dev/null +++ b/sample apps/hms-callkit-app/.dart_tool/flutter_build/dart_plugin_registrant.dart @@ -0,0 +1,99 @@ +// +// Generated file. Do not edit. +// This file is generated from template in file `flutter_tools/lib/src/flutter_plugins.dart`. +// + +// @dart = 2.19 + +import 'dart:io'; // flutter_ignore: dart_io_import. +import 'package:path_provider_android/path_provider_android.dart'; +import 'package:path_provider_foundation/path_provider_foundation.dart'; +import 'package:path_provider_linux/path_provider_linux.dart'; +import 'package:share_plus/share_plus.dart'; +import 'package:path_provider_foundation/path_provider_foundation.dart'; +import 'package:path_provider_windows/path_provider_windows.dart'; +import 'package:share_plus/share_plus.dart'; + +@pragma('vm:entry-point') +class _PluginRegistrant { + + @pragma('vm:entry-point') + static void register() { + if (Platform.isAndroid) { + try { + PathProviderAndroid.registerWith(); + } catch (err) { + print( + '`path_provider_android` threw an error: $err. ' + 'The app may not function as expected until you remove this plugin from pubspec.yaml' + ); + rethrow; + } + + } else if (Platform.isIOS) { + try { + PathProviderFoundation.registerWith(); + } catch (err) { + print( + '`path_provider_foundation` threw an error: $err. ' + 'The app may not function as expected until you remove this plugin from pubspec.yaml' + ); + rethrow; + } + + } else if (Platform.isLinux) { + try { + PathProviderLinux.registerWith(); + } catch (err) { + print( + '`path_provider_linux` threw an error: $err. ' + 'The app may not function as expected until you remove this plugin from pubspec.yaml' + ); + rethrow; + } + + try { + SharePlusLinuxPlugin.registerWith(); + } catch (err) { + print( + '`share_plus` threw an error: $err. ' + 'The app may not function as expected until you remove this plugin from pubspec.yaml' + ); + rethrow; + } + + } else if (Platform.isMacOS) { + try { + PathProviderFoundation.registerWith(); + } catch (err) { + print( + '`path_provider_foundation` threw an error: $err. ' + 'The app may not function as expected until you remove this plugin from pubspec.yaml' + ); + rethrow; + } + + } else if (Platform.isWindows) { + try { + PathProviderWindows.registerWith(); + } catch (err) { + print( + '`path_provider_windows` threw an error: $err. ' + 'The app may not function as expected until you remove this plugin from pubspec.yaml' + ); + rethrow; + } + + try { + SharePlusWindowsPlugin.registerWith(); + } catch (err) { + print( + '`share_plus` threw an error: $err. ' + 'The app may not function as expected until you remove this plugin from pubspec.yaml' + ); + rethrow; + } + + } + } +} diff --git a/sample apps/hms-callkit-app/android/.DS_Store b/sample apps/hms-callkit-app/android/.DS_Store new file mode 100644 index 000000000..167fa14a5 Binary files /dev/null and b/sample apps/hms-callkit-app/android/.DS_Store differ diff --git a/sample apps/hms-callkit-app/android/.idea/.gitignore b/sample apps/hms-callkit-app/android/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/sample apps/hms-callkit-app/android/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/sample apps/hms-callkit-app/android/.idea/compiler.xml b/sample apps/hms-callkit-app/android/.idea/compiler.xml new file mode 100644 index 000000000..b589d56e9 --- /dev/null +++ b/sample apps/hms-callkit-app/android/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sample apps/hms-callkit-app/android/.idea/gradle.xml b/sample apps/hms-callkit-app/android/.idea/gradle.xml new file mode 100644 index 000000000..5ee39ba5b --- /dev/null +++ b/sample apps/hms-callkit-app/android/.idea/gradle.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/sample apps/hms-callkit-app/android/.idea/jarRepositories.xml b/sample apps/hms-callkit-app/android/.idea/jarRepositories.xml new file mode 100644 index 000000000..17f5ecec6 --- /dev/null +++ b/sample apps/hms-callkit-app/android/.idea/jarRepositories.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sample apps/hms-callkit-app/android/.idea/kotlinc.xml b/sample apps/hms-callkit-app/android/.idea/kotlinc.xml new file mode 100644 index 000000000..6645193d2 --- /dev/null +++ b/sample apps/hms-callkit-app/android/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/sample apps/hms-callkit-app/android/.idea/misc.xml b/sample apps/hms-callkit-app/android/.idea/misc.xml new file mode 100644 index 000000000..5701082fb --- /dev/null +++ b/sample apps/hms-callkit-app/android/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/sample apps/hms-callkit-app/android/.idea/vcs.xml b/sample apps/hms-callkit-app/android/.idea/vcs.xml new file mode 100644 index 000000000..c2365ab11 --- /dev/null +++ b/sample apps/hms-callkit-app/android/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sample apps/hms-callkit-app/functions/package-lock.json b/sample apps/hms-callkit-app/functions/package-lock.json index 56381c927..470efca98 100644 --- a/sample apps/hms-callkit-app/functions/package-lock.json +++ b/sample apps/hms-callkit-app/functions/package-lock.json @@ -2243,9 +2243,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "optional": true, "bin": { "semver": "bin/semver.js" @@ -2791,9 +2791,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } diff --git a/sample apps/hms-callkit-app/pubspec.lock b/sample apps/hms-callkit-app/pubspec.lock index 3746768a6..47c7c686a 100644 --- a/sample apps/hms-callkit-app/pubspec.lock +++ b/sample apps/hms-callkit-app/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" cross_file: dependency: transitive description: @@ -236,10 +236,10 @@ packages: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" json_annotation: dependency: transitive description: @@ -260,26 +260,26 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" mime: dependency: transitive description: @@ -292,10 +292,10 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" path_provider: dependency: transitive description: @@ -433,26 +433,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -473,10 +473,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" typed_data: dependency: transitive description: @@ -533,6 +533,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" win32: dependency: transitive description: @@ -550,5 +558,5 @@ packages: source: hosted version: "0.2.0+3" sdks: - dart: ">=2.19.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.3.0" diff --git a/sample apps/mobx/pubspec.lock b/sample apps/mobx/pubspec.lock index 93d0a01c7..812a91ed9 100644 --- a/sample apps/mobx/pubspec.lock +++ b/sample apps/mobx/pubspec.lock @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" checked_yaml: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" convert: dependency: transitive description: @@ -311,10 +311,10 @@ packages: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" json_annotation: dependency: transitive description: @@ -343,26 +343,26 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" mime: dependency: transitive description: @@ -399,10 +399,10 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" permission_handler: dependency: "direct main" description: @@ -508,26 +508,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -556,10 +556,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" timing: dependency: transitive description: @@ -600,6 +600,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" web_socket_channel: dependency: transitive description: @@ -617,5 +625,5 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=2.18.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=2.8.0" diff --git a/sample apps/riverpod/android/app/build.gradle b/sample apps/riverpod/android/app/build.gradle index 0665f670b..81ecb5e14 100644 --- a/sample apps/riverpod/android/app/build.gradle +++ b/sample apps/riverpod/android/app/build.gradle @@ -45,7 +45,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.example_riverpod" minSdkVersion 21 - targetSdkVersion 32 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/sample apps/riverpod/pubspec.lock b/sample apps/riverpod/pubspec.lock index d2190648a..e7ee6c55c 100644 --- a/sample apps/riverpod/pubspec.lock +++ b/sample apps/riverpod/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" cupertino_icons: dependency: "direct main" description: @@ -107,14 +107,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.1" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" lints: dependency: transitive description: @@ -127,34 +119,34 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" permission_handler: dependency: "direct main" description: @@ -220,18 +212,18 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" state_notifier: dependency: transitive description: @@ -244,10 +236,10 @@ packages: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -268,10 +260,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.1" typed_data: dependency: transitive description: @@ -288,6 +280,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=2.18.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.0.0"