diff --git a/.github/workflows/analyze.yaml b/.github/workflows/analyze.yaml new file mode 100644 index 0000000..cd30b77 --- /dev/null +++ b/.github/workflows/analyze.yaml @@ -0,0 +1,47 @@ +name: Flutter Analyze + +on: + pull_request: + branches: + - main + push: + branches: + - main + +jobs: + build: + name: Analyze code and requirements + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: Verify Flutter installation + run: flutter doctor + + - name: Check pub dependencies + run: flutter pub get + + - name: "Run Dart Analyze" + uses: invertase/github-action-dart-analyzer@v3 + with: + fatal-infos: true + fatal-warnings: true + annotate: true + working-directory: lib/ + + - name: Check Code formatting + run: dart format -o none --set-exit-if-changed . + + - name: Check pub.dev requirements + run: flutter pub publish --dry-run + + - name: Block merge if checks fail + if: ${{ failure() }} + run: echo "Checks failed, cannot merge." && exit 1 diff --git a/.vscode/launch.json b/.vscode/launch.json index b6fb754..42a77cf 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,7 @@ "name": "example debug", "request": "launch", "type": "dart", - "program": "lib/main.dart", + "program": "lib/loopback.dart", "cwd": "${workspaceFolder}/example" }, { diff --git a/.vscode/settings.json b/.vscode/settings.json index 52362ce..11cbee0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -93,6 +93,8 @@ "xtr1common": "cpp", "xtree": "cpp", "xutility": "cpp", - "bitset": "cpp" + "bitset": "cpp", + "cfenv": "cpp", + "unordered_set": "cpp" } } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a5808d5..61698e2 100755 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -9,7 +9,7 @@ }, { "label": "compile linux debug", - "command": "cd ${workspaceFolder}/example; flutter build linux -t lib/main.dart --debug", + "command": "cd ${workspaceFolder}/example; flutter build linux -t lib/loopback.dart --debug", "type": "shell" }, { diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cb77d0..1faca61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,20 @@ +## 0.9.3 +- added `autoGain` filter +- breaking changes: + - the `init` method is now async + - `FilterType` renamed to `RecorderFilterType` + - an [additional script](https://github.com/alnitak/flutter_recorder#web) must be added for the web platform. Now it looks like: + ``` + + + ``` + ## 0.9.2 -* fix: the stop was instead einit the device -* fix: removed dialog when stopping stream in the example +- fix: the stop was instead einit the device +- fix: removed dialog when stopping stream in the example ## 0.9.1 -* breaking change: +- breaking changes: - renamed `startListen` to `start` - renamed `stopListen` to `stop` - renamed `isDeviceStartedListen` to `isDeviceStarted` diff --git a/README.md b/README.md index 72f236a..bf7e628 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,13 @@ A low-level audio recorder plugin that uses miniaudio as the backend and support - πŸ“Š **Customizable Silence Threshold**: Define what’s considered β€œsilence” for your recordings. - ⏱️ **Adjustable Pause Timing**: Set how long silence lasts before pausing, and how soon to resume recording. - πŸ”Š **Real-time Audio Metrics**: Access volume, audio wave, and FFT data in real-time. +- 🎚️ **Auto Gain**: Experimental Auto Gain filter. +- 🌐 **Cross Platform**: Supports all platforms with WASM support for the web. [A web example compiled in WASM.](https://marcobavagnoli.com/flutter_recorder/) -## πŸš€ Setup Permissions -After setting up permission for you Android, MacOS or iOS, in your app, you will need to ask for permission to use the microphonem maybe using [permission_handler](https://pub.dev/packages/permission_handler) plugin. +## πŸš€ Setup +After setting up permission for you Android, MacOS or iOS, in your app, you will need to ask for permission to use the microphone maybe using [permission_handler](https://pub.dev/packages/permission_handler) plugin. https://pub.dev/packages/permission_handler #### Android @@ -43,7 +45,16 @@ Add the permission in `Runner/Info.plist`. Add this in `web/index.html` under the `` tag. ``` + ``` +The plugin is **WASM** compatible and your app can be compiled and run locally with something like: +``` +flutter run -d chrome --web-renderer canvaskit --web-browser-flag '--disable-web-security' -t lib/main.dart --release +``` + +#### Linux +- [`GStreamer`](https://gstreamer.freedesktop.org/documentation/installing/index.html?gi-language=c) is installed by default on most distributions, but if not, please [install it](https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c) through your distribution's package manager. +- Installing Flutter using `snap` could cause compilation problems with native plugins. The only solution is to uninstall it with `sudo snap remove flutter` and install it the [official way](https://flutter-ko.dev/get-started/install/linux). ## πŸ› οΈ Usage Example ```dart @@ -136,4 +147,28 @@ Recorder.instance.uint8ListStream.listen((data) { Recorder.instance.startStreamingData(); /// Stop streaming: Recorder.instance.stopStreamingData(); -``` \ No newline at end of file +``` +> [!CAUTION] +> Audio data must be processed as it is received. To optimize performance, the same memory is used to store data for all incoming streams, meaning the data will be overwritten. Therefore, you must copy the data if you need to populate a buffer while it arrives. +> For example, when using **RxDart.bufferTime**, it will fill a **List** of `AudioDataContainer` objects, but when you attempt to read them, you will find that all the items contain the same data. + +### 🎚️ Auto Gain Filter + +> [!WARNING] +> This is an experimental feature, may change in the future. + +``` +final Recorder recorder = Recorder.instance; +// Please look at the [Recorder.instance.autoGainFilter] doc to have a parameters overview. +final AutoGain autoGain = recorder.filters.autoGainFilter; + +// You can now query or set parameters: +// For example with [autoGain.queryTargetRms] you can query the "human" name, `min`, `max` and `def` values. + +// Set a new parameter value: +autoGain.targetRms.value = newValue; + +// Get a new parameter value: +final value = autoGain.targetRms.value; +``` +Available parameters: `targetRMS`, `attackTime`, `releaseTime`, `gainSmoothing`, `maxGain`, `minGain`. \ No newline at end of file diff --git a/example/ios/Podfile b/example/ios/Podfile index d97f17e..3e44f9c 100644 --- a/example/ios/Podfile +++ b/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' diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock new file mode 100644 index 0000000..524c948 --- /dev/null +++ b/example/ios/Podfile.lock @@ -0,0 +1,47 @@ +PODS: + - Flutter (1.0.0) + - flutter_recorder (0.0.1): + - Flutter + - flutter_soloud (0.0.1): + - Flutter + - open_filex (0.0.2): + - Flutter + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - permission_handler_apple (9.3.0): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - flutter_recorder (from `.symlinks/plugins/flutter_recorder/ios`) + - flutter_soloud (from `.symlinks/plugins/flutter_soloud/ios`) + - open_filex (from `.symlinks/plugins/open_filex/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + flutter_recorder: + :path: ".symlinks/plugins/flutter_recorder/ios" + flutter_soloud: + :path: ".symlinks/plugins/flutter_soloud/ios" + open_filex: + :path: ".symlinks/plugins/open_filex/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + +SPEC CHECKSUMS: + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + flutter_recorder: 35999d791bb08147db8b8b8167f8a5e561f68237 + flutter_soloud: 12a37f5fb426c94671d762cbb059bbeb1b46ad97 + open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 + +PODFILE CHECKSUM: a57f30d18f102dd3ce366b1d62a55ecbef2158e5 + +COCOAPODS: 1.15.2 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 88fbc77..781af60 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,12 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 1D9A259E0A65BDED58FC0E1F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386A598177C879C697502420 /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 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 */; }; + AF107EE89F8D5B266B88F910 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48AB80419F76EED8831B97A1 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -40,28 +42,45 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 1037086DD8093E5D23D52CAC /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 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 = ""; }; + 17C4B834173960B42203FCB0 /* 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 = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 386A598177C879C697502420 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 48AB80419F76EED8831B97A1 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 97747679D6BD3814C0AA87F2 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.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 = ""; }; + C2AA768158B1BFD9B1338F04 /* 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 = ""; }; + DACD54B8B76D7B3084F7E8C0 /* 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 = ""; }; + F700F8D25769228B66ED2553 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 47E16123D84EC497B2A5DA52 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AF107EE89F8D5B266B88F910 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1D9A259E0A65BDED58FC0E1F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -94,6 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, + F82E1D2DC785D9CB3A8AD804 /* Pods */, + A45EDF3789BB2E7140660151 /* Frameworks */, ); sourceTree = ""; }; @@ -121,6 +142,28 @@ path = Runner; sourceTree = ""; }; + A45EDF3789BB2E7140660151 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 386A598177C879C697502420 /* Pods_Runner.framework */, + 48AB80419F76EED8831B97A1 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F82E1D2DC785D9CB3A8AD804 /* Pods */ = { + isa = PBXGroup; + children = ( + DACD54B8B76D7B3084F7E8C0 /* Pods-Runner.debug.xcconfig */, + C2AA768158B1BFD9B1338F04 /* Pods-Runner.release.xcconfig */, + 17C4B834173960B42203FCB0 /* Pods-Runner.profile.xcconfig */, + F700F8D25769228B66ED2553 /* Pods-RunnerTests.debug.xcconfig */, + 97747679D6BD3814C0AA87F2 /* Pods-RunnerTests.release.xcconfig */, + 1037086DD8093E5D23D52CAC /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -128,8 +171,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( + B2599692132BCEBD1783036A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, + 47E16123D84EC497B2A5DA52 /* Frameworks */, ); buildRules = ( ); @@ -145,12 +190,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 440CCA47AA7F2FA70FBC0828 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + DD3FAE5D7FDD9B0A42D6A8B7 /* [CP] Embed Pods Frameworks */, + 9A151FA45FF56BE9607BC7C7 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -238,6 +286,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 440CCA47AA7F2FA70FBC0828 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -253,6 +323,62 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + 9A151FA45FF56BE9607BC7C7 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + B2599692132BCEBD1783036A /* [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-RunnerTests-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; + }; + DD3FAE5D7FDD9B0A42D6A8B7 /* [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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -370,6 +496,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRecorderExample; PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -378,6 +505,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = F700F8D25769228B66ED2553 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -395,6 +523,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 97747679D6BD3814C0AA87F2 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -410,6 +539,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 1037086DD8093E5D23D52CAC /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -549,6 +679,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRecorderExample; PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -571,6 +702,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRecorderExample; PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a1..21a3cc1 100644 --- a/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/example/lib/loopback.dart b/example/lib/loopback.dart new file mode 100644 index 0000000..745e8e6 --- /dev/null +++ b/example/lib/loopback.dart @@ -0,0 +1,456 @@ +import 'dart:developer' as dev; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_recorder/flutter_recorder.dart'; +import 'package:flutter_recorder_example/ui/bars.dart'; +import 'package:flutter_soloud/flutter_soloud.dart'; +import 'package:logging/logging.dart'; +import 'package:permission_handler/permission_handler.dart'; + +/// Loopback example which uses `flutter_soloud` to play audio back to the +/// device from the microphone data stream. Please try it with headset to +/// prevent audio feedback. +/// +/// If you want to try other formats than `f32le`, you must comment out +/// the `Bars()` widget. +/// +/// The `Echo Cancellation` code is not yet ready and don't know if it will be! +void main() async { + // The `flutter_recorder` package logs everything + // (from severe warnings to fine debug messages) + // using the standard `package:logging`. + // You can listen to the logs as shown below. + Logger.root.level = kDebugMode ? Level.FINE : Level.INFO; + Logger.root.onRecord.listen((record) { + dev.log( + record.message, + time: record.time, + level: record.level.value, + name: record.loggerName, + zone: record.zone, + error: record.error, + stackTrace: record.stackTrace, + ); + }); + + runApp( + MaterialApp( + home: Scaffold( + appBar: AppBar( + title: Text('loopback and filter example'), + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: LoopBack(), + ), + ), + ), + ); +} + +class LoopBack extends StatefulWidget { + const LoopBack({super.key}); + + @override + State createState() => _LoopBackState(); +} + +class _LoopBackState extends State { + final audioStreamChannels = Channels.mono; + final audioStreamFormat = BufferPcmType.f32le; + + final recorderChannels = RecorderChannels.mono; + final recorderFormat = PCMFormat.f32le; + + final sampleRate = 22050; + + final soloud = SoLoud.instance; + final recorder = Recorder.instance; + AudioSource? audioSource; + + bool autoGain = false; + // bool echoCancellation = false; + + @override + void initState() { + super.initState(); + if (defaultTargetPlatform == TargetPlatform.android || + defaultTargetPlatform == TargetPlatform.iOS) { + Permission.microphone.request().isGranted.then((value) async { + if (!value) { + await [Permission.microphone].request(); + } + }); + } + + /// Listen for microphne data. + recorder.uint8ListStream.listen((chunks) { + if (audioSource != null) { + soloud.addAudioDataStream( + audioSource!, + chunks.toF32List(from: PCMFormat.f32le).buffer.asUint8List(), + ); + } else { + initAudioSource(); + soloud + ..addAudioDataStream( + audioSource!, + chunks.toF32List(from: PCMFormat.f32le).buffer.asUint8List(), + ) + ..play(audioSource!, volume: 4); + } + }); + } + + /// Initialize the audio source + void initAudioSource() { + if (audioSource != null) disposeAudioSource(); + + audioSource = soloud.setBufferStream( + channels: audioStreamChannels, + pcmFormat: audioStreamFormat, + sampleRate: sampleRate, + bufferingTimeNeeds: 0.2, + ); + + audioSource!.allInstancesFinished.listen((data) async { + await soloud.disposeSource(audioSource!); + audioSource = null; + }); + } + + /// Dispose the audio source if it exists + Future disposeAudioSource() async { + if (audioSource == null) return; + + await soloud.disposeSource(audioSource!); + audioSource = null; + } + + @override + void dispose() { + soloud.deinit(); + recorder.deinit(); + super.dispose(); + } + + Future init() async { + /// Initialize the player and the recorder. + await disposeAudioSource(); + await soloud.init(channels: Channels.mono, sampleRate: sampleRate); + // soloud.filters.echoFilter.activate(); + // soloud.filters.echoFilter.delay.value = 0.1; + // soloud.filters.echoFilter.decay.value = 0.2; + + await recorder.init( + format: recorderFormat, + sampleRate: sampleRate, + channels: recorderChannels, + ); + + recorder + ..start() + ..startStreamingData(); + + if (context.mounted) { + setState(() {}); + } + } + + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + spacing: 10, + children: [ + // Start / Stop + Row( + mainAxisSize: MainAxisSize.min, + children: [ + OutlinedButton( + onPressed: () { + init(); + }, + child: const Text('Init loopback'), + ), + OutlinedButton( + onPressed: () { + soloud.deinit(); + recorder + ..stopStreamingData() + ..deinit(); + audioSource = null; + }, + child: const Text('Stop'), + ), + ], + ), + + Row( + mainAxisSize: MainAxisSize.min, + spacing: 10, + children: [ + Text('Auto gain'), + Checkbox( + value: autoGain, + onChanged: (v) { + if (v!) { + recorder.filters.autoGainFilter.activate(); + } else { + recorder.filters.autoGainFilter.deactivate(); + } + setState(() { + autoGain = v; + }); + }, + ), + // Text('Echo Cancellation'), + // Checkbox( + // value: echoCancellation, + // onChanged: (v) { + // if (v!) { + // recorder.filters.echoCancellationFilter.activate(); + // } else { + // recorder.filters.echoCancellationFilter.deactivate(); + // } + // setState(() { + // echoCancellation = v; + // }); + // }, + // ), + ], + ), + + if (autoGain) AutoGainSliders(), + + // if (echoCancellation) EchoCancellationSliders(), + + const Bars(), + ], + ); + } +} + +// class EchoCancellationSliders extends StatefulWidget { +// const EchoCancellationSliders({super.key}); + +// @override +// State createState() => +// _EchoCancellationSlidersState(); +// } + +// class _EchoCancellationSlidersState extends State { +// late final Recorder recorder; +// late final EchoCancellation echoCancellation; + +// @override +// void initState() { +// super.initState(); +// recorder = Recorder.instance; +// echoCancellation = recorder.filters.echoCancellationFilter; +// } + +// @override +// Widget build(BuildContext context) { +// return Column( +// children: [ +// Row( +// mainAxisSize: MainAxisSize.min, +// children: [ +// Text( +// '${echoCancellation.queryEchoDelayMs}: ' +// '${echoCancellation.echoDelayMs.value.toStringAsFixed(2)}', +// ), +// Expanded( +// child: Slider( +// value: echoCancellation.echoDelayMs.value, +// min: echoCancellation.queryEchoDelayMs.min, +// max: echoCancellation.queryEchoDelayMs.max, +// onChanged: (v) { +// setState(() { +// echoCancellation.echoDelayMs.value = v; +// }); +// }, +// ), +// ), +// ], +// ), +// Row( +// mainAxisSize: MainAxisSize.min, +// children: [ +// Text( +// '${echoCancellation.queryEchoAttenuation}: ' +// '${echoCancellation.echoAttenuation.value.toStringAsFixed(2)}', +// ), +// Expanded( +// child: Slider( +// value: echoCancellation.echoAttenuation.value, +// min: echoCancellation.queryEchoAttenuation.min, +// max: echoCancellation.queryEchoAttenuation.max, +// onChanged: (v) { +// setState(() { +// echoCancellation.echoAttenuation.value = v; +// }); +// }, +// ), +// ), +// ], +// ), +// ], +// ); +// } +// } + +class AutoGainSliders extends StatefulWidget { + const AutoGainSliders({super.key}); + + @override + State createState() => _AutoGainSlidersState(); +} + +class _AutoGainSlidersState extends State { + late final Recorder recorder; + late final AutoGain autoGain; + + @override + void initState() { + super.initState(); + recorder = Recorder.instance; + autoGain = recorder.filters.autoGainFilter; + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + '${autoGain.queryTargetRms}: ' + '${autoGain.targetRms.value.toStringAsFixed(2)}', + ), + Expanded( + child: Slider( + value: autoGain.targetRms.value, + min: autoGain.queryTargetRms.min, + max: autoGain.queryTargetRms.max, + onChanged: (v) { + setState(() { + autoGain.targetRms.value = v; + }); + }, + ), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + '${autoGain.queryAttackTime}: ' + '${autoGain.attackTime.value.toStringAsFixed(2)}', + ), + Expanded( + child: Slider( + value: autoGain.attackTime.value, + min: autoGain.queryAttackTime.min, + max: autoGain.queryAttackTime.max, + onChanged: (v) { + setState(() { + autoGain.attackTime.value = v; + }); + }, + ), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + '${autoGain.queryReleaseTime}: ' + '${autoGain.releaseTime.value.toStringAsFixed(2)}', + ), + Expanded( + child: Slider( + value: autoGain.releaseTime.value, + min: autoGain.queryReleaseTime.min, + max: autoGain.queryReleaseTime.max, + onChanged: (v) { + setState(() { + autoGain.releaseTime.value = v; + }); + }, + ), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + '${autoGain.queryGainSmoothing}: ' + '${autoGain.gainSmoothing.value.toStringAsFixed(2)}', + ), + Expanded( + child: Slider( + value: autoGain.gainSmoothing.value, + min: autoGain.queryGainSmoothing.min, + max: autoGain.queryGainSmoothing.max, + onChanged: (v) { + setState(() { + autoGain.gainSmoothing.value = v; + }); + }, + ), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + '${autoGain.queryMaxGain}: ' + '${autoGain.maxGain.value.toStringAsFixed(2)}', + ), + Expanded( + child: Slider( + value: autoGain.maxGain.value, + min: autoGain.queryMaxGain.min, + max: autoGain.queryMaxGain.max, + onChanged: (v) { + setState(() { + autoGain.maxGain.value = v; + }); + }, + ), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + '${autoGain.queryMinGain}: ' + '${autoGain.minGain.value.toStringAsFixed(2)}', + ), + Expanded( + child: Slider( + value: autoGain.minGain.value, + min: autoGain.queryMinGain.min, + max: autoGain.queryMinGain.max, + onChanged: (v) { + setState(() { + autoGain.minGain.value = v; + }); + }, + ), + ), + ], + ), + ], + ); + } +} diff --git a/example/lib/main.dart b/example/lib/main.dart index a4669e0..ecd66a8 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,10 +1,11 @@ import 'dart:io'; +import 'dart:developer' as dev; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; - import 'package:flutter_recorder/flutter_recorder.dart'; import 'package:flutter_recorder_example/ui/bars.dart'; +import 'package:logging/logging.dart'; import 'package:open_filex/open_filex.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; @@ -14,6 +15,23 @@ import 'package:permission_handler/permission_handler.dart'; /// The silence detection and the visualizer works when using [PCMFormat.f32]. /// Writing audio stream to file is not implemented on Web. void main() async { + // The `flutter_recorder` package logs everything + // (from severe warnings to fine debug messages) + // using the standard `package:logging`. + // You can listen to the logs as shown below. + Logger.root.level = kDebugMode ? Level.FINE : Level.INFO; + Logger.root.onRecord.listen((record) { + dev.log( + record.message, + time: record.time, + level: record.level.value, + name: record.loggerName, + zone: record.zone, + error: record.error, + stackTrace: record.stackTrace, + ); + }); + runApp( MaterialApp( home: Scaffold( @@ -38,7 +56,7 @@ class _MyAppState extends State { final format = PCMFormat.f32le; final sampleRate = 22050; final channels = RecorderChannels.mono; - final _recorder = Recorder.instance; + final recorder = Recorder.instance; String? filePath; var thresholdDb = -20.0; var silenceDuration = 2.0; @@ -59,7 +77,7 @@ class _MyAppState extends State { } /// Listen to audio data stream. The data is received in Uint8List. - _recorder.uint8ListStream.listen((data) { + recorder.uint8ListStream.listen((data) { /// Write the PCM data to file. It can then be imported with the correct /// parameters with for example Audacity. /// Not testing on Web platform. @@ -94,9 +112,9 @@ class _MyAppState extends State { child: const Text('listCaptureDevices'), ), OutlinedButton( - onPressed: () { + onPressed: () async { try { - _recorder.init( + await recorder.init( format: format, sampleRate: sampleRate, channels: channels, @@ -110,7 +128,7 @@ class _MyAppState extends State { OutlinedButton( onPressed: () { try { - _recorder.start(); + recorder.start(); } on Exception catch (e) { debugPrint('-------------- start() error: $e\n'); } @@ -119,7 +137,7 @@ class _MyAppState extends State { ), OutlinedButton( onPressed: () { - _recorder.deinit(); + recorder.deinit(); }, child: const Text('deinit'), ), @@ -141,9 +159,9 @@ class _MyAppState extends State { if (!kIsWeb) { final downloadsDir = await getDownloadsDirectory(); filePath = '${downloadsDir!.path}/flutter_recorder.wav'; - _recorder.startRecording(completeFilePath: filePath!); + recorder.startRecording(completeFilePath: filePath!); } else { - _recorder.startRecording(); + recorder.startRecording(); } } on Exception catch (e) { debugPrint('-------------- startRecording() $e\n'); @@ -153,19 +171,19 @@ class _MyAppState extends State { ), ElevatedButton( onPressed: () { - _recorder.setPauseRecording(pause: true); + recorder.setPauseRecording(pause: true); }, child: const Text('Pause recording'), ), ElevatedButton( onPressed: () { - _recorder.setPauseRecording(pause: false); + recorder.setPauseRecording(pause: false); }, child: const Text('UN-Pause recording'), ), ElevatedButton( onPressed: () { - _recorder.stopRecording(); + recorder.stopRecording(); if (!kIsWeb) { debugPrint('Audio recorded to "$filePath"'); showFileRecordedDialog(filePath!); @@ -185,7 +203,7 @@ class _MyAppState extends State { CircularProgressIndicator(), OutlinedButton( onPressed: () async { - _recorder.startStreamingData(); + recorder.startStreamingData(); if (!kIsWeb) { savingDir = await getDownloadsDirectory(); @@ -211,7 +229,7 @@ class _MyAppState extends State { ), OutlinedButton( onPressed: () { - _recorder.stopStreamingData(); + recorder.stopStreamingData(); }, child: const Text('stop stream'), ), @@ -227,7 +245,7 @@ class _MyAppState extends State { Column( children: [ StreamBuilder( - stream: _recorder.silenceChangedEvents, + stream: recorder.silenceChangedEvents, builder: (context, snapshot) { return ColoredBox( color: snapshot.hasData && snapshot.data!.isSilent @@ -238,7 +256,7 @@ class _MyAppState extends State { height: 50, child: Center( child: Text( - _recorder.getVolumeDb().toStringAsFixed(1)), + recorder.getVolumeDb().toStringAsFixed(1)), ), ), ); @@ -251,7 +269,7 @@ class _MyAppState extends State { children: [ OutlinedButton( onPressed: () { - _recorder.setSilenceDetection( + recorder.setSilenceDetection( enable: true, onSilenceChanged: (isSilent, decibel) { /// Here you can check if silence is changed. @@ -260,9 +278,9 @@ class _MyAppState extends State { // debugPrint('SILENCE CHANGED: $isSilent, $decibel'); }, ); - _recorder.setSilenceThresholdDb(-27); - _recorder.setSilenceDuration(0.5); - _recorder.setSecondsOfAudioToWriteBefore(0.0); + recorder.setSilenceThresholdDb(-27); + recorder.setSilenceDuration(0.5); + recorder.setSecondsOfAudioToWriteBefore(0.0); setState(() { thresholdDb = -27; silenceDuration = 0.5; @@ -274,12 +292,13 @@ class _MyAppState extends State { ), OutlinedButton( onPressed: () { - _recorder.setSilenceDetection(enable: false); + recorder.setSilenceDetection(enable: false); }, child: const Text('setSilenceDetection OFF'), ), ], ), + // Threshold dB slider Row( mainAxisSize: MainAxisSize.max, @@ -293,7 +312,7 @@ class _MyAppState extends State { max: 0, label: thresholdDb.toStringAsFixed(1), onChanged: (value) { - _recorder.setSilenceThresholdDb(value); + recorder.setSilenceThresholdDb(value); setState(() { thresholdDb = value; }); @@ -316,7 +335,7 @@ class _MyAppState extends State { max: 10, label: silenceDuration.toStringAsFixed(1), onChanged: (value) { - _recorder.setSilenceDuration(value); + recorder.setSilenceDuration(value); setState(() { silenceDuration = value; }); @@ -339,7 +358,7 @@ class _MyAppState extends State { max: 5, label: silenceDuration.toStringAsFixed(1), onChanged: (value) { - _recorder.setSecondsOfAudioToWriteBefore(value); + recorder.setSecondsOfAudioToWriteBefore(value); setState(() { secondsOfAudioToWriteBefore = value; }); @@ -390,7 +409,7 @@ class _MyAppState extends State { } Future showDeviceListDialog() async { - final devices = _recorder.listCaptureDevices(); + final devices = recorder.listCaptureDevices(); String devicesString = devices.asMap().entries.map((entry) { return '${entry.value.id} ${entry.value.isDefault ? 'DEFAULT' : ''} - ' ' ${entry.value.name}'; diff --git a/example/linux/flutter/generated_plugins.cmake b/example/linux/flutter/generated_plugins.cmake index ed75c38..c7af760 100644 --- a/example/linux/flutter/generated_plugins.cmake +++ b/example/linux/flutter/generated_plugins.cmake @@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_FFI_PLUGIN_LIST flutter_recorder + flutter_soloud ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/example/macos/Podfile b/example/macos/Podfile index c795730..b52666a 100644 --- a/example/macos/Podfile +++ b/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index 449033c..7ad0add 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -1,22 +1,35 @@ PODS: - flutter_recorder (0.0.1): - FlutterMacOS + - flutter_soloud (0.0.1): + - FlutterMacOS - FlutterMacOS (1.0.0) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS DEPENDENCIES: - flutter_recorder (from `Flutter/ephemeral/.symlinks/plugins/flutter_recorder/macos`) + - flutter_soloud (from `Flutter/ephemeral/.symlinks/plugins/flutter_soloud/macos`) - FlutterMacOS (from `Flutter/ephemeral`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) EXTERNAL SOURCES: flutter_recorder: :path: Flutter/ephemeral/.symlinks/plugins/flutter_recorder/macos + flutter_soloud: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_soloud/macos FlutterMacOS: :path: Flutter/ephemeral + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin SPEC CHECKSUMS: - flutter_recorder: 895009aae0b73e643ee1e9f0efa1ae2c69a9c111 + flutter_recorder: 22eb5e16dae4d05a71c6d119be8d68128b78f3aa + flutter_soloud: 401bea07fc43636ab5c6777f7adf691403d0ea48 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 -PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 +PODFILE CHECKSUM: 9ebaf0ce3d369aaa26a9ea0e159195ed94724cf3 COCOAPODS: 1.15.2 diff --git a/example/pubspec.lock b/example/pubspec.lock index d86cb4c..8ff513b 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" cupertino_icons: dependency: "direct main" description: @@ -84,7 +84,16 @@ packages: path: ".." relative: true source: path - version: "0.9.1" + version: "0.9.3" + flutter_soloud: + dependency: "direct main" + description: + path: "." + ref: main + resolved-ref: "5303435ce7ce5a3fdba6b564e62a81c953bd9e49" + url: "https://github.com/alnitak/flutter_soloud.git" + source: git + version: "2.1.8" flutter_test: dependency: "direct dev" description: flutter @@ -95,22 +104,38 @@ packages: description: flutter source: sdk version: "0.0.0" + http: + dependency: transitive + description: + name: http + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + url: "https://pub.dev" + source: hosted + version: "1.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.7" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: @@ -127,6 +152,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + logging: + dependency: "direct main" + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" matcher: dependency: transitive description: @@ -283,7 +316,7 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: @@ -296,10 +329,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" stream_channel: dependency: transitive description: @@ -312,10 +345,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" term_glyph: dependency: transitive description: @@ -328,10 +361,18 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "1.4.0" vector_math: dependency: transitive description: @@ -352,10 +393,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "14.3.0" web: dependency: transitive description: diff --git a/example/pubspec.yaml b/example/pubspec.yaml index d8426b9..1224e5b 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -13,7 +13,14 @@ dependencies: flutter_recorder: path: ../ + flutter_soloud: + # path: ../../flutter_soloud # for development + git: + url: https://github.com/alnitak/flutter_soloud.git + ref: main + cupertino_icons: ^1.0.8 + logging: ^1.3.0 open_filex: ^4.5.0 path_provider: ^2.1.5 permission_handler: ^11.3.1 diff --git a/example/web/index.html b/example/web/index.html index 1945db1..e348a65 100644 --- a/example/web/index.html +++ b/example/web/index.html @@ -34,6 +34,8 @@ + + diff --git a/example/windows/flutter/generated_plugins.cmake b/example/windows/flutter/generated_plugins.cmake index e1ad92b..73f8c86 100644 --- a/example/windows/flutter/generated_plugins.cmake +++ b/example/windows/flutter/generated_plugins.cmake @@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_FFI_PLUGIN_LIST flutter_recorder + flutter_soloud ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/init_recorder_module.sh b/init_recorder_module.sh new file mode 100644 index 0000000..17660d3 --- /dev/null +++ b/init_recorder_module.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -euo pipefail + +cd web +sh ./compile_init_recorder_module.sh diff --git a/ios/Classes/flutter_recorder.mm b/ios/Classes/flutter_recorder.mm index 755875b..0b2c48b 100644 --- a/ios/Classes/flutter_recorder.mm +++ b/ios/Classes/flutter_recorder.mm @@ -5,3 +5,6 @@ #include "../../src/analyzer.cpp" #include "../../src/capture.cpp" #include "../../src/fft/soloud_fft.cpp" +#include "../../src/filters/filters.cpp" +#include "../../src/filters/autogain.cpp" +#include "../../src/filters/echo_cancellation.cpp" diff --git a/ios/flutter_recorder.podspec b/ios/flutter_recorder.podspec index 7a6faea..e6ff0bd 100644 --- a/ios/flutter_recorder.podspec +++ b/ios/flutter_recorder.podspec @@ -23,6 +23,11 @@ A new Flutter FFI plugin project. s.platform = :ios, '12.0' # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', + "CLANG_CXX_LANGUAGE_STANDARD" => "c++17" + } s.swift_version = '5.0' + s.ios.framework = ['AudioToolbox', 'AVFoundation'] end diff --git a/lib/flutter_recorder.dart b/lib/flutter_recorder.dart index 8bbf087..ad911df 100644 --- a/lib/flutter_recorder.dart +++ b/lib/flutter_recorder.dart @@ -3,4 +3,7 @@ library flutter_recorder; export 'src/audio_data_container.dart'; export 'src/enums.dart' show PCMFormat, RecorderChannels; +export 'src/filters/autogain.dart'; +export 'src/filters/echo_cancellation.dart'; +export 'src/filters/filters.dart' show RecorderFilterType; export 'src/flutter_recorder.dart'; diff --git a/lib/src/bindings/flutter_recorder_bindings_generated.dart b/lib/src/bindings/flutter_recorder_bindings_generated.dart index 3c6ec45..282ca23 100644 --- a/lib/src/bindings/flutter_recorder_bindings_generated.dart +++ b/lib/src/bindings/flutter_recorder_bindings_generated.dart @@ -9,6 +9,7 @@ import 'dart:ffi' as ffi; import 'package:flutter_recorder/src/enums.dart'; +import 'package:flutter_recorder/src/filters/filters.dart'; /// Bindings for `src/flutter_recorder.h`. /// @@ -399,6 +400,104 @@ class FlutterRecorderBindings { 'setFftSmoothing'); late final _setFftSmoothing = _setFftSmoothingPtr.asFunction(); + + /// ////////////////////// + /// FILTERS + /// ////////////////////// + int isFilterActive( + RecorderFilterType filterType, + ) { + return _isFilterActive( + filterType.value, + ); + } + + late final _isFilterActivePtr = + _lookup>( + 'isFilterActive'); + late final _isFilterActive = + _isFilterActivePtr.asFunction(); + + CaptureErrors addFilter( + RecorderFilterType filterType, + ) { + return CaptureErrors.fromValue(_addFilter( + filterType.value, + )); + } + + late final _addFilterPtr = + _lookup>( + 'addFilter'); + late final _addFilter = _addFilterPtr.asFunction(); + + CaptureErrors removeFilter( + RecorderFilterType filterType, + ) { + return CaptureErrors.fromValue(_removeFilter( + filterType.value, + )); + } + + late final _removeFilterPtr = + _lookup>( + 'removeFilter'); + late final _removeFilter = _removeFilterPtr.asFunction(); + + void getFilterParamNames( + RecorderFilterType filterType, + ffi.Pointer> names, + ffi.Pointer paramsCount, + ) { + return _getFilterParamNames( + filterType.value, + names, + paramsCount, + ); + } + + late final _getFilterParamNamesPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.UnsignedInt, ffi.Pointer>, + ffi.Pointer)>>('getFilterParamNames'); + late final _getFilterParamNames = _getFilterParamNamesPtr.asFunction< + void Function( + int, ffi.Pointer>, ffi.Pointer)>(); + + void setFilterParams( + RecorderFilterType filterType, + int attributeId, + double value, + ) { + return _setFilterParams( + filterType.value, + attributeId, + value, + ); + } + + late final _setFilterParamsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.UnsignedInt, ffi.Int, ffi.Float)>>('setFilterParams'); + late final _setFilterParams = + _setFilterParamsPtr.asFunction(); + + double getFilterParams( + RecorderFilterType filterType, + int attributeId, + ) { + return _getFilterParams( + filterType.value, + attributeId, + ); + } + + late final _getFilterParamsPtr = + _lookup>( + 'getFilterParams'); + late final _getFilterParams = + _getFilterParamsPtr.asFunction(); } typedef dartSilenceChangedCallback_t diff --git a/lib/src/bindings/js_extension.dart b/lib/src/bindings/js_extension.dart index cacb3d6..0307f79 100644 --- a/lib/src/bindings/js_extension.dart +++ b/lib/src/bindings/js_extension.dart @@ -6,32 +6,32 @@ import 'package:web/web.dart' as web; // ////////////////////////// // common // ////////////////////////// -@JS('Module._malloc') +@JS('RecorderModule._malloc') external int wasmMalloc(int bytesCount); -@JS('Module._free') +@JS('RecorderModule._free') external void wasmFree(int ptrAddress); -@JS('Module.getValue') +@JS('RecorderModule.getValue') external int wasmGetI32Value(int ptrAddress, String type); -@JS('Module.getValue') +@JS('RecorderModule.getValue') external double wasmGetF32Value(int ptrAddress, String type); -@JS('Module.UTF8ToString') +@JS('RecorderModule.UTF8ToString') external String wasmUtf8ToString(int ptrAddress); -@JS('Module.setValue') +@JS('RecorderModule.setValue') external void wasmSetValue(int ptrAddress, int value, String type); -@JS('Module.cwrap') +@JS('RecorderModule.cwrap') external JSFunction wasmCwrap( JSString fName, JSString returnType, JSArray argTypes, ); -@JS('Module.ccall') +@JS('RecorderModule.ccall') external JSFunction wasmCccall( JSString fName, JSString returnType, @@ -39,37 +39,37 @@ external JSFunction wasmCccall( JSArray args, ); -@JS('Module._createWorkerInWasm') +@JS('RecorderModule._createWorkerInWasm') external void wasmCreateWorkerInWasm(); -@JS('Module._setDartEventCallback') +@JS('RecorderModule._setDartEventCallback') external void wasmSetDartEventCallback(int callbackPtr, int callbackPtr2); -@JS('Module._sendToWorker') +@JS('RecorderModule._sendToWorker') external void wasmSendToWorker(int message, int value); -@JS('Module.wasmWorker') +@JS('RecorderModule.wasmWorker') external web.Worker wasmWorker; // ////////////////////////// // bindings // ////////////////////////// -@JS('Module._setSilenceDetection') +@JS('RecorderModule._setSilenceDetection') external void wasmSetSilenceDetection(bool enable); -@JS('Module._setSilenceThresholdDb') +@JS('RecorderModule._setSilenceThresholdDb') external void wasmSetSilenceThresholdDb(double silenceThresholdDb); -@JS('Module._setSilenceDuration') +@JS('RecorderModule._setSilenceDuration') external void wasmSetSilenceDuration(double silenceDuration); -@JS('Module._setSecondsOfAudioToWriteBefore') +@JS('RecorderModule._setSecondsOfAudioToWriteBefore') external void wasmSetSecondsOfAudioToWriteBefore( double secondsOfAudioToWriteBefore, ); -@JS('Module._listCaptureDevices') +@JS('RecorderModule._listCaptureDevices') external void wasmListCaptureDevices( int namesPtr, int deviceIdPtr, @@ -77,7 +77,7 @@ external void wasmListCaptureDevices( int nDevicePtr, ); -@JS('Module._freeListCaptureDevices') +@JS('RecorderModule._freeListCaptureDevices') external void wasmFreeListCaptureDevices( int namesPtr, int deviceIdPtr, @@ -85,53 +85,79 @@ external void wasmFreeListCaptureDevices( int nDevicePtr, ); -@JS('Module._init') +@JS('RecorderModule._init') external int wasmInit(int deviceID, int format, int sampleRate, int channels); -@JS('Module._deinit') +@JS('RecorderModule._deinit') external void wasmDeinit(); -@JS('Module._isInited') +@JS('RecorderModule._isInited') external int wasmIsDeviceInitialized(); -@JS('Module._isDeviceStarted') +@JS('RecorderModule._isDeviceStarted') external int wasmIsDeviceStarted(); -@JS('Module._start') +@JS('RecorderModule._start') external int wasmStart(); -@JS('Module._stop') +@JS('RecorderModule._stop') external void wasmStop(); -@JS('Module._startStreamingData') +@JS('RecorderModule._startStreamingData') external void wasmStartStreamingData(); -@JS('Module._stopStreamingData') +@JS('RecorderModule._stopStreamingData') external void wasmStopStreamingData(); -@JS('Module._startRecording') +@JS('RecorderModule._startRecording') external int wasmStartRecording(int pathPtr); -@JS('Module._setPauseRecording') +@JS('RecorderModule._setPauseRecording') external void wasmSetPauseRecording(bool pause); -@JS('Module._stopRecording') +@JS('RecorderModule._stopRecording') external void wasmStopRecording(); -@JS('Module._setFftSmoothing') +@JS('RecorderModule._setFftSmoothing') external void wasmSetFftSmoothing(double smooth); -@JS('Module._getFft') +@JS('RecorderModule._getFft') external void wasmGetFft(int samplesPtr); -@JS('Module._getWave') +@JS('RecorderModule._getWave') external void wasmGetWave(int samplesPtr); -@JS('Module._getTexture') +@JS('RecorderModule._getTexture') external void wasmGetTexture(int samplesPtr); -@JS('Module._getTexture2D') +@JS('RecorderModule._getTexture2D') external void wasmGetTexture2D(int samplesPtr); -@JS('Module._getVolumeDb') +@JS('RecorderModule._getVolumeDb') external void wasmGetVolumeDb(int volumeDbPtr); + +@JS('RecorderModule._isFilterActive') +external int wasmIsFilterActive(int filterTypeId); + +@JS('RecorderModule._addFilter') +external int wasmAddFilter(int filterTypeId); + +@JS('RecorderModule._removeFilter') +external int wasmRemoveFilter(int filterTypeId); + +@JS('RecorderModule._getFilterParamNames') +external int wasmGetFilterParamNames( + int filterTypeId, + int namesPtr, + int paramsCountPtr, +); + +@JS('RecorderModule._setFilterParams') +external void wasmSetFilterParamValue( + int filterTypeId, + int attributeId, + double value, +); + +@JS('RecorderModule._getFilterParams') +external double wasmGetFilterParamValue(int filterTypeId, int attributeId); diff --git a/lib/src/bindings/recorder.dart b/lib/src/bindings/recorder.dart index 6674afc..d18528d 100644 --- a/lib/src/bindings/recorder.dart +++ b/lib/src/bindings/recorder.dart @@ -6,6 +6,7 @@ import 'dart:typed_data'; import 'package:flutter_recorder/src/audio_data_container.dart'; import 'package:flutter_recorder/src/enums.dart'; import 'package:flutter_recorder/src/exceptions/exceptions.dart'; +import 'package:flutter_recorder/src/filters/filters.dart'; import 'package:flutter_recorder/src/flutter_recorder.dart'; import 'package:meta/meta.dart'; @@ -43,7 +44,7 @@ abstract class RecorderImpl { /// Set Dart functions to call when an event occurs. @mustBeOverridden - void setDartEventCallbacks(); + Future setDartEventCallbacks(); /// Enable or disable silence detection. /// @@ -135,7 +136,7 @@ abstract class RecorderImpl { /// Start the device. /// - /// Throws [RecorderCaptureNotInitializedException]. + /// Throws [RecorderNotInitializedException]. /// Throws [RecorderFailedToStartDeviceException]. @mustBeOverridden void start(); @@ -154,7 +155,7 @@ abstract class RecorderImpl { /// Start recording. /// - /// Throws [RecorderCaptureNotInitializedException]. + /// Throws [RecorderNotInitializedException]. /// Throws [RecorderFailedToInitializeRecordingException]. @mustBeOverridden void startRecording(String path); @@ -181,19 +182,68 @@ abstract class RecorderImpl { void setFftSmoothing(double smooth); /// Return a 256 float array containing FFT data in the range [-1.0, 1.0] - /// not clamped.@mustBeOverridden + /// not clamped. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. + @mustBeOverridden Float32List getFft(); /// Return a 256 float array containing wave data in the range [-1.0, 1.0]. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. @mustBeOverridden Float32List getWave(); /// Get the audio data representing an array of 256 floats FFT data and /// 256 float of wave data. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. @mustBeOverridden Float32List getTexture2D(); /// Get the current volume in dB. Returns -100 if the capture is not inited. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. @mustBeOverridden double getVolumeDb(); + + // /////////////////////// + // FILTERS + // /////////////////////// + + /// Check if a filter is active. + /// Return -1 if the filter is not active or its index. + @mustBeOverridden + int isFilterActive(RecorderFilterType filterType); + + /// Add a filter. + /// + /// Throws [RecorderFilterAlreadyAddedException] if the filter has already + /// been added. + /// Throws [RecorderFilterNotFoundException] if the filter could not be found. + @mustBeOverridden + void addFilter(RecorderFilterType filterType); + + /// Remove a filter. + /// + /// Throws [RecorderFilterNotFoundException] if trying to a non active + /// filter. + @mustBeOverridden + CaptureErrors removeFilter(RecorderFilterType filterType); + + /// Get filter param names. + @mustBeOverridden + List getFilterParamNames(RecorderFilterType filterType); + + /// Set filter param value. + @mustBeOverridden + void setFilterParamValue( + RecorderFilterType filterType, + int attributeId, + double value, + ); + + /// Get filter param value. + @mustBeOverridden + double getFilterParamValue(RecorderFilterType filterType, int attributeId); } diff --git a/lib/src/bindings/recorder_io.dart b/lib/src/bindings/recorder_io.dart index 503903d..e30e79b 100644 --- a/lib/src/bindings/recorder_io.dart +++ b/lib/src/bindings/recorder_io.dart @@ -12,6 +12,7 @@ import 'package:flutter_recorder/src/bindings/flutter_recorder_bindings_generate import 'package:flutter_recorder/src/bindings/recorder.dart'; import 'package:flutter_recorder/src/enums.dart'; import 'package:flutter_recorder/src/exceptions/exceptions.dart'; +import 'package:flutter_recorder/src/filters/filters.dart'; import 'package:flutter_recorder/src/flutter_recorder.dart'; import 'package:meta/meta.dart'; @@ -70,8 +71,10 @@ class RecorderFfi extends RecorderImpl { ); } + ffi.NativeCallable? + nativeStreamDataCallable; @override - void setDartEventCallbacks() { + Future setDartEventCallbacks() async { // Create a NativeCallable for the Dart functions final nativeSilenceChangedCallable = ffi.NativeCallable.listener( @@ -309,4 +312,59 @@ class RecorderFfi extends RecorderImpl { calloc.free(volume); return v; } + + @override + int isFilterActive(RecorderFilterType filterType) { + return _bindings.isFilterActive(filterType); + } + + @override + void addFilter(RecorderFilterType filterType) { + final error = _bindings.addFilter(filterType); + if (error != CaptureErrors.captureNoError) { + throw RecorderCppException.fromRecorderError(error); + } + } + + @override + CaptureErrors removeFilter(RecorderFilterType filterType) { + final error = _bindings.removeFilter(filterType); + if (error != CaptureErrors.captureNoError) { + throw RecorderCppException.fromRecorderError(error); + } + return error; + } + + @override + List getFilterParamNames(RecorderFilterType filterType) { + final ffi.Pointer> names = + calloc(ffi.sizeOf>>() * 30); + final ffi.Pointer paramsCount = calloc(ffi.sizeOf()); + _bindings.getFilterParamNames(filterType, names, paramsCount); + final List ret = []; + for (var i = 0; i < paramsCount.value; i++) { + final s1 = (names + i).value; + final s = s1.cast().toDartString(); + ret.add(s); + _bindings.nativeFree(s1.cast()); + } + calloc + ..free(names) + ..free(paramsCount); + return ret; + } + + @override + void setFilterParamValue( + RecorderFilterType filterType, + int attributeId, + double value, + ) { + _bindings.setFilterParams(filterType, attributeId, value); + } + + @override + double getFilterParamValue(RecorderFilterType filterType, int attributeId) { + return _bindings.getFilterParams(filterType, attributeId); + } } diff --git a/lib/src/bindings/recorder_web.dart b/lib/src/bindings/recorder_web.dart index eb013ed..c71168c 100644 --- a/lib/src/bindings/recorder_web.dart +++ b/lib/src/bindings/recorder_web.dart @@ -9,6 +9,7 @@ import 'package:flutter_recorder/src/bindings/js_extension.dart'; import 'package:flutter_recorder/src/bindings/recorder.dart'; import 'package:flutter_recorder/src/enums.dart'; import 'package:flutter_recorder/src/exceptions/exceptions.dart'; +import 'package:flutter_recorder/src/filters/filters.dart'; import 'package:flutter_recorder/src/flutter_recorder.dart'; import 'package:flutter_recorder/src/worker/worker.dart'; import 'package:meta/meta.dart'; @@ -33,7 +34,7 @@ class RecorderWeb extends RecorderImpl { /// Create the worker in the WASM Module and listen for events coming /// from `web/worker.dart.js` @override - void setDartEventCallbacks() { + Future setDartEventCallbacks() async { // This calls the native WASM `createWorkerInWasm()` in `bindings.cpp`. // The latter creates a web Worker using `EM_ASM` inlining JS code to // create the worker in the WASM `Module`. @@ -41,7 +42,7 @@ class RecorderWeb extends RecorderImpl { wasmSetDartEventCallback(0, 0); - // Here the `Module.wasmModule` binded to a local [WorkerController] + // Here the `RecorderModule.wasmModule` binded to a local [WorkerController] // is used in the main isolate to listen for events coming from native. // From native the events can be sent from the main thread and even from // other threads like the audio thread. @@ -282,4 +283,63 @@ class RecorderWeb extends RecorderImpl { wasmFree(volumeDbPtr); return volumeDb; } + + @override + int isFilterActive(RecorderFilterType filterType) { + return wasmIsFilterActive(filterType.value); + } + + @override + void addFilter(RecorderFilterType filterType) { + final error = wasmAddFilter(filterType.value); + if (CaptureErrors.fromValue(error) != CaptureErrors.captureNoError) { + throw RecorderCppException.fromRecorderError( + CaptureErrors.fromValue(error), + ); + } + } + + @override + CaptureErrors removeFilter(RecorderFilterType filterType) { + final error = wasmRemoveFilter(filterType.value); + if (CaptureErrors.fromValue(error) != CaptureErrors.captureNoError) { + throw RecorderCppException.fromRecorderError( + CaptureErrors.fromValue(error), + ); + } + return CaptureErrors.fromValue(error); + } + + @override + List getFilterParamNames(RecorderFilterType filterType) { + final namesPtr = wasmMalloc(4); + final paramsCountPtr = wasmMalloc(4); + wasmGetFilterParamNames(filterType.value, namesPtr, paramsCountPtr); + final namesPtr2 = wasmGetI32Value(namesPtr, '*'); + final paramsCount = wasmGetI32Value(paramsCountPtr, '*'); + final names = []; + for (var i = 0; i < paramsCount; i++) { + final namePtr = wasmGetI32Value(namesPtr2 + i * 4, '*'); + final name = wasmUtf8ToString(namePtr); + names.add(name); + } + wasmFree(namesPtr); + wasmFree(paramsCountPtr); + return names; + } + + @override + void setFilterParamValue( + RecorderFilterType filterType, + int attributeId, + double value, + ) { + wasmSetFilterParamValue(filterType.value, attributeId, value); + } + + @override + double getFilterParamValue(RecorderFilterType filterType, int attributeId) { + final value = wasmGetFilterParamValue(filterType.value, attributeId); + return value; + } } diff --git a/lib/src/enums.dart b/lib/src/enums.dart index 9652dc4..9814f72 100644 --- a/lib/src/enums.dart +++ b/lib/src/enums.dart @@ -37,7 +37,16 @@ enum CaptureErrors { invalidArgs(5), /// Failed to write wav file. - failedToWriteWav(6); + failedToWriteWav(6), + + /// Filter not found + filterNotFound(7), + + /// The filter has already been added. + filterAlreadyAdded(8), + + /// Error getting filter parameter. + filterParameterGetError(9); /// Internal value final int value; @@ -53,6 +62,9 @@ enum CaptureErrors { 4 => failedToInitializeRecording, 5 => invalidArgs, 6 => failedToWriteWav, + 7 => filterNotFound, + 8 => filterAlreadyAdded, + 9 => filterParameterGetError, _ => throw ArgumentError('Unknown value for CaptureErrors: $value'), }; } diff --git a/lib/src/exceptions/exceptions.dart b/lib/src/exceptions/exceptions.dart index 6ae6031..81807a4 100644 --- a/lib/src/exceptions/exceptions.dart +++ b/lib/src/exceptions/exceptions.dart @@ -59,15 +59,21 @@ abstract class RecorderCppException extends RecorderException { case CaptureErrors.captureInitFailed: return const RecorderInitializeFailedException(); case CaptureErrors.captureNotInited: - return const RecorderCaptureNotInitializedException(); + return const RecorderNotInitializedException(); case CaptureErrors.failedToInitializeRecording: return const RecorderFailedToInitializeRecordingException(); case CaptureErrors.failedToStartDevice: throw const RecorderFailedToStartDeviceException(); - case CaptureErrors.failedToWriteWav: - return const RecorderFailedToWriteWavException(); case CaptureErrors.invalidArgs: return const RecorderInvalidArgumentsException(); + case CaptureErrors.failedToWriteWav: + return const RecorderFailedToWriteWavException(); + case CaptureErrors.filterNotFound: + return const RecorderFilterNotFoundException(); + case CaptureErrors.filterAlreadyAdded: + return const RecorderFilterAlreadyAddedException(); + case CaptureErrors.filterParameterGetError: + return const RecorderFilterParameterGetException(); } } } diff --git a/lib/src/exceptions/exceptions_from_cpp.dart b/lib/src/exceptions/exceptions_from_cpp.dart index 736554c..ea39c16 100644 --- a/lib/src/exceptions/exceptions_from_cpp.dart +++ b/lib/src/exceptions/exceptions_from_cpp.dart @@ -16,15 +16,26 @@ class RecorderInitializeFailedException extends RecorderCppException { /// An exception that is thrown when calling some methods while the recorder is /// not initialized. -class RecorderCaptureNotInitializedException extends RecorderCppException { - /// Creates a new [RecorderCaptureNotInitializedException]. - const RecorderCaptureNotInitializedException([super.message]); +class RecorderNotInitializedException extends RecorderCppException { + /// Creates a new [RecorderNotInitializedException]. + const RecorderNotInitializedException([super.message]); @override String get description => 'The recorder has not been initialized yet ' '(on the C++ side).'; } +/// An exception that is thrown when calling some methods while the recorder is +/// not started. +class RecorderCaptureNotStartededException extends RecorderCppException { + /// Creates a new [RecorderCaptureNotStartededException]. + const RecorderCaptureNotStartededException([super.message]); + + @override + String get description => 'The recorder has not been started yet ' + '(on the C++ side).'; +} + /// An exception that is thrown when recording failed to start. class RecorderFailedToInitializeRecordingException extends RecorderCppException { @@ -46,6 +57,16 @@ class RecorderFailedToStartDeviceException extends RecorderCppException { '(on the C++ side).'; } +/// An exception that is thrown when passing invalid arguments. +class RecorderInvalidArgumentsException extends RecorderCppException { + /// Creates a new [RecorderInvalidArgumentsException]. + const RecorderInvalidArgumentsException([super.message]); + + @override + String get description => 'Some invalid arguments were passed in ' + '(on the C++ side).'; +} + /// An exception that is thrown when the wav file could not be written. class RecorderFailedToWriteWavException extends RecorderCppException { /// Creates a new [RecorderFailedToWriteWavException]. @@ -56,12 +77,33 @@ class RecorderFailedToWriteWavException extends RecorderCppException { '(on the C++ side).'; } -/// An exception that is thrown when passing invalid arguments. -class RecorderInvalidArgumentsException extends RecorderCppException { - /// Creates a new [RecorderInvalidArgumentsException]. - const RecorderInvalidArgumentsException([super.message]); +/// An exception that is thrown when the filter could not be found. +class RecorderFilterNotFoundException extends RecorderCppException { + /// Creates a new [RecorderFilterNotFoundException]. + const RecorderFilterNotFoundException([super.message]); @override - String get description => 'Some invalid arguments were passed in ' + String get description => 'The filter could not be found ' '(on the C++ side).'; } + +/// An exception that is thrown when the filter has already been added. +class RecorderFilterAlreadyAddedException extends RecorderCppException { + /// Creates a new [RecorderFilterAlreadyAddedException]. + const RecorderFilterAlreadyAddedException([super.message]); + + @override + String get description => 'The filter has already been added ' + '(on the C++ side).'; +} + +/// An exception that is thrown when an error occurred while getting a +/// filter parameter. +class RecorderFilterParameterGetException extends RecorderCppException { + /// Creates a new [RecorderFilterParameterGetException]. + const RecorderFilterParameterGetException([super.message]); + + @override + String get description => 'An error occurred while getting a filter ' + 'parameter (on the C++ side).'; +} diff --git a/lib/src/filters/autogain.dart b/lib/src/filters/autogain.dart new file mode 100644 index 0000000..8a55dcd --- /dev/null +++ b/lib/src/filters/autogain.dart @@ -0,0 +1,86 @@ +// ignore_for_file: public_member_api_docs +import 'package:flutter_recorder/src/filters/filters.dart'; + +enum AutoGainEnum { + targetRms, + attackTime, + releaseTime, + gainSmoothing, + maxGain, + minGain; + + final List _defs = const [0.1, 0.1, 0.2, 0.05, 6, 0.2]; + final List _mins = const [0.01, 0.01, 0.01, 0.001, 1, 0.1]; + final List _maxs = const [1, 0.5, 0.5, 1, 6, 1]; + + double get min => _mins[index]; + double get max => _maxs[index]; + double get def => _defs[index]; + + @override + String toString() => switch (this) { + AutoGainEnum.targetRms => 'Target RMS', + AutoGainEnum.attackTime => 'Attack Time', + AutoGainEnum.releaseTime => 'Release Time', + AutoGainEnum.gainSmoothing => 'Gain Smoothing', + AutoGainEnum.maxGain => 'Max Gain', + AutoGainEnum.minGain => 'Min Gain', + }; +} + +abstract class _AutoGainInternal extends FilterBase { + const _AutoGainInternal() : super(RecorderFilterType.autogain); + + AutoGainEnum get queryTargetRms => AutoGainEnum.targetRms; + AutoGainEnum get queryAttackTime => AutoGainEnum.attackTime; + AutoGainEnum get queryReleaseTime => AutoGainEnum.releaseTime; + AutoGainEnum get queryGainSmoothing => AutoGainEnum.gainSmoothing; + AutoGainEnum get queryMaxGain => AutoGainEnum.maxGain; + AutoGainEnum get queryMinGain => AutoGainEnum.minGain; +} + +class AutoGain extends _AutoGainInternal { + const AutoGain() : super(); + + FilterParam get targetRms => FilterParam( + filterType, + AutoGainEnum.targetRms.index, + AutoGainEnum.targetRms.min, + AutoGainEnum.targetRms.max, + ); + + FilterParam get attackTime => FilterParam( + filterType, + AutoGainEnum.attackTime.index, + AutoGainEnum.attackTime.min, + AutoGainEnum.attackTime.max, + ); + + FilterParam get releaseTime => FilterParam( + filterType, + AutoGainEnum.releaseTime.index, + AutoGainEnum.releaseTime.min, + AutoGainEnum.releaseTime.max, + ); + + FilterParam get gainSmoothing => FilterParam( + filterType, + AutoGainEnum.gainSmoothing.index, + AutoGainEnum.gainSmoothing.min, + AutoGainEnum.gainSmoothing.max, + ); + + FilterParam get maxGain => FilterParam( + filterType, + AutoGainEnum.maxGain.index, + AutoGainEnum.maxGain.min, + AutoGainEnum.maxGain.max, + ); + + FilterParam get minGain => FilterParam( + filterType, + AutoGainEnum.minGain.index, + AutoGainEnum.minGain.min, + AutoGainEnum.minGain.max, + ); +} diff --git a/lib/src/filters/echo_cancellation.dart b/lib/src/filters/echo_cancellation.dart new file mode 100644 index 0000000..6248854 --- /dev/null +++ b/lib/src/filters/echo_cancellation.dart @@ -0,0 +1,48 @@ +// ignore_for_file: public_member_api_docs +import 'package:flutter_recorder/src/filters/filters.dart'; + +enum EchoCancellationEnum { + echoDelayMs, + echoAttenuation; + + final List _defs = const [50, 0.7]; + final List _mins = const [0, 0]; + final List _maxs = const [1000, 1]; + + double get min => _mins[index]; + double get max => _maxs[index]; + double get def => _defs[index]; + + @override + String toString() => switch (this) { + EchoCancellationEnum.echoDelayMs => 'Echo Delay (ms)', + EchoCancellationEnum.echoAttenuation => 'Echo Attenuation', + }; +} + +abstract class _EchoCancellationInternal extends FilterBase { + const _EchoCancellationInternal() + : super(RecorderFilterType.echoCancellation); + + EchoCancellationEnum get queryEchoDelayMs => EchoCancellationEnum.echoDelayMs; + EchoCancellationEnum get queryEchoAttenuation => + EchoCancellationEnum.echoAttenuation; +} + +class EchoCancellation extends _EchoCancellationInternal { + const EchoCancellation() : super(); + + FilterParam get echoDelayMs => FilterParam( + filterType, + EchoCancellationEnum.echoDelayMs.index, + EchoCancellationEnum.echoDelayMs.min, + EchoCancellationEnum.echoDelayMs.max, + ); + + FilterParam get echoAttenuation => FilterParam( + filterType, + EchoCancellationEnum.echoAttenuation.index, + EchoCancellationEnum.echoAttenuation.min, + EchoCancellationEnum.echoAttenuation.max, + ); +} diff --git a/lib/src/filters/filters.dart b/lib/src/filters/filters.dart new file mode 100644 index 0000000..6666d27 --- /dev/null +++ b/lib/src/filters/filters.dart @@ -0,0 +1,199 @@ +import 'package:flutter_recorder/src/exceptions/exceptions.dart'; +import 'package:flutter_recorder/src/filters/autogain.dart'; +import 'package:flutter_recorder/src/filters/echo_cancellation.dart'; +import 'package:flutter_recorder/src/flutter_recorder.dart'; +import 'package:meta/meta.dart'; + +/// This class serves as a base for all audio filter methods. +abstract class FilterBase { + /// The base class common to all filters. It can be used to [activate], + /// [deactivate] or query its status and its index in the filter list. + const FilterBase(RecorderFilterType ft) : filterType = ft; + + /// The type of this filter. It can be used to get the number of its + /// parameters or the name of the filter. + final RecorderFilterType filterType; + + /// Activate this filter. + void activate() => filterType.activate(); + + /// Deactivate this filter. + void deactivate() => filterType.deactivate(); + + /// Returns `-1` if the filter is not active. Otherwise, returns + /// the index of this filter. + int get index => filterType.isActive(); + + /// Checks whether this filter is active. + bool get isActive => index >= 0; +} + +/// Filters instance used in [Recorder.filters]. +@experimental +final class Filters { + /// The class to get access to all the filters available globally. + const Filters(); + + /// The `Auto Gain` filter. + /// + /// 1. **Target RMS Level (targetRMS)** + /// - Purpose: Sets the desired loudness level. + /// - Typical Value: + /// - For speech: 0.05 to 0.2 (RMS values in the -1.0 to +1.0 range). + /// - For music: 0.1 to 0.3. + /// - Adjust to: Match the desired loudness without introducing excessive + /// distortion or artifacts. + /// 2. **Attack Time (attackTime)** + /// - Purpose: Determines how quickly the gain increases when the signal + /// level is below the target. + /// - Typical Value: 0.005 to 0.05 seconds. + /// - Faster attack (e.g., 0.005) ensures quick response to sudden volume + /// drops, but may sound unnatural. + /// - Slower attack (e.g., 0.02-0.05) smoothens gain changes. + /// 3. **Release Time (releaseTime)** + /// - Purpose: Determines how quickly the gain decreases when the signal + /// level is above the target. + /// - Typical Value: 0.05 to 0.5 seconds. + /// - Short release (e.g., 0.05-0.1) responds quickly to loud bursts but + /// risks unnatural pumping effects. + /// - Long release (e.g., 0.2-0.5) creates smoother transitions for + /// dynamic content like music. + /// 4. **Gain Smoothing (gainSmoothing)** + /// - Purpose: Controls how quickly the gain changes overall, acting as + /// a dampening factor. + /// - Typical Value: 0.01 to 0.1. + /// - Lower values (e.g., 0.01) result in slow gain adjustments, reducing + /// artifacts but possibly underreacting to fast changes. + /// - Higher values (e.g., 0.05-0.1) provide faster responsiveness but + /// may sound less smooth. + /// 5. **Maximum Gain (maxGain)** + /// - Purpose: Caps the maximum amplification to avoid over-amplification + /// or distortion. + /// - Typical Value: 4.0 to 10.0. + /// - Adjust to: Match the dynamic range of the input; keep lower for + /// highly dynamic signals to prevent clipping. + /// 6. **Minimum Gain (minGain)** + /// - Purpose: Prevents excessive attenuation of the signal. + /// - Typical Value: 0.1 to 0.5. + /// - Adjust to: Avoid muting low signals unless silence is acceptable. + /// + /// #### Recommended Settings for Common Scenarios + /// + /// **Speech in a Noisy Environment** + /// - targetRMS = 0.1f + /// - attackTime = 0.02f + /// - releaseTime = 0.2f + /// - gainSmoothing = 0.01f + /// - maxGain = 6.0f + /// - minGain = 0.2f + /// + /// **Music Playback** + /// - targetRMS = 0.2f + /// - attackTime = 0.01f + /// - releaseTime = 0.3f + /// - gainSmoothing = 0.05f + /// - maxGain = 4.0f + /// - minGain = 0.1f + /// + /// **Podcast Recording** + /// - targetRMS = 0.15f + /// - attackTime = 0.02f + /// - releaseTime = 0.2f + /// - gainSmoothing = 0.03f + /// - maxGain = 5.0f + /// - minGain = 0.1f + AutoGain get autoGainFilter => const AutoGain(); + + /// The `Echo Cancellation` filter. + EchoCancellation get echoCancellationFilter => const EchoCancellation(); +} + +/// Common class for single and global filters. +class FilterParam { + /// Every filter parameter values can be set or get. + FilterParam( + this._type, + this._attributeId, + this._min, + this._max, + ); + + final RecorderFilterType _type; + final int _attributeId; + final double _min; + final double _max; + + /// Get the parameter value. + double get value => Recorder.instance.getFilterParamValue( + _type, + _attributeId, + ); + + /// Set the parameter value. + set value(double val) { + if (val < _min || val > _max) { + return; + } + Recorder.instance.setFilterParamValue( + _type, + _attributeId, + val, + ); + } +} + +/// The different types of audio filters. +enum RecorderFilterType { + /// Auto gain filter. + autogain(0), + + /// Echo cancellation filter. + echoCancellation(1); + + /// The number of parameter this filter owns. + final int value; + + // ignore: sort_constructors_first + const RecorderFilterType(this.value); + + /// Get the filter type from its value. + static RecorderFilterType fromValue(int value) => switch (value) { + 0 => autogain, + 1 => echoCancellation, + _ => throw ArgumentError('Unknown value for FilterType: $value'), + }; + + @override + String toString() => switch (this) { + RecorderFilterType.autogain => 'Auto Gain', + RecorderFilterType.echoCancellation => 'Echo Cancellation', + }; + + /// The number of parameter this filter owns. + int get numParameters => switch (this) { + RecorderFilterType.autogain => 6, + RecorderFilterType.echoCancellation => 2, + }; + + /// Activate this filter. + @internal + void activate() { + Recorder.instance.addFilter(this); + } + + /// Checks whether this filter is active. + /// + /// Returns `-1` if the filter is not active. Otherwise, returns + /// the index of the given filter. + @internal + int isActive() => Recorder.instance.isFilterActive(this); + + /// Deactivate this filter. + /// + /// Throws [RecorderFilterNotFoundException] if trying to remove a non active + /// filter. + @internal + void deactivate() { + Recorder.instance.removeFilter(this); + } +} diff --git a/lib/src/flutter_recorder.dart b/lib/src/flutter_recorder.dart index a4a4c36..4f9a3f3 100644 --- a/lib/src/flutter_recorder.dart +++ b/lib/src/flutter_recorder.dart @@ -1,13 +1,14 @@ // ignore_for_file: omit_local_variable_types // ignore_for_file: avoid_positional_boolean_parameters -import 'dart:typed_data'; - import 'package:flutter/foundation.dart'; import 'package:flutter_recorder/src/audio_data_container.dart'; import 'package:flutter_recorder/src/bindings/recorder.dart'; import 'package:flutter_recorder/src/enums.dart'; import 'package:flutter_recorder/src/exceptions/exceptions.dart'; +import 'package:flutter_recorder/src/filters/filters.dart'; +import 'package:logging/logging.dart'; +import 'package:meta/meta.dart'; /// Callback when silence state is changed. typedef SilenceCallback = void Function(bool isSilent, double decibel); @@ -21,6 +22,8 @@ interface class Recorder { /// instantiating new instances. Recorder._(); + static final Logger _log = Logger('flutter_recorder.Recorder'); + /// The singleton instance of [Recorder]. Only one Recorder instance /// can exist in C++ land, so – for consistency and to avoid confusion /// – only one instance can exist in Dart land. @@ -63,15 +66,65 @@ interface class Recorder { /// ``` static final Recorder instance = Recorder._(); + /// This can be used to access all the available filter functionalities. + /// + /// ```dart + /// final recorder = await Recorder.instance.init(); + /// ... + /// /// activate the filter. + ///recorder.filters.autoGainFilter.activate(); + /// + /// /// Later on, deactivate it. + /// recorder.filters.autoGainFilter.deactivate(); + /// ``` + /// + /// It's possible to get and set filter parameters: + /// ```dart + /// /// Set + /// recorder.filters.autoGainFilter.targetRms.value = 0.6; + /// /// Get + /// final targetRmsValue = recorder.filters.autoGainFilter.targetRms.value; + /// ``` + /// + /// It's possible to query filter parameters: + /// ```dart + /// final targetRms = recorder.filters.autoGainFilter.queryTargetRms; + /// ``` + /// + /// Now with `targetRms` you have access to: + /// - `toString()` gives the "human readable" parameter name. + /// - `min` which represent the minimum accepted value. + /// - `max` which represent the maximum accepted value. + /// - `def` which represent the default value. + @experimental + final filters = const Filters(); + final _recoreder = RecorderController(); + /// Whether the device is initialized. + bool _isInitialized = false; + + /// Whether the device is started. + bool _isStarted = false; + + /// Currently used recorder configuration. + PCMFormat _recorderFormat = PCMFormat.s16le; + /// Listening to silence state changes. Stream get silenceChangedEvents => _recoreder.impl.silenceChangedEvents; /// Listen to audio data. /// - /// The streaming must be enable calling [startStreamingData]. + /// The streaming must be enabled calling [startStreamingData]. + /// + /// **NOTE**: Audio data must be processed as it is received. To optimize + /// performance, the same memory is used to store data for all incoming + /// streams, meaning the data will be overwritten. Therefore, you must copy + /// the data if you need to populate a buffer. For example, when using + /// **RxDart.bufferTime**, it will fill a **List** of `AudioDataContainer` + /// objects, but when you attempt to read them, you will find that all + /// the items contain the same data. Stream get uint8ListStream => _recoreder.impl.uint8ListStream; @@ -149,34 +202,57 @@ interface class Recorder { /// /// Thows [RecorderInitializeFailedException] if something goes wrong, ie. no /// device found with [deviceID] id. - void init({ + Future init({ int deviceID = -1, PCMFormat format = PCMFormat.s16le, int sampleRate = 22050, RecorderChannels channels = RecorderChannels.mono, - }) { + }) async { + await _recoreder.impl.setDartEventCallbacks(); + + // Sets the [_isInitialized]. + // Usefult when the consumer use the hot restart and that flag + // has been reset. + isDeviceInitialized(); + + if (_isInitialized) { + _log.warning('init() called when the native device is already ' + 'initialized. This is expected after a hot restart but not ' + "otherwise. If you see this in production logs, there's probably " + 'a bug in your code. You may have neglected to deinit() Recorder ' + 'during the current lifetime of the app.'); + deinit(); + } + _recoreder.impl.init( deviceID: deviceID, format: format, sampleRate: sampleRate, channels: channels, ); - _recoreder.impl.setDartEventCallbacks(); + _recorderFormat = format; + _isInitialized = true; } /// Dispose capture device. void deinit() { + _isInitialized = false; + stop(); _recoreder.impl.deinit(); } /// Whether the device is initialized. bool isDeviceInitialized() { - return _recoreder.impl.isDeviceInitialized(); + // ignore: join_return_with_assignment + _isInitialized = _recoreder.impl.isDeviceInitialized(); + return _isInitialized; } /// Whether the device is started. bool isDeviceStarted() { - return _recoreder.impl.isDeviceStarted(); + // ignore: join_return_with_assignment + _isStarted = _recoreder.impl.isDeviceStarted(); + return _isStarted; } /// Start the device. @@ -184,24 +260,44 @@ interface class Recorder { /// WEB NOTE: it's preferable to call this method after the user accepted /// the recording permission. /// - /// Throws [RecorderCaptureNotInitializedException]. + /// Throws [RecorderNotInitializedException]. /// Throws [RecorderFailedToStartDeviceException]. void start() { + if (!_isInitialized) { + _log.warning(() => 'start(): recorder is not initialized.'); + throw const RecorderNotInitializedException(); + } _recoreder.impl.start(); + _isStarted = true; } /// Stop the device. void stop() { + if (!_isInitialized) { + _log.warning(() => 'stop(): recorder is not initialized.'); + return; + } + _isStarted = false; _recoreder.impl.stop(); } /// Start streaming data. + /// + /// Throws [RecorderNotInitializedException]. void startStreamingData() { + if (!_isInitialized) { + _log.warning(() => 'startStreamingData(): recorder is not initialized.'); + throw const RecorderNotInitializedException(); + } _recoreder.impl.startStreamingData(); } /// Stop streaming data. void stopStreamingData() { + if (!_isInitialized) { + _log.warning(() => 'stopStreamingData(): recorder is not initialized.'); + return; + } _recoreder.impl.stopStreamingData(); } @@ -212,19 +308,34 @@ interface class Recorder { /// NOTE: when running on the Web, [completeFilePath] is ignored and /// just stopping the recording the browser will ask to save the file. /// - /// Throws [RecorderCaptureNotInitializedException]. + /// Throws [RecorderNotInitializedException]. + /// Throws [RecorderCaptureNotStartededException]. /// Throws [RecorderFailedToInitializeRecordingException]. void startRecording({String completeFilePath = ''}) { + assert( + !kIsWeb && completeFilePath.isNotEmpty, + 'completeFilePath is required ' + 'on all platforms but on the Web.'); + if (!_isInitialized) { + _log.warning(() => 'startRecording(): recorder is not initialized.'); + throw const RecorderNotInitializedException(); + } + if (!_isStarted) { + _log.warning(() => 'startRecording(): recorder is not started.'); + throw const RecorderCaptureNotStartededException(); + } _recoreder.impl.startRecording(completeFilePath); } /// Pause recording. void setPauseRecording({required bool pause}) { + if (!_isStarted) return; _recoreder.impl.setPauseRecording(pause: pause); } /// Stop recording. void stopRecording() { + if (!_isStarted) return; _recoreder.impl.stopRecording(); } @@ -244,25 +355,135 @@ interface class Recorder { /// Return a 256 float array containing FFT data in the range [-1.0, 1.0] /// not clamped. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. Float32List getFft() { + if (!_isInitialized) { + _log.warning(() => 'getFft: recorder is not initialized.'); + return Float32List(256); + } + if (!_isStarted) { + _log.warning(() => 'getFft: recorder is not started.'); + return Float32List(256); + } + if (_recorderFormat != PCMFormat.f32le) { + _log.warning( + () => 'getFft: FFT data can be get only using f32le format.', + ); + return Float32List(256); + } return _recoreder.impl.getFft(); } /// Return a 256 float array containing wave data in the range [-1.0, 1.0] /// not clamped. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. Float32List getWave() { + if (!_isInitialized) { + _log.warning(() => 'getWave: recorder is not initialized.'); + return Float32List(256); + } + if (!_isStarted) { + _log.warning(() => 'getWave: recorder is not started.'); + return Float32List(256); + } + if (_recorderFormat != PCMFormat.f32le) { + _log.warning( + () => 'getWave: wave data can be get only using f32le format.', + ); + return Float32List(256); + } return _recoreder.impl.getWave(); } /// Get the audio data representing an array of 256 floats FFT data and /// 256 float of wave data. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. Float32List getTexture2D() { + if (!_isInitialized) { + _log.warning(() => 'getTexture2D: recorder is not initialized.'); + return Float32List(256); + } + if (!_isStarted) { + _log.warning(() => 'getTexture2D: recorder is not started.'); + return Float32List(256); + } + if (_recorderFormat != PCMFormat.f32le) { + _log.warning( + () => 'getTexture2D: texture can be get only using f32le format.', + ); + return Float32List(256); + } return _recoreder.impl.getTexture2D(); } /// Get the current volume in dB. Returns -100 if the capture is not inited. /// 0 is the max volume the capture device can handle. + /// + /// **NOTE**: use this only with format [PCMFormat.f32le]. double getVolumeDb() { + if (!_isInitialized) { + _log.warning(() => 'getVolumeDb: recorder is not initialized.'); + return -100; + } + if (!_isStarted) { + _log.warning(() => 'getVolumeDb: recorder is not started.'); + return -100; + } + if (_recorderFormat != PCMFormat.f32le) { + _log.warning( + () => 'getVolumeDb: volume can be get only using f32le format.', + ); + return -100; + } return _recoreder.impl.getVolumeDb(); } + + // /////////////////////// + // FILTERS + // /////////////////////// + + /// Check if a filter is active. + /// Return -1 if the filter is not active or its index. + int isFilterActive(RecorderFilterType filterType) { + return _recoreder.impl.isFilterActive(filterType); + } + + /// Add a filter. + /// + /// Throws [RecorderFilterAlreadyAddedException] if the filter has already + /// been added. + /// Throws [RecorderFilterNotFoundException] if the filter could not be found. + void addFilter(RecorderFilterType filterType) { + _recoreder.impl.addFilter(filterType); + } + + /// Remove a filter. + /// + /// Throws [RecorderFilterNotFoundException] if trying to a non active + /// filter. + CaptureErrors removeFilter(RecorderFilterType filterType) { + return _recoreder.impl.removeFilter(filterType); + } + + /// Get filter param names. + List getFilterParamNames(RecorderFilterType filterType) { + return _recoreder.impl.getFilterParamNames(filterType); + } + + /// Set filter param value. + void setFilterParamValue( + RecorderFilterType filterType, + int attributeId, + double value, + ) { + _recoreder.impl.setFilterParamValue(filterType, attributeId, value); + } + + /// Get filter param value. + double getFilterParamValue(RecorderFilterType filterType, int attributeId) { + return _recoreder.impl.getFilterParamValue(filterType, attributeId); + } } diff --git a/lib/src/worker/worker.dart b/lib/src/worker/worker.dart index 21c95ef..289b35f 100644 --- a/lib/src/worker/worker.dart +++ b/lib/src/worker/worker.dart @@ -36,7 +36,7 @@ class WorkerController { }).toJS; } - /// Not used with `Module.wasmWorker`. + /// Not used with `RecorderModule.wasmWorker`. void sendMessage(dynamic message) { switch (message) { case Map(): diff --git a/macos/Classes/flutter_recorder.mm b/macos/Classes/flutter_recorder.mm index 755875b..0b2c48b 100644 --- a/macos/Classes/flutter_recorder.mm +++ b/macos/Classes/flutter_recorder.mm @@ -5,3 +5,6 @@ #include "../../src/analyzer.cpp" #include "../../src/capture.cpp" #include "../../src/fft/soloud_fft.cpp" +#include "../../src/filters/filters.cpp" +#include "../../src/filters/autogain.cpp" +#include "../../src/filters/echo_cancellation.cpp" diff --git a/macos/flutter_recorder.podspec b/macos/flutter_recorder.podspec index bc5d37d..1a9177f 100644 --- a/macos/flutter_recorder.podspec +++ b/macos/flutter_recorder.podspec @@ -22,6 +22,10 @@ A new Flutter FFI plugin project. s.dependency 'FlutterMacOS' s.platform = :osx, '10.11' - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + "CLANG_CXX_LANGUAGE_STANDARD" => "c++17" + } s.swift_version = '5.0' + s.framework = ['AudioToolbox', 'AVFoundation'] end diff --git a/pubspec.yaml b/pubspec.yaml index 8da16f1..038091a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: >- A low-level audio recorder plugin which uses miniaudio as backend. Detect silence and save to WAV audio file. Audio wave, FFT and volume level can be get in real-time. -version: 0.9.2 +version: 0.9.3 issue_tracker: https://github.com/alnitak/flutter_recorder/issues homepage: https://github.com/alnitak/flutter_recorder maintainer: Marco Bavagnoli (@lildeimos) @@ -31,6 +31,7 @@ dependencies: ffi: ^2.1.3 flutter: sdk: flutter + logging: ^1.3.0 meta: ^1.12.0 plugin_platform_interface: ^2.0.2 web: ^1.1.0 @@ -64,5 +65,6 @@ flutter: # https://github.com/flutter/flutter/issues/8230 to be addressed. # to make a conditional build. - web/worker.dart.js + - web/init_recorder_module.dart.js - web/libflutter_recorder_plugin.js - web/libflutter_recorder_plugin.wasm diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 46dcdfd..9f63b5b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,6 +4,8 @@ cmake_minimum_required(VERSION 3.10) project(flutter_recorder_library VERSION 0.0.1 LANGUAGES CXX) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/fft) @@ -13,6 +15,9 @@ add_library(flutter_recorder SHARED "analyzer.cpp" "capture.cpp" "fft/soloud_fft.cpp" + "filters/filters.cpp" + "filters/autogain.cpp" + "filters/echo_cancellation.cpp" ) set_target_properties(flutter_recorder PROPERTIES diff --git a/src/capture.cpp b/src/capture.cpp index 486a42d..ce0f0c4 100644 --- a/src/capture.cpp +++ b/src/capture.cpp @@ -13,12 +13,14 @@ #define CLOCK_REALTIME 0 // struct timespec { long long tv_sec; long tv_nsec; }; //header part // Windows is not POSIX compliant. Implement this. -int clock_gettime(int, struct timespec *spec) //C-file part -{ __int64 wintime; GetSystemTimeAsFileTime((FILETIME*)&wintime); - wintime -=116444736000000000i64; //1jan1601 to 1jan1970 - spec->tv_sec =wintime / 10000000i64; //seconds - spec->tv_nsec =wintime % 10000000i64 *100; //nano-seconds - return 0; +int clock_gettime(int, struct timespec *spec) // C-file part +{ + __int64 wintime; + GetSystemTimeAsFileTime((FILETIME *)&wintime); + wintime -= 116444736000000000i64; // 1jan1601 to 1jan1970 + spec->tv_sec = wintime / 10000000i64; // seconds + spec->tv_nsec = wintime % 10000000i64 * 100; // nano-seconds + return 0; } #endif @@ -48,7 +50,7 @@ double getElapsed(struct timespec since) #define BUFFER_SIZE 1024 // Buffer length #define MOVING_AVERAGE_SIZE 4 // Moving average window size float capturedBuffer[BUFFER_SIZE]; -std::atomic is_silent{true}; // Initial state +std::atomic is_silent{true}; // Initial state bool delayed_silence_started = false; // Whether the silence is delayed std::atomic energy_db{-100.0f}; // Current energy @@ -164,11 +166,24 @@ void data_callback(ma_device *pDevice, void *pOutput, const void *pInput, ma_uin { // Process the captured audio data as needed. float *captured = (float *)(pInput); // Assuming float format + Capture *userData = (Capture *)pDevice->pUserData; + + // Apply filters + if (userData->mFilters->filters.size() > 0) + { + for (auto &filter : userData->mFilters->filters) + { + filter->filter->process( + captured, + frameCount, + userData->deviceConfig.capture.channels, + userData->deviceConfig.capture.format); + } + } + // Do something with the captured audio data... memcpy(capturedBuffer, captured, sizeof(float) * BUFFER_SIZE); - Capture *userData = (Capture *)pDevice->pUserData; - if (userData->deviceConfig.capture.format == ma_format_f32) calculateEnergy(captured, frameCount); @@ -178,9 +193,8 @@ void data_callback(ma_device *pDevice, void *pOutput, const void *pInput, ma_uin if (nativeStreamDataCallback != nullptr) { nativeStreamDataCallback( - (unsigned char*)captured, - frameCount * userData->bytesPerSample * userData->deviceConfig.capture.channels - ); + (unsigned char *)captured, + frameCount * userData->bytesPerSample * userData->deviceConfig.capture.channels); } } @@ -190,7 +204,8 @@ void data_callback(ma_device *pDevice, void *pOutput, const void *pInput, ma_uin detectSilence(userData); // Copy current buffer to circularBuffer - if (delayed_silence_started && userData->isRecording && userData->secondsOfAudioToWriteBefore > 0) { + if (delayed_silence_started && userData->isRecording && userData->secondsOfAudioToWriteBefore > 0) + { std::vector values(captured, captured + frameCount); circularBuffer.get()->push(values); } @@ -223,7 +238,7 @@ Capture::Capture() : isDetectingSilence(false), mInited(false) { memset(waveData, 0, sizeof(float) * 256); -}; +} Capture::~Capture() { @@ -271,13 +286,12 @@ std::vector Capture::listCaptureDevices() } CaptureErrors Capture::init( + Filters *filters, int deviceID, PCMFormat pcmFormat, unsigned int sampleRate, unsigned int channels) { - if (mInited) - return captureInitFailed; deviceConfig = ma_device_config_init(ma_device_type_capture); deviceConfig.periodSizeInFrames = BUFFER_SIZE; if (deviceID != -1) @@ -326,6 +340,7 @@ CaptureErrors Capture::init( return captureInitFailed; } mInited = true; + mFilters = filters; return captureNoError; } diff --git a/src/capture.h b/src/capture.h index 3f72193..aab55ef 100644 --- a/src/capture.h +++ b/src/capture.h @@ -8,6 +8,7 @@ #include #include +#include "filters/filters.h" struct CaptureDevice { @@ -29,12 +30,14 @@ class Capture /// @brief initialize the capture with a [deviceID]. A list of devices /// can be acquired with [listCaptureDevices]. /// If [deviceID] is -1, the default will be used + /// @param filters the filters /// @param deviceID the device ID chosen to be initialized /// @param pcmFormat the PCM format /// @param sampleRate the sample rate /// @param channels the number of channels /// @return `captureNoError` if no error or else `captureInitFailed` CaptureErrors init( + Filters *filters, int deviceID, PCMFormat pcmFormat, unsigned int sampleRate, @@ -99,6 +102,7 @@ class Capture /// the number of bytes per sample int bytesPerSample; + Filters *mFilters; private: ma_context context; ma_device_info *pPlaybackInfos; @@ -108,9 +112,9 @@ class Capture ma_result result; ma_device device; + /// true when the capture device is initialized. bool mInited; - }; #endif // CAPTURE_H \ No newline at end of file diff --git a/src/enums.h b/src/enums.h index 02d4158..9c3075e 100644 --- a/src/enums.h +++ b/src/enums.h @@ -5,20 +5,25 @@ typedef enum CaptureErrors { /// No error - captureNoError, + captureNoError = 0, /// The capture device has failed to initialize. - captureInitFailed, + captureInitFailed = 1, /// The capture device has not yet been initialized. - captureNotInited, + captureNotInited = 2, /// Failed to start the device. - failedToStartDevice, + failedToStartDevice = 3, /// Failed to initialize wav recording. - failedToInitializeRecording, + failedToInitializeRecording = 4, /// Invalid arguments while initializing wav recording. - invalidArgs, + invalidArgs = 5, /// Failed to write wav file. - failedToWriteWav - + failedToWriteWav = 6, + /// Filter not found + filterNotFound = 7, + /// The filter has already been added. + filterAlreadyAdded = 8, + /// Error getting filter parameter. + filterParameterGetError = 9 } CaptureErrorsInternal_t; typedef enum PCMFormat @@ -30,4 +35,10 @@ typedef enum PCMFormat pcm_f32 } PCMFormatInternal_t; +typedef enum FilterType +{ + autogain, + echoCancellation +} FilterType_t; + #endif // ENUMS_H \ No newline at end of file diff --git a/src/filters/autogain.cpp b/src/filters/autogain.cpp new file mode 100644 index 0000000..f3c86a6 --- /dev/null +++ b/src/filters/autogain.cpp @@ -0,0 +1,262 @@ +#include "autogain.h" + +#include +#include +#include +#include + +AutoGain::AutoGain(unsigned int sampleRate) + : mSampleRate(sampleRate), mCurrentGain(1.0f), + mParams{ // def min max + {TargetRMS, {0.1f, 0.01f, 1.f}}, + {AttackTime, {0.1f, 0.01f, 0.5f}}, + {ReleaseTime, {0.2f, 0.01f, 0.5f}}, + {GainSmoothing, {0.05f, 0.001f, 1.f}}, + {MaxGain, {6.0f, 1.0f, 6.0f}}, + {MinGain, {0.2f, 0.1f, 1.f}} + } +{ + mValues.resize(ParamCount); + // Initialize values with defaults + for (const auto &[param, range] : mParams) + { + mValues[param] = range.defaultVal; + } + mSmoothedRMS = mValues[TargetRMS]; // Initialize with Target RMS +} + +// Override parameter management methods +int AutoGain::getParamCount() const +{ + return ParamCount; +} + +float AutoGain::getParamMax(int param) const +{ + validateParam(param); + return mParams.at(static_cast(param)).maxVal; +} + +float AutoGain::getParamMin(int param) const +{ + validateParam(param); + return mParams.at(static_cast(param)).minVal; +} + +float AutoGain::getParamDef(int param) const +{ + validateParam(param); + return mParams.at(static_cast(param)).defaultVal; +} + +std::string AutoGain::getParamName(int param) const +{ + validateParam(param); + switch (static_cast(param)) + { + case TargetRMS: + return "Target RMS"; + case AttackTime: + return "Attack Time"; + case ReleaseTime: + return "Release Time"; + case GainSmoothing: + return "Gain Smoothing"; + case MaxGain: + return "Max Gain"; + case MinGain: + return "Min Gain"; + default: + return "Unknown"; + } +} + +void AutoGain::setParamValue(int param, float value) +{ + validateParam(param); + const auto &range = mParams.at(static_cast(param)); + if (value < range.minVal || value > range.maxVal) + { + // Parameter value out of range + return; + } + mValues[param] = value; +} + +float AutoGain::getParamValue(int param) const +{ + validateParam(param); + return mValues[param]; +} + +void AutoGain::process(void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) +{ + // Calculate the current frame's RMS + float currentRMS = calculateRMS(pInput, frameCount, channels, format); + + // Smooth RMS over time using exponential smoothing + mSmoothedRMS += (currentRMS - mSmoothedRMS) * rmsSmoothingFactor(); + + // Calculate the target gain based on smoothed RMS + float targetGain = getParamValue(TargetRMS) / (mSmoothedRMS + 1e-6f); + targetGain = std::min(targetGain, getParamValue(MaxGain)); + targetGain = std::clamp(targetGain, getParamValue(MinGain), getParamValue(MaxGain)); + // if (mSmoothedRMS < 0.01f) { + // targetGain = getParamValue(MaxGain); // Boost gain to reach MinRMS. + // } else if (mSmoothedRMS > .1f) { + // targetGain = getParamValue(MinGain); // Lower gain to stay below MaxRMS. + // } else { + // targetGain = getParamValue(TargetRMS) / mSmoothedRMS; + // } + + // Smoothly adjust gain + float smoothing = targetGain > mCurrentGain ? getParamValue(AttackTime) : getParamValue(ReleaseTime); + mCurrentGain += (targetGain - mCurrentGain) * (1.0f - std::exp(-smoothing * getParamValue(GainSmoothing))); + mCurrentGain += (targetGain - mCurrentGain) * getParamValue(GainSmoothing); + // float delta = targetGain - mCurrentGain; + // if (std::abs(delta) > 0.001f) { // Adjust threshold as needed + // mCurrentGain += delta * getParamValue(GainSmoothing); + // } + + // printf("currentRMS: %f smoothedRMS: %f targetGain: %f currentGain: %f\n", + // currentRMS, mSmoothedRMS, targetGain, mCurrentGain); + + // Apply the gain to the input buffer + applyGain((void *)pInput, frameCount, channels, format); +} + +// Calculate RMS for the current frame +float AutoGain::calculateRMS(const void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) +{ + double rmsSum = 0.0; + ma_uint32 sampleCount = frameCount * channels; + + switch (format) + { + case ma_format_u8: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + float sample = (static_cast(pInput)[i] - 128) / 128.0f; + rmsSum += sample * sample; + } + break; + case ma_format_s16: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + float sample = static_cast(pInput)[i] / 32768.0f; + rmsSum += sample * sample; + } + break; + case ma_format_s24: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + int32_t sample = (static_cast(pInput)[i * 3] << 16) | + (static_cast(pInput)[i * 3 + 1] << 8) | + static_cast(pInput)[i * 3 + 2]; + sample = sample << 8 >> 8; // Sign extend + rmsSum += (sample / 8388608.0f) * (sample / 8388608.0f); + } + break; + case ma_format_s32: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + float sample = static_cast(pInput)[i] / 2147483648.0f; + rmsSum += sample * sample; + } + break; + case ma_format_f32: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + float sample = static_cast(pInput)[i]; + rmsSum += sample * sample; + } + break; + default: + return 0.0f; // Unknown format + } + + return std::sqrt(rmsSum / sampleCount); +} + +// Exponential smoothing factor for RMS calculation +float AutoGain::rmsSmoothingFactor() const +{ + float windowSizeSeconds = 0.5f; // Adjust smoothing window as needed + return 1.0f - std::exp(-1.0f / (windowSizeSeconds * mSampleRate)); +} + +// Apply gain to the audio data +void AutoGain::applyGain(void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) +{ + ma_uint32 sampleCount = frameCount * channels; + + switch (format) + { + case ma_format_u8: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + float sample = (static_cast(pInput)[i] - 128) / 128.0f * mCurrentGain; + sample = std::clamp(sample, -1.0f, 1.0f); + static_cast(pInput)[i] = static_cast((sample * 128.0f) + 128); + } + break; + case ma_format_s16: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + float sample = static_cast(pInput)[i] / 32768.0f * mCurrentGain; + sample = std::clamp(sample, -1.0f, 1.0f); + static_cast(pInput)[i] = static_cast(sample * 32768.0f); + } + break; + case ma_format_s24: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + // Read the 24-bit signed sample (3 bytes per sample) + uint8_t *samplePtr = static_cast(pInput) + i * 3; + int32_t sample = (samplePtr[0] << 8) | (samplePtr[1] << 16) | (samplePtr[2] << 24); // Reassemble to 32-bit signed + sample >>= 8; // Shift to make it a signed 24-bit value + + // Scale and apply gain + float normalizedSample = sample / 8388608.0f; // Scale to -1.0 to +1.0 range + normalizedSample *= mCurrentGain; + normalizedSample = std::clamp(normalizedSample, -1.0f, 1.0f); + + // Convert back to signed 24-bit + int32_t processedSample = static_cast(normalizedSample * 8388608.0f); + processedSample = std::clamp(processedSample, -8388608, 8388607); + + // Write back the processed sample into 3 bytes + samplePtr[0] = (processedSample & 0xFF0000) >> 16; + samplePtr[1] = (processedSample & 0x00FF00) >> 8; + samplePtr[2] = (processedSample & 0x0000FF); + } + break; + case ma_format_s32: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + float sample = static_cast(pInput)[i] / 2147483648.0f * mCurrentGain; + sample = std::clamp(sample, -1.0f, 1.0f); + static_cast(pInput)[i] = static_cast(sample * 2147483648.0f); + } + break; + case ma_format_f32: + for (ma_uint32 i = 0; i < sampleCount; ++i) + { + static_cast(pInput)[i] *= mCurrentGain; + } + break; + case ma_format_unknown: + break; + case ma_format_count: + break; + } +} + +void AutoGain::validateParam(int param) const +{ + if (param < 0 || param >= ParamCount) + { + // Invalid parameter index + return; + } +} diff --git a/src/filters/autogain.h b/src/filters/autogain.h new file mode 100644 index 0000000..b7e8a42 --- /dev/null +++ b/src/filters/autogain.h @@ -0,0 +1,123 @@ +#ifndef AUTO_GAIN_H +#define AUTO_GAIN_H + +#include "../miniaudio.h" +#include "generic_filter.h" + +#include +#include + +// 1. **Target RMS Level (g_targetRMS)** +// - Purpose: Sets the desired loudness level. +// - Typical Value: +// - For speech: 0.05 to 0.2 (RMS values in the -1.0 to +1.0 range). +// - For music: 0.1 to 0.3. +// - Adjust to: Match the desired loudness without introducing excessive distortion or artifacts. +// 2. **Attack Time (g_attackTime)** +// - Purpose: Determines how quickly the gain increases when the signal level is below the target. +// - Typical Value: 0.005 to 0.05 seconds. +// - Faster attack (e.g., 0.005) ensures quick response to sudden volume drops, but may sound unnatural. +// - Slower attack (e.g., 0.02-0.05) smoothens gain changes. +// 3. **Release Time (g_releaseTime)** +// - Purpose: Determines how quickly the gain decreases when the signal level is above the target. +// - Typical Value: 0.05 to 0.5 seconds. +// - Short release (e.g., 0.05-0.1) responds quickly to loud bursts but risks unnatural pumping effects. +// - Long release (e.g., 0.2-0.5) creates smoother transitions for dynamic content like music. +// 4. **Gain Smoothing (g_gainSmoothing)** +// - Purpose: Controls how quickly the gain changes overall, acting as a dampening factor. +// - Typical Value: 0.01 to 0.1. +// - Lower values (e.g., 0.01) result in slow gain adjustments, reducing artifacts but possibly underreacting to fast changes. +// - Higher values (e.g., 0.05-0.1) provide faster responsiveness but may sound less smooth. +// 5. **Maximum Gain (g_maxGain)** +// - Purpose: Caps the maximum amplification to avoid over-amplification or distortion. +// - Typical Value: 4.0 to 10.0. +// - Adjust to: Match the dynamic range of the input; keep lower for highly dynamic signals to prevent clipping. +// 6. **Minimum Gain (g_minGain)** +// - Purpose: Prevents excessive attenuation of the signal. +// - Typical Value: 0.1 to 0.5. +// - Adjust to: Avoid muting low signals unless silence is acceptable. + +// #### Recommended Settings for Common Scenarios +// **Speech in a Noisy Environment** +// - targetRMS = 0.1f +// - attackTime = 0.02f +// - releaseTime = 0.2f +// - gainSmoothing = 0.01f +// - maxGain = 6.0f +// - minGain = 0.2f +// **Music Playback** +// - targetRMS = 0.2f +// - attackTime = 0.01f +// - releaseTime = 0.3f +// - gainSmoothing = 0.05f +// - maxGain = 4.0f +// - minGain = 0.1f +// **Podcast Recording** +// - targetRMS = 0.15f +// - attackTime = 0.02f +// - releaseTime = 0.2f +// - gainSmoothing = 0.03f +// - maxGain = 5.0f +// - minGain = 0.1f + +class AutoGain : public GenericFilter +{ +public: + // Enum for filter parameters + enum Params + { + TargetRMS, // Target RMS level + AttackTime, // Attack time in seconds + ReleaseTime, // Release time in seconds + GainSmoothing, // Smoothing factor for gain adjustment + MaxGain, // Maximum gain multiplier + MinGain, // Minimum gain multiplier + ParamCount // Always keep this last; indicates the number of parameters + }; + + AutoGain() {}; + AutoGain(unsigned int sampleRate); + + int getParamCount() const override; + float getParamMax(int param) const override; + float getParamMin(int param) const override; + float getParamDef(int param) const override; + std::string getParamName(int param) const override; + void setParamValue(int param, float value) override; + float getParamValue(int param) const override; + + void process(void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) override; + +private: + // Struct to hold parameter information + struct ParamInfo + { + float defaultVal; + float minVal; + float maxVal; + }; + + float mSampleRate; + float mCurrentGain; + float mSmoothedRMS; + + // Parameter metadata + std::unordered_map mParams; + + // Parameter values + std::vector mValues; + + // Calculate RMS for the current frame + float calculateRMS(const void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format); + + // Exponential smoothing factor for RMS calculation + float rmsSmoothingFactor() const; + + // Apply gain to the audio data + void applyGain(void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format); + + // Validate parameter index + void validateParam(int param) const; +}; + +#endif // AUTO_GAIN_H \ No newline at end of file diff --git a/src/filters/echo_cancellation.cpp b/src/filters/echo_cancellation.cpp new file mode 100644 index 0000000..18b1c94 --- /dev/null +++ b/src/filters/echo_cancellation.cpp @@ -0,0 +1,212 @@ +#include "echo_cancellation.h" + +#include +#include +#include +#include +#include + +EchoCancellation::EchoCancellation(unsigned int sampleRate) + : mWriteIndex(0), + mParams{ // def min max + {EchoDelayMs, {50.0f, 0.0f, 1000.0f}}, // Delay in ms (default, min, max) + {EchoAttenuation, {0.7f, 0.0f, 1.0f}} // Attenuation (default, min, max) + }, + mValues(ParamCount, 0.0f) +{ + // Initialize values with defaults + for (const auto &[param, range] : mParams) + { + mValues[param] = range.defaultVal; + } + mDelaySamples = static_cast((getParamDef(EchoDelayMs) / 1000.0f) * sampleRate); + // Allocate twice the delay size to handle circular buffer + mBuffer = std::vector(mDelaySamples * 2, 0.0f); +} + +// Override parameter management methods +int EchoCancellation::getParamCount() const +{ + return ParamCount; +} + +float EchoCancellation::getParamMax(int param) const +{ + validateParam(param); + return mParams.at(static_cast(param)).maxVal; +} + +float EchoCancellation::getParamMin(int param) const +{ + validateParam(param); + return mParams.at(static_cast(param)).minVal; +} + +float EchoCancellation::getParamDef(int param) const +{ + validateParam(param); + return mParams.at(static_cast(param)).defaultVal; +} + +std::string EchoCancellation::getParamName(int param) const +{ + validateParam(param); + switch (static_cast(param)) + { + case EchoDelayMs: + return "Echo Delay (ms)"; + case EchoAttenuation: + return "Echo Attenuation"; + default: + return "Unknown"; + } +} + +void EchoCancellation::setParamValue(int param, float value) +{ + validateParam(param); + const auto &range = mParams.at(static_cast(param)); + if (value < range.minVal || value > range.maxVal) + { + throw std::out_of_range("Parameter value out of range"); + } + mValues[param] = value; +} + +float EchoCancellation::getParamValue(int param) const +{ + validateParam(param); + return mValues[param]; +} + +void EchoCancellation::process(void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) +{ + switch (format) + { + case ma_format_u8: + processAudio(pInput, frameCount, channels); + break; + case ma_format_s16: + processAudio(pInput, frameCount, channels); + break; + case ma_format_s24: + processAudioS24(pInput, frameCount, channels); + break; + case ma_format_s32: + processAudio(pInput, frameCount, channels); + break; + case ma_format_f32: + processAudio(pInput, frameCount, channels); + break; + default: + std::cerr << "Unsupported format\n"; + break; + } +} + +template +void EchoCancellation::processAudio(void *pInput, ma_uint32 frameCount, unsigned int channels) +{ + T *input = static_cast(pInput); + + for (ma_uint32 i = 0; i < frameCount * channels; ++i) + { + // Normalize sample to float [-1, 1] + float currentSample = normalizeSample(input[i]); + float delayedSample = mBuffer[mWriteIndex]; + + // Apply echo cancellation + float processedSample = currentSample - getParamValue(EchoAttenuation) * delayedSample; + + // Store result back to circular buffer + mBuffer[mWriteIndex] = currentSample; + + // Write processed sample back to input + input[i] = denormalizeSample(processedSample); + + // Increment and wrap write index + mWriteIndex = (mWriteIndex + 1) % mBuffer.size(); + } +} + +void EchoCancellation::processAudioS24(void *pInput, ma_uint32 frameCount, unsigned int channels) +{ + uint8_t *input = static_cast(pInput); + + for (ma_uint32 i = 0; i < frameCount * channels; ++i) + { + // Extract 24-bit signed integer from the 3 bytes + int32_t sample = (input[i * 3 + 0] << 8) | (input[i * 3 + 1] << 16) | (input[i * 3 + 2] << 24); + sample >>= 8; // Convert to signed 32-bit integer + + // Normalize sample to float [-1, 1] + float currentSample = sample / 8388608.0f; // 2^23 + + float delayedSample = mBuffer[mWriteIndex]; + + // Apply echo cancellation + float processedSample = currentSample - getParamValue(EchoAttenuation) * delayedSample; + + // Store result back to circular buffer + mBuffer[mWriteIndex] = currentSample; + + // Write processed sample back to input + int32_t processedInt = static_cast(std::clamp(processedSample * 8388608.0f, -8388608.0f, 8388607.0f)); + input[i * 3 + 0] = static_cast((processedInt >> 8) & 0xFF); + input[i * 3 + 1] = static_cast((processedInt >> 16) & 0xFF); + input[i * 3 + 2] = static_cast((processedInt >> 24) & 0xFF); + + // Increment and wrap write index + mWriteIndex = (mWriteIndex + 1) % mBuffer.size(); + } +} + +float EchoCancellation::normalizeSample(unsigned char sample) +{ + return (sample - 128) / 128.0f; +} + +float EchoCancellation::normalizeSample(int16_t sample) +{ + return sample / 32768.0f; +} + +float EchoCancellation::normalizeSample(int32_t sample) +{ + return sample / 2147483648.0f; +} + +float EchoCancellation::normalizeSample(float sample) +{ + return sample; // Already normalized +} + +template +T EchoCancellation::denormalizeSample(float sample) +{ + if (std::is_same::value) + { + return static_cast(std::clamp(sample * 128.0f + 128, 0.0f, 255.0f)); + } + else if (std::is_same::value) + { + return static_cast(std::clamp(sample * 32768.0f, -32768.0f, 32767.0f)); + } + else if (std::is_same::value) + { + return static_cast(std::clamp(sample * 2147483648.0f, -2147483648.0f, 2147483647.0f)); + } + else if (std::is_same::value) + { + return sample; + } + return 0; +} + +void EchoCancellation::validateParam(int param) const +{ + if (param < 0 || param >= ParamCount) + { + throw std::invalid_argument("Invalid parameter index"); + } +} diff --git a/src/filters/echo_cancellation.h b/src/filters/echo_cancellation.h new file mode 100644 index 0000000..9d1ad12 --- /dev/null +++ b/src/filters/echo_cancellation.h @@ -0,0 +1,72 @@ +#ifndef ECHO_CANCELLATION_H +#define ECHO_CANCELLATION_H + +#include "generic_filter.h" + +#include +#include + +class EchoCancellation : public GenericFilter +{ +public: + // Enum for filter parameters + enum Params + { + EchoDelayMs, + EchoAttenuation, + ParamCount // Always keep this last; indicates the number of parameters + }; + + EchoCancellation() {}; + EchoCancellation(unsigned int sampleRate); + + int getParamCount() const override; + float getParamMax(int param) const override; + float getParamMin(int param) const override; + float getParamDef(int param) const override; + std::string getParamName(int param) const override; + void setParamValue(int param, float value) override; + float getParamValue(int param) const override; + + void process(void *pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) override; + +private: + // Struct to hold parameter information + struct ParamInfo + { + float defaultVal; + float minVal; + float maxVal; + }; + + unsigned int mDelaySamples; + std::vector mBuffer; // Circular buffer for storing past samples + unsigned int mWriteIndex; + + // Parameter metadata + std::unordered_map mParams; + + // Parameter values + std::vector mValues; + + template + void processAudio(void *pInput, ma_uint32 frameCount, unsigned int channels); + + void processAudioS24(void *pInput, ma_uint32 frameCount, unsigned int channels); + + float normalizeSample(unsigned char sample); + + float normalizeSample(int16_t sample); + + float normalizeSample(int32_t sample); + + float normalizeSample(float sample); + + template + T denormalizeSample(float sample); + + // Validate parameter index + void validateParam(int param) const; +}; + +#endif // ECHO_CANCELLATION_H \ No newline at end of file diff --git a/src/filters/filters.cpp b/src/filters/filters.cpp new file mode 100644 index 0000000..f3eac2d --- /dev/null +++ b/src/filters/filters.cpp @@ -0,0 +1,119 @@ +#include "filters.h" +#include "autogain.h" +#include "echo_cancellation.h" + +#include +#include +#include + +Filters::Filters(unsigned int samplerate) : mSamplerate(samplerate) {} + +Filters::~Filters() {} + +int Filters::isFilterActive(FilterType filter) +{ + for (int i = 0; i < filters.size(); i++) + { + if (filters[i].get()->type == filter) + return i; + } + return -1; +} + +std::vector Filters::getFilterParamNames(FilterType filterType) +{ + std::vector ret; + switch (filterType) + { + case FilterType::autogain: + { + AutoGain f; + int nParams = f.getParamCount(); + for (int i = 0; i < nParams; i++) + ret.push_back(f.getParamName(i)); + } + break; + case FilterType::echoCancellation: + { + EchoCancellation f; + int nParams = f.getParamCount(); + for (int i = 0; i < nParams; i++) + ret.push_back(f.getParamName(i)); + } + break; + default: + break; + } + + return ret; +} + +CaptureErrors Filters::addFilter(FilterType filterType) +{ + // Check if the new filter is already here. + // Only one kind of filter allowed. + if (isFilterActive(filterType) >= 0) + return CaptureErrors::filterAlreadyAdded; + + std::unique_ptr newFilter; + switch (filterType) + { + case autogain: + newFilter = std::make_unique(mSamplerate); + break; + case echoCancellation: + newFilter = std::make_unique(mSamplerate); + break; + default: + return CaptureErrors::filterNotFound; + } + + std::unique_ptr nfo = std::make_unique(filterType, std::move(newFilter)); + /// In [filters] we add the new filter to the list. All these filters must be processed inside the callback. + filters.push_back(std::move(nfo)); + + return CaptureErrors::captureNoError; +} + +CaptureErrors Filters::removeFilter(FilterType filterType) +{ + int index = isFilterActive(filterType); + if (index < 0) + return CaptureErrors::filterNotFound; + + filters[index].get()->filter.reset(); + + /// remove the filter from the list + filters.erase(filters.begin() + index); + + return CaptureErrors::captureNoError; +} + +void Filters::setFilterParams(FilterType filterType, int attributeId, float value) +{ + int index = isFilterActive(filterType); + if (index < 0) + return; + filters[index].get()->filter.get()->setParamValue(attributeId, value); +} + +float Filters::getFilterParams(FilterType filterType, int attributeId) +{ + int index = isFilterActive(filterType); + // If not active return its default value + if (index < 0) { + switch (filterType) + { + case autogain: + return AutoGain(0).getParamDef(attributeId); + case echoCancellation: + return EchoCancellation(0).getParamDef(attributeId); + default: + return 9999.f; + } + } + + float ret = filters[index].get()->filter.get()->getParamValue(attributeId); + + return ret; +} diff --git a/src/filters/filters.h b/src/filters/filters.h new file mode 100644 index 0000000..336edbc --- /dev/null +++ b/src/filters/filters.h @@ -0,0 +1,55 @@ +#ifndef FILTERS_H +#define FILTERS_H + +#include "../enums.h" +#include "generic_filter.h" + +#include +#include +#include + +struct FilterObject +{ + FilterType type; + std::unique_ptr filter; + + FilterObject(FilterType t, std::unique_ptr f) + : type(t), filter(std::move(f)) {} + + bool operator==(FilterType const &i) + { + return (i == type); + } +}; + +/// Class to manage global filters. +class Filters +{ + /// Setting the global filter to NULL will clear the global filter. + /// The default maximum number of global filters active is 4, but this + /// can be changed in a global constant in soloud.h (and rebuilding SoLoud). +public: + Filters(unsigned int samplerate); + ~Filters(); + + /// Return -1 if the filter is not active or its index + int isFilterActive(FilterType filter); + + CaptureErrors addFilter(FilterType filterType); + + CaptureErrors removeFilter(FilterType filterType); + + std::vector getFilterParamNames(FilterType filterType); + + /// If [handle]==0 the operation is done to global filters. + void setFilterParams(FilterType filterType, int attributeId, float value); + + /// If [handle]==0 the operation is done to global filters. + float getFilterParams(FilterType filterType, int attributeId); + + unsigned int mSamplerate; + + std::vector> filters; +}; + +#endif // PLAYER_H diff --git a/src/filters/generic_filter.h b/src/filters/generic_filter.h new file mode 100644 index 0000000..81ce248 --- /dev/null +++ b/src/filters/generic_filter.h @@ -0,0 +1,26 @@ +#ifndef GENERIC_FILTERS_H +#define GENERIC_FILTERS_H + +#include "../miniaudio.h" + +#include + +// Abstract Base Class for Generic Filters +class GenericFilter { +public: + virtual ~GenericFilter() = default; + + // Methods for managing parameters + virtual int getParamCount() const = 0; + virtual float getParamMax(int param) const = 0; + virtual float getParamMin(int param) const = 0; + virtual float getParamDef(int param) const = 0; + virtual std::string getParamName(int param) const = 0; + virtual void setParamValue(int param, float value) = 0; + virtual float getParamValue(int param) const = 0; + + // Pure virtual method to apply the filter (to be implemented by derived classes) + virtual void process(void* pInput, ma_uint32 frameCount, unsigned int channels, ma_format format) = 0; +}; + +#endif // GENERIC_FILTERS_H \ No newline at end of file diff --git a/src/flutter_recorder.cpp b/src/flutter_recorder.cpp index fdd98ac..0b394b2 100644 --- a/src/flutter_recorder.cpp +++ b/src/flutter_recorder.cpp @@ -1,10 +1,10 @@ -// TODO(marco): add all miniaudio errors #define MINIAUDIO_IMPLEMENTATION #include "miniaudio.h" #include "flutter_recorder.h" #include "capture.h" #include "analyzer.h" +#include "filters/filters.h" #include #include @@ -17,6 +17,7 @@ Capture capture; std::unique_ptr analyzerCapture = std::make_unique(256); +std::unique_ptr mFilters = std::make_unique(0); dartSilenceChangedCallback_t dartSilenceChangedCallback; dartSilenceChangedCallback_t nativeSilenceChangedCallback; @@ -27,16 +28,16 @@ dartStreamDataCallback_t nativeStreamDataCallback; /// WEB WORKER #ifdef __EMSCRIPTEN__ -/// Create the web worker and store a global "Module.workerUri" in JS. +/// Create the web worker and store a global "RecorderModule.workerUri" in JS. FFI_PLUGIN_EXPORT void createWorkerInWasm() { EM_ASM({ - if (!Module.wasmWorker) + if (!RecorderModule.wasmWorker) { // Create a new Worker from the URI var workerUri = "assets/packages/flutter_recorder/web/worker.dart.js"; - Module.wasmWorker = new Worker(workerUri); - console.log("EM_ASM creating web worker! " + workerUri + " " + Module.wasmWorker); + RecorderModule.wasmWorker = new Worker(workerUri); + console.log("EM_ASM creating web worker! " + workerUri + " " + RecorderModule.wasmWorker); } else { @@ -49,10 +50,10 @@ FFI_PLUGIN_EXPORT void createWorkerInWasm() FFI_PLUGIN_EXPORT void sendSilenceEventToWorker(const char *message, bool isSilent, float energyDb) { EM_ASM({ - if (Module.wasmWorker) + if (RecorderModule.wasmWorker) { // Send the message - Module.wasmWorker.postMessage({ + RecorderModule.wasmWorker.postMessage({ message : UTF8ToString($0), isSilent : $1, energyDb : $2, @@ -68,12 +69,12 @@ FFI_PLUGIN_EXPORT void sendSilenceEventToWorker(const char *message, bool isSile FFI_PLUGIN_EXPORT void sendStreamToWorker(const char *message, unsigned char *audioData, int audioDataLength) { EM_ASM({ - if (Module.wasmWorker) + if (RecorderModule.wasmWorker) { // Convert audioData to Uint8Array for JavaScript compatibility - const audioDataArray = new Uint8Array(Module.HEAPU8.subarray($1, $1 + $2)); + const audioDataArray = new Uint8Array(RecorderModule.HEAPU8.subarray($1, $1 + $2)); // Send the message and data - Module.wasmWorker.postMessage({ + RecorderModule.wasmWorker.postMessage({ message : UTF8ToString($0), data : audioDataArray, }); @@ -178,7 +179,13 @@ FFI_PLUGIN_EXPORT enum CaptureErrors init( unsigned int sampleRate, unsigned int channels) { - CaptureErrors res = capture.init(deviceID, (PCMFormat)pcmFormat, sampleRate, channels); + if (!mFilters || mFilters.get()->mSamplerate != sampleRate) + { + mFilters.reset(); + mFilters = std::make_unique(sampleRate); + } + CaptureErrors res = capture.init(mFilters.get(), deviceID, (PCMFormat)pcmFormat, sampleRate, channels); + return res; } @@ -281,17 +288,26 @@ FFI_PLUGIN_EXPORT void stopRecording() FFI_PLUGIN_EXPORT void getVolumeDb(float *volumeDb) { + if (!capture.isInited()) + { + *volumeDb = 0; + return; + } *volumeDb = capture.getVolumeDb(); } FFI_PLUGIN_EXPORT void setFftSmoothing(float smooth) { + if (!capture.isInited()) + return; analyzerCapture.get()->setSmoothing(smooth); } /// Return a 256 float array containing FFT data. FFI_PLUGIN_EXPORT void getFft(float **fft) { + if (!capture.isInited()) + return; float *wave = capture.getWave(); *fft = analyzerCapture.get()->calcFFT(wave); } @@ -299,11 +315,15 @@ FFI_PLUGIN_EXPORT void getFft(float **fft) /// Return a 256 float array containing wave data. FFI_PLUGIN_EXPORT void getWave(float **wave) { + if (!capture.isInited()) + return; *wave = capture.getWave(); } FFI_PLUGIN_EXPORT void getTexture(float *samples) { + if (!capture.isInited()) + return; if (analyzerCapture.get() == nullptr || !capture.isInited()) { memset(samples, 0, sizeof(float) * 512); @@ -325,6 +345,8 @@ FFI_PLUGIN_EXPORT void getTexture(float *samples) float capturedTexture2D[256][512]; FFI_PLUGIN_EXPORT void getTexture2D(float **samples) { + if (!capture.isInited()) + return; if (analyzerCapture.get() == nullptr || !capture.isInited()) { *samples = *capturedTexture2D; @@ -340,5 +362,47 @@ FFI_PLUGIN_EXPORT void getTexture2D(float **samples) FFI_PLUGIN_EXPORT float getTextureValue(int row, int column) { + if (!capture.isInited()) + return .0f; return capturedTexture2D[row][column]; } + +///////////////////////// +/// FILTERS +///////////////////////// +FFI_PLUGIN_EXPORT int isFilterActive(enum FilterType filterType) +{ + return mFilters.get()->isFilterActive(filterType); +} + +FFI_PLUGIN_EXPORT enum CaptureErrors addFilter(enum FilterType filterType) +{ + return mFilters.get()->addFilter(filterType); +} + +FFI_PLUGIN_EXPORT enum CaptureErrors removeFilter(enum FilterType filterType) +{ + return mFilters.get()->removeFilter(filterType); +} + +FFI_PLUGIN_EXPORT void getFilterParamNames(enum FilterType filterType, char **names, int *paramsCount) +{ + std::vector pNames = mFilters.get()->getFilterParamNames(filterType); + *paramsCount = static_cast(pNames.size()); + *names = (char *)malloc(sizeof(char *) * *paramsCount); + for (int i = 0; i < *paramsCount; i++) + { + names[i] = strdup(pNames[i].c_str()); + printf("C i: %d names[i]: %s names[i]: %p\n", i, names[i], names[i]); + } +} + +FFI_PLUGIN_EXPORT void setFilterParams(enum FilterType filterType, int attributeId, float value) +{ + mFilters.get()->setFilterParams(filterType, attributeId, value); +} + +FFI_PLUGIN_EXPORT float getFilterParams(enum FilterType filterType, int attributeId) +{ + return mFilters.get()->getFilterParams(filterType, attributeId); +} diff --git a/src/flutter_recorder.h b/src/flutter_recorder.h index c4ce7c8..873dd3a 100644 --- a/src/flutter_recorder.h +++ b/src/flutter_recorder.h @@ -79,6 +79,16 @@ extern "C" FFI_PLUGIN_EXPORT void setFftSmoothing(float smooth); + ///////////////////////// + /// FILTERS + ///////////////////////// + FFI_PLUGIN_EXPORT int isFilterActive(enum FilterType filterType); + FFI_PLUGIN_EXPORT enum CaptureErrors addFilter(enum FilterType filterType); + FFI_PLUGIN_EXPORT enum CaptureErrors removeFilter(enum FilterType filterType); + FFI_PLUGIN_EXPORT void getFilterParamNames(enum FilterType filterType, char **names, int *paramsCount); + FFI_PLUGIN_EXPORT void setFilterParams(enum FilterType filterType, int attributeId, float value); + FFI_PLUGIN_EXPORT float getFilterParams(enum FilterType filterType, int attributeId); + #ifdef __cplusplus } #endif diff --git a/src/wav.h b/src/wav.h index 100681b..f02e493 100644 --- a/src/wav.h +++ b/src/wav.h @@ -79,7 +79,7 @@ namespace WriteAudio // ma_format_s32 = 4 // ma_format_f32 = 5 - // Store parameters to the WASM Module. + // Store parameters to the WASM RecorderModule. EM_ASM({ let format; switch ($2) { @@ -103,11 +103,11 @@ namespace WriteAudio break; } console.log("EM_ASM init wav! " + $0 + " " + $1 + " " + format); - Module.dataChunks = []; - Module.fileName = "output.wav"; - Module.numChannels = $0; - Module.sampleRate = $1; - Module.format = format; }, deviceConfig.capture.channels, deviceConfig.sampleRate, deviceConfig.capture.format); + RecorderModule.dataChunks = []; + RecorderModule.fileName = "output.wav"; + RecorderModule.numChannels = $0; + RecorderModule.sampleRate = $1; + RecorderModule.format = format; }, deviceConfig.capture.channels, deviceConfig.sampleRate, deviceConfig.capture.format); isRecording = true; return captureNoError; @@ -123,30 +123,30 @@ namespace WriteAudio } let buffer; - switch (Module.format) { + switch (RecorderModule.format) { case 'u8': - buffer = HEAPU8.subarray($0, $0 + $1 * Module.numChannels); + buffer = HEAPU8.subarray($0, $0 + $1 * RecorderModule.numChannels); break; case 's16': - buffer = HEAP16.subarray($0 / 2, ($0 / 2) + $1 * Module.numChannels); + buffer = HEAP16.subarray($0 / 2, ($0 / 2) + $1 * RecorderModule.numChannels); break; case 's24': - buffer = HEAPU8.subarray($0, $0 + $1 * Module.numChannels * 3); + buffer = HEAPU8.subarray($0, $0 + $1 * RecorderModule.numChannels * 3); break; case 's32': - buffer = HEAP32.subarray($0 / 4, ($0 / 4) + $1 * Module.numChannels); + buffer = HEAP32.subarray($0 / 4, ($0 / 4) + $1 * RecorderModule.numChannels); break; case 'f32': default: - buffer = HEAPF32.subarray($0 / 4, ($0 / 4) + $1 * Module.numChannels); + buffer = HEAPF32.subarray($0 / 4, ($0 / 4) + $1 * RecorderModule.numChannels); } - if (!Module.dataChunks) { - Module.dataChunks = []; + if (!RecorderModule.dataChunks) { + RecorderModule.dataChunks = []; } // Add new audio data to the buffer. - Module.dataChunks.push(...buffer); + RecorderModule.dataChunks.push(...buffer); }, bufferPointer, numFrames); } @@ -157,33 +157,33 @@ namespace WriteAudio EM_ASM({ function encodeWAV() { - const numChannels = Module.numChannels; - const sampleRate = Module.sampleRate; + const numChannels = RecorderModule.numChannels; + const sampleRate = RecorderModule.sampleRate; let bitsPerSample; let audioData; let formatCode = 1; // Default to PCM - switch (Module.format) { + switch (RecorderModule.format) { case 'u8': bitsPerSample = 8; - audioData = new Uint8Array(Module.dataChunks); + audioData = new Uint8Array(RecorderModule.dataChunks); break; case 's16': bitsPerSample = 16; - audioData = new Int16Array(Module.dataChunks); + audioData = new Int16Array(RecorderModule.dataChunks); break; case 's24': bitsPerSample = 24; - audioData = new Uint8Array(Module.dataChunks); + audioData = new Uint8Array(RecorderModule.dataChunks); break; case 's32': bitsPerSample = 32; - audioData = new Int32Array(Module.dataChunks); + audioData = new Int32Array(RecorderModule.dataChunks); break; case 'f32': bitsPerSample = 32; formatCode = 3; // Floating-point PCM format - audioData = new Float32Array(Module.dataChunks); + audioData = new Float32Array(RecorderModule.dataChunks); break; default: throw new Error("Formato non supportato"); @@ -193,7 +193,7 @@ namespace WriteAudio const byteRate = sampleRate * blockAlign; let dataSize = audioData.length * (bitsPerSample / 8); const totalFileSize = 44 + dataSize; - if (Module.format == 's24') { + if (RecorderModule.format == 's24') { // If we are using s24 `audioData` is a Uint8Array which reflects the `dataSize`. dataSize = audioData.length; } @@ -232,7 +232,7 @@ namespace WriteAudio // view.setUint8(44 + i * 3 + 2, audioData[i * 3 + 2]); view.setUint8(44 + i, audioData[i]); } else if (bitsPerSample === 32) { - if (Module.format === 'f32') { + if (RecorderModule.format === 'f32') { view.setFloat32(44 + i * 4, audioData[i], true); } else { view.setInt32(44 + i * 4, audioData[i], true); @@ -249,7 +249,7 @@ namespace WriteAudio if (window.showSaveFilePicker) { try { const handle = await window.showSaveFilePicker({ - suggestedName : Module.fileName || 'output.wav', + suggestedName : RecorderModule.fileName || 'output.wav', types : [ { description : 'Audio WAV file', accept : {'audio/wav' : ['.wav']} } ], }); const writable = await handle.createWritable(); @@ -262,7 +262,7 @@ namespace WriteAudio const blob = new Blob([wavFile], { type: 'audio/wav' }); const link = document.createElement('a'); link.href = URL.createObjectURL(blob); - link.download = Module.fileName || 'output.wav'; + link.download = RecorderModule.fileName || 'output.wav'; link.click(); URL.revokeObjectURL(link.href); } diff --git a/web/compile_init_recorder_module.sh b/web/compile_init_recorder_module.sh new file mode 100755 index 0000000..5330017 --- /dev/null +++ b/web/compile_init_recorder_module.sh @@ -0,0 +1 @@ +dart compile js -O3 -o init_recorder_module.dart.js ./init_recorder_module.dart diff --git a/web/compile_wasm.sh b/web/compile_wasm.sh index 0c893c5..ab9a3d1 100755 --- a/web/compile_wasm.sh +++ b/web/compile_wasm.sh @@ -16,8 +16,12 @@ em++ \ ../../src/capture.cpp \ ../../src/analyzer.cpp \ ../../src/fft/soloud_fft.cpp \ --O3 \ +../../src/filters/filters.cpp \ +../../src/filters/autogain.cpp \ +../../src/filters/echo_cancellation.cpp \ +-s MODULARIZE=1 -s EXPORT_NAME="'RecorderModule'" \ -msimd128 -msse3 \ +-O3 \ -s "EXPORTED_RUNTIME_METHODS=['ccall','cwrap']" \ -s "EXPORTED_FUNCTIONS=['_free', '_malloc']" \ -s EXPORT_ALL=1 -s NO_EXIT_RUNTIME=1 \ diff --git a/web/init_recorder_module.dart b/web/init_recorder_module.dart new file mode 100644 index 0000000..8b6c943 --- /dev/null +++ b/web/init_recorder_module.dart @@ -0,0 +1,42 @@ +// ignore_for_file: avoid_print + +import 'dart:js_interop'; +import 'dart:js_util'; + +/// Module to initialized the WASM RecorderModule before the app starts. +/// It must be compiled with +/// `dart compile js -O3 -o init_recorder_module.dart.js ./init_recorder_module.dart` +/// and the resulting `init_recorder_module.dart.js` must be added as a script +/// in the `index.html` with also `libflutter_recorder_plugin.js`: +/// ```hmtl +/// +/// +/// ``` + +@JS('RecorderModule') +external JSObject getRecorderModule(); + +@JS('RecorderModule') +external JSObject recorderModuleConstructor(); // Represents the IIFE + +@JS('self.RecorderModule') // Attach RecorderModule to the global scope +external set globalRecorderModule(JSObject module); + +Future initializeRecorderModule() async { + try { + // Convert JavaScript Promise to Dart Future + final promise = recorderModuleConstructor(); + final module = await promiseToFuture(promise); + globalRecorderModule = module; // Make it globally accessible + print('RecorderModule initialized and set globally.'); + return module; // Return the initialized module + } catch (e) { + print('Failed to initialize RecorderModule: $e'); + rethrow; + } +} + +/// The main Web Worker +void main() async { + await initializeRecorderModule(); +} diff --git a/web/init_recorder_module.dart.js b/web/init_recorder_module.dart.js new file mode 100644 index 0000000..78e91b2 --- /dev/null +++ b/web/init_recorder_module.dart.js @@ -0,0 +1,2301 @@ +(function dartProgram(){function copyProperties(a,b){var s=Object.keys(a) +for(var r=0;r=0)return true +if(typeof version=="function"&&version.length==0){var q=version() +if(/^\d+\.\d+\.\d+\.\d+$/.test(q))return true}}catch(p){}return false}() +function inherit(a,b){a.prototype.constructor=a +a.prototype["$i"+a.name]=a +if(b!=null){if(z){Object.setPrototypeOf(a.prototype,b.prototype) +return}var s=Object.create(b.prototype) +copyProperties(a.prototype,s) +a.prototype=s}}function inheritMany(a,b){for(var s=0;s=s)return new A.ax(s,!0,b,r,"Index out of range") +return new A.aQ(!0,b,r,"Value not in range")}, +a(a){return A.d4(new Error(),a)}, +d4(a,b){var s +if(b==null)b=new A.w() +a.dartException=b +s=A.f_ +if("defineProperty" in Object){Object.defineProperty(a,"message",{get:s}) +a.name=""}else a.toString=s +return a}, +f_(){return J.ar(this.dartException)}, +eX(a){throw A.a(a)}, +eY(a,b){throw A.d4(b,a)}, +eW(a){throw A.a(A.cm(a))}, +x(a){var s,r,q,p,o,n +a=A.eU(a.replace(String({}),"$receiver$")) +s=a.match(/\\\$[a-zA-Z]+\\\$/g) +if(s==null)s=A.c7([],t.s) +r=s.indexOf("\\$arguments\\$") +q=s.indexOf("\\$argumentsExpr\\$") +p=s.indexOf("\\$expr\\$") +o=s.indexOf("\\$method\\$") +n=s.indexOf("\\$receiver\\$") +return new A.bf(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, +bg(a){return function($expr$){var $argumentsExpr$="$arguments$" +try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, +ct(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +bY(a,b){var s=b==null,r=s?null:b.method +return new A.aC(a,r,s?null:b.receiver)}, +J(a){if(a==null)return new A.ba(a) +if(a instanceof A.V)return A.I(a,a.a) +if(typeof a!=="object")return a +if("dartException" in a)return A.I(a,a.dartException) +return A.ex(a)}, +I(a,b){if(t.C.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +return b}, +ex(a){var s,r,q,p,o,n,m,l,k,j,i,h,g +if(!("message" in a))return a +s=a.message +if("number" in a&&typeof a.number=="number"){r=a.number +q=r&65535 +if((B.o.a1(r,16)&8191)===10)switch(q){case 438:return A.I(a,A.bY(A.v(s)+" (Error "+q+")",null)) +case 445:case 5007:A.v(s) +return A.I(a,new A.a6())}}if(a instanceof TypeError){p=$.da() +o=$.db() +n=$.dc() +m=$.dd() +l=$.dg() +k=$.dh() +j=$.df() +$.de() +i=$.dj() +h=$.di() +g=p.k(s) +if(g!=null)return A.I(a,A.bY(s,g)) +else{g=o.k(s) +if(g!=null){g.method="call" +return A.I(a,A.bY(s,g))}else if(n.k(s)!=null||m.k(s)!=null||l.k(s)!=null||k.k(s)!=null||j.k(s)!=null||m.k(s)!=null||i.k(s)!=null||h.k(s)!=null)return A.I(a,new A.a6())}return A.I(a,new A.aU(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.a7() +s=function(b){try{return String(b)}catch(f){}return null}(a) +return A.I(a,new A.t(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.a7() +return a}, +H(a){var s +if(a instanceof A.V)return a.b +if(a==null)return new A.af(a) +s=a.$cachedTrace +if(s!=null)return s +s=new A.af(a) +if(typeof a==="object")a.$cachedTrace=s +return s}, +ec(a,b,c,d,e,f){switch(b){case 0:return a.$0() +case 1:return a.$1(c) +case 2:return a.$2(c,d) +case 3:return a.$3(c,d,e) +case 4:return a.$4(c,d,e,f)}throw A.a(new A.bl("Unsupported number of arguments for wrapped closure"))}, +am(a,b){var s=a.$identity +if(!!s)return s +s=A.eC(a,b) +a.$identity=s +return s}, +eC(a,b){var s +switch(b){case 0:s=a.$0 +break +case 1:s=a.$1 +break +case 2:s=a.$2 +break +case 3:s=a.$3 +break +case 4:s=a.$4 +break +default:s=null}if(s!=null)return s.bind(a) +return function(c,d,e){return function(f,g,h,i){return e(c,d,f,g,h,i)}}(a,b,A.ec)}, +dt(a2){var s,r,q,p,o,n,m,l,k,j,i=a2.co,h=a2.iS,g=a2.iI,f=a2.nDA,e=a2.aI,d=a2.fs,c=a2.cs,b=d[0],a=c[0],a0=i[b],a1=a2.fT +a1.toString +s=h?Object.create(new A.bc().constructor.prototype):Object.create(new A.av(null,null).constructor.prototype) +s.$initialize=s.constructor +r=h?function static_tear_off(){this.$initialize()}:function tear_off(a3,a4){this.$initialize(a3,a4)} +s.constructor=r +r.prototype=s +s.$_name=b +s.$_target=a0 +q=!h +if(q)p=A.cl(b,a0,g,f) +else{s.$static_name=b +p=a0}s.$S=A.dp(a1,h,g) +s[a]=p +for(o=p,n=1;n>>0!==a||a>=c)throw A.a(A.d0(b,a))}, +aF:function aF(){}, +a4:function a4(){}, +aG:function aG(){}, +P:function P(){}, +a2:function a2(){}, +a3:function a3(){}, +aH:function aH(){}, +aI:function aI(){}, +aJ:function aJ(){}, +aK:function aK(){}, +aL:function aL(){}, +aM:function aM(){}, +aN:function aN(){}, +a5:function a5(){}, +aO:function aO(){}, +ab:function ab(){}, +ac:function ac(){}, +ad:function ad(){}, +ae:function ae(){}, +cp(a,b){var s=b.c +return s==null?b.c=A.c1(a,b.x,!0):s}, +bZ(a,b){var s=b.c +return s==null?b.c=A.ai(a,"O",[b.x]):s}, +cq(a){var s=a.w +if(s===6||s===7||s===8)return A.cq(a.x) +return s===12||s===13}, +dA(a){return a.as}, +d1(a){return A.b3(v.typeUniverse,a,!1)}, +G(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w +switch(a0){case 5:case 1:case 2:case 3:case 4:return a2 +case 6:s=a2.x +r=A.G(a1,s,a3,a4) +if(r===s)return a2 +return A.cF(a1,r,!0) +case 7:s=a2.x +r=A.G(a1,s,a3,a4) +if(r===s)return a2 +return A.c1(a1,r,!0) +case 8:s=a2.x +r=A.G(a1,s,a3,a4) +if(r===s)return a2 +return A.cD(a1,r,!0) +case 9:q=a2.y +p=A.T(a1,q,a3,a4) +if(p===q)return a2 +return A.ai(a1,a2.x,p) +case 10:o=a2.x +n=A.G(a1,o,a3,a4) +m=a2.y +l=A.T(a1,m,a3,a4) +if(n===o&&l===m)return a2 +return A.c_(a1,n,l) +case 11:k=a2.x +j=a2.y +i=A.T(a1,j,a3,a4) +if(i===j)return a2 +return A.cE(a1,k,i) +case 12:h=a2.x +g=A.G(a1,h,a3,a4) +f=a2.y +e=A.eu(a1,f,a3,a4) +if(g===h&&e===f)return a2 +return A.cC(a1,g,e) +case 13:d=a2.y +a4+=d.length +c=A.T(a1,d,a3,a4) +o=a2.x +n=A.G(a1,o,a3,a4) +if(c===d&&n===o)return a2 +return A.c0(a1,n,c,!0) +case 14:b=a2.x +if(b=0)p+=" "+r[q];++q}return p+"})"}, +cO(a4,a5,a6){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2=", ",a3=null +if(a6!=null){s=a6.length +if(a5==null)a5=A.c7([],t.s) +else a3=a5.length +r=a5.length +for(q=s;q>0;--q)a5.push("T"+(r+q)) +for(p=t.X,o=t._,n="<",m="",q=0;q=0))return A.cc(a5,k) +n=n+m+a5[k] +j=a6[q] +i=j.w +if(!(i===2||i===3||i===4||i===5||j===p))l=j===o +else l=!0 +if(!l)n+=" extends "+A.n(j,a5)}n+=">"}else n="" +p=a4.x +h=a4.y +g=h.a +f=g.length +e=h.b +d=e.length +c=h.c +b=c.length +a=A.n(p,a5) +for(a0="",a1="",q=0;q0){a0+=a1+"[" +for(a1="",q=0;q0){a0+=a1+"{" +for(a1="",q=0;q "+a}, +n(a,b){var s,r,q,p,o,n,m,l=a.w +if(l===5)return"erased" +if(l===2)return"dynamic" +if(l===3)return"void" +if(l===1)return"Never" +if(l===4)return"any" +if(l===6)return A.n(a.x,b) +if(l===7){s=a.x +r=A.n(s,b) +q=s.w +return(q===12||q===13?"("+r+")":r)+"?"}if(l===8)return"FutureOr<"+A.n(a.x,b)+">" +if(l===9){p=A.ew(a.x) +o=a.y +return o.length>0?p+("<"+A.cV(o,b)+">"):p}if(l===11)return A.en(a,b) +if(l===12)return A.cO(a,b,null) +if(l===13)return A.cO(a.x,b,a.y) +if(l===14){n=a.x +m=b.length +n=m-1-n +if(!(n>=0&&n0)p+="<"+A.ah(c)+">" +s=a.eC.get(p) +if(s!=null)return s +r=new A.p(null,null) +r.w=9 +r.x=b +r.y=c +if(c.length>0)r.c=c[0] +r.as=p +q=A.y(a,r) +a.eC.set(p,q) +return q}, +c_(a,b,c){var s,r,q,p,o,n +if(b.w===10){s=b.x +r=b.y.concat(c)}else{r=c +s=b}q=s.as+(";<"+A.ah(r)+">") +p=a.eC.get(q) +if(p!=null)return p +o=new A.p(null,null) +o.w=10 +o.x=s +o.y=r +o.as=q +n=A.y(a,o) +a.eC.set(q,n) +return n}, +cE(a,b,c){var s,r,q="+"+(b+"("+A.ah(c)+")"),p=a.eC.get(q) +if(p!=null)return p +s=new A.p(null,null) +s.w=11 +s.x=b +s.y=c +s.as=q +r=A.y(a,s) +a.eC.set(q,r) +return r}, +cC(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.ah(m) +if(j>0){s=l>0?",":"" +g+=s+"["+A.ah(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.dQ(i)+"}"}r=n+(g+")") +q=a.eC.get(r) +if(q!=null)return q +p=new A.p(null,null) +p.w=12 +p.x=b +p.y=c +p.as=r +o=A.y(a,p) +a.eC.set(r,o) +return o}, +c0(a,b,c,d){var s,r=b.as+("<"+A.ah(c)+">"),q=a.eC.get(r) +if(q!=null)return q +s=A.dS(a,b,c,r,d) +a.eC.set(r,s) +return s}, +dS(a,b,c,d,e){var s,r,q,p,o,n,m,l +if(e){s=c.length +r=A.bF(s) +for(q=0,p=0;p0){n=A.G(a,b,r,0) +m=A.T(a,c,r,0) +return A.c0(a,n,m,c!==m)}}l=new A.p(null,null) +l.w=13 +l.x=b +l.y=c +l.as=d +return A.y(a,l)}, +cy(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, +cA(a){var s,r,q,p,o,n,m,l=a.r,k=a.s +for(s=l.length,r=0;r=48&&q<=57)r=A.dJ(r+1,q,l,k) +else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.cz(a,r,l,k,!1) +else if(q===46)r=A.cz(a,r,l,k,!0) +else{++r +switch(q){case 44:break +case 58:k.push(!1) +break +case 33:k.push(!0) +break +case 59:k.push(A.F(a.u,a.e,k.pop())) +break +case 94:k.push(A.dV(a.u,k.pop())) +break +case 35:k.push(A.aj(a.u,5,"#")) +break +case 64:k.push(A.aj(a.u,2,"@")) +break +case 126:k.push(A.aj(a.u,3,"~")) +break +case 60:k.push(a.p) +a.p=k.length +break +case 62:A.dL(a,k) +break +case 38:A.dK(a,k) +break +case 42:p=a.u +k.push(A.cF(p,A.F(p,a.e,k.pop()),a.n)) +break +case 63:p=a.u +k.push(A.c1(p,A.F(p,a.e,k.pop()),a.n)) +break +case 47:p=a.u +k.push(A.cD(p,A.F(p,a.e,k.pop()),a.n)) +break +case 40:k.push(-3) +k.push(a.p) +a.p=k.length +break +case 41:A.dI(a,k) +break +case 91:k.push(a.p) +a.p=k.length +break +case 93:o=k.splice(a.p) +A.cB(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-1) +break +case 123:k.push(a.p) +a.p=k.length +break +case 125:o=k.splice(a.p) +A.dN(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-2) +break +case 43:n=l.indexOf("(",r) +k.push(l.substring(r,n)) +k.push(-4) +k.push(a.p) +a.p=k.length +r=n+1 +break +default:throw"Bad character "+q}}}m=k.pop() +return A.F(a.u,a.e,m)}, +dJ(a,b,c,d){var s,r,q=b-48 +for(s=c.length;a=48&&r<=57))break +q=q*10+(r-48)}d.push(q) +return a}, +cz(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 +for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57 +else q=!0 +if(!q)break}}p=c.substring(b,m) +if(e){s=a.u +o=a.e +if(o.w===10)o=o.x +n=A.e_(s,o.x)[p] +if(n==null)A.eX('No "'+p+'" in "'+A.dA(o)+'"') +d.push(A.bE(s,o,n))}else d.push(p) +return m}, +dL(a,b){var s,r=a.u,q=A.cx(a,b),p=b.pop() +if(typeof p=="string")b.push(A.ai(r,p,q)) +else{s=A.F(r,a.e,p) +switch(s.w){case 12:b.push(A.c0(r,s,q,a.n)) +break +default:b.push(A.c_(r,s,q)) +break}}}, +dI(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null +if(typeof o=="number")switch(o){case-1:n=b.pop() +break +case-2:m=b.pop() +break +default:b.push(o) +break}else b.push(o) +s=A.cx(a,b) +o=b.pop() +switch(o){case-3:o=b.pop() +if(n==null)n=p.sEA +if(m==null)m=p.sEA +r=A.F(p,a.e,o) +q=new A.b0() +q.a=s +q.b=n +q.c=m +b.push(A.cC(p,r,q)) +return +case-4:b.push(A.cE(p,b.pop(),s)) +return +default:throw A.a(A.au("Unexpected state under `()`: "+A.v(o)))}}, +dK(a,b){var s=b.pop() +if(0===s){b.push(A.aj(a.u,1,"0&")) +return}if(1===s){b.push(A.aj(a.u,4,"1&")) +return}throw A.a(A.au("Unexpected extended operation "+A.v(s)))}, +cx(a,b){var s=b.splice(a.p) +A.cB(a.u,a.e,s) +a.p=b.pop() +return s}, +F(a,b,c){if(typeof c=="string")return A.ai(a,c,a.sEA) +else if(typeof c=="number"){b.toString +return A.dM(a,b,c)}else return c}, +cB(a,b,c){var s,r=c.length +for(s=0;sn)return!1 +m=n-o +l=s.b +k=r.b +j=l.length +i=k.length +if(o+j=d)return!1 +a1=f[b] +b+=3 +if(a00?new Array(q):v.typeUniverse.sEA +for(o=0;o0?new Array(a):v.typeUniverse.sEA}, +p:function p(a,b){var _=this +_.a=a +_.b=b +_.r=_.f=_.d=_.c=null +_.w=0 +_.as=_.Q=_.z=_.y=_.x=null}, +b0:function b0(){this.c=this.b=this.a=null}, +bD:function bD(a){this.a=a}, +b_:function b_(){}, +ag:function ag(a){this.a=a}, +dD(){var s,r,q={} +if(self.scheduleImmediate!=null)return A.ey() +if(self.MutationObserver!=null&&self.document!=null){s=self.document.createElement("div") +r=self.document.createElement("span") +q.a=null +new self.MutationObserver(A.am(new A.bi(q),1)).observe(s,{childList:true}) +return new A.bh(q,s,r)}else if(self.setImmediate!=null)return A.ez() +return A.eA()}, +dE(a){self.scheduleImmediate(A.am(new A.bj(a),0))}, +dF(a){self.setImmediate(A.am(new A.bk(a),0))}, +dG(a){A.dO(0,a)}, +dO(a,b){var s=new A.bB() +s.X(a,b) +return s}, +cT(a){return new A.aW(new A.j($.f,a.j("j<0>")),a.j("aW<0>"))}, +cL(a,b){a.$2(0,null) +b.b=!0 +return b.a}, +cI(a,b){A.e2(a,b)}, +cK(a,b){b.H(a)}, +cJ(a,b){b.I(A.J(a),A.H(a))}, +e2(a,b){var s,r,q=new A.bH(b),p=new A.bI(b) +if(a instanceof A.j)a.R(q,p,t.z) +else{s=t.z +if(a instanceof A.j)a.L(q,p,s) +else{r=new A.j($.f,t.d) +r.a=8 +r.c=a +r.R(q,p,s)}}}, +cX(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) +break}catch(r){e=r +d=c}}}}(a,1) +return $.f.V(new A.bK(s))}, +bW(a){var s +if(t.C.b(a)){s=a.gp() +if(s!=null)return s}return B.b}, +ea(a,b){if($.f===B.a)return null +return null}, +eb(a,b){if($.f!==B.a)A.ea(a,b) +if(b==null)if(t.C.b(a)){b=a.gp() +if(b==null){A.co(a,B.b) +b=B.b}}else b=B.b +else if(t.C.b(a))A.co(a,b) +return new A.B(a,b)}, +cw(a,b){var s,r +for(;s=a.a,(s&4)!==0;)a=a.c +if(a===b){b.q(new A.t(!0,a,null,"Cannot complete a future with itself"),A.cr()) +return}s|=b.a&1 +a.a=s +if((s&24)!==0){r=b.G() +b.t(a) +A.aa(b,r)}else{r=b.c +b.P(a) +a.F(r)}}, +dH(a,b){var s,r,q={},p=q.a=a +for(;s=p.a,(s&4)!==0;){p=p.c +q.a=p}if(p===b){b.q(new A.t(!0,p,null,"Cannot complete a future with itself"),A.cr()) +return}if((s&24)===0){r=b.c +b.P(p) +q.a.F(r) +return}if((s&16)===0&&b.c==null){b.t(p) +return}b.a^=2 +A.S(null,null,b.b,new A.bp(q,b))}, +aa(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a +for(;!0;){s={} +r=f.a +q=(r&16)===0 +p=!q +if(b==null){if(p&&(r&1)===0){f=f.c +A.c6(f.a,f.b)}return}s.a=b +o=b.a +for(f=b;o!=null;f=o,o=n){f.a=null +A.aa(g.a,f) +s.a=o +n=o.a}r=g.a +m=r.c +s.b=p +s.c=m +if(q){l=f.c +l=(l&1)!==0||(l&15)===8}else l=!0 +if(l){k=f.b.b +if(p){r=r.b===k +r=!(r||r)}else r=!1 +if(r){A.c6(m.a,m.b) +return}j=$.f +if(j!==k)$.f=k +else j=null +f=f.c +if((f&15)===8)new A.bw(s,g,p).$0() +else if(q){if((f&1)!==0)new A.bv(s,m).$0()}else if((f&2)!==0)new A.bu(g,s).$0() +if(j!=null)$.f=j +f=s.c +if(f instanceof A.j){r=s.a.$ti +r=r.j("O<2>").b(f)||!r.y[1].b(f)}else r=!1 +if(r){i=s.a.b +if((f.a&24)!==0){h=i.c +i.c=null +b=i.u(h) +i.a=f.a&30|i.a&1 +i.c=f.c +g.a=f +continue}else A.cw(f,i) +return}}i=s.a.b +h=i.c +i.c=null +b=i.u(h) +f=s.b +r=s.c +if(!f){i.a=8 +i.c=r}else{i.a=i.a&1|16 +i.c=r}g.a=i +f=i}}, +eo(a,b){if(t.Q.b(a))return b.V(a) +if(t.v.b(a))return a +throw A.a(A.cg(a,"onError",u.c))}, +em(){var s,r +for(s=$.R;s!=null;s=$.R){$.al=null +r=s.b +$.R=r +if(r==null)$.ak=null +s.a.$0()}}, +es(){$.c5=!0 +try{A.em()}finally{$.al=null +$.c5=!1 +if($.R!=null)$.ce().$1(A.cZ())}}, +cW(a){var s=new A.aX(a),r=$.ak +if(r==null){$.R=$.ak=s +if(!$.c5)$.ce().$1(A.cZ())}else $.ak=r.b=s}, +er(a){var s,r,q,p=$.R +if(p==null){A.cW(a) +$.al=$.ak +return}s=new A.aX(a) +r=$.al +if(r==null){s.b=p +$.R=$.al=s}else{q=r.b +s.b=q +$.al=r.b=s +if(q==null)$.ak=s}}, +eV(a){var s=null,r=$.f +if(B.a===r){A.S(s,s,B.a,a) +return}A.S(s,s,r,r.S(a))}, +fb(a){A.c8(a,"stream",t.K) +return new A.b1()}, +c6(a,b){A.er(new A.bJ(a,b))}, +cU(a,b,c,d){var s,r=$.f +if(r===c)return d.$0() +$.f=c +s=r +try{r=d.$0() +return r}finally{$.f=s}}, +eq(a,b,c,d,e){var s,r=$.f +if(r===c)return d.$1(e) +$.f=c +s=r +try{r=d.$1(e) +return r}finally{$.f=s}}, +ep(a,b,c,d,e,f){var s,r=$.f +if(r===c)return d.$2(e,f) +$.f=c +s=r +try{r=d.$2(e,f) +return r}finally{$.f=s}}, +S(a,b,c,d){if(B.a!==c)d=c.S(d) +A.cW(d)}, +bi:function bi(a){this.a=a}, +bh:function bh(a,b,c){this.a=a +this.b=b +this.c=c}, +bj:function bj(a){this.a=a}, +bk:function bk(a){this.a=a}, +bB:function bB(){}, +bC:function bC(a,b){this.a=a +this.b=b}, +aW:function aW(a,b){this.a=a +this.b=!1 +this.$ti=b}, +bH:function bH(a){this.a=a}, +bI:function bI(a){this.a=a}, +bK:function bK(a){this.a=a}, +B:function B(a,b){this.a=a +this.b=b}, +aY:function aY(){}, +a9:function a9(a,b){this.a=a +this.$ti=b}, +Q:function Q(a,b,c,d,e){var _=this +_.a=null +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +j:function j(a,b){var _=this +_.a=0 +_.b=a +_.c=null +_.$ti=b}, +bm:function bm(a,b){this.a=a +this.b=b}, +bt:function bt(a,b){this.a=a +this.b=b}, +bq:function bq(a){this.a=a}, +br:function br(a){this.a=a}, +bs:function bs(a,b,c){this.a=a +this.b=b +this.c=c}, +bp:function bp(a,b){this.a=a +this.b=b}, +bo:function bo(a,b){this.a=a +this.b=b}, +bn:function bn(a,b,c){this.a=a +this.b=b +this.c=c}, +bw:function bw(a,b,c){this.a=a +this.b=b +this.c=c}, +bx:function bx(a){this.a=a}, +bv:function bv(a,b){this.a=a +this.b=b}, +bu:function bu(a,b){this.a=a +this.b=b}, +aX:function aX(a){this.a=a +this.b=null}, +b1:function b1(){}, +bG:function bG(){}, +bJ:function bJ(a,b){this.a=a +this.b=b}, +bz:function bz(){}, +bA:function bA(a,b){this.a=a +this.b=b}, +e:function e(){}, +du(a,b){a=A.a(a) +a.stack=b.h(0) +throw a +throw A.a("unreachable")}, +dB(a,b,c){var s=J.dk(b) +if(!s.A())return a +if(c.length===0){do a+=A.v(s.gv()) +while(s.A())}else{a+=A.v(s.gv()) +for(;s.A();)a=a+c+A.v(s.gv())}return a}, +cr(){return A.H(new Error())}, +b7(a){if(typeof a=="number"||A.c4(a)||a==null)return J.ar(a) +if(typeof a=="string")return JSON.stringify(a) +return A.dz(a)}, +dv(a,b){A.c8(a,"error",t.K) +A.c8(b,"stackTrace",t.l) +A.du(a,b)}, +au(a){return new A.at(a)}, +bV(a,b){return new A.t(!1,null,b,a)}, +cg(a,b,c){return new A.t(!0,a,b,c)}, +dC(a){return new A.aV(a)}, +cu(a){return new A.aT(a)}, +cs(a){return new A.aS(a)}, +cm(a){return new A.aw(a)}, +cn(a,b,c){var s,r +if(A.eO(a))return b+"..."+c +s=new A.bd(b) +$.aq.push(a) +try{r=s +r.a=A.dB(r.a,a,", ")}finally{if(0>=$.aq.length)return A.cc($.aq,-1) +$.aq.pop()}s.a+=c +r=s.a +return r.charCodeAt(0)==0?r:r}, +d6(a){A.eS(a)}, +d:function d(){}, +at:function at(a){this.a=a}, +w:function w(){}, +t:function t(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +aQ:function aQ(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +ax:function ax(a,b,c,d,e){var _=this +_.f=a +_.a=b +_.b=c +_.c=d +_.d=e}, +aV:function aV(a){this.a=a}, +aT:function aT(a){this.a=a}, +aS:function aS(a){this.a=a}, +aw:function aw(a){this.a=a}, +a7:function a7(){}, +bl:function bl(a){this.a=a}, +l:function l(){}, +i:function i(){}, +b2:function b2(){}, +bd:function bd(a){this.a=a}, +eT(a,b){var s=new A.j($.f,b.j("j<0>")),r=new A.a9(s,b.j("a9<0>")) +a.then(A.am(new A.bT(r),1),A.am(new A.bU(r),1)) +return s}, +bT:function bT(a){this.a=a}, +bU:function bU(a){this.a=a}, +b9:function b9(a){this.a=a}, +eS(a){if(typeof dartPrint=="function"){dartPrint(a) +return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a) +return}if(typeof print=="function"){print(a) +return}throw"Unable to print message: "+String(a)}, +eZ(a){A.eY(new A.aD("Field '"+a+"' has been assigned during initialization."),new Error())}, +bP(){var s=0,r=A.cT(t.m),q,p=2,o,n,m,l,k,j,i +var $async$bP=A.cX(function(a,b){if(a===1){o=b +s=p}while(true)switch(s){case 0:p=4 +k=self +n=k.RecorderModule() +s=7 +return A.cI(A.eT(n,t.m),$async$bP) +case 7:m=b +k.self.RecorderModule=m +A.d6("RecorderModule initialized and set globally.") +q=m +s=1 +break +p=2 +s=6 +break +case 4:p=3 +i=o +l=A.J(i) +A.d6("Failed to initialize RecorderModule: "+A.v(l)) +throw i +s=6 +break +case 3:s=2 +break +case 6:case 1:return A.cK(q,r) +case 2:return A.cJ(o,r)}}) +return A.cL($async$bP,r)}, +bR(){var s=0,r=A.cT(t.n) +var $async$bR=A.cX(function(a,b){if(a===1)return A.cJ(b,r) +while(true)switch(s){case 0:s=2 +return A.cI(A.bP(),$async$bR) +case 2:return A.cK(null,r)}}) +return A.cL($async$bR,r)}},B={} +var w=[A,J,B] +var $={} +A.bX.prototype={} +J.ay.prototype={ +h(a){return"Instance of '"+A.bb(a)+"'"}, +gi(a){return A.N(A.c3(this))}} +J.az.prototype={ +h(a){return String(a)}, +gi(a){return A.N(t.y)}, +$ib:1} +J.Y.prototype={ +h(a){return"null"}, +$ib:1, +$il:1} +J.a0.prototype={$ik:1} +J.D.prototype={ +h(a){return String(a)}} +J.aP.prototype={} +J.a8.prototype={} +J.C.prototype={ +h(a){var s=a[$.d9()] +if(s==null)return this.W(a) +return"JavaScript function for "+J.ar(s)}} +J.a_.prototype={ +h(a){return String(a)}} +J.a1.prototype={ +h(a){return String(a)}} +J.r.prototype={ +h(a){return A.cn(a,"[","]")}, +gU(a){return new J.as(a,a.length,A.c2(a).j("as<1>"))}, +gl(a){return a.length}} +J.b8.prototype={} +J.as.prototype={ +gv(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +A(){var s,r=this,q=r.a,p=q.length +if(r.b!==p)throw A.a(A.eW(q)) +s=r.c +if(s>=p){r.d=null +return!1}r.d=q[s] +r.c=s+1 +return!0}} +J.aB.prototype={ +h(a){if(a===0&&1/a<0)return"-0.0" +else return""+a}, +a1(a,b){var s +if(a>0)s=this.a0(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +a0(a,b){return b>31?0:a>>>b}, +gi(a){return A.N(t.H)}, +$iq:1} +J.X.prototype={ +gi(a){return A.N(t.S)}, +$ib:1, +$ic:1} +J.aA.prototype={ +gi(a){return A.N(t.i)}, +$ib:1} +J.Z.prototype={ +h(a){return a}, +gi(a){return A.N(t.N)}, +gl(a){return a.length}, +$ib:1, +$iL:1} +A.aD.prototype={ +h(a){return"LateInitializationError: "+this.a}} +A.aE.prototype={ +gv(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +A(){var s,r=this,q=r.a,p=J.d2(q),o=p.gl(q) +if(r.b!==o)throw A.a(A.cm(q)) +s=r.c +if(s>=o){r.d=null +return!1}r.d=p.m(q,s);++r.c +return!0}} +A.W.prototype={} +A.bf.prototype={ +k(a){var s,r,q=this,p=new RegExp(q.a).exec(a) +if(p==null)return null +s=Object.create(null) +r=q.b +if(r!==-1)s.arguments=p[r+1] +r=q.c +if(r!==-1)s.argumentsExpr=p[r+1] +r=q.d +if(r!==-1)s.expr=p[r+1] +r=q.e +if(r!==-1)s.method=p[r+1] +r=q.f +if(r!==-1)s.receiver=p[r+1] +return s}} +A.a6.prototype={ +h(a){return"Null check operator used on a null value"}} +A.aC.prototype={ +h(a){var s,r=this,q="NoSuchMethodError: method not found: '",p=r.b +if(p==null)return"NoSuchMethodError: "+r.a +s=r.c +if(s==null)return q+p+"' ("+r.a+")" +return q+p+"' on '"+s+"' ("+r.a+")"}} +A.aU.prototype={ +h(a){var s=this.a +return s.length===0?"Error":"Error: "+s}} +A.ba.prototype={ +h(a){return"Throw of null ('"+(this.a===null?"null":"undefined")+"' from JavaScript)"}} +A.V.prototype={} +A.af.prototype={ +h(a){var s,r=this.b +if(r!=null)return r +r=this.a +s=r!==null&&typeof r==="object"?r.stack:null +return this.b=s==null?"":s}, +$iE:1} +A.K.prototype={ +h(a){var s=this.constructor,r=s==null?null:s.name +return"Closure '"+A.d8(r==null?"unknown":r)+"'"}, +gac(){return this}, +$C:"$1", +$R:1, +$D:null} +A.b5.prototype={$C:"$0",$R:0} +A.b6.prototype={$C:"$2",$R:2} +A.be.prototype={} +A.bc.prototype={ +h(a){var s=this.$static_name +if(s==null)return"Closure of unknown static method" +return"Closure '"+A.d8(s)+"'"}} +A.av.prototype={ +h(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.bb(this.a)+"'")}} +A.aZ.prototype={ +h(a){return"Reading static variable '"+this.a+"' during its initialization"}} +A.aR.prototype={ +h(a){return"RuntimeError: "+this.a}} +A.bM.prototype={ +$1(a){return this.a(a)}, +$S:5} +A.bN.prototype={ +$2(a,b){return this.a(a,b)}, +$S:6} +A.bO.prototype={ +$1(a){return this.a(a)}, +$S:7} +A.aF.prototype={ +gi(a){return B.r}, +$ib:1} +A.a4.prototype={} +A.aG.prototype={ +gi(a){return B.t}, +$ib:1} +A.P.prototype={ +gl(a){return a.length}, +$io:1} +A.a2.prototype={ +m(a,b){A.M(b,a,a.length) +return a[b]}} +A.a3.prototype={} +A.aH.prototype={ +gi(a){return B.u}, +$ib:1} +A.aI.prototype={ +gi(a){return B.v}, +$ib:1} +A.aJ.prototype={ +gi(a){return B.w}, +m(a,b){A.M(b,a,a.length) +return a[b]}, +$ib:1} +A.aK.prototype={ +gi(a){return B.x}, +m(a,b){A.M(b,a,a.length) +return a[b]}, +$ib:1} +A.aL.prototype={ +gi(a){return B.y}, +m(a,b){A.M(b,a,a.length) +return a[b]}, +$ib:1} +A.aM.prototype={ +gi(a){return B.z}, +m(a,b){A.M(b,a,a.length) +return a[b]}, +$ib:1} +A.aN.prototype={ +gi(a){return B.A}, +m(a,b){A.M(b,a,a.length) +return a[b]}, +$ib:1} +A.a5.prototype={ +gi(a){return B.B}, +gl(a){return a.length}, +m(a,b){A.M(b,a,a.length) +return a[b]}, +$ib:1} +A.aO.prototype={ +gi(a){return B.C}, +gl(a){return a.length}, +m(a,b){A.M(b,a,a.length) +return a[b]}, +$ib:1} +A.ab.prototype={} +A.ac.prototype={} +A.ad.prototype={} +A.ae.prototype={} +A.p.prototype={ +j(a){return A.bE(v.typeUniverse,this,a)}, +N(a){return A.dY(v.typeUniverse,this,a)}} +A.b0.prototype={} +A.bD.prototype={ +h(a){return A.n(this.a,null)}} +A.b_.prototype={ +h(a){return this.a}} +A.ag.prototype={$iw:1} +A.bi.prototype={ +$1(a){var s=this.a,r=s.a +s.a=null +r.$0()}, +$S:3} +A.bh.prototype={ +$1(a){var s,r +this.a.a=a +s=this.b +r=this.c +s.firstChild?s.removeChild(r):s.appendChild(r)}, +$S:8} +A.bj.prototype={ +$0(){this.a.$0()}, +$S:4} +A.bk.prototype={ +$0(){this.a.$0()}, +$S:4} +A.bB.prototype={ +X(a,b){if(self.setTimeout!=null)self.setTimeout(A.am(new A.bC(this,b),0),a) +else throw A.a(A.dC("`setTimeout()` not found."))}} +A.bC.prototype={ +$0(){this.b.$0()}, +$S:0} +A.aW.prototype={ +H(a){var s,r=this +if(a==null)a=r.$ti.c.a(a) +if(!r.b)r.a.M(a) +else{s=r.a +if(r.$ti.j("O<1>").b(a))s.O(a) +else s.C(a)}}, +I(a,b){var s=this.a +if(this.b)s.n(a,b) +else s.q(a,b)}} +A.bH.prototype={ +$1(a){return this.a.$2(0,a)}, +$S:1} +A.bI.prototype={ +$2(a,b){this.a.$2(1,new A.V(a,b))}, +$S:9} +A.bK.prototype={ +$2(a,b){this.a(a,b)}, +$S:10} +A.B.prototype={ +h(a){return A.v(this.a)}, +$id:1, +gp(){return this.b}} +A.aY.prototype={ +I(a,b){var s,r=this.a +if((r.a&30)!==0)throw A.a(A.cs("Future already completed")) +s=A.eb(a,b) +r.q(s.a,s.b)}, +T(a){return this.I(a,null)}} +A.a9.prototype={ +H(a){var s=this.a +if((s.a&30)!==0)throw A.a(A.cs("Future already completed")) +s.M(a)}} +A.Q.prototype={ +a3(a){if((this.c&15)!==6)return!0 +return this.b.b.K(this.d,a.a)}, +a2(a){var s,r=this.e,q=null,p=a.a,o=this.b.b +if(t.Q.b(r))q=o.a7(r,p,a.b) +else q=o.K(r,p) +try{p=q +return p}catch(s){if(t.c.b(A.J(s))){if((this.c&1)!==0)throw A.a(A.bV("The error handler of Future.then must return a value of the returned future's type","onError")) +throw A.a(A.bV("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} +A.j.prototype={ +P(a){this.a=this.a&1|4 +this.c=a}, +L(a,b,c){var s,r,q=$.f +if(q===B.a){if(b!=null&&!t.Q.b(b)&&!t.v.b(b))throw A.a(A.cg(b,"onError",u.c))}else if(b!=null)b=A.eo(b,q) +s=new A.j(q,c.j("j<0>")) +r=b==null?1:3 +this.B(new A.Q(s,r,a,b,this.$ti.j("@<1>").N(c).j("Q<1,2>"))) +return s}, +ab(a,b){return this.L(a,null,b)}, +R(a,b,c){var s=new A.j($.f,c.j("j<0>")) +this.B(new A.Q(s,19,a,b,this.$ti.j("@<1>").N(c).j("Q<1,2>"))) +return s}, +a_(a){this.a=this.a&1|16 +this.c=a}, +t(a){this.a=a.a&30|this.a&1 +this.c=a.c}, +B(a){var s=this,r=s.a +if(r<=3){a.a=s.c +s.c=a}else{if((r&4)!==0){r=s.c +if((r.a&24)===0){r.B(a) +return}s.t(r)}A.S(null,null,s.b,new A.bm(s,a))}}, +F(a){var s,r,q,p,o,n=this,m={} +m.a=a +if(a==null)return +s=n.a +if(s<=3){r=n.c +n.c=a +if(r!=null){q=a.a +for(p=a;q!=null;p=q,q=o)o=q.a +p.a=r}}else{if((s&4)!==0){s=n.c +if((s.a&24)===0){s.F(a) +return}n.t(s)}m.a=n.u(a) +A.S(null,null,n.b,new A.bt(m,n))}}, +G(){var s=this.c +this.c=null +return this.u(s)}, +u(a){var s,r,q +for(s=a,r=null;s!=null;r=s,s=q){q=s.a +s.a=r}return r}, +Z(a){var s,r,q,p=this +p.a^=2 +try{a.L(new A.bq(p),new A.br(p),t.P)}catch(q){s=A.J(q) +r=A.H(q) +A.eV(new A.bs(p,s,r))}}, +C(a){var s=this,r=s.G() +s.a=8 +s.c=a +A.aa(s,r)}, +n(a,b){var s=this.G() +this.a_(new A.B(a,b)) +A.aa(this,s)}, +M(a){if(this.$ti.j("O<1>").b(a)){this.O(a) +return}this.Y(a)}, +Y(a){this.a^=2 +A.S(null,null,this.b,new A.bo(this,a))}, +O(a){if(this.$ti.b(a)){A.dH(a,this) +return}this.Z(a)}, +q(a,b){this.a^=2 +A.S(null,null,this.b,new A.bn(this,a,b))}, +$iO:1} +A.bm.prototype={ +$0(){A.aa(this.a,this.b)}, +$S:0} +A.bt.prototype={ +$0(){A.aa(this.b,this.a.a)}, +$S:0} +A.bq.prototype={ +$1(a){var s,r,q,p=this.a +p.a^=2 +try{p.C(p.$ti.c.a(a))}catch(q){s=A.J(q) +r=A.H(q) +p.n(s,r)}}, +$S:3} +A.br.prototype={ +$2(a,b){this.a.n(a,b)}, +$S:11} +A.bs.prototype={ +$0(){this.a.n(this.b,this.c)}, +$S:0} +A.bp.prototype={ +$0(){A.cw(this.a.a,this.b)}, +$S:0} +A.bo.prototype={ +$0(){this.a.C(this.b)}, +$S:0} +A.bn.prototype={ +$0(){this.a.n(this.b,this.c)}, +$S:0} +A.bw.prototype={ +$0(){var s,r,q,p,o,n,m,l=this,k=null +try{q=l.a.a +k=q.b.b.a5(q.d)}catch(p){s=A.J(p) +r=A.H(p) +if(l.c&&l.b.a.c.a===s){q=l.a +q.c=l.b.a.c}else{q=s +o=r +if(o==null)o=A.bW(q) +n=l.a +n.c=new A.B(q,o) +q=n}q.b=!0 +return}if(k instanceof A.j&&(k.a&24)!==0){if((k.a&16)!==0){q=l.a +q.c=k.c +q.b=!0}return}if(k instanceof A.j){m=l.b.a +q=l.a +q.c=k.ab(new A.bx(m),t.z) +q.b=!1}}, +$S:0} +A.bx.prototype={ +$1(a){return this.a}, +$S:12} +A.bv.prototype={ +$0(){var s,r,q,p,o,n +try{q=this.a +p=q.a +q.c=p.b.b.K(p.d,this.b)}catch(o){s=A.J(o) +r=A.H(o) +q=s +p=r +if(p==null)p=A.bW(q) +n=this.a +n.c=new A.B(q,p) +n.b=!0}}, +$S:0} +A.bu.prototype={ +$0(){var s,r,q,p,o,n,m,l=this +try{s=l.a.a.c +p=l.b +if(p.a.a3(s)&&p.a.e!=null){p.c=p.a.a2(s) +p.b=!1}}catch(o){r=A.J(o) +q=A.H(o) +p=l.a.a.c +if(p.a===r){n=l.b +n.c=p +p=n}else{p=r +n=q +if(n==null)n=A.bW(p) +m=l.b +m.c=new A.B(p,n) +p=m}p.b=!0}}, +$S:0} +A.aX.prototype={} +A.b1.prototype={} +A.bG.prototype={} +A.bJ.prototype={ +$0(){A.dv(this.a,this.b)}, +$S:0} +A.bz.prototype={ +a9(a){var s,r,q +try{if(B.a===$.f){a.$0() +return}A.cU(null,null,this,a)}catch(q){s=A.J(q) +r=A.H(q) +A.c6(s,r)}}, +S(a){return new A.bA(this,a)}, +a6(a){if($.f===B.a)return a.$0() +return A.cU(null,null,this,a)}, +a5(a){return this.a6(a,t.z)}, +aa(a,b){if($.f===B.a)return a.$1(b) +return A.eq(null,null,this,a,b)}, +K(a,b){var s=t.z +return this.aa(a,b,s,s)}, +a8(a,b,c){if($.f===B.a)return a.$2(b,c) +return A.ep(null,null,this,a,b,c)}, +a7(a,b,c){var s=t.z +return this.a8(a,b,c,s,s,s)}, +a4(a){return a}, +V(a){var s=t.z +return this.a4(a,s,s,s)}} +A.bA.prototype={ +$0(){return this.a.a9(this.b)}, +$S:0} +A.e.prototype={ +gU(a){return new A.aE(a,this.gl(a),A.ao(a).j("aE"))}, +h(a){return A.cn(a,"[","]")}} +A.d.prototype={ +gp(){return A.dy(this)}} +A.at.prototype={ +h(a){var s=this.a +if(s!=null)return"Assertion failed: "+A.b7(s) +return"Assertion failed"}} +A.w.prototype={} +A.t.prototype={ +gE(){return"Invalid argument"+(!this.a?"(s)":"")}, +gD(){return""}, +h(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+p,n=s.gE()+q+o +if(!s.a)return n +return n+s.gD()+": "+A.b7(s.gJ())}, +gJ(){return this.b}} +A.aQ.prototype={ +gJ(){return this.b}, +gE(){return"RangeError"}, +gD(){return""}} +A.ax.prototype={ +gJ(){return this.b}, +gE(){return"RangeError"}, +gD(){if(this.b<0)return": index must not be negative" +var s=this.f +if(s===0)return": no indices are valid" +return": index should be less than "+s}, +gl(a){return this.f}} +A.aV.prototype={ +h(a){return"Unsupported operation: "+this.a}} +A.aT.prototype={ +h(a){return"UnimplementedError: "+this.a}} +A.aS.prototype={ +h(a){return"Bad state: "+this.a}} +A.aw.prototype={ +h(a){return"Concurrent modification during iteration: "+A.b7(this.a)+"."}} +A.a7.prototype={ +h(a){return"Stack Overflow"}, +gp(){return null}, +$id:1} +A.bl.prototype={ +h(a){return"Exception: "+this.a}} +A.l.prototype={ +h(a){return"null"}} +A.i.prototype={$ii:1, +h(a){return"Instance of '"+A.bb(this)+"'"}, +gi(a){return A.eG(this)}, +toString(){return this.h(this)}} +A.b2.prototype={ +h(a){return""}, +$iE:1} +A.bd.prototype={ +gl(a){return this.a.length}, +h(a){var s=this.a +return s.charCodeAt(0)==0?s:s}} +A.bT.prototype={ +$1(a){return this.a.H(a)}, +$S:1} +A.bU.prototype={ +$1(a){if(a==null)return this.a.T(new A.b9(a===undefined)) +return this.a.T(a)}, +$S:1} +A.b9.prototype={ +h(a){return"Promise was rejected with a value of `"+(this.a?"undefined":"null")+"`."}};(function aliases(){var s=J.D.prototype +s.W=s.h})();(function installTearOffs(){var s=hunkHelpers._static_1,r=hunkHelpers._static_0 +s(A,"ey","dE",2) +s(A,"ez","dF",2) +s(A,"eA","dG",2) +r(A,"cZ","es",0)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany +r(A.i,null) +q(A.i,[A.bX,J.ay,J.as,A.d,A.aE,A.W,A.bf,A.ba,A.V,A.af,A.K,A.p,A.b0,A.bD,A.bB,A.aW,A.B,A.aY,A.Q,A.j,A.aX,A.b1,A.bG,A.e,A.a7,A.bl,A.l,A.b2,A.bd,A.b9]) +q(J.ay,[J.az,J.Y,J.a0,J.a_,J.a1,J.aB,J.Z]) +q(J.a0,[J.D,J.r,A.aF,A.a4]) +q(J.D,[J.aP,J.a8,J.C]) +r(J.b8,J.r) +q(J.aB,[J.X,J.aA]) +q(A.d,[A.aD,A.w,A.aC,A.aU,A.aZ,A.aR,A.b_,A.at,A.t,A.aV,A.aT,A.aS,A.aw]) +r(A.a6,A.w) +q(A.K,[A.b5,A.b6,A.be,A.bM,A.bO,A.bi,A.bh,A.bH,A.bq,A.bx,A.bT,A.bU]) +q(A.be,[A.bc,A.av]) +q(A.b6,[A.bN,A.bI,A.bK,A.br]) +q(A.a4,[A.aG,A.P]) +q(A.P,[A.ab,A.ad]) +r(A.ac,A.ab) +r(A.a2,A.ac) +r(A.ae,A.ad) +r(A.a3,A.ae) +q(A.a2,[A.aH,A.aI]) +q(A.a3,[A.aJ,A.aK,A.aL,A.aM,A.aN,A.a5,A.aO]) +r(A.ag,A.b_) +q(A.b5,[A.bj,A.bk,A.bC,A.bm,A.bt,A.bs,A.bp,A.bo,A.bn,A.bw,A.bv,A.bu,A.bJ,A.bA]) +r(A.a9,A.aY) +r(A.bz,A.bG) +q(A.t,[A.aQ,A.ax]) +s(A.ab,A.e) +s(A.ac,A.W) +s(A.ad,A.e) +s(A.ae,A.W)})() +var v={typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{c:"int",q:"double",eR:"num",L:"String",eB:"bool",l:"Null",dw:"List",i:"Object",f9:"Map"},mangledNames:{},types:["~()","~(@)","~(~())","l(@)","l()","@(@)","@(@,L)","@(L)","l(~())","l(@,E)","~(c,@)","l(i,E)","j<@>(@)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti")} +A.dX(v.typeUniverse,JSON.parse('{"aP":"D","a8":"D","C":"D","az":{"b":[]},"Y":{"l":[],"b":[]},"a0":{"k":[]},"D":{"k":[]},"r":{"k":[]},"b8":{"r":["1"],"k":[]},"aB":{"q":[]},"X":{"q":[],"c":[],"b":[]},"aA":{"q":[],"b":[]},"Z":{"L":[],"b":[]},"aD":{"d":[]},"a6":{"w":[],"d":[]},"aC":{"d":[]},"aU":{"d":[]},"af":{"E":[]},"aZ":{"d":[]},"aR":{"d":[]},"aF":{"k":[],"b":[]},"a4":{"k":[]},"aG":{"k":[],"b":[]},"P":{"o":["1"],"k":[]},"a2":{"e":["q"],"o":["q"],"k":[]},"a3":{"e":["c"],"o":["c"],"k":[]},"aH":{"e":["q"],"o":["q"],"k":[],"b":[],"e.E":"q"},"aI":{"e":["q"],"o":["q"],"k":[],"b":[],"e.E":"q"},"aJ":{"e":["c"],"o":["c"],"k":[],"b":[],"e.E":"c"},"aK":{"e":["c"],"o":["c"],"k":[],"b":[],"e.E":"c"},"aL":{"e":["c"],"o":["c"],"k":[],"b":[],"e.E":"c"},"aM":{"e":["c"],"o":["c"],"k":[],"b":[],"e.E":"c"},"aN":{"e":["c"],"o":["c"],"k":[],"b":[],"e.E":"c"},"a5":{"e":["c"],"o":["c"],"k":[],"b":[],"e.E":"c"},"aO":{"e":["c"],"o":["c"],"k":[],"b":[],"e.E":"c"},"b_":{"d":[]},"ag":{"w":[],"d":[]},"j":{"O":["1"]},"B":{"d":[]},"a9":{"aY":["1"]},"at":{"d":[]},"w":{"d":[]},"t":{"d":[]},"aQ":{"d":[]},"ax":{"d":[]},"aV":{"d":[]},"aT":{"d":[]},"aS":{"d":[]},"aw":{"d":[]},"a7":{"d":[]},"b2":{"E":[]}}')) +A.dW(v.typeUniverse,JSON.parse('{"W":1,"P":1,"b1":1}')) +var u={c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"} +var t=(function rtii(){var s=A.d1 +return{C:s("d"),Z:s("f5"),s:s("r"),b:s("r<@>"),T:s("Y"),m:s("k"),g:s("C"),p:s("o<@>"),P:s("l"),K:s("i"),L:s("fa"),l:s("E"),N:s("L"),R:s("b"),c:s("w"),o:s("a8"),d:s("j<@>"),y:s("eB"),i:s("q"),z:s("@"),v:s("@(i)"),Q:s("@(i,E)"),S:s("c"),A:s("0&*"),_:s("i*"),O:s("O?"),X:s("i?"),H:s("eR"),n:s("~")}})();(function constants(){B.n=J.ay.prototype +B.o=J.X.prototype +B.p=J.C.prototype +B.q=J.a0.prototype +B.f=J.aP.prototype +B.c=J.a8.prototype +B.d=function getTagFallback(o) { + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +} +B.h=function() { + var toStringFunction = Object.prototype.toString; + function getTag(o) { + var s = toStringFunction.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = toStringFunction.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof HTMLElement == "function"; + return { + getTag: getTag, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +} +B.m=function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks; + if (userAgent.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +} +B.i=function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +} +B.l=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +} +B.k=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +} +B.j=function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +} +B.e=function(hooks) { return hooks; } + +B.a=new A.bz() +B.b=new A.b2() +B.r=A.u("f0") +B.t=A.u("f1") +B.u=A.u("f3") +B.v=A.u("f4") +B.w=A.u("f6") +B.x=A.u("f7") +B.y=A.u("f8") +B.z=A.u("fm") +B.A=A.u("fn") +B.B=A.u("fo") +B.C=A.u("fp")})();(function staticFields(){$.by=null +$.aq=A.c7([],A.d1("r")) +$.cj=null +$.ci=null +$.d3=null +$.cY=null +$.d7=null +$.bL=null +$.bQ=null +$.cb=null +$.R=null +$.ak=null +$.al=null +$.c5=!1 +$.f=B.a})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal +s($,"f2","d9",()=>A.eF("_$dart_dartClosure")) +s($,"fc","da",()=>A.x(A.bg({ +toString:function(){return"$receiver$"}}))) +s($,"fd","db",()=>A.x(A.bg({$method$:null, +toString:function(){return"$receiver$"}}))) +s($,"fe","dc",()=>A.x(A.bg(null))) +s($,"ff","dd",()=>A.x(function(){var $argumentsExpr$="$arguments$" +try{null.$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"fi","dg",()=>A.x(A.bg(void 0))) +s($,"fj","dh",()=>A.x(function(){var $argumentsExpr$="$arguments$" +try{(void 0).$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"fh","df",()=>A.x(A.ct(null))) +s($,"fg","de",()=>A.x(function(){try{null.$method$}catch(r){return r.message}}())) +s($,"fl","dj",()=>A.x(A.ct(void 0))) +s($,"fk","di",()=>A.x(function(){try{(void 0).$method$}catch(r){return r.message}}())) +s($,"fq","ce",()=>A.dD())})();(function nativeSupport(){!function(){var s=function(a){var m={} +m[a]=1 +return Object.keys(hunkHelpers.convertToFastObject(m))[0]} +v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} +var r="___dart_isolate_tags_" +var q=Object[r]||(Object[r]=Object.create(null)) +var p="_ZxYxX" +for(var o=0;;o++){var n=s(p+"_"+o+"_") +if(!(n in q)){q[n]=1 +v.isolateTag=n +break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() +hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.aF,ArrayBufferView:A.a4,DataView:A.aG,Float32Array:A.aH,Float64Array:A.aI,Int16Array:A.aJ,Int32Array:A.aK,Int8Array:A.aL,Uint16Array:A.aM,Uint32Array:A.aN,Uint8ClampedArray:A.a5,CanvasPixelArray:A.a5,Uint8Array:A.aO}) +hunkHelpers.setOrUpdateLeafTags({ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false}) +A.P.$nativeSuperclassTag="ArrayBufferView" +A.ab.$nativeSuperclassTag="ArrayBufferView" +A.ac.$nativeSuperclassTag="ArrayBufferView" +A.a2.$nativeSuperclassTag="ArrayBufferView" +A.ad.$nativeSuperclassTag="ArrayBufferView" +A.ae.$nativeSuperclassTag="ArrayBufferView" +A.a3.$nativeSuperclassTag="ArrayBufferView"})() +Function.prototype.$2=function(a,b){return this(a,b)} +Function.prototype.$0=function(){return this()} +Function.prototype.$1=function(a){return this(a)} +Function.prototype.$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$1$1=function(a){return this(a)} +convertAllToFastObject(w) +convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) +return}if(typeof document.currentScript!="undefined"){a(document.currentScript) +return}var s=document.scripts +function onLoad(b){for(var q=0;q","NativeByteBuffer.runtimeType","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","Rti._eval","Rti._bind","_rtiBind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_FutureListener.matchesErrorTest","_FutureListener.handleError","_Future._setChained","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._setError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._chainCoreFutureAsync.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","_rootHandleError.","_RootZone.runGuarded","_RootZone.bindCallbackGuarded","_RootZone.run","_RootZone.run[function-entry$1]","_RootZone.runUnary","_RootZone.runUnary[function-entry$2]","_RootZone.runBinary","_RootZone.runBinary[function-entry$3]","_RootZone.registerBinaryCallback","_RootZone.registerBinaryCallback[function-entry$1]","_RootZone.bindCallbackGuarded.","ListBase.iterator","ListBase.toString","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","Null.toString","Object.toString","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","promiseToFuture.","NullRejectionException.toString","DART_CLOSURE_PROPERTY_NAME","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","","$intercepted$get$iterator$ax","$intercepted$get$length$asx","$intercepted$get$runtimeType$Ibdinsux","$intercepted$toString0$IJavaScriptBigIntJavaScriptFunctionJavaScriptSymbolLegacyJavaScriptObjectabnsux","ArrayIterator","AsyncError","BoundClosure","ByteBuffer","ByteData","Closure","Closure0Args","Closure2Args","Error","ExceptionAndStackTrace","FixedLengthListMixin","Float32List","Float64List","Function","Future","IndexError","Int16List","Int32List","Int8List","Interceptor","JSArray","JSBool","JSInt","JSNull","JSNumNotInt","JSNumber","JSObject","JSString","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","LateError","LegacyJavaScriptObject","List","ListBase","ListIterator","Map","NativeByteBuffer","NativeByteData","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint32List","NativeUint8ClampedList","NativeUint8List","Null","NullError","NullRejectionException","NullThrownFromJavaScriptException","Object","PlainJavaScriptObject","RangeError","Record","Rti","RuntimeError","StackOverflowError","StackTrace","StaticClosure","String","StringBuffer","TearOffClosure","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncCompleter","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_Completer","_CyclicInitializationError","_Error","_Exception","_FunctionParameters","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteError_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFutureAsync_closure","_Future__chainForeignFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_JS_INTEROP_INTERCEPTOR_TAG","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_RootZone","_RootZone_bindCallbackGuarded_closure","_StackTrace","_StreamIterator","_StringStackTrace","_TimerImpl_internalCallback","_TypeError","_Zone","_awaitOnObject_closure","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_chainCoreFutureAsync","_chainCoreFutureSync","_computeFieldNamed","_computeSignatureFunctionNewRti","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createStarRti","_current","_getCanonicalRecipe","_getFutureFromFutureOr","_getQuestionFromStar","_initializeScheduleImmediate","_installTypeTests","_interceptorFieldNameCache","_isInCallbackLoop","_isUnionOfFunctionType","_lastCallback","_lastPriorityCallback","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupStarRti","_lookupTerminalRti","_nextCallback","_objectTypeNameNewRti","_propagateToListeners","_receiverFieldNameCache","_rootHandleError_closure","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_throw","_wrapJsFunctionForAsync_closure","_writeAll","addErasedTypes","addRules","alternateTagFunction","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___startMicrotaskLoop$closure","bind","bool","collectArray","compose","create","cspForwardCall","cspForwardInterceptedCall","current","defaultStackTrace","dispatchRecordsForInstanceTags","double","eval","evalInEnvironment","evalRecipe","extractPattern","extractStackTrace","findErasedType","findRule","forType","forwardCallTo","forwardInterceptedCallTo","fromMessage","fromTearOff","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getTagFunction","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","indexToType","initHooks_closure","initNativeDispatchFlag","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","newArrayOrEmpty","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","parse","promiseToFuture_closure","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","receiverOf","safeToString","throwWithStackTrace","toStringVisiting","toType","toTypes","toTypesNamed","trySetStackTrace","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","value","$index","bindCallbackGuarded","call","complete","completeError","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_rti#_bind","dart:_rti#_eval","dart:async#_addListener","dart:async#_asyncComplete","dart:async#_asyncCompleteError","dart:async#_asyncCompleteWithValue","dart:async#_chainForeignFuture","dart:async#_chainFuture","dart:async#_cloneResult","dart:async#_completeError","dart:async#_completeWithValue","dart:async#_prependListeners","dart:async#_removeListeners","dart:async#_reverseListeners","dart:async#_setChained","dart:async#_setErrorObject","dart:async#_thenAwait","dart:core#_errorExplanation","dart:core#_errorName","handleError","invalidValue","iterator","length","matchTypeError","matchesErrorTest","moveNext","registerBinaryCallback","run","runBinary","runGuarded","runUnary","runtimeType","stackTrace","then","toString","Rti._unstar","isTopType","_Universe._canonicalRecipeOfStar","_Universe._canonicalRecipeOfQuestion","_Universe._canonicalRecipeOfFutureOr","_Universe._canonicalRecipeOfBinding","_Universe._canonicalRecipeOfGenericFunction","Error._stringToSafeString","_","_asCheck","_callMethodUnchecked0","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_canonicalRecipeOfStar","_chainSource","_cloneResult","_completeError","_createBindingRti","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createRecordRti","_createTerminalRti","_createTimer","_error","_errorTest","_failedAsCheckError","_findRule","_future","_getBindCache","_getBindingArguments","_getBindingBase","_getCachedRuntimeType","_getEvalCache","_getFunctionParameters","_getFutureOrArgument","_getGenericFunctionBase","_getGenericFunctionBounds","_getGenericFunctionParameterIndex","_getInterfaceName","_getInterfaceTypeArguments","_getIsSubtypeCache","_getKind","_getNamed","_getOptionalPositional","_getPrimary","_getPropertyTrustType","_getQuestionArgument","_getRecordFields","_getRecordPartialShapeTag","_getRequiredPositional","_getReturnType","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_getStarArgument","_hasError","_hasTimer","_installRti","_isChained","_isCheck","_isClosure","_isComplete","_isDartObject","_isSubtypeUncached","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_mayAddListener","_mayComplete","_name","_objectToString","_onError","_onValue","_parseRecipe","_recipeJoin","_removeListeners","_scheduleImmediate","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setError","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_stringToSafeString","_theUniverse","_trySetStackTrace","_unstar","_whenCompleteAction","_writeOne","_zone","allocate","arrayAt","arrayConcat","arrayLength","arraySplice","asBool","asInt","asRti","asRtiOrNull","asString","as_Type","charCodeAt","collectNamed","constructorNameFallback","contains","defineProperty","dispatchRecordExtension","dispatchRecordIndexability","dispatchRecordInterceptor","dispatchRecordProto","elementAt","environment","erasedTypes","evalCache","evalTypeVariable","fieldADI","future","getDispatchProperty","getLegacyErasedRecipe","getRuntimeTypeOfInterceptorNotArray","handleNamedGroup","handleOptionalGroup","handleStartRecord","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesValue","hasErrorCallback","hasErrorTest","instanceTypeName","interceptorFieldName","interceptorsByTag","isArray","isDigit","isEmpty","isIdentical","jsonEncodeNative","leafTags","listToString","lookupSupertype","lookupTypeVariable","mapGet","mapSet","markFixedList","normalize","objectKeys","objectToHumanReadableString","pop","position","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","recipe","sharedEmptyArray","shouldChain","stack","staticInteropGlobalContext","stringIndexOf","stringSafeToString","stringSplit","substring","thenAwait","toGenericFunctionParameter","tryStringifyException","typeRules","universe","unmangleGlobalNameIfPreservedAnyways","withLength","writeAll"], + "mappings": "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", + "x_org_dartlang_dart2js": { + "minified_names": { + "global": "A,214,B,437,C,467,D,472,E,503,F,663,G,74,H,31,I,29,J,28,K,441,L,505,M,65,N,97,O,450,P,484,Q,530,R,586,S,246,T,81,U,62,V,445,W,446,X,458,Y,459,Z,463,a,18,a0,469,a1,470,a2,485,a3,486,a4,487,a5,490,a6,493,a7,502,a8,515,a9,519,aA,460,aB,461,aC,27,aD,471,aE,475,aF,477,aG,478,aH,479,aI,480,aJ,481,aK,482,aL,483,aM,488,aN,489,aO,491,aP,497,aQ,498,aR,501,aS,257,aT,256,aU,516,aV,255,aW,517,aX,518,aY,524,aZ,525,a_,466,aa,588,ab,542,ac,543,ad,544,ae,545,af,548,ag,552,ah,555,ai,581,aj,585,ak,574,al,575,am,34,an,628,ao,88,ap,213,aq,662,ar,435,as,436,at,252,au,431,av,438,aw,258,ax,451,ay,455,az,457,b,508,b0,528,b1,549,b2,550,b3,616,b4,107,b5,442,b6,443,b7,660,b8,464,b9,494,bA,547,bB,220,bC,551,bD,100,bE,617,bF,644,bG,553,bH,554,bI,554,bJ,590,bK,596,bL,614,bM,638,bN,638,bO,638,bP,266,bQ,642,bR,267,bS,57,bT,655,bU,655,bV,431,bW,613,bX,465,bY,431,bZ,567,b_,526,ba,495,bb,653,bc,504,bd,506,be,507,bf,510,bg,657,bh,520,bi,521,bj,522,bk,523,bl,527,bm,531,bn,532,bo,533,bp,534,bq,535,br,535,bs,535,bt,536,bu,537,bv,538,bw,539,bx,540,by,541,bz,546,c,640,c0,580,c1,582,c2,89,c3,91,c4,125,c5,572,c6,242,c7,85,c8,5,c9,42,cA,654,cB,664,cC,577,cD,578,cE,583,cF,584,cG,652,cH,211,cI,224,cJ,226,cK,225,cL,223,cM,99,cN,115,cO,146,cP,90,cQ,208,cR,132,cS,124,cT,221,cU,243,cV,144,cW,238,cX,228,cY,600,cZ,604,c_,576,ca,1,cb,639,cc,16,cd,0,ce,591,cf,433,cg,671,ch,559,ci,571,cj,589,ck,659,cl,624,cm,431,cn,643,co,666,cp,568,cq,573,cr,612,cs,431,ct,658,cu,431,cv,608,cw,558,cx,607,cy,609,cz,635,d,444,d0,17,d1,73,d2,629,d3,631,d4,19,d5,56,d6,260,d7,656,d8,7,d9,419,dA,566,dB,597,dC,431,dD,569,dE,592,dF,593,dG,594,dH,557,dI,632,dJ,633,dK,634,dL,636,dM,637,dN,665,dO,431,dP,626,dQ,556,dR,561,dS,562,dT,563,dU,564,dV,579,dW,598,dX,599,dY,605,dZ,621,d_,86,da,645,db,646,dc,647,dd,648,de,649,df,650,dg,667,dh,668,di,669,dj,670,dk,432,dl,434,dm,618,dn,641,dp,560,dq,610,dr,611,ds,625,dt,627,du,595,dv,661,dw,473,dx,587,dy,620,dz,660,e,474,e0,121,e1,123,e2,227,e3,113,e4,108,e5,114,e6,109,e7,106,e8,102,e9,92,eA,603,eB,606,eC,35,eD,63,eE,630,eF,50,eG,94,eH,93,eI,61,eJ,59,eK,60,eL,87,eM,103,eN,205,eO,6,eP,51,eQ,58,eR,651,eS,264,eT,261,eU,64,eV,240,eW,23,eX,21,eY,22,eZ,265,e_,622,ea,230,eb,231,ec,32,ed,119,ee,209,ef,112,eg,136,eh,120,ei,212,ej,140,ek,111,el,122,em,236,en,145,eo,235,ep,245,eq,244,er,239,es,237,et,95,eu,83,ev,82,ew,149,ex,30,ey,601,ez,602,f,565,f0,439,f1,440,f2,419,f3,447,f4,448,f5,449,f6,452,f7,453,f8,454,f9,476,fA,137,fB,139,fC,138,fD,141,fE,143,fF,142,fG,8,fH,49,f_,20,fa,499,fb,431,fc,645,fd,646,fe,647,ff,648,fg,649,fh,650,fi,667,fj,668,fk,669,fl,670,fm,511,fn,512,fo,513,fp,514,fq,591,fr,126,fs,128,ft,127,fu,129,fv,131,fw,130,fx,133,fy,135,fz,134,h,206,i,496,j,529,k,462,l,492,m,623,n,148,o,468,p,500,q,615,r,456,t,253,u,101,v,9,w,509,x,619,y,570,z,105", + "instance": "A,704,B,681,C,689,D,696,E,697,F,690,G,691,H,675,I,676,J,699,K,709,L,712,M,682,N,679,O,686,P,693,R,695,S,673,T,676,U,700,V,705,W,713,X,431,Y,684,Z,685,a0,677,a1,678,a2,698,a3,703,a4,705,a5,706,a6,706,a7,707,a8,707,a9,708,a_,694,aa,709,ab,712,ac,674,gD,696,gE,697,gJ,699,gU,700,gac,674,gi,710,gl,701,gp,711,gv,612,h,713,i,710,j,680,k,702,l,701,m,672,n,688,p,711,q,683,sl,701,t,687,u,692,v,612" + }, + "frames": "2xHAqIem1ByB;oCAKAAyB;eAKCRG;kBACeDE;gEAIlBAE;KAGOFO;iGAaAt0BAA8CgBCeANK+CuC,A,I;qMATrC9CAAmB0BDeAVW+CoC,A,AAUvCqxBkC,A;q3DChHoBoEuB;uEA6BLlEG;+QAqTGuBiB;cAAAAa;0CAuBQ3BS;gJAYV2BiB;oFAqBLmCAARF5BiB,A;yDAkBWUW;2PAknBoBlNoB;+BAMpB6OuC;QAIF7OqC;8DAwEGhPqC;yfAmVZAmR;gZA4MAAW;gfA0DyBAW;uWAkCJAW;cAOpBAkC;6BAIiBuZoD;OAChBvZU;0DAOCydI;aAIgBzdwC;2JASjBAU;wEAiCmBAW;sCAGtBAc;gNAkIFAAMx+D8BAgE,A;keNyoE1BAkC;cAEAA0D;y4CAyPEA4D;6sBAqF6BkbuC;AACH2BmC;yEA4HtBh1BAIpjETCMA3B4BqwBc,A,M;qDJqmElBnYiD;yCACK+bW;uHAsJhB/bY;4ECloFOscI;YACch0BAAsE3BDAF1IAmxByB,kF,A;QEoE2BlxBAAuEpBqxBE,A;OAtEW2CI;uBAKK/zBAAzCJ4yBkB,AAAZmBI,A;6CA+CMAI;YACkBh0BAAyD/BDAF1IAmxByB,kF,A;QEiF+BlxBAA0DxBqxBE,A;OAzDW2CI;uBAGK/zBAApDJ4yBkB,AAAZmBS,A;4EA0EEh0BAA+BTDAF1IAmxByB,kF,A;QE2GSlxBAAgCFqxBE,A;sDAvBEnxBAA2BTHAF/IAmxBsB,A,0BE+IAnxBkF,A;QA3BSGAA4BFmxBE,A;+DAfoC8BqB;UAElCjzBAAYTHAF/IAmxBsB,A,0BE+IAnxBkF,A;QAZSGAAaFmxBE,A;gEAMPtxBAFtJAmxByB,6B;yJEkK2CiCoB;gLAsCjCNmB;0KAaF9yBAFrNRmxByB,mG;2DEmO2B8C4D;iTA+EXvzBc;y1CGzNSkwBG;gBAIjBrBW;AADuCrCAAgK/ByDQ,A;WAtJO5CO;AAFA6CG;gBAGfrBgB;AAD0CxDAAgKlC4EM,A;gBApFCrEAAzBsBoEG,A;oCA2BECG;uCA2JzBEG;sBAgJMfmB;iEAyEPxDAA/YwBoEG,A;mEAwZbCG;qEAMAAG;qEAMAAG;qEAMWvEG;sDAMkBDAA7WvC0EK,A;aAgXGlFAApWHgFG,A;sBAsWQjFG;4EAQHmBAApWIJO,A;AAqWJGG;qEAMIGAAlVT4DG,A;sBAqViC7EG;6EAU5BGQ;AACDsEQ;sBAGDvEAAzVH2EG,A;+EAgWIzEAAtVJwEG,A;sBA0VULO;sIAeNEkB;yBAGDII;kFAaCJkB;0BAImBFO;AACEAS;AACtBMM;qFAcK7DqB;AAIANK;gBAGQDK;8CAMiB6DAAxRRzYc,A;AAyRrB8XM;AAEAHM;AAEADK;uHAwCFsBM;yDAaZnDI;sEAuBFEG;eAIOqFoB;qSAkFkBvFkD;uBAKvBsCe;uDAeYOI;uBAENhvBQAvZUyuBoB,A;6DAieFltBoBAlFlB4qBgB,A;uCAsFcsDO;GAELiCoB;OAAwB/FO;uBAOMlqBO;AAA9B8oBG;gBAA8B9oBAAKrCgsBY,A;SAS0BkDW;AADV9R0B;iBAGXvIAAmCTAAAAAAAACMmXG,A,A,W;SAlC6BgBoB;AAE/BhtBG;AADO8oBG;gBACP9oBAAfAgsBY,A;mBAuCqBztBMA1hBHyuBoB,A;gEA0lBlB3sBAAoiF6BomB+B,A;6BAjiFzB+CG;qEAcY0DAAr/BY9CAAuKhByDQ,A,A;AA+0BQrEAAl7BeoEG,A;0KA87BnBvEAA33BJ0EG,A;IA43BMzEiB;AAYduDU;uEAUCvsBQA8BmBypBAA15BZgEI,A,AA25BMjEI,A;+DArBXWC;AADP4BK;0CAsCAhsBAAg8E6BomB0B,A;mEAr7EtBQC;AADP6EK;6BAKWtCAAnhCwBoEQ,A;kEAwhCCxDAAr7BxByDK,A;eAs7B4B5EAA56B5B4EsB,A;mEAu7BCbc;gDAeNvCI;AADOZAA18BFgEO,A;mDAo9BF1DG;iBAKVSG;8GAsBOqFoB;YACG9FG;iBAKVSG;wFA0BWHU;+DAYAAU;uCAWTjC0B;qJAuCcxHuB;mBAiBTyJc;AADSyCAAzwChB1DAAoEmCoEQ,A,AApEPxDAAuKhByDK,A,A;QAmmCQ5EAAzlCR4ES,A;MA2lCmBbiB;AAD3BvCI;kiDA2NmBgDQ;qBAEDIO;sCAYA9DAAv1CVgEM,A;AAw1CKjEG;qCAMG2DQ;AACFyEkB;AACEzEU;gEAOGIO;gBAELEI;kHAaMNQ;2MAgBFIO;AACjBxtBAAo+DwBomBAAK/BrfAAGaoiBAA58GwBoEG,A,A,wCAy8GhB3qBAAgBdmtBa,A,K,A;oDAh/DYnGAAv3CCNO,A;AAw3CeXM;AAEbgBM;AACcyDW;AAEd/DM;AACc+DW;AACNhEM;AACPgEQ;0DASCIQ;2DAUEAQ;oEAYbFM;yBAIIEe;AAEJEI;sGA6BAvEAApjDwBoEG,A;wIA6jDdxDAA19CTyDK,A;cAy+CahEAAp+CbgEG,A;cAs+CSrEAA9kDcoEG,A;uEAulDV3EAA1+Cb4ES,A;mBA++CIxEAAzhDJ0EI,A;GAkiDMzEG;4HAgBOJAAz/Cb2EM,A;AA0/CG1EG;eAODCAAv/CIOM,A;sFA+/CF8IuB;yDAoLPhKAAHK8JG,S;uBAKP9JAALO8JG,I;oCAWD3DO;+DAKOhBI;AACP5CgB;oGAiBOuHM;wBA4BA3DM;aAWH8BS;AADP7Be;oBAGFnDyB;AACHiFW;gCAMS5HG;cAGVqDa;AAEasEW;oBAEThFuB;AACHiFW;kCAKShIG;cAGVoDgB;AAEuB3OAApuDf2QI,A;AAquDK2CW;gCAGXlHAA95D6BoES,A;AA+5DdhFQ;AAKhB+HW;mBAqCH7ES;AACAOQ;qBAuFeqEW;AADP7BW;oBAGsBzGAAIpBkFAAz3DPzYsB,A,AA03DHyXM,AACALM,W;AANG1BAApFAoGC,AAAO9Ba,A;qBAiGK6BS;AAFN/IAA/CKvKAAz0DJ2QW,A,A;AAy3DFcW;oCAGLtEAAnGAoGC,AAAO9Ba,A;0CA0GOrFAAzjEgBoEG,A;oEAikEvBNAAn5DPzYsB,A;AAo5DHyXM;AACAIK;CACATM;4BAQeyES;AAFNjJAAzEKrKAA30DJ2QW,A,A;AAq5DFcW;oCAGLtEAA/HAoGC,AAAO9Ba,A;4CAsIOrFAArlEgBoEQ,A;0DA0lEZ3EAA7+DX4EI,A;kEAm/DazDAA7/DbyDG,A;IA8/DiBrEAAjmEMoEc,A;AAmmEd3EAAt/DT4EI,A;gCA6/DAPAA57DPzYsB,A;AA67DHyXM;AACAIK;CACATM;4BAQeyES;AAFNpJAAhHKlKAA70DJ2QW,A,A;AA87DFcW;oCAGLtEAAxKAoGC,AAAO9Ba,A;wCA+KOrFG;0DAMVyBe;qCAKGqCAA39DPzYsB,A;AA49DHyXM;AACAIK;CACATM;0BAOeyEsB;AADP7BW;oBAIR5GAAKUqFAA7+DPzYsB,A,AA8+DHyXO,AACAIM,AACATM,W;AATG1BAAtMAoGC,AAAO9Ba,A;8BAqNMpBQ;sCAEIIG;AACCzQAAj/DX2QI,A;kCA0/DMNQ;qCAGmBFO;AACZIwB;AAIPEK;AACKzQAAngEX2QI,A;uCAuhEDvGAAVOiGU,mB;AAYDiDG;AADP7BW;oBAIO3GAAKLoFAAziEPzYsB,A,AA0iEHyXM,AACAIM,AACAES,AACgBaW,AAEdhBI,AAA6BcK,AAE/BtBM,W;AAdG1BAAlQAoGC,AAAO9Ba,A;yCAsSNrFAArvE6BoEY,A;AAsvErB/EAAvqEFgFG,A;AAyqEDLG;AAAgB5EkB;QAEhBzBGAjBL/JAAnjEM2QuB,A,A;AAskEK2CG;AADP7BW;oBAIO9GAAKLuFAAtlEPzYsB,A,AAulEHyXO,AACAIM,AACAEM,AACAXM,W;AAVG1BAA/SAoGC,AAAO9Ba,A;qBAyUDnHoC;AAEMgJC;AADP7BW;oBAIR1GAAKUmFAApnEPzYsB,A,AAqnEHyXO,AACAIM,AACAEM,AACAXM,W;AAVG1BAA7UAoGC,AAAO9Ba,A;qBAoYDzHAAtCPCiB,AADYjKO,AACZiKAAKkB2CM,AACcyDW,AAEd/DM,AACc+DW,AACNhEM,AACPgEsB,oF,AAZvB9BY,A;AAyCiB+EG;AADP7BW;oBAIR7GAAKUsFAA/qEPzYsB,A,AAgrEHyXO,AACAIM,AACAEM,AACAXM,W;AAVG1BAAxYAoGC,AAAO9Ba,A;uBAgaDtHSAPHnKAAlrEI2QwB,A,A;AA2rEK2CC;AADP7BW;sCAGLtEAApaAoGC,AAAO9Ba,A;sDA8aQpBQ;kCAICIQ;AACXrEAAl4EyBoEe,A;qEAm5EvBNAAruEPzYsB,A;AAsuEHyXO;AACAIM;AACAEK;CACAXM;4FAqKoB0FM;AACJGU;kBAGT7DkB;4LAcHuDW;cAIAAW;cAIAAO;KACWgBI;AAAkB7DG;AAAqBqCU;cAIlDQO;AACIaM;AAA2BGG;AAA3BHAAkWSzEU,A;cA9Vb4DO;AAAsBxGM;AAAiBwHW;cAIvChBO;AAAsBzGM;AAAkByHW;eAIxChBO;AAAsBrGM;AAAeqHW;cAIrCfAAgFRDQ,AAAYPS,AACexDQ,A;iEArEX+EG;AACRhBO;cAIkB7CG;AAAqBqCU;AAC/BHK;iBAIA2BG;AACRhBO;cAIkB7CG;AAAqBqCU;AAC/BHK;iBAIA2BG;AACRhBO;cAIkB7CG;AAAqBqCU;AAC/BHK;cAIRWW;AACACAAqCRDQ,AAAYPS,AACexDQ,A;sCA9BnBgEAA6BRDQ,AAAYPS,AACexDQ,A;cA1BnB4BAA2KSxPAAoCE6NY,AAAmBuDI,MACtBuBI,AAAkB7DM,AACPfY,A,AArC3B4DU,AACAAW,A;eAzKQCAAqBRDQ,AAAYPS,AACexDQ,A;eAlBnB2BAAyKSlBAAqCERY,AAAmBuDI,MACjBuBI,AAAkB7DM,AACZfY,A,AAtC3B4DU,AACAAW,A;cAvKYlCAA4KK0CmB,AAGjBRO,AAAmBWkB,AACnBXW,AACACAApKADQ,AAAYPS,AACexDQ,A,M;wCANhBuDU;YACGwBI;AAAkB7DK;sDAWrBVkB;uCAIXuDU;uEAQWvDkB;0FAIyCiCoB;kBAM7BiCmB;SAKbKM;AAAkB7DO;AADZGAAhzBDtFAA76DsBoEW,A,AA+6DjB/EAAh2DNgFG,A,UAm2DaxEAA/2Db0EG,A,AAk3DY0CI,+C;AAsyBxBeO;AAEc1CkB;AAGd0CU;4BAMqBgBiB;AAEZxBQ;sBAGTQO;2BAE4B7Cc;AAChBnFAA9uFuBoEY,A;AAgvF/B4DO;YAGmCXK;cAInCWO;+BA+BKRa;AAnBYwB2B;uCAwBIxBU;aAIbAU;cAIRQU;WAIJAU;YAKKRU;iBAGIAwB;AAC0BYmB;AACbAK;SACcjDM;AACmBrBAA3iFlBzYc,A;AA4iFf8XM;AAEAHM;AAEADK;AACpBiFO;2BASAAO;OAGyBzDY;kFAgCnBiDc;UAERQO;AAAsBtGM;AAAgBsHY;iBAItChBO;AAAsB1GM;AAAc0HY;0EAOnB9EgB;AAAmBuDI;MACtBuBI;AAAkB7DM;AACPfY;2DAiBKgEK;8FASZnEQ;8BAEAFI;sBAOAEQ;+BAGAFI;wBAOL/DAAj6FsBoEG,A;4BAm6FR/EAAp1FfgFE,A;IAq1FYjFM;AACP6EQ;gBAEDIK;SAIEhFAA51FNgFM,A;AA61FDrEAA56FwBoEQ,A;wFAm7FbtEU;AACPmEQ;QAEDIK;qEAwDDtE8B;AACGmHW;YAET7F8B;AACF8FW;0GA8DLlK0B;sBAEY+CAAljGuBoEG,A;wCAyjGnC/mBAA4ZE2iBG,A;0CAtZeqEE;AADHzEAAx7FFwEc,A;YA67FApEAAnkGuBoEsB,A;iCA2kGR3EAA99Ff4EQ,A;0EAu+FM5EAAv+FN4EY,A;wBA2+FMzDAAr/FNyDY,A;qCA6/FIzDAA7/FJyDY,A;qEAghGI5EAAtgGJ4Ea,A;2FAkhGQhEAAvhGRgEY,A;yBAkiGa5EAA7hGb4ES,A;+FAyiGiBhEAA9iGjBgEQ,A;+IAskGI1EM;AACAAM;AACGsEgB;AACAAQ;SAGkBDwB;AACAAwB;oBAGjBKO;AACAAI;kEAOkB3EAApkG1B2EM,A;AAqkGN3EAArkGM2EQ,A;sQAgmGM5DAA1mGN4DQ,A;AA2mGM5DAA3mGN4DU,A;aAgnGsB7EO;AACAAM;AAGdgBM;AAEAAM;AACeyDW;AACAAQ;yBAMf/DM;AAEAAM;AACe+DW;AACAAQ;wCAKAFI;YACbMgB;6BAOaNI;YACbMkB;6BASbNM;YACaMgB;YAMOpEM;AACAAM;AACPgEW;AACAAQ;0BAIFMS;0BAGEAI;2BAIEJM;qCAMcJM;sBAENAM;YACbMkB;+BAQRFM;0DASItEAAvvGH0EM,A;AAwvGG1EAAxvGH0EQ,A;WAswGOtFAAnhDL8JG,I;2CAshDCxEI;YAIMyCI;uBAEH/CQ;AACWvLoBAsLA8Ka,AAAjB4EK,A;+BApLW7DK;wBAITzEQ;gBAOFAW;AACAAQ;8BAWImEQ;2BAUAIO;AACAAU;6CAwCA/DM;AACAAM;AACA2DgB;AACAAQ;aAEF1DAA30GFgEM,A;AA40GEhEAA50GFgEG,A;oCAg1GMFO;AACAAU;iCASPrEAAn7GwBoE+B,A;sCAu7GIxDAAp1G3ByDK,A;eAq1G+B5EAA30G/B4EI,A;uBAu1GiBpH+B;uBAQlB+CAA58GwBoEG,A;qDA+/G1BkD4B;AACErDQ;oBAEEMI;4CAOgBfa;AAAjB4EI;grBQvpHRvJS;4BA2BRxTS;wBAwGOASApCS6TAAAA7TyB,A,a;uCAmDCmaE;iMA2DEnaoB;AAAAiYW;6HAiCP5MK;6IC9SIAM;0DAYV+MQ;2BAMJAsB;OAEgBjGY;2BAqjBFwDiB;AACI5CG;cAIE/D0D;uIAyBN2GkB;AACI5CI;mBAIE/D0D;0GAuBb/ae;uFAuIkBuhBqB;gCAGY/BG;AACxBiHM;sHA+BcIG;2CACDtCK;0CAIbkCM;mDA4EIGG;uLAkBTmCwB;wBAMgBlHe;AACFiBsB;AACZ/DyB;gDAcI+DwB;iBAEVkBiB;AAGAXmB;kQGt5BQNU;iBAUqBhXqB;oCAKrBgXU;qFAoBkBhXiB;2IAuD3B/LU;gBCg5EG+LqB;OAAAAU;gtDEr/DQsbgB;AAED/CO;0BAGFAO;oBAGEAU;4Id/dJLAcyLSkFAnB4NX5BiB,A,A;QKnZA9EO;oUgBkxBe1Wc;qBAGpB8d6B;4DAMKpMG;sCC11BP2KO;mgBE0cgBrcAWosBSAAtBplCvBAAAtB0BmaAAAAnaiC,A,A,yB,A;sYajCOkamE;+IERnBgDO;AAAA7KqB;mDAEhB0CuB;+gB7B2T8BmHkB;qDAqB5B5Be;8ZQgX0BoBiB;0CAaF1boB;QAAAAW;k3BwBrXf6ZC;kpB/Bg1CiByB+B;goBA66BVYkB;0BADAzF0C;iyCI79EX3uBiB;iBAAAAAAoZ0BqwBqB,A;eA9YDxeMAsZZweqB,A;0aQ1ahB1CkB;kaAsKAzVa;yKCjOQwWW;wDAEZvDK;+EAgBYuDW;mFA4HPwEW;oBACExCW;AAA6B9EI;8CAazB8EK;gGAQLsCU;mTAsIkBzPW;kGAoBArLuC;OACPyRsD;sDASOzR+B;OACPuduD;2GAoGbhHG;6CAQiBxDQ;AACL+CY;qBAQd7hBe;+EAQEsiBG;kGAiBiBxDQ;AACL+CY;gCAQd7hBe;0RAgKFgkBW;kCAQAZQA3OoBrXc,A;4FAySpB/LkB;+FAwBAAkB;2jBAwEyB2mBGAjnBlBpCS,AAAUFa,A;+BAmnBwB7EE;uBACDAQ;mBAEHzTiB;yDAKiB8ViB;AAC3BNmB;IACqB/BI;iMAkBjBkHC;IAAAAAA1rBxBnCQ,AAA+B5BO,A;kDA4rBH5WoB;0FAOIyTS;iBAElBsHAA3sBdpEU,A;wDAgtBsBlDO;gDAGQzTiB;+PCyqBnC0aU;ieezhDwB1akB;sBAAAAW;QAAAAa;eAwfP0be;ujBxBpDK9KK;mkBc5aMsLuB;kVKyaxBlcwB;2+PxBm5BWuc0G;CAAAAG;6DAUAC8G;CAAAAG;2DAUACuD;CAAAAG;6DAUAC2D;CAAAAG;" + } +} diff --git a/web/libflutter_recorder_plugin.js b/web/libflutter_recorder_plugin.js index 14515f3..c3f47ee 100644 --- a/web/libflutter_recorder_plugin.js +++ b/web/libflutter_recorder_plugin.js @@ -1 +1,19 @@ -var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{if(isFileURI(url)){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null);return}fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))}).then(onload,onerror)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];function getSafeHeapType(bytes,isFloat){switch(bytes){case 1:return"i8";case 2:return"i16";case 4:return isFloat?"float":"i32";case 8:return isFloat?"double":"i64";default:abort(`getSafeHeapType() invalid bytes=${bytes}`)}}function SAFE_HEAP_STORE(dest,value,bytes,isFloat){if(dest<=0)abort(`segmentation fault storing ${bytes} bytes to address ${dest}`);if(dest%bytes!==0)abort(`alignment error storing to address ${dest}, which was expected to be aligned to a multiple of ${bytes}`);if(runtimeInitialized){var brk=_sbrk(0);if(dest+bytes>brk)abort(`segmentation fault, exceeded the top of the available dynamic heap when storing ${bytes} bytes to address ${dest}. DYNAMICTOP=${brk}`);if(brk<_emscripten_stack_get_base())abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`);if(brk>wasmMemory.buffer.byteLength)abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`)}setValue_safe(dest,value,getSafeHeapType(bytes,isFloat));return value}function SAFE_HEAP_STORE_D(dest,value,bytes){return SAFE_HEAP_STORE(dest,value,bytes,true)}function SAFE_HEAP_LOAD(dest,bytes,unsigned,isFloat){if(dest<=0)abort(`segmentation fault loading ${bytes} bytes from address ${dest}`);if(dest%bytes!==0)abort(`alignment error loading from address ${dest}, which was expected to be aligned to a multiple of ${bytes}`);if(runtimeInitialized){var brk=_sbrk(0);if(dest+bytes>brk)abort(`segmentation fault, exceeded the top of the available dynamic heap when loading ${bytes} bytes from address ${dest}. DYNAMICTOP=${brk}`);if(brk<_emscripten_stack_get_base())abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`);if(brk>wasmMemory.buffer.byteLength)abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`)}var type=getSafeHeapType(bytes,isFloat);var ret=getValue_safe(dest,type);if(unsigned)ret=unSign(ret,parseInt(type.substr(1),10));return ret}function SAFE_HEAP_LOAD_D(dest,bytes,unsigned){return SAFE_HEAP_LOAD(dest,bytes,unsigned,true)}function segfault(){abort("segmentation fault")}function alignfault(){abort("alignment fault")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="libflutter_recorder_plugin.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["o"];updateMemoryViews();addOnInit(wasmExports["p"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var ASM_CONSTS={17244:()=>{if(!Module.wasmWorker){var workerUri="assets/packages/flutter_recorder/web/worker.dart.js";Module.wasmWorker=new Worker(workerUri);console.log("EM_ASM creating web worker! "+workerUri+" "+Module.wasmWorker)}else{console.log("EM_ASM web worker already created!")}},17534:($0,$1,$2)=>{if(Module.wasmWorker){Module.wasmWorker.postMessage({message:UTF8ToString($0),isSilent:$1,energyDb:$2})}else{console.error("Worker not found.")}},17704:($0,$1,$2)=>{if(Module.wasmWorker){const audioDataArray=new Uint8Array(Module.HEAPU8.subarray($1,$1+$2));Module.wasmWorker.postMessage({message:UTF8ToString($0),data:audioDataArray})}else{console.error("Worker not found.")}},17943:($0,$1,$2,$3,$4)=>{if(typeof window==="undefined"||(window.AudioContext||window.webkitAudioContext)===undefined){return 0}if(typeof window.miniaudio==="undefined"){window.miniaudio={referenceCount:0};window.miniaudio.device_type={};window.miniaudio.device_type.playback=$0;window.miniaudio.device_type.capture=$1;window.miniaudio.device_type.duplex=$2;window.miniaudio.device_state={};window.miniaudio.device_state.stopped=$3;window.miniaudio.device_state.started=$4;miniaudio.devices=[];miniaudio.track_device=function(device){for(var iDevice=0;iDevice0){if(miniaudio.devices[miniaudio.devices.length-1]==null){miniaudio.devices.pop()}else{break}}};miniaudio.untrack_device=function(device){for(var iDevice=0;iDevice{Module._ma_device__on_notification_unlocked(device.pDevice)},error=>{console.error("Failed to resume audiocontext",error)})}}miniaudio.unlock_event_types.map(function(event_type){document.removeEventListener(event_type,miniaudio.unlock,true)})};miniaudio.unlock_event_types.map(function(event_type){document.addEventListener(event_type,miniaudio.unlock,true)})}window.miniaudio.referenceCount+=1;return 1},20101:()=>{if(typeof window.miniaudio!=="undefined"){window.miniaudio.referenceCount-=1;if(window.miniaudio.referenceCount===0){delete window.miniaudio}}},20265:()=>navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined,20369:()=>{try{var temp=new(window.AudioContext||window.webkitAudioContext);var sampleRate=temp.sampleRate;temp.close();return sampleRate}catch(e){return 0}},20540:($0,$1,$2,$3,$4,$5)=>{var deviceType=$0;var channels=$1;var sampleRate=$2;var bufferSize=$3;var pIntermediaryBuffer=$4;var pDevice=$5;if(typeof window.miniaudio==="undefined"){return-1}var device={};var audioContextOptions={};if(deviceType==window.miniaudio.device_type.playback&&sampleRate!=0){audioContextOptions.sampleRate=sampleRate}device.webaudio=new(window.AudioContext||window.webkitAudioContext)(audioContextOptions);device.webaudio.suspend();device.state=window.miniaudio.device_state.stopped;var channelCountIn=0;var channelCountOut=channels;if(deviceType!=window.miniaudio.device_type.playback){channelCountIn=channels}device.scriptNode=device.webaudio.createScriptProcessor(bufferSize,channelCountIn,channelCountOut);device.scriptNode.onaudioprocess=function(e){if(device.intermediaryBufferView==null||device.intermediaryBufferView.length==0){device.intermediaryBufferView=new Float32Array(Module.HEAPF32.buffer,pIntermediaryBuffer,bufferSize*channels)}if(deviceType==miniaudio.device_type.capture||deviceType==miniaudio.device_type.duplex){for(var iChannel=0;iChannelminiaudio.get_device_by_index($0).webaudio.sampleRate,23434:$0=>{var device=miniaudio.get_device_by_index($0);if(device.scriptNode!==undefined){device.scriptNode.onaudioprocess=function(e){};device.scriptNode.disconnect();device.scriptNode=undefined}if(device.streamNode!==undefined){device.streamNode.disconnect();device.streamNode=undefined}device.webaudio.close();device.webaudio=undefined;device.pDevice=undefined},23827:$0=>{miniaudio.untrack_device_by_index($0)},23870:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.resume();device.state=miniaudio.device_state.started},23995:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.suspend();device.state=miniaudio.device_state.stopped},24121:($0,$1)=>{if($0==0||$1<=0){console.error("Invalid buffer pointer or number of frames");return}let buffer;switch(Module.format){case"u8":buffer=HEAPU8.subarray($0,$0+$1*Module.numChannels);break;case"s16":buffer=HEAP16.subarray($0/2,$0/2+$1*Module.numChannels);break;case"s24":buffer=HEAPU8.subarray($0,$0+$1*Module.numChannels*3);break;case"s32":buffer=HEAP32.subarray($0/4,$0/4+$1*Module.numChannels);break;case"f32":default:buffer=HEAPF32.subarray($0/4,$0/4+$1*Module.numChannels)}if(!Module.dataChunks){Module.dataChunks=[]}Module.dataChunks.push(...buffer)},24779:()=>{function encodeWAV(){const numChannels=Module.numChannels;const sampleRate=Module.sampleRate;let bitsPerSample;let audioData;let formatCode=1;switch(Module.format){case"u8":bitsPerSample=8;audioData=new Uint8Array(Module.dataChunks);break;case"s16":bitsPerSample=16;audioData=new Int16Array(Module.dataChunks);break;case"s24":bitsPerSample=24;audioData=new Uint8Array(Module.dataChunks);break;case"s32":bitsPerSample=32;audioData=new Int32Array(Module.dataChunks);break;case"f32":bitsPerSample=32;formatCode=3;audioData=new Float32Array(Module.dataChunks);break;default:throw new Error("Formato non supportato")}const blockAlign=numChannels*(bitsPerSample/8);const byteRate=sampleRate*blockAlign;let dataSize=audioData.length*(bitsPerSample/8);const totalFileSize=44+dataSize;if(Module.format=="s24"){dataSize=audioData.length}const wavBuffer=new ArrayBuffer(totalFileSize);const view=new DataView(wavBuffer);view.setUint32(0,1380533830,false);view.setUint32(4,totalFileSize-8,true);view.setUint32(8,1463899717,false);view.setUint32(12,1718449184,false);view.setUint32(16,16,true);view.setUint16(20,formatCode,true);view.setUint16(22,numChannels,true);view.setUint32(24,sampleRate,true);view.setUint32(28,byteRate,true);view.setUint16(32,blockAlign,true);view.setUint16(34,bitsPerSample,true);view.setUint32(36,1684108385,false);view.setUint32(40,dataSize,true);for(let i=0;i{let format;switch($2){case 5:format="f32";break;case 4:format="s32";break;case 3:format="s24";break;case 2:format="s16";break;case 1:format="u8";break;default:format="unknown";break}console.log("EM_ASM init wav! "+$0+" "+$1+" "+format);Module.dataChunks=[];Module.fileName="output.wav";Module.numChannels=$0;Module.sampleRate=$1;Module.format=format}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}Module["ExitStatus"]=ExitStatus;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};Module["callRuntimeCallbacks"]=callRuntimeCallbacks;function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return SAFE_HEAP_LOAD(ptr,1,0);case"i8":return SAFE_HEAP_LOAD(ptr,1,0);case"i16":return SAFE_HEAP_LOAD((ptr>>1)*2,2,0);case"i32":return SAFE_HEAP_LOAD((ptr>>2)*4,4,0);case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return SAFE_HEAP_LOAD_D((ptr>>2)*4,4,0);case"double":return SAFE_HEAP_LOAD_D((ptr>>3)*8,8,0);case"*":return SAFE_HEAP_LOAD((ptr>>2)*4,4,1);default:abort(`invalid type for getValue: ${type}`)}}Module["getValue"]=getValue;function getValue_safe(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}Module["getValue_safe"]=getValue_safe;var noExitRuntime=Module["noExitRuntime"]||true;Module["noExitRuntime"]=noExitRuntime;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":SAFE_HEAP_STORE(ptr,value,1);break;case"i8":SAFE_HEAP_STORE(ptr,value,1);break;case"i16":SAFE_HEAP_STORE((ptr>>1)*2,value,2);break;case"i32":SAFE_HEAP_STORE((ptr>>2)*4,value,4);break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":SAFE_HEAP_STORE_D((ptr>>2)*4,value,4);break;case"double":SAFE_HEAP_STORE_D((ptr>>3)*8,value,8);break;case"*":SAFE_HEAP_STORE((ptr>>2)*4,value,4);break;default:abort(`invalid type for setValue: ${type}`)}}Module["setValue"]=setValue;function setValue_safe(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}Module["setValue_safe"]=setValue_safe;var stackRestore=val=>__emscripten_stack_restore(val);Module["stackRestore"]=stackRestore;var stackSave=()=>_emscripten_stack_get_current();Module["stackSave"]=stackSave;var unSign=(value,bits)=>{if(value>=0){return value}return bits<=32?2*Math.abs(1<{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};Module["UTF8ArrayToString"]=UTF8ArrayToString;var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";Module["UTF8ToString"]=UTF8ToString;var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};Module["___assert_fail"]=___assert_fail;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){SAFE_HEAP_STORE((this.ptr+4>>2)*4,type,4)}get_type(){return SAFE_HEAP_LOAD((this.ptr+4>>2)*4,4,1)}set_destructor(destructor){SAFE_HEAP_STORE((this.ptr+8>>2)*4,destructor,4)}get_destructor(){return SAFE_HEAP_LOAD((this.ptr+8>>2)*4,4,1)}set_caught(caught){caught=caught?1:0;SAFE_HEAP_STORE(this.ptr+12,caught,1)}get_caught(){return SAFE_HEAP_LOAD(this.ptr+12,1,0)!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;SAFE_HEAP_STORE(this.ptr+13,rethrown,1)}get_rethrown(){return SAFE_HEAP_LOAD(this.ptr+13,1,0)!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){SAFE_HEAP_STORE((this.ptr+16>>2)*4,adjustedPtr,4)}get_adjusted_ptr(){return SAFE_HEAP_LOAD((this.ptr+16>>2)*4,4,1)}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return SAFE_HEAP_LOAD((this.excPtr>>2)*4,4,1)}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}Module["ExceptionInfo"]=ExceptionInfo;var exceptionLast=0;Module["exceptionLast"]=exceptionLast;var uncaughtExceptionCount=0;Module["uncaughtExceptionCount"]=uncaughtExceptionCount;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};Module["___cxa_throw"]=___cxa_throw;var __abort_js=()=>{abort("")};Module["__abort_js"]=__abort_js;var nowIsMonotonic=1;Module["nowIsMonotonic"]=nowIsMonotonic;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;Module["__emscripten_get_now_is_monotonic"]=__emscripten_get_now_is_monotonic;var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);Module["__emscripten_memcpy_js"]=__emscripten_memcpy_js;var readEmAsmArgsArray=[];Module["readEmAsmArgsArray"]=readEmAsmArgsArray;var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=SAFE_HEAP_LOAD(sigPtr++,1,1)){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?SAFE_HEAP_LOAD((buf>>2)*4,4,1):ch==105?SAFE_HEAP_LOAD((buf>>2)*4,4,0):SAFE_HEAP_LOAD_D((buf>>3)*8,8,0));buf+=wide?8:4}return readEmAsmArgsArray};Module["readEmAsmArgs"]=readEmAsmArgs;var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};Module["runEmAsmFunction"]=runEmAsmFunction;var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);Module["_emscripten_asm_const_int"]=_emscripten_asm_const_int;var _emscripten_date_now=()=>Date.now();Module["_emscripten_date_now"]=_emscripten_date_now;var _emscripten_get_now;_emscripten_get_now=()=>performance.now();Module["_emscripten_get_now"]=_emscripten_get_now;var getHeapMax=()=>2147483648;Module["getHeapMax"]=getHeapMax;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};Module["growMemory"]=growMemory;var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};Module["_emscripten_resize_heap"]=_emscripten_resize_heap;var runtimeKeepaliveCounter=0;Module["runtimeKeepaliveCounter"]=runtimeKeepaliveCounter;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;Module["keepRuntimeAlive"]=keepRuntimeAlive;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};Module["_proc_exit"]=_proc_exit;var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};Module["exitJS"]=exitJS;var _exit=exitJS;Module["_exit"]=_exit;var _fd_close=fd=>52;Module["_fd_close"]=_fd_close;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;Module["convertI32PairToI53Checked"]=convertI32PairToI53Checked;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);return 70}Module["_fd_seek"]=_fd_seek;var printCharBuffers=[null,[],[]];Module["printCharBuffers"]=printCharBuffers;var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};Module["printChar"]=printChar;var flush_NO_FILESYSTEM=()=>{if(printCharBuffers[1].length)printChar(1,10);if(printCharBuffers[2].length)printChar(2,10)};Module["flush_NO_FILESYSTEM"]=flush_NO_FILESYSTEM;var SYSCALLS={varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};Module["SYSCALLS"]=SYSCALLS;var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2)*4,4,1);var len=SAFE_HEAP_LOAD((iov+4>>2)*4,4,1);iov+=8;for(var j=0;j>2)*4,num,4);return 0};Module["_fd_write"]=_fd_write;var getCFunc=ident=>{var func=Module["_"+ident];return func};Module["getCFunc"]=getCFunc;var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};Module["writeArrayToMemory"]=writeArrayToMemory;var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};Module["lengthBytesUTF8"]=lengthBytesUTF8;var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};Module["stringToUTF8Array"]=stringToUTF8Array;var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);Module["stringToUTF8"]=stringToUTF8;var stackAlloc=sz=>__emscripten_stack_alloc(sz);Module["stackAlloc"]=stackAlloc;var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};Module["stringToUTF8OnStack"]=stringToUTF8OnStack;var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};Module["cwrap"]=cwrap;var wasmImports={a:___assert_fail,f:___cxa_throw,n:__abort_js,i:__emscripten_get_now_is_monotonic,k:__emscripten_memcpy_js,c:alignfault,d:_emscripten_asm_const_int,j:_emscripten_date_now,g:_emscripten_resize_heap,l:_exit,h:_fd_close,m:_fd_seek,e:_fd_write,b:segfault};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["p"])();var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["q"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["r"])(a0);var __Z35ma_device__on_notification_unlockedP9ma_device=Module["__Z35ma_device__on_notification_unlockedP9ma_device"]=a0=>(__Z35ma_device__on_notification_unlockedP9ma_device=Module["__Z35ma_device__on_notification_unlockedP9ma_device"]=wasmExports["s"])(a0);var _ma_malloc_emscripten=Module["_ma_malloc_emscripten"]=(a0,a1)=>(_ma_malloc_emscripten=Module["_ma_malloc_emscripten"]=wasmExports["t"])(a0,a1);var _ma_free_emscripten=Module["_ma_free_emscripten"]=(a0,a1)=>(_ma_free_emscripten=Module["_ma_free_emscripten"]=wasmExports["u"])(a0,a1);var _ma_device_process_pcm_frames_capture__webaudio=Module["_ma_device_process_pcm_frames_capture__webaudio"]=(a0,a1,a2)=>(_ma_device_process_pcm_frames_capture__webaudio=Module["_ma_device_process_pcm_frames_capture__webaudio"]=wasmExports["v"])(a0,a1,a2);var _ma_device_process_pcm_frames_playback__webaudio=Module["_ma_device_process_pcm_frames_playback__webaudio"]=(a0,a1,a2)=>(_ma_device_process_pcm_frames_playback__webaudio=Module["_ma_device_process_pcm_frames_playback__webaudio"]=wasmExports["w"])(a0,a1,a2);var _createWorkerInWasm=Module["_createWorkerInWasm"]=()=>(_createWorkerInWasm=Module["_createWorkerInWasm"]=wasmExports["x"])();var __Z24sendSilenceEventToWorkerPKcbf=Module["__Z24sendSilenceEventToWorkerPKcbf"]=(a0,a1,a2)=>(__Z24sendSilenceEventToWorkerPKcbf=Module["__Z24sendSilenceEventToWorkerPKcbf"]=wasmExports["y"])(a0,a1,a2);var __Z18sendStreamToWorkerPKcPhi=Module["__Z18sendStreamToWorkerPKcPhi"]=(a0,a1,a2)=>(__Z18sendStreamToWorkerPKcPhi=Module["__Z18sendStreamToWorkerPKcPhi"]=wasmExports["z"])(a0,a1,a2);var _setDartEventCallback=Module["_setDartEventCallback"]=(a0,a1)=>(_setDartEventCallback=Module["_setDartEventCallback"]=wasmExports["A"])(a0,a1);var _nativeFree=Module["_nativeFree"]=a0=>(_nativeFree=Module["_nativeFree"]=wasmExports["B"])(a0);var _listCaptureDevices=Module["_listCaptureDevices"]=(a0,a1,a2,a3)=>(_listCaptureDevices=Module["_listCaptureDevices"]=wasmExports["C"])(a0,a1,a2,a3);var _freeListCaptureDevices=Module["_freeListCaptureDevices"]=(a0,a1,a2,a3)=>(_freeListCaptureDevices=Module["_freeListCaptureDevices"]=wasmExports["D"])(a0,a1,a2,a3);var _init=Module["_init"]=(a0,a1,a2,a3)=>(_init=Module["_init"]=wasmExports["E"])(a0,a1,a2,a3);var _deinit=Module["_deinit"]=()=>(_deinit=Module["_deinit"]=wasmExports["F"])();var _isInited=Module["_isInited"]=()=>(_isInited=Module["_isInited"]=wasmExports["G"])();var _isDeviceStarted=Module["_isDeviceStarted"]=()=>(_isDeviceStarted=Module["_isDeviceStarted"]=wasmExports["H"])();var __Z16isCaptureStartedv=Module["__Z16isCaptureStartedv"]=()=>(__Z16isCaptureStartedv=Module["__Z16isCaptureStartedv"]=wasmExports["I"])();var _start=Module["_start"]=()=>(_start=Module["_start"]=wasmExports["J"])();var _stop=Module["_stop"]=()=>(_stop=Module["_stop"]=wasmExports["K"])();var _startStreamingData=Module["_startStreamingData"]=()=>(_startStreamingData=Module["_startStreamingData"]=wasmExports["L"])();var _stopStreamingData=Module["_stopStreamingData"]=()=>(_stopStreamingData=Module["_stopStreamingData"]=wasmExports["M"])();var _setSilenceDetection=Module["_setSilenceDetection"]=a0=>(_setSilenceDetection=Module["_setSilenceDetection"]=wasmExports["N"])(a0);var _setSilenceThresholdDb=Module["_setSilenceThresholdDb"]=a0=>(_setSilenceThresholdDb=Module["_setSilenceThresholdDb"]=wasmExports["O"])(a0);var _setSilenceDuration=Module["_setSilenceDuration"]=a0=>(_setSilenceDuration=Module["_setSilenceDuration"]=wasmExports["P"])(a0);var _setSecondsOfAudioToWriteBefore=Module["_setSecondsOfAudioToWriteBefore"]=a0=>(_setSecondsOfAudioToWriteBefore=Module["_setSecondsOfAudioToWriteBefore"]=wasmExports["Q"])(a0);var _startRecording=Module["_startRecording"]=a0=>(_startRecording=Module["_startRecording"]=wasmExports["R"])(a0);var _setPauseRecording=Module["_setPauseRecording"]=a0=>(_setPauseRecording=Module["_setPauseRecording"]=wasmExports["S"])(a0);var _stopRecording=Module["_stopRecording"]=()=>(_stopRecording=Module["_stopRecording"]=wasmExports["T"])();var _getVolumeDb=Module["_getVolumeDb"]=a0=>(_getVolumeDb=Module["_getVolumeDb"]=wasmExports["U"])(a0);var _setFftSmoothing=Module["_setFftSmoothing"]=a0=>(_setFftSmoothing=Module["_setFftSmoothing"]=wasmExports["V"])(a0);var _getFft=Module["_getFft"]=a0=>(_getFft=Module["_getFft"]=wasmExports["W"])(a0);var _getWave=Module["_getWave"]=a0=>(_getWave=Module["_getWave"]=wasmExports["X"])(a0);var _getTexture=Module["_getTexture"]=a0=>(_getTexture=Module["_getTexture"]=wasmExports["Y"])(a0);var _getTexture2D=Module["_getTexture2D"]=a0=>(_getTexture2D=Module["_getTexture2D"]=wasmExports["Z"])(a0);var _getTextureValue=Module["_getTextureValue"]=(a0,a1)=>(_getTextureValue=Module["_getTextureValue"]=wasmExports["_"])(a0,a1);var _emscripten_get_sbrk_ptr=()=>(_emscripten_get_sbrk_ptr=wasmExports["aa"])();var _sbrk=a0=>(_sbrk=wasmExports["ba"])(a0);var _emscripten_stack_get_base=()=>(_emscripten_stack_get_base=wasmExports["ca"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["da"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["ea"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["fa"])();var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["ga"])(a0);var dynCall_iiiji=Module["dynCall_iiiji"]=(a0,a1,a2,a3,a4,a5)=>(dynCall_iiiji=Module["dynCall_iiiji"]=wasmExports["ha"])(a0,a1,a2,a3,a4,a5);var dynCall_jii=Module["dynCall_jii"]=(a0,a1,a2)=>(dynCall_jii=Module["dynCall_jii"]=wasmExports["ia"])(a0,a1,a2);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["ja"])(a0,a1,a2,a3,a4);Module["ccall"]=ccall;Module["cwrap"]=cwrap;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + +var RecorderModule = (() => { + var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; + if (typeof __filename != 'undefined') _scriptName = _scriptName || __filename; + return ( +function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];function getSafeHeapType(bytes,isFloat){switch(bytes){case 1:return"i8";case 2:return"i16";case 4:return isFloat?"float":"i32";case 8:return isFloat?"double":"i64";default:abort(`getSafeHeapType() invalid bytes=${bytes}`)}}function SAFE_HEAP_STORE(dest,value,bytes,isFloat){if(dest<=0)abort(`segmentation fault storing ${bytes} bytes to address ${dest}`);if(dest%bytes!==0)abort(`alignment error storing to address ${dest}, which was expected to be aligned to a multiple of ${bytes}`);if(runtimeInitialized){var brk=_sbrk(0);if(dest+bytes>brk)abort(`segmentation fault, exceeded the top of the available dynamic heap when storing ${bytes} bytes to address ${dest}. DYNAMICTOP=${brk}`);if(brk<_emscripten_stack_get_base())abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`);if(brk>wasmMemory.buffer.byteLength)abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`)}setValue_safe(dest,value,getSafeHeapType(bytes,isFloat));return value}function SAFE_HEAP_STORE_D(dest,value,bytes){return SAFE_HEAP_STORE(dest,value,bytes,true)}function SAFE_HEAP_LOAD(dest,bytes,unsigned,isFloat){if(dest<=0)abort(`segmentation fault loading ${bytes} bytes from address ${dest}`);if(dest%bytes!==0)abort(`alignment error loading from address ${dest}, which was expected to be aligned to a multiple of ${bytes}`);if(runtimeInitialized){var brk=_sbrk(0);if(dest+bytes>brk)abort(`segmentation fault, exceeded the top of the available dynamic heap when loading ${bytes} bytes from address ${dest}. DYNAMICTOP=${brk}`);if(brk<_emscripten_stack_get_base())abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`);if(brk>wasmMemory.buffer.byteLength)abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`)}var type=getSafeHeapType(bytes,isFloat);var ret=getValue_safe(dest,type);if(unsigned)ret=unSign(ret,parseInt(type.substr(1),10));return ret}function SAFE_HEAP_LOAD_D(dest,bytes,unsigned){return SAFE_HEAP_LOAD(dest,bytes,unsigned,true)}function segfault(){abort("segmentation fault")}function alignfault(){abort("alignment fault")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="libflutter_recorder_plugin.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["s"];updateMemoryViews();addOnInit(wasmExports["t"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={31912:()=>{if(!RecorderModule.wasmWorker){var workerUri="assets/packages/flutter_recorder/web/worker.dart.js";RecorderModule.wasmWorker=new Worker(workerUri);console.log("EM_ASM creating web worker! "+workerUri+" "+RecorderModule.wasmWorker)}else{console.log("EM_ASM web worker already created!")}},32226:($0,$1,$2)=>{if(RecorderModule.wasmWorker){RecorderModule.wasmWorker.postMessage({message:UTF8ToString($0),isSilent:$1,energyDb:$2})}else{console.error("Worker not found.")}},32412:($0,$1,$2)=>{if(RecorderModule.wasmWorker){const audioDataArray=new Uint8Array(RecorderModule.HEAPU8.subarray($1,$1+$2));RecorderModule.wasmWorker.postMessage({message:UTF8ToString($0),data:audioDataArray})}else{console.error("Worker not found.")}},32675:($0,$1,$2,$3,$4)=>{if(typeof window==="undefined"||(window.AudioContext||window.webkitAudioContext)===undefined){return 0}if(typeof window.miniaudio==="undefined"){window.miniaudio={referenceCount:0};window.miniaudio.device_type={};window.miniaudio.device_type.playback=$0;window.miniaudio.device_type.capture=$1;window.miniaudio.device_type.duplex=$2;window.miniaudio.device_state={};window.miniaudio.device_state.stopped=$3;window.miniaudio.device_state.started=$4;miniaudio.devices=[];miniaudio.track_device=function(device){for(var iDevice=0;iDevice0){if(miniaudio.devices[miniaudio.devices.length-1]==null){miniaudio.devices.pop()}else{break}}};miniaudio.untrack_device=function(device){for(var iDevice=0;iDevice{Module._ma_device__on_notification_unlocked(device.pDevice)},error=>{console.error("Failed to resume audiocontext",error)})}}miniaudio.unlock_event_types.map(function(event_type){document.removeEventListener(event_type,miniaudio.unlock,true)})};miniaudio.unlock_event_types.map(function(event_type){document.addEventListener(event_type,miniaudio.unlock,true)})}window.miniaudio.referenceCount+=1;return 1},34833:()=>{if(typeof window.miniaudio!=="undefined"){window.miniaudio.referenceCount-=1;if(window.miniaudio.referenceCount===0){delete window.miniaudio}}},34997:()=>navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined,35101:()=>{try{var temp=new(window.AudioContext||window.webkitAudioContext);var sampleRate=temp.sampleRate;temp.close();return sampleRate}catch(e){return 0}},35272:($0,$1,$2,$3,$4,$5)=>{var deviceType=$0;var channels=$1;var sampleRate=$2;var bufferSize=$3;var pIntermediaryBuffer=$4;var pDevice=$5;if(typeof window.miniaudio==="undefined"){return-1}var device={};var audioContextOptions={};if(deviceType==window.miniaudio.device_type.playback&&sampleRate!=0){audioContextOptions.sampleRate=sampleRate}device.webaudio=new(window.AudioContext||window.webkitAudioContext)(audioContextOptions);device.webaudio.suspend();device.state=window.miniaudio.device_state.stopped;var channelCountIn=0;var channelCountOut=channels;if(deviceType!=window.miniaudio.device_type.playback){channelCountIn=channels}device.scriptNode=device.webaudio.createScriptProcessor(bufferSize,channelCountIn,channelCountOut);device.scriptNode.onaudioprocess=function(e){if(device.intermediaryBufferView==null||device.intermediaryBufferView.length==0){device.intermediaryBufferView=new Float32Array(Module.HEAPF32.buffer,pIntermediaryBuffer,bufferSize*channels)}if(deviceType==miniaudio.device_type.capture||deviceType==miniaudio.device_type.duplex){for(var iChannel=0;iChannelminiaudio.get_device_by_index($0).webaudio.sampleRate,38166:$0=>{var device=miniaudio.get_device_by_index($0);if(device.scriptNode!==undefined){device.scriptNode.onaudioprocess=function(e){};device.scriptNode.disconnect();device.scriptNode=undefined}if(device.streamNode!==undefined){device.streamNode.disconnect();device.streamNode=undefined}device.webaudio.close();device.webaudio=undefined;device.pDevice=undefined},38559:$0=>{miniaudio.untrack_device_by_index($0)},38602:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.resume();device.state=miniaudio.device_state.started},38727:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.suspend();device.state=miniaudio.device_state.stopped},38853:($0,$1)=>{if($0==0||$1<=0){console.error("Invalid buffer pointer or number of frames");return}let buffer;switch(RecorderModule.format){case"u8":buffer=HEAPU8.subarray($0,$0+$1*RecorderModule.numChannels);break;case"s16":buffer=HEAP16.subarray($0/2,$0/2+$1*RecorderModule.numChannels);break;case"s24":buffer=HEAPU8.subarray($0,$0+$1*RecorderModule.numChannels*3);break;case"s32":buffer=HEAP32.subarray($0/4,$0/4+$1*RecorderModule.numChannels);break;case"f32":default:buffer=HEAPF32.subarray($0/4,$0/4+$1*RecorderModule.numChannels)}if(!RecorderModule.dataChunks){RecorderModule.dataChunks=[]}RecorderModule.dataChunks.push(...buffer)},39583:()=>{function encodeWAV(){const numChannels=RecorderModule.numChannels;const sampleRate=RecorderModule.sampleRate;let bitsPerSample;let audioData;let formatCode=1;switch(RecorderModule.format){case"u8":bitsPerSample=8;audioData=new Uint8Array(RecorderModule.dataChunks);break;case"s16":bitsPerSample=16;audioData=new Int16Array(RecorderModule.dataChunks);break;case"s24":bitsPerSample=24;audioData=new Uint8Array(RecorderModule.dataChunks);break;case"s32":bitsPerSample=32;audioData=new Int32Array(RecorderModule.dataChunks);break;case"f32":bitsPerSample=32;formatCode=3;audioData=new Float32Array(RecorderModule.dataChunks);break;default:throw new Error("Formato non supportato")}const blockAlign=numChannels*(bitsPerSample/8);const byteRate=sampleRate*blockAlign;let dataSize=audioData.length*(bitsPerSample/8);const totalFileSize=44+dataSize;if(RecorderModule.format=="s24"){dataSize=audioData.length}const wavBuffer=new ArrayBuffer(totalFileSize);const view=new DataView(wavBuffer);view.setUint32(0,1380533830,false);view.setUint32(4,totalFileSize-8,true);view.setUint32(8,1463899717,false);view.setUint32(12,1718449184,false);view.setUint32(16,16,true);view.setUint16(20,formatCode,true);view.setUint16(22,numChannels,true);view.setUint32(24,sampleRate,true);view.setUint32(28,byteRate,true);view.setUint16(32,blockAlign,true);view.setUint16(34,bitsPerSample,true);view.setUint32(36,1684108385,false);view.setUint32(40,dataSize,true);for(let i=0;i{let format;switch($2){case 5:format="f32";break;case 4:format="s32";break;case 3:format="s24";break;case 2:format="s16";break;case 1:format="u8";break;default:format="unknown";break}console.log("EM_ASM init wav! "+$0+" "+$1+" "+format);RecorderModule.dataChunks=[];RecorderModule.fileName="output.wav";RecorderModule.numChannels=$0;RecorderModule.sampleRate=$1;RecorderModule.format=format}};class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}Module["ExitStatus"]=ExitStatus;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};Module["callRuntimeCallbacks"]=callRuntimeCallbacks;function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return SAFE_HEAP_LOAD(ptr,1,0);case"i8":return SAFE_HEAP_LOAD(ptr,1,0);case"i16":return SAFE_HEAP_LOAD((ptr>>1)*2,2,0);case"i32":return SAFE_HEAP_LOAD((ptr>>2)*4,4,0);case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return SAFE_HEAP_LOAD_D((ptr>>2)*4,4,0);case"double":return SAFE_HEAP_LOAD_D((ptr>>3)*8,8,0);case"*":return SAFE_HEAP_LOAD((ptr>>2)*4,4,1);default:abort(`invalid type for getValue: ${type}`)}}Module["getValue"]=getValue;function getValue_safe(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}Module["getValue_safe"]=getValue_safe;var noExitRuntime=Module["noExitRuntime"]||true;Module["noExitRuntime"]=noExitRuntime;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":SAFE_HEAP_STORE(ptr,value,1);break;case"i8":SAFE_HEAP_STORE(ptr,value,1);break;case"i16":SAFE_HEAP_STORE((ptr>>1)*2,value,2);break;case"i32":SAFE_HEAP_STORE((ptr>>2)*4,value,4);break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":SAFE_HEAP_STORE_D((ptr>>2)*4,value,4);break;case"double":SAFE_HEAP_STORE_D((ptr>>3)*8,value,8);break;case"*":SAFE_HEAP_STORE((ptr>>2)*4,value,4);break;default:abort(`invalid type for setValue: ${type}`)}}Module["setValue"]=setValue;function setValue_safe(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}Module["setValue_safe"]=setValue_safe;var stackRestore=val=>__emscripten_stack_restore(val);Module["stackRestore"]=stackRestore;var stackSave=()=>_emscripten_stack_get_current();Module["stackSave"]=stackSave;var unSign=(value,bits)=>{if(value>=0){return value}return bits<=32?2*Math.abs(1<{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};Module["UTF8ArrayToString"]=UTF8ArrayToString;var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";Module["UTF8ToString"]=UTF8ToString;var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};Module["___assert_fail"]=___assert_fail;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){SAFE_HEAP_STORE((this.ptr+4>>2)*4,type,4)}get_type(){return SAFE_HEAP_LOAD((this.ptr+4>>2)*4,4,1)}set_destructor(destructor){SAFE_HEAP_STORE((this.ptr+8>>2)*4,destructor,4)}get_destructor(){return SAFE_HEAP_LOAD((this.ptr+8>>2)*4,4,1)}set_caught(caught){caught=caught?1:0;SAFE_HEAP_STORE(this.ptr+12,caught,1)}get_caught(){return SAFE_HEAP_LOAD(this.ptr+12,1,0)!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;SAFE_HEAP_STORE(this.ptr+13,rethrown,1)}get_rethrown(){return SAFE_HEAP_LOAD(this.ptr+13,1,0)!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){SAFE_HEAP_STORE((this.ptr+16>>2)*4,adjustedPtr,4)}get_adjusted_ptr(){return SAFE_HEAP_LOAD((this.ptr+16>>2)*4,4,1)}}Module["ExceptionInfo"]=ExceptionInfo;var exceptionLast=0;Module["exceptionLast"]=exceptionLast;var uncaughtExceptionCount=0;Module["uncaughtExceptionCount"]=uncaughtExceptionCount;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};Module["___cxa_throw"]=___cxa_throw;var __abort_js=()=>{abort("")};Module["__abort_js"]=__abort_js;var nowIsMonotonic=1;Module["nowIsMonotonic"]=nowIsMonotonic;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;Module["__emscripten_get_now_is_monotonic"]=__emscripten_get_now_is_monotonic;var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);Module["__emscripten_memcpy_js"]=__emscripten_memcpy_js;var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};Module["stringToUTF8Array"]=stringToUTF8Array;var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);Module["stringToUTF8"]=stringToUTF8;var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);SAFE_HEAP_STORE((timezone>>2)*4,stdTimezoneOffset*60,4);SAFE_HEAP_STORE((daylight>>2)*4,Number(winterOffset!=summerOffset),4);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset{readEmAsmArgsArray.length=0;var ch;while(ch=SAFE_HEAP_LOAD(sigPtr++,1,1)){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?SAFE_HEAP_LOAD((buf>>2)*4,4,1):ch==105?SAFE_HEAP_LOAD((buf>>2)*4,4,0):SAFE_HEAP_LOAD_D((buf>>3)*8,8,0));buf+=wide?8:4}return readEmAsmArgsArray};Module["readEmAsmArgs"]=readEmAsmArgs;var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};Module["runEmAsmFunction"]=runEmAsmFunction;var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);Module["_emscripten_asm_const_int"]=_emscripten_asm_const_int;var _emscripten_date_now=()=>Date.now();Module["_emscripten_date_now"]=_emscripten_date_now;var _emscripten_get_now=()=>performance.now();Module["_emscripten_get_now"]=_emscripten_get_now;var getHeapMax=()=>2147483648;Module["getHeapMax"]=getHeapMax;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;Module["alignMemory"]=alignMemory;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};Module["growMemory"]=growMemory;var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};Module["_emscripten_resize_heap"]=_emscripten_resize_heap;var ENV={};Module["ENV"]=ENV;var getExecutableName=()=>thisProgram||"./this.program";Module["getExecutableName"]=getExecutableName;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};Module["getEnvStrings"]=getEnvStrings;var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;SAFE_HEAP_STORE((__environ+i*4>>2)*4,ptr,4);stringToAscii(string,ptr);bufSize+=string.length+1});return 0};Module["_environ_get"]=_environ_get;var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();SAFE_HEAP_STORE((penviron_count>>2)*4,strings.length,4);var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);SAFE_HEAP_STORE((penviron_buf_size>>2)*4,bufSize,4);return 0};Module["_environ_sizes_get"]=_environ_sizes_get;var runtimeKeepaliveCounter=0;Module["runtimeKeepaliveCounter"]=runtimeKeepaliveCounter;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;Module["keepRuntimeAlive"]=keepRuntimeAlive;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};Module["_proc_exit"]=_proc_exit;var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};Module["exitJS"]=exitJS;var _exit=exitJS;Module["_exit"]=_exit;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};Module["PATH"]=PATH;var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};Module["initRandomFill"]=initRandomFill;var randomFill=view=>(randomFill=initRandomFill())(view);Module["randomFill"]=randomFill;var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};Module["lengthBytesUTF8"]=lengthBytesUTF8;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};Module["FS_stdin_getChar"]=FS_stdin_getChar;var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};Module["TTY"]=TTY;var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size)};Module["zeroMemory"]=zeroMemory;var mmapAlloc=size=>{abort()};Module["mmapAlloc"]=mmapAlloc;var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url).then(arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},err=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};Module["asyncLoad"]=asyncLoad;var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};Module["FS_createDataFile"]=FS_createDataFile;var preloadPlugins=Module["preloadPlugins"]||[];Module["preloadPlugins"]=preloadPlugins;var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};Module["FS_handledByPreloadPlugin"]=FS_handledByPreloadPlugin;var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};Module["FS_createPreloadedFile"]=FS_createPreloadedFile;var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};Module["FS_modeStringToFlags"]=FS_modeStringToFlags;var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};Module["FS_getMode"]=FS_getMode;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};Module["FS"]=FS;var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);SAFE_HEAP_STORE((buf>>2)*4,stat.dev,4);SAFE_HEAP_STORE((buf+4>>2)*4,stat.mode,4);SAFE_HEAP_STORE((buf+8>>2)*4,stat.nlink,4);SAFE_HEAP_STORE((buf+12>>2)*4,stat.uid,4);SAFE_HEAP_STORE((buf+16>>2)*4,stat.gid,4);SAFE_HEAP_STORE((buf+20>>2)*4,stat.rdev,4);tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],SAFE_HEAP_STORE((buf+24>>2)*4,tempI64[0],4),SAFE_HEAP_STORE((buf+28>>2)*4,tempI64[1],4);SAFE_HEAP_STORE((buf+32>>2)*4,4096,4);SAFE_HEAP_STORE((buf+36>>2)*4,stat.blocks,4);var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],SAFE_HEAP_STORE((buf+40>>2)*4,tempI64[0],4),SAFE_HEAP_STORE((buf+44>>2)*4,tempI64[1],4);SAFE_HEAP_STORE((buf+48>>2)*4,atime%1e3*1e3*1e3,4);tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],SAFE_HEAP_STORE((buf+56>>2)*4,tempI64[0],4),SAFE_HEAP_STORE((buf+60>>2)*4,tempI64[1],4);SAFE_HEAP_STORE((buf+64>>2)*4,mtime%1e3*1e3*1e3,4);tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],SAFE_HEAP_STORE((buf+72>>2)*4,tempI64[0],4),SAFE_HEAP_STORE((buf+76>>2)*4,tempI64[1],4);SAFE_HEAP_STORE((buf+80>>2)*4,ctime%1e3*1e3*1e3,4);tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],SAFE_HEAP_STORE((buf+88>>2)*4,tempI64[0],4),SAFE_HEAP_STORE((buf+92>>2)*4,tempI64[1],4);return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};Module["SYSCALLS"]=SYSCALLS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}Module["_fd_close"]=_fd_close;var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2)*4,4,1);var len=SAFE_HEAP_LOAD((iov+4>>2)*4,4,1);iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2)*4,num,4);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}Module["_fd_read"]=_fd_read;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;Module["convertI32PairToI53Checked"]=convertI32PairToI53Checked;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],SAFE_HEAP_STORE((newOffset>>2)*4,tempI64[0],4),SAFE_HEAP_STORE((newOffset+4>>2)*4,tempI64[1],4);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}Module["_fd_seek"]=_fd_seek;var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2)*4,4,1);var len=SAFE_HEAP_LOAD((iov+4>>2)*4,4,1);iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2)*4,num,4);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}Module["_fd_write"]=_fd_write;var getCFunc=ident=>{var func=Module["_"+ident];return func};Module["getCFunc"]=getCFunc;var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};Module["writeArrayToMemory"]=writeArrayToMemory;var stackAlloc=sz=>__emscripten_stack_alloc(sz);Module["stackAlloc"]=stackAlloc;var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};Module["stringToUTF8OnStack"]=stringToUTF8OnStack;var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};Module["cwrap"]=cwrap;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack="";var wasmImports={a:___assert_fail,e:___cxa_throw,q:__abort_js,i:__emscripten_get_now_is_monotonic,k:__emscripten_memcpy_js,n:__tzset_js,c:alignfault,d:_emscripten_asm_const_int,j:_emscripten_date_now,r:_emscripten_resize_heap,o:_environ_get,p:_environ_sizes_get,l:_exit,g:_fd_close,h:_fd_read,m:_fd_seek,f:_fd_write,b:segfault};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["t"])();var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["v"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["w"])(a0);var __Z35ma_device__on_notification_unlockedP9ma_device=Module["__Z35ma_device__on_notification_unlockedP9ma_device"]=a0=>(__Z35ma_device__on_notification_unlockedP9ma_device=Module["__Z35ma_device__on_notification_unlockedP9ma_device"]=wasmExports["x"])(a0);var _ma_malloc_emscripten=Module["_ma_malloc_emscripten"]=(a0,a1)=>(_ma_malloc_emscripten=Module["_ma_malloc_emscripten"]=wasmExports["y"])(a0,a1);var _ma_free_emscripten=Module["_ma_free_emscripten"]=(a0,a1)=>(_ma_free_emscripten=Module["_ma_free_emscripten"]=wasmExports["z"])(a0,a1);var _ma_device_process_pcm_frames_capture__webaudio=Module["_ma_device_process_pcm_frames_capture__webaudio"]=(a0,a1,a2)=>(_ma_device_process_pcm_frames_capture__webaudio=Module["_ma_device_process_pcm_frames_capture__webaudio"]=wasmExports["A"])(a0,a1,a2);var _ma_device_process_pcm_frames_playback__webaudio=Module["_ma_device_process_pcm_frames_playback__webaudio"]=(a0,a1,a2)=>(_ma_device_process_pcm_frames_playback__webaudio=Module["_ma_device_process_pcm_frames_playback__webaudio"]=wasmExports["B"])(a0,a1,a2);var _createWorkerInWasm=Module["_createWorkerInWasm"]=()=>(_createWorkerInWasm=Module["_createWorkerInWasm"]=wasmExports["C"])();var __Z24sendSilenceEventToWorkerPKcbf=Module["__Z24sendSilenceEventToWorkerPKcbf"]=(a0,a1,a2)=>(__Z24sendSilenceEventToWorkerPKcbf=Module["__Z24sendSilenceEventToWorkerPKcbf"]=wasmExports["D"])(a0,a1,a2);var __Z18sendStreamToWorkerPKcPhi=Module["__Z18sendStreamToWorkerPKcPhi"]=(a0,a1,a2)=>(__Z18sendStreamToWorkerPKcPhi=Module["__Z18sendStreamToWorkerPKcPhi"]=wasmExports["E"])(a0,a1,a2);var _setDartEventCallback=Module["_setDartEventCallback"]=(a0,a1)=>(_setDartEventCallback=Module["_setDartEventCallback"]=wasmExports["F"])(a0,a1);var _nativeFree=Module["_nativeFree"]=a0=>(_nativeFree=Module["_nativeFree"]=wasmExports["G"])(a0);var _listCaptureDevices=Module["_listCaptureDevices"]=(a0,a1,a2,a3)=>(_listCaptureDevices=Module["_listCaptureDevices"]=wasmExports["H"])(a0,a1,a2,a3);var _freeListCaptureDevices=Module["_freeListCaptureDevices"]=(a0,a1,a2,a3)=>(_freeListCaptureDevices=Module["_freeListCaptureDevices"]=wasmExports["I"])(a0,a1,a2,a3);var _init=Module["_init"]=(a0,a1,a2,a3)=>(_init=Module["_init"]=wasmExports["J"])(a0,a1,a2,a3);var _deinit=Module["_deinit"]=()=>(_deinit=Module["_deinit"]=wasmExports["K"])();var _isInited=Module["_isInited"]=()=>(_isInited=Module["_isInited"]=wasmExports["L"])();var _isDeviceStarted=Module["_isDeviceStarted"]=()=>(_isDeviceStarted=Module["_isDeviceStarted"]=wasmExports["M"])();var __Z16isCaptureStartedv=Module["__Z16isCaptureStartedv"]=()=>(__Z16isCaptureStartedv=Module["__Z16isCaptureStartedv"]=wasmExports["N"])();var _start=Module["_start"]=()=>(_start=Module["_start"]=wasmExports["O"])();var _stop=Module["_stop"]=()=>(_stop=Module["_stop"]=wasmExports["P"])();var _startStreamingData=Module["_startStreamingData"]=()=>(_startStreamingData=Module["_startStreamingData"]=wasmExports["Q"])();var _stopStreamingData=Module["_stopStreamingData"]=()=>(_stopStreamingData=Module["_stopStreamingData"]=wasmExports["R"])();var _setSilenceDetection=Module["_setSilenceDetection"]=a0=>(_setSilenceDetection=Module["_setSilenceDetection"]=wasmExports["S"])(a0);var _setSilenceThresholdDb=Module["_setSilenceThresholdDb"]=a0=>(_setSilenceThresholdDb=Module["_setSilenceThresholdDb"]=wasmExports["T"])(a0);var _setSilenceDuration=Module["_setSilenceDuration"]=a0=>(_setSilenceDuration=Module["_setSilenceDuration"]=wasmExports["U"])(a0);var _setSecondsOfAudioToWriteBefore=Module["_setSecondsOfAudioToWriteBefore"]=a0=>(_setSecondsOfAudioToWriteBefore=Module["_setSecondsOfAudioToWriteBefore"]=wasmExports["V"])(a0);var _startRecording=Module["_startRecording"]=a0=>(_startRecording=Module["_startRecording"]=wasmExports["W"])(a0);var _setPauseRecording=Module["_setPauseRecording"]=a0=>(_setPauseRecording=Module["_setPauseRecording"]=wasmExports["X"])(a0);var _stopRecording=Module["_stopRecording"]=()=>(_stopRecording=Module["_stopRecording"]=wasmExports["Y"])();var _getVolumeDb=Module["_getVolumeDb"]=a0=>(_getVolumeDb=Module["_getVolumeDb"]=wasmExports["Z"])(a0);var _setFftSmoothing=Module["_setFftSmoothing"]=a0=>(_setFftSmoothing=Module["_setFftSmoothing"]=wasmExports["_"])(a0);var _getFft=Module["_getFft"]=a0=>(_getFft=Module["_getFft"]=wasmExports["$"])(a0);var _getWave=Module["_getWave"]=a0=>(_getWave=Module["_getWave"]=wasmExports["aa"])(a0);var _getTexture=Module["_getTexture"]=a0=>(_getTexture=Module["_getTexture"]=wasmExports["ba"])(a0);var _getTexture2D=Module["_getTexture2D"]=a0=>(_getTexture2D=Module["_getTexture2D"]=wasmExports["ca"])(a0);var _getTextureValue=Module["_getTextureValue"]=(a0,a1)=>(_getTextureValue=Module["_getTextureValue"]=wasmExports["da"])(a0,a1);var _isFilterActive=Module["_isFilterActive"]=a0=>(_isFilterActive=Module["_isFilterActive"]=wasmExports["ea"])(a0);var _addFilter=Module["_addFilter"]=a0=>(_addFilter=Module["_addFilter"]=wasmExports["fa"])(a0);var _removeFilter=Module["_removeFilter"]=a0=>(_removeFilter=Module["_removeFilter"]=wasmExports["ga"])(a0);var _getFilterParamNames=Module["_getFilterParamNames"]=(a0,a1,a2)=>(_getFilterParamNames=Module["_getFilterParamNames"]=wasmExports["ha"])(a0,a1,a2);var _setFilterParams=Module["_setFilterParams"]=(a0,a1,a2)=>(_setFilterParams=Module["_setFilterParams"]=wasmExports["ia"])(a0,a1,a2);var _getFilterParams=Module["_getFilterParams"]=(a0,a1)=>(_getFilterParams=Module["_getFilterParams"]=wasmExports["ja"])(a0,a1);var _sbrk=a0=>(_sbrk=wasmExports["ka"])(a0);var _emscripten_get_sbrk_ptr=()=>(_emscripten_get_sbrk_ptr=wasmExports["la"])();var _emscripten_stack_get_base=()=>(_emscripten_stack_get_base=wasmExports["ma"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["na"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["oa"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["pa"])();var dynCall_iiiji=Module["dynCall_iiiji"]=(a0,a1,a2,a3,a4,a5)=>(dynCall_iiiji=Module["dynCall_iiiji"]=wasmExports["qa"])(a0,a1,a2,a3,a4,a5);var dynCall_jii=Module["dynCall_jii"]=(a0,a1,a2)=>(dynCall_jii=Module["dynCall_jii"]=wasmExports["ra"])(a0,a1,a2);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sa"])(a0,a1,a2,a3,a4);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ta"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["ua"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["va"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["wa"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);Module["ccall"]=ccall;Module["cwrap"]=cwrap;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; + + + return moduleRtn; +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = RecorderModule; +else if (typeof define === 'function' && define['amd']) + define([], () => RecorderModule); diff --git a/web/libflutter_recorder_plugin.wasm b/web/libflutter_recorder_plugin.wasm index 111f23f..c45d373 100755 Binary files a/web/libflutter_recorder_plugin.wasm and b/web/libflutter_recorder_plugin.wasm differ diff --git a/web/worker.dart.js b/web/worker.dart.js index 5011ab7..4ac2811 100644 --- a/web/worker.dart.js +++ b/web/worker.dart.js @@ -22,18 +22,17 @@ a[c]=function(){if(a[b]===s){a[b]=d()}a[c]=function(){return this[b]} return a[b]}}function lazyFinal(a,b,c,d){var s=a a[b]=s a[c]=function(){if(a[b]===s){var r=d() -if(a[b]!==s){A.h3(b)}a[b]=r}var q=a[b] +if(a[b]!==s){A.h2(b)}a[b]=r}var q=a[b] a[c]=function(){return q} -return q}}function makeConstList(a){a.immutable$list=Array -a.fixed$length=Array +return q}}function makeConstList(a){a.$flags=7 return a}function convertToFastObject(a){function t(){}t.prototype=a new t() return a}function convertAllToFastObject(a){for(var s=0;s").u(d).i("af<1,2>")) -return new A.R(a,b,c.i("@<0>").u(d).i("R<1,2>"))}, -an:function an(a){this.a=a}, +eu(a,b,c,d){if(t.V.b(a))return new A.ag(a,b,c.i("@<0>").u(d).i("ag<1,2>")) +return new A.T(a,b,c.i("@<0>").u(d).i("T<1,2>"))}, +ap:function ap(a){this.a=a}, e:function e(){}, -L:function L(){}, -Z:function Z(a,b,c){var _=this +M:function M(){}, +a_:function a_(a,b,c){var _=this _.a=a _.b=b _.c=0 _.d=null _.$ti=c}, -R:function R(a,b,c){this.a=a +T:function T(a,b,c){this.a=a this.b=b this.$ti=c}, -af:function af(a,b,c){this.a=a +ag:function ag(a,b,c){this.a=a this.b=b this.$ti=c}, -b6:function b6(a,b,c){var _=this +b7:function b7(a,b,c){var _=this _.a=null _.b=a _.c=b _.$ti=c}, -B:function B(a,b,c){this.a=a +C:function C(a,b,c){this.a=a this.b=b this.$ti=c}, -ah:function ah(){}, -e2(a){var s=v.mangledGlobalNames[a] +ai:function ai(){}, +e1(a){var s=v.mangledGlobalNames[a] if(s!=null)return s return"minified:"+a}, hB(a,b){var s if(b!=null){s=b.x if(s!=null)return s}return t.p.b(a)}, -o(a){var s +p(a){var s if(typeof a=="string")return a if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true" else if(!1===a)return"false" else if(a==null)return"null" -s=J.aT(a) +s=J.aV(a) return s}, -at(a){var s,r=$.dg -if(r==null)r=$.dg=Symbol("identityHashCode") +av(a){var s,r=$.dh +if(r==null)r=$.dh=Symbol("identityHashCode") s=a[r] if(s==null){s=Math.random()*0x3fffffff|0 a[r]=s}return s}, -bQ(a){return A.ey(a)}, -ey(a){var s,r,q,p -if(a instanceof A.d)return A.r(A.ae(a),null) -s=J.ad(a) -if(s===B.n||s===B.t||t.o.b(a)){r=B.c(a) +bQ(a){return A.ev(a)}, +ev(a){var s,r,q,p +if(a instanceof A.d)return A.t(A.af(a),null) +s=J.ae(a) +if(s===B.n||s===B.r||t.o.b(a)){r=B.c(a) if(r!=="Object"&&r!=="")return r q=a.constructor if(typeof q=="function"){p=q.name -if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.r(A.ae(a),null)}, -eA(a){if(typeof a=="number"||A.cy(a))return J.aT(a) +if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.t(A.af(a),null)}, +ex(a){if(typeof a=="number"||A.cy(a))return J.aV(a) if(typeof a=="string")return JSON.stringify(a) -if(a instanceof A.Q)return a.h(0) +if(a instanceof A.S)return a.h(0) return"Instance of '"+A.bQ(a)+"'"}, -ez(a){var s=a.$thrownJsError +ew(a){var s=a.$thrownJsError if(s==null)return null -return A.H(s)}, -z(a,b){if(a==null)J.cM(a) +return A.I(s)}, +A(a,b){if(a==null)J.cL(a) throw A.b(A.dU(a,b))}, dU(a,b){var s,r="index" -if(!A.dK(b))return new A.y(!0,b,r,null) -s=J.cM(a) -if(b<0||b>=s)return A.er(b,s,a,r) -return new A.au(null,null,!0,b,r,"Value not in range")}, +if(!A.dK(b))return new A.z(!0,b,r,null) +s=J.cL(a) +if(b<0||b>=s)return A.ep(b,s,a,r) +return new A.aw(null,null,!0,b,r,"Value not in range")}, b(a){return A.dY(new Error(),a)}, dY(a,b){var s -if(b==null)b=new A.D() +if(b==null)b=new A.E() a.dartException=b s=A.h4 if("defineProperty" in Object){Object.defineProperty(a,"message",{get:s}) a.name=""}else a.toString=s return a}, -h4(){return J.aT(this.dartException)}, -aS(a){throw A.b(a)}, -e0(a,b){throw A.dY(b,a)}, -h2(a){throw A.b(A.bG(a))}, -E(a){var s,r,q,p,o,n -a=A.h1(a.replace(String({}),"$receiver$")) +h4(){return J.aV(this.dartException)}, +bD(a){throw A.b(a)}, +d6(a,b){throw A.dY(b,a)}, +h3(a,b,c){var s +if(b==null)b=0 +if(c==null)c=0 +s=Error() +A.d6(A.f8(a,b,c),s)}, +f8(a,b,c){var s,r,q,p,o,n,m,l,k +if(typeof b=="string")s=b +else{r="[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";") +q=r.length +p=b +if(p>q){c=p/q|0 +p%=q}s=r[p]}o=typeof c=="string"?c:"modify;remove from;add to".split(";")[c] +n=t.j.b(a)?"list":"ByteData" +m=a.$flags|0 +l="a " +if((m&4)!==0)k="constant " +else if((m&2)!==0){k="unmodifiable " +l="an "}else k=(m&1)!==0?"fixed-length ":"" +return new A.az("'"+s+"': Cannot "+o+" "+l+k+n)}, +h1(a){throw A.b(A.bG(a))}, +F(a){var s,r,q,p,o,n +a=A.h0(a.replace(String({}),"$receiver$")) s=a.match(/\\\$[a-zA-Z]+\\\$/g) if(s==null)s=A.bC([],t.s) r=s.indexOf("\\$arguments\\$") @@ -226,63 +242,63 @@ n=s.indexOf("\\$receiver\\$") return new A.bV(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, bW(a){return function($expr$){var $argumentsExpr$="$arguments$" try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, -dm(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +dn(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, cQ(a,b){var s=b==null,r=s?null:b.method -return new A.b5(a,r,s?null:b.receiver)}, -P(a){if(a==null)return new A.bP(a) -if(a instanceof A.ag)return A.O(a,a.a) +return new A.b6(a,r,s?null:b.receiver)}, +Q(a){if(a==null)return new A.bP(a) +if(a instanceof A.ah)return A.P(a,a.a) if(typeof a!=="object")return a -if("dartException" in a)return A.O(a,a.dartException) -return A.fE(a)}, -O(a,b){if(t.Q.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +if("dartException" in a)return A.P(a,a.dartException) +return A.fD(a)}, +P(a,b){if(t.Q.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a return b}, -fE(a){var s,r,q,p,o,n,m,l,k,j,i,h,g +fD(a){var s,r,q,p,o,n,m,l,k,j,i,h,g if(!("message" in a))return a s=a.message if("number" in a&&typeof a.number=="number"){r=a.number q=r&65535 -if((B.p.aF(r,16)&8191)===10)switch(q){case 438:return A.O(a,A.cQ(A.o(s)+" (Error "+q+")",null)) -case 445:case 5007:A.o(s) -return A.O(a,new A.as())}}if(a instanceof TypeError){p=$.e3() -o=$.e4() -n=$.e5() -m=$.e6() -l=$.e9() -k=$.ea() -j=$.e8() -$.e7() -i=$.ec() -h=$.eb() +if((B.p.aE(r,16)&8191)===10)switch(q){case 438:return A.P(a,A.cQ(A.p(s)+" (Error "+q+")",null)) +case 445:case 5007:A.p(s) +return A.P(a,new A.au())}}if(a instanceof TypeError){p=$.e2() +o=$.e3() +n=$.e4() +m=$.e5() +l=$.e8() +k=$.e9() +j=$.e7() +$.e6() +i=$.eb() +h=$.ea() g=p.t(s) -if(g!=null)return A.O(a,A.cQ(s,g)) +if(g!=null)return A.P(a,A.cQ(s,g)) else{g=o.t(s) if(g!=null){g.method="call" -return A.O(a,A.cQ(s,g))}else if(n.t(s)!=null||m.t(s)!=null||l.t(s)!=null||k.t(s)!=null||j.t(s)!=null||m.t(s)!=null||i.t(s)!=null||h.t(s)!=null)return A.O(a,new A.as())}return A.O(a,new A.bl(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.av() +return A.P(a,A.cQ(s,g))}else if(n.t(s)!=null||m.t(s)!=null||l.t(s)!=null||k.t(s)!=null||j.t(s)!=null||m.t(s)!=null||i.t(s)!=null||h.t(s)!=null)return A.P(a,new A.au())}return A.P(a,new A.bm(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.ax() s=function(b){try{return String(b)}catch(f){}return null}(a) -return A.O(a,new A.y(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.av() +return A.P(a,new A.z(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.ax() return a}, -H(a){var s -if(a instanceof A.ag)return a.b -if(a==null)return new A.aI(a) +I(a){var s +if(a instanceof A.ah)return a.b +if(a==null)return new A.aL(a) s=a.$cachedTrace if(s!=null)return s -s=new A.aI(a) +s=new A.aL(a) if(typeof a==="object")a.$cachedTrace=s return s}, -d3(a){if(a==null)return J.d7(a) -if(typeof a=="object")return A.at(a) -return J.d7(a)}, -fh(a,b,c,d,e,f){switch(b){case 0:return a.$0() +d4(a){if(a==null)return J.d9(a) +if(typeof a=="object")return A.av(a) +return J.d9(a)}, +fg(a,b,c,d,e,f){switch(b){case 0:return a.$0() case 1:return a.$1(c) case 2:return a.$2(c,d) case 3:return a.$3(c,d,e) case 4:return a.$4(c,d,e,f)}throw A.b(new A.c6("Unsupported number of arguments for wrapped closure"))}, -cD(a,b){var s=a.$identity +cC(a,b){var s=a.$identity if(!!s)return s -s=A.fM(a,b) +s=A.fL(a,b) a.$identity=s return s}, -fM(a,b){var s +fL(a,b){var s switch(b){case 0:s=a.$0 break case 1:s=a.$1 @@ -294,10 +310,10 @@ break case 4:s=a.$4 break default:s=null}if(s!=null)return s.bind(a) -return function(c,d,e){return function(f,g,h,i){return e(c,d,f,g,h,i)}}(a,b,A.fh)}, -eo(a2){var s,r,q,p,o,n,m,l,k,j,i=a2.co,h=a2.iS,g=a2.iI,f=a2.nDA,e=a2.aI,d=a2.fs,c=a2.cs,b=d[0],a=c[0],a0=i[b],a1=a2.fT +return function(c,d,e){return function(f,g,h,i){return e(c,d,f,g,h,i)}}(a,b,A.fg)}, +em(a2){var s,r,q,p,o,n,m,l,k,j,i=a2.co,h=a2.iS,g=a2.iI,f=a2.nDA,e=a2.aI,d=a2.fs,c=a2.cs,b=d[0],a=c[0],a0=i[b],a1=a2.fT a1.toString -s=h?Object.create(new A.bR().constructor.prototype):Object.create(new A.aZ(null,null).constructor.prototype) +s=h?Object.create(new A.bR().constructor.prototype):Object.create(new A.b_(null,null).constructor.prototype) s.$initialize=s.constructor r=h?function static_tear_off(){this.$initialize()}:function tear_off(a3,a4){this.$initialize(a3,a4)} s.constructor=r @@ -305,24 +321,24 @@ r.prototype=s s.$_name=b s.$_target=a0 q=!h -if(q)p=A.dd(b,a0,g,f) +if(q)p=A.df(b,a0,g,f) else{s.$static_name=b -p=a0}s.$S=A.ek(a1,h,g) +p=a0}s.$S=A.ei(a1,h,g) s[a]=p for(o=p,n=1;n>>0!==a||a>=c)throw A.b(A.dU(b,a))}, -b7:function b7(){}, -aq:function aq(){}, +X(a,b,c){if(a>>>0!==a||a>=c)throw A.b(A.dU(b,a))}, b8:function b8(){}, -a0:function a0(){}, -ao:function ao(){}, -ap:function ap(){}, +as:function as(){}, b9:function b9(){}, +a1:function a1(){}, +aq:function aq(){}, +ar:function ar(){}, ba:function ba(){}, bb:function bb(){}, bc:function bc(){}, bd:function bd(){}, be:function be(){}, bf:function bf(){}, -ar:function ar(){}, bg:function bg(){}, -aD:function aD(){}, -aE:function aE(){}, -aF:function aF(){}, +at:function at(){}, +bh:function bh(){}, aG:function aG(){}, -dh(a,b){var s=b.c +aH:function aH(){}, +aI:function aI(){}, +aJ:function aJ(){}, +di(a,b){var s=b.c return s==null?b.c=A.cU(a,b.x,!0):s}, cR(a,b){var s=b.c -return s==null?b.c=A.aN(a,"X",[b.x]):s}, -di(a){var s=a.w -if(s===6||s===7||s===8)return A.di(a.x) +return s==null?b.c=A.aQ(a,"Z",[b.x]):s}, +dj(a){var s=a.w +if(s===6||s===7||s===8)return A.dj(a.x) return s===12||s===13}, -eC(a){return a.as}, +ez(a){return a.as}, dV(a){return A.by(v.typeUniverse,a,!1)}, -N(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w +O(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w switch(a0){case 5:case 1:case 2:case 3:case 4:return a2 case 6:s=a2.x -r=A.N(a1,s,a3,a4) +r=A.O(a1,s,a3,a4) if(r===s)return a2 return A.dD(a1,r,!0) case 7:s=a2.x -r=A.N(a1,s,a3,a4) +r=A.O(a1,s,a3,a4) if(r===s)return a2 return A.cU(a1,r,!0) case 8:s=a2.x -r=A.N(a1,s,a3,a4) +r=A.O(a1,s,a3,a4) if(r===s)return a2 return A.dB(a1,r,!0) case 9:q=a2.y -p=A.ab(a1,q,a3,a4) +p=A.ac(a1,q,a3,a4) if(p===q)return a2 -return A.aN(a1,a2.x,p) +return A.aQ(a1,a2.x,p) case 10:o=a2.x -n=A.N(a1,o,a3,a4) +n=A.O(a1,o,a3,a4) m=a2.y -l=A.ab(a1,m,a3,a4) +l=A.ac(a1,m,a3,a4) if(n===o&&l===m)return a2 return A.cS(a1,n,l) case 11:k=a2.x j=a2.y -i=A.ab(a1,j,a3,a4) +i=A.ac(a1,j,a3,a4) if(i===j)return a2 return A.dC(a1,k,i) case 12:h=a2.x -g=A.N(a1,h,a3,a4) +g=A.O(a1,h,a3,a4) f=a2.y -e=A.fB(a1,f,a3,a4) +e=A.fA(a1,f,a3,a4) if(g===h&&e===f)return a2 return A.dA(a1,g,e) case 13:d=a2.y a4+=d.length -c=A.ab(a1,d,a3,a4) +c=A.ac(a1,d,a3,a4) o=a2.x -n=A.N(a1,o,a3,a4) +n=A.O(a1,o,a3,a4) if(c===d&&n===o)return a2 return A.cT(a1,n,c,!0) case 14:b=a2.x @@ -536,20 +554,20 @@ if(b=0)p+=" "+r[q];++q}return p+"})"}, dI(a4,a5,a6){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2=", ",a3=null if(a6!=null){s=a6.length @@ -734,13 +752,13 @@ r=a5.length for(q=s;q>0;--q)a5.push("T"+(r+q)) for(p=t.X,o=t._,n="<",m="",q=0;q=0))return A.z(a5,k) -n=B.q.ai(n+m,a5[k]) +if(!(k>=0))return A.A(a5,k) +n=n+m+a5[k] j=a6[q] i=j.w if(!(i===2||i===3||i===4||i===5||j===p))l=j===o else l=!0 -if(!l)n+=" extends "+A.r(j,a5)}n+=">"}else n="" +if(!l)n+=" extends "+A.t(j,a5)}n+=">"}else n="" p=a4.x h=a4.y g=h.a @@ -749,53 +767,53 @@ e=h.b d=e.length c=h.c b=c.length -a=A.r(p,a5) -for(a0="",a1="",q=0;q0){a0+=a1+"[" -for(a1="",q=0;q0){a0+=a1+"{" for(a1="",q=0;q "+a}, -r(a,b){var s,r,q,p,o,n,m,l=a.w +t(a,b){var s,r,q,p,o,n,m,l=a.w if(l===5)return"erased" if(l===2)return"dynamic" if(l===3)return"void" if(l===1)return"Never" if(l===4)return"any" -if(l===6)return A.r(a.x,b) +if(l===6)return A.t(a.x,b) if(l===7){s=a.x -r=A.r(s,b) +r=A.t(s,b) q=s.w -return(q===12||q===13?"("+r+")":r)+"?"}if(l===8)return"FutureOr<"+A.r(a.x,b)+">" -if(l===9){p=A.fD(a.x) +return(q===12||q===13?"("+r+")":r)+"?"}if(l===8)return"FutureOr<"+A.t(a.x,b)+">" +if(l===9){p=A.fC(a.x) o=a.y -return o.length>0?p+("<"+A.dP(o,b)+">"):p}if(l===11)return A.fv(a,b) +return o.length>0?p+("<"+A.dP(o,b)+">"):p}if(l===11)return A.fu(a,b) if(l===12)return A.dI(a,b,null) if(l===13)return A.dI(a.x,b,a.y) if(l===14){n=a.x m=b.length n=m-1-n -if(!(n>=0&&n=0&&n0)p+="<"+A.aM(c)+">" +aQ(a,b,c){var s,r,q,p=b +if(c.length>0)p+="<"+A.aP(c)+">" s=a.eC.get(p) if(s!=null)return s -r=new A.w(null,null) +r=new A.x(null,null) r.w=9 r.x=b r.y=c if(c.length>0)r.c=c[0] r.as=p -q=A.F(a,r) +q=A.G(a,r) a.eC.set(p,q) return q}, cS(a,b,c){var s,r,q,p,o,n if(b.w===10){s=b.x r=b.y.concat(c)}else{r=c -s=b}q=s.as+(";<"+A.aM(r)+">") +s=b}q=s.as+(";<"+A.aP(r)+">") p=a.eC.get(q) if(p!=null)return p -o=new A.w(null,null) +o=new A.x(null,null) o.w=10 o.x=s o.y=r o.as=q -n=A.F(a,o) +n=A.G(a,o) a.eC.set(q,n) return n}, -dC(a,b,c){var s,r,q="+"+(b+"("+A.aM(c)+")"),p=a.eC.get(q) +dC(a,b,c){var s,r,q="+"+(b+"("+A.aP(c)+")"),p=a.eC.get(q) if(p!=null)return p -s=new A.w(null,null) +s=new A.x(null,null) s.w=11 s.x=b s.y=c s.as=q -r=A.F(a,s) +r=A.G(a,s) a.eC.set(q,r) return r}, -dA(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.aM(m) +dA(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.aP(m) if(j>0){s=l>0?",":"" -g+=s+"["+A.aM(k)+"]"}if(h>0){s=l>0?",":"" -g+=s+"{"+A.eT(i)+"}"}r=n+(g+")") +g+=s+"["+A.aP(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.eR(i)+"}"}r=n+(g+")") q=a.eC.get(r) if(q!=null)return q -p=new A.w(null,null) +p=new A.x(null,null) p.w=12 p.x=b p.y=c p.as=r -o=A.F(a,p) +o=A.G(a,p) a.eC.set(r,o) return o}, -cT(a,b,c,d){var s,r=b.as+("<"+A.aM(c)+">"),q=a.eC.get(r) +cT(a,b,c,d){var s,r=b.as+("<"+A.aP(c)+">"),q=a.eC.get(r) if(q!=null)return q -s=A.eV(a,b,c,r,d) +s=A.eT(a,b,c,r,d) a.eC.set(r,s) return s}, -eV(a,b,c,d,e){var s,r,q,p,o,n,m,l +eT(a,b,c,d,e){var s,r,q,p,o,n,m,l if(e){s=c.length r=A.ct(s) for(q=0,p=0;p0){n=A.N(a,b,r,0) -m=A.ab(a,c,r,0) -return A.cT(a,n,m,c!==m)}}l=new A.w(null,null) +if(o.w===1){r[p]=o;++q}}if(q>0){n=A.O(a,b,r,0) +m=A.ac(a,c,r,0) +return A.cT(a,n,m,c!==m)}}l=new A.x(null,null) l.w=13 l.x=b l.y=c l.as=d -return A.F(a,l)}, +return A.G(a,l)}, dw(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, dy(a){var s,r,q,p,o,n,m,l=a.r,k=a.s for(s=l.length,r=0;r=48&&q<=57)r=A.eM(r+1,q,l,k) +if(q>=48&&q<=57)r=A.eK(r+1,q,l,k) else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.dx(a,r,l,k,!1) else if(q===46)r=A.dx(a,r,l,k,!0) else{++r @@ -969,37 +987,37 @@ case 58:k.push(!1) break case 33:k.push(!0) break -case 59:k.push(A.M(a.u,a.e,k.pop())) +case 59:k.push(A.N(a.u,a.e,k.pop())) break -case 94:k.push(A.eY(a.u,k.pop())) +case 94:k.push(A.eW(a.u,k.pop())) break -case 35:k.push(A.aO(a.u,5,"#")) +case 35:k.push(A.aR(a.u,5,"#")) break -case 64:k.push(A.aO(a.u,2,"@")) +case 64:k.push(A.aR(a.u,2,"@")) break -case 126:k.push(A.aO(a.u,3,"~")) +case 126:k.push(A.aR(a.u,3,"~")) break case 60:k.push(a.p) a.p=k.length break -case 62:A.eO(a,k) +case 62:A.eM(a,k) break -case 38:A.eN(a,k) +case 38:A.eL(a,k) break case 42:p=a.u -k.push(A.dD(p,A.M(p,a.e,k.pop()),a.n)) +k.push(A.dD(p,A.N(p,a.e,k.pop()),a.n)) break case 63:p=a.u -k.push(A.cU(p,A.M(p,a.e,k.pop()),a.n)) +k.push(A.cU(p,A.N(p,a.e,k.pop()),a.n)) break case 47:p=a.u -k.push(A.dB(p,A.M(p,a.e,k.pop()),a.n)) +k.push(A.dB(p,A.N(p,a.e,k.pop()),a.n)) break case 40:k.push(-3) k.push(a.p) a.p=k.length break -case 41:A.eL(a,k) +case 41:A.eJ(a,k) break case 91:k.push(a.p) a.p=k.length @@ -1014,7 +1032,7 @@ case 123:k.push(a.p) a.p=k.length break case 125:o=k.splice(a.p) -A.eQ(a.u,a.e,o) +A.eO(a.u,a.e,o) a.p=k.pop() k.push(o) k.push(-2) @@ -1027,8 +1045,8 @@ a.p=k.length r=n+1 break default:throw"Bad character "+q}}}m=k.pop() -return A.M(a.u,a.e,m)}, -eM(a,b,c,d){var s,r,q=b-48 +return A.N(a.u,a.e,m)}, +eK(a,b,c,d){var s,r,q=b-48 for(s=c.length;a=48&&r<=57))break q=q*10+(r-48)}d.push(q) @@ -1042,18 +1060,18 @@ if(!q)break}}p=c.substring(b,m) if(e){s=a.u o=a.e if(o.w===10)o=o.x -n=A.f2(s,o.x)[p] -if(n==null)A.aS('No "'+p+'" in "'+A.eC(o)+'"') +n=A.f0(s,o.x)[p] +if(n==null)A.bD('No "'+p+'" in "'+A.ez(o)+'"') d.push(A.cs(s,o,n))}else d.push(p) return m}, -eO(a,b){var s,r=a.u,q=A.dv(a,b),p=b.pop() -if(typeof p=="string")b.push(A.aN(r,p,q)) -else{s=A.M(r,a.e,p) +eM(a,b){var s,r=a.u,q=A.dv(a,b),p=b.pop() +if(typeof p=="string")b.push(A.aQ(r,p,q)) +else{s=A.N(r,a.e,p) switch(s.w){case 12:b.push(A.cT(r,s,q,a.n)) break default:b.push(A.cS(r,s,q)) break}}}, -eL(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null +eJ(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null if(typeof o=="number")switch(o){case-1:n=b.pop() break case-2:m=b.pop() @@ -1065,7 +1083,7 @@ o=b.pop() switch(o){case-3:o=b.pop() if(n==null)n=p.sEA if(m==null)m=p.sEA -r=A.M(p,a.e,o) +r=A.N(p,a.e,o) q=new A.bt() q.a=s q.b=n @@ -1074,23 +1092,23 @@ b.push(A.dA(p,r,q)) return case-4:b.push(A.dC(p,b.pop(),s)) return -default:throw A.b(A.aX("Unexpected state under `()`: "+A.o(o)))}}, -eN(a,b){var s=b.pop() -if(0===s){b.push(A.aO(a.u,1,"0&")) -return}if(1===s){b.push(A.aO(a.u,4,"1&")) -return}throw A.b(A.aX("Unexpected extended operation "+A.o(s)))}, +default:throw A.b(A.aZ("Unexpected state under `()`: "+A.p(o)))}}, +eL(a,b){var s=b.pop() +if(0===s){b.push(A.aR(a.u,1,"0&")) +return}if(1===s){b.push(A.aR(a.u,4,"1&")) +return}throw A.b(A.aZ("Unexpected extended operation "+A.p(s)))}, dv(a,b){var s=b.splice(a.p) A.dz(a.u,a.e,s) a.p=b.pop() return s}, -M(a,b,c){if(typeof c=="string")return A.aN(a,c,a.sEA) +N(a,b,c){if(typeof c=="string")return A.aQ(a,c,a.sEA) else if(typeof c=="number"){b.toString -return A.eP(a,b,c)}else return c}, +return A.eN(a,b,c)}else return c}, dz(a,b,c){var s,r=c.length -for(s=0;s0?new Array(q):v.typeUniverse.sEA for(o=0;o0?new Array(a):v.typeUniverse.sEA}, -w:function w(a,b){var _=this +x:function x(a,b){var _=this _.a=a _.b=b _.r=_.f=_.d=_.c=null @@ -1227,71 +1245,69 @@ _.as=_.Q=_.z=_.y=_.x=null}, bt:function bt(){this.c=this.b=this.a=null}, cr:function cr(a){this.a=a}, bs:function bs(){}, -aL:function aL(a){this.a=a}, -eE(){var s,r,q={} -if(self.scheduleImmediate!=null)return A.fG() +aO:function aO(a){this.a=a}, +eC(){var s,r,q={} +if(self.scheduleImmediate!=null)return A.fF() if(self.MutationObserver!=null&&self.document!=null){s=self.document.createElement("div") r=self.document.createElement("span") q.a=null -new self.MutationObserver(A.cD(new A.c3(q),1)).observe(s,{childList:true}) -return new A.c2(q,s,r)}else if(self.setImmediate!=null)return A.fH() -return A.fI()}, -eF(a){self.scheduleImmediate(A.cD(new A.c4(a),0))}, -eG(a){self.setImmediate(A.cD(new A.c5(a),0))}, -eH(a){A.eR(0,a)}, -eR(a,b){var s=new A.cp() -s.am(a,b) +new self.MutationObserver(A.cC(new A.c3(q),1)).observe(s,{childList:true}) +return new A.c2(q,s,r)}else if(self.setImmediate!=null)return A.fG() +return A.fH()}, +eD(a){self.scheduleImmediate(A.cC(new A.c4(a),0))}, +eE(a){self.setImmediate(A.cC(new A.c5(a),0))}, +eF(a){A.eP(0,a)}, +eP(a,b){var s=new A.cp() +s.al(a,b) return s}, -fs(a){return new A.bn(new A.n($.i,a.i("n<0>")),a.i("bn<0>"))}, -f7(a,b){a.$2(0,null) +fr(a){return new A.bn(new A.o($.k,a.i("o<0>")),a.i("bn<0>"))}, +f5(a,b){a.$2(0,null) b.b=!0 return b.a}, -hA(a,b){A.f8(a,b)}, -f6(a,b){var s,r=a==null?b.$ti.c.a(a):a +hA(a,b){A.f6(a,b)}, +f4(a,b){var s,r=a==null?b.$ti.c.a(a):a if(!b.b)b.a.a2(r) else{s=b.a -if(b.$ti.i("X<1>").b(r))s.a4(r) +if(b.$ti.i("Z<1>").b(r))s.a4(r) else s.L(r)}}, -f5(a,b){var s=A.P(a),r=A.H(a),q=b.a +f3(a,b){var s=A.Q(a),r=A.I(a),q=b.a if(b.b)q.v(s,r) else q.K(s,r)}, -f8(a,b){var s,r,q=new A.cw(b),p=new A.cx(b) -if(a instanceof A.n)a.ac(q,p,t.z) +f6(a,b){var s,r,q=new A.cw(b),p=new A.cx(b) +if(a instanceof A.o)a.ac(q,p,t.z) else{s=t.z -if(a instanceof A.n)a.Z(q,p,s) -else{r=new A.n($.i,t.d) +if(a instanceof A.o)a.Z(q,p,s) +else{r=new A.o($.k,t.d) r.a=8 r.c=a r.ac(q,p,s)}}}, -fF(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) +fE(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) break}catch(r){e=r d=c}}}}(a,1) -return $.i.X(new A.cA(s))}, -bD(a,b){var s=A.cC(a,"error",t.K) -return new A.aY(s,b==null?A.eh(a):b)}, -eh(a){var s +return $.k.X(new A.cA(s))}, +cM(a){var s if(t.Q.b(a)){s=a.gH() if(s!=null)return s}return B.m}, ds(a,b){var s,r for(;s=a.a,(s&4)!==0;)a=a.c -if(a===b){b.K(new A.y(!0,a,null,"Cannot complete a future with itself"),A.dj()) +if(a===b){b.K(new A.z(!0,a,null,"Cannot complete a future with itself"),A.dk()) return}s|=b.a&1 a.a=s if((s&24)!==0){r=b.C() b.B(a) -A.a7(b,r)}else{r=b.c +A.a8(b,r)}else{r=b.c b.aa(a) a.T(r)}}, -eJ(a,b){var s,r,q={},p=q.a=a +eH(a,b){var s,r,q={},p=q.a=a for(;s=p.a,(s&4)!==0;){p=p.c -q.a=p}if(p===b){b.K(new A.y(!0,p,null,"Cannot complete a future with itself"),A.dj()) +q.a=p}if(p===b){b.K(new A.z(!0,p,null,"Cannot complete a future with itself"),A.dk()) return}if((s&24)===0){r=b.c b.aa(p) q.a.T(r) return}if((s&16)===0&&b.c==null){b.B(p) return}b.a^=2 -A.aa(null,null,b.b,new A.ca(q,b))}, -a7(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a +A.ab(null,null,b.b,new A.ca(q,b))}, +a8(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a for(;!0;){s={} r=f.a q=(r&16)===0 @@ -1300,7 +1316,7 @@ if(b==null){if(p&&(r&1)===0){f=f.c A.bA(f.a,f.b)}return}s.a=b o=b.a for(f=b;o!=null;f=o,o=n){f.a=null -A.a7(g.a,f) +A.a8(g.a,f) s.a=o n=o.a}r=g.a m=r.c @@ -1312,16 +1328,16 @@ if(l){k=f.b.b if(p){r=r.b===k r=!(r||r)}else r=!1 if(r){A.bA(m.a,m.b) -return}j=$.i -if(j!==k)$.i=k +return}j=$.k +if(j!==k)$.k=k else j=null f=f.c if((f&15)===8)new A.ch(s,g,p).$0() else if(q){if((f&1)!==0)new A.cg(s,m).$0()}else if((f&2)!==0)new A.cf(g,s).$0() -if(j!=null)$.i=j +if(j!=null)$.k=j f=s.c -if(f instanceof A.n){r=s.a.$ti -r=r.i("X<2>").b(f)||!r.y[1].b(f)}else r=!1 +if(f instanceof A.o){r=s.a.$ti +r=r.i("Z<2>").b(f)||!r.y[1].b(f)}else r=!1 if(r){i=s.a.b if((f.a&24)!==0){h=i.c i.c=null @@ -1340,66 +1356,66 @@ if(!f){i.a=8 i.c=r}else{i.a=i.a&1|16 i.c=r}g.a=i f=i}}, -fw(a,b){if(t.C.b(a))return b.X(a) +fv(a,b){if(t.C.b(a))return b.X(a) if(t.v.b(a))return a -throw A.b(A.d8(a,"onError",u.c))}, -ft(){var s,r -for(s=$.a9;s!=null;s=$.a9){$.aQ=null +throw A.b(A.da(a,"onError",u.c))}, +fs(){var s,r +for(s=$.aa;s!=null;s=$.aa){$.aT=null r=s.b -$.a9=r -if(r==null)$.aP=null +$.aa=r +if(r==null)$.aS=null s.a.$0()}}, -fz(){$.cW=!0 -try{A.ft()}finally{$.aQ=null +fy(){$.cW=!0 +try{A.fs()}finally{$.aT=null $.cW=!1 -if($.a9!=null)$.d6().$1(A.dS())}}, -dQ(a){var s=new A.bo(a),r=$.aP -if(r==null){$.a9=$.aP=s -if(!$.cW)$.d6().$1(A.dS())}else $.aP=r.b=s}, -fy(a){var s,r,q,p=$.a9 +if($.aa!=null)$.d8().$1(A.dS())}}, +dQ(a){var s=new A.bo(a),r=$.aS +if(r==null){$.aa=$.aS=s +if(!$.cW)$.d8().$1(A.dS())}else $.aS=r.b=s}, +fx(a){var s,r,q,p=$.aa if(p==null){A.dQ(a) -$.aQ=$.aP +$.aT=$.aS return}s=new A.bo(a) -r=$.aQ +r=$.aT if(r==null){s.b=p -$.a9=$.aQ=s}else{q=r.b +$.aa=$.aT=s}else{q=r.b s.b=q -$.aQ=r.b=s -if(q==null)$.aP=s}}, -d4(a){var s=null,r=$.i -if(B.a===r){A.aa(s,s,B.a,a) -return}A.aa(s,s,r,r.ae(a))}, -h9(a){A.cC(a,"stream",t.K) +$.aT=r.b=s +if(q==null)$.aS=s}}, +d5(a){var s=null,r=$.k +if(B.a===r){A.ab(s,s,B.a,a) +return}A.ab(s,s,r,r.ae(a))}, +h9(a){A.cX(a,"stream",t.K) return new A.bw()}, bB(a){return}, -eI(a,b,c,d,e){var s=$.i,r=e?1:0,q=c!=null?32:0 +eG(a,b,c,d,e){var s=$.k,r=e?1:0,q=c!=null?32:0 A.dq(s,c) -return new A.a4(a,b,s,r|q)}, -dq(a,b){if(b==null)b=A.fJ() +return new A.a5(a,b,s,r|q)}, +dq(a,b){if(b==null)b=A.fI() if(t.f.b(b))return a.X(b) if(t.u.b(b))return b -throw A.b(A.aU("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.",null))}, -fu(a,b){A.bA(a,b)}, -bA(a,b){A.fy(new A.cz(a,b))}, -dN(a,b,c,d){var s,r=$.i +throw A.b(A.aW("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.",null))}, +ft(a,b){A.bA(a,b)}, +bA(a,b){A.fx(new A.cz(a,b))}, +dN(a,b,c,d){var s,r=$.k if(r===c)return d.$0() -$.i=c +$.k=c s=r try{r=d.$0() -return r}finally{$.i=s}}, -dO(a,b,c,d,e){var s,r=$.i +return r}finally{$.k=s}}, +dO(a,b,c,d,e){var s,r=$.k if(r===c)return d.$1(e) -$.i=c +$.k=c s=r try{r=d.$1(e) -return r}finally{$.i=s}}, -fx(a,b,c,d,e,f){var s,r=$.i +return r}finally{$.k=s}}, +fw(a,b,c,d,e,f){var s,r=$.k if(r===c)return d.$2(e,f) -$.i=c +$.k=c s=r try{r=d.$2(e,f) -return r}finally{$.i=s}}, -aa(a,b,c,d){if(B.a!==c)d=c.ae(d) +return r}finally{$.k=s}}, +ab(a,b,c,d){if(B.a!==c)d=c.ae(d) A.dQ(d)}, c3:function c3(a){this.a=a}, c2:function c2(a,b,c){this.a=a @@ -1416,11 +1432,11 @@ this.$ti=b}, cw:function cw(a){this.a=a}, cx:function cx(a){this.a=a}, cA:function cA(a){this.a=a}, -aY:function aY(a,b){this.a=a +R:function R(a,b){this.a=a this.b=b}, -ax:function ax(a,b){this.a=a +aA:function aA(a,b){this.a=a this.$ti=b}, -ay:function ay(a,b,c,d){var _=this +aB:function aB(a,b,c,d){var _=this _.ay=0 _.CW=_.ch=null _.w=a @@ -1428,8 +1444,8 @@ _.a=b _.d=c _.e=d _.r=null}, -a3:function a3(){}, -aK:function aK(a,b,c){var _=this +a4:function a4(){}, +aN:function aN(a,b,c){var _=this _.a=a _.b=b _.c=0 @@ -1437,14 +1453,14 @@ _.e=_.d=null _.$ti=c}, co:function co(a,b){this.a=a this.b=b}, -a6:function a6(a,b,c,d,e){var _=this +a7:function a7(a,b,c,d,e){var _=this _.a=null _.b=a _.c=b _.d=c _.e=d _.$ti=e}, -n:function n(a,b){var _=this +o:function o(a,b){var _=this _.a=0 _.b=a _.c=null @@ -1475,7 +1491,7 @@ cf:function cf(a,b){this.a=a this.b=b}, bo:function bo(a){this.a=a this.b=null}, -a1:function a1(){}, +a2:function a2(){}, bS:function bS(a,b){this.a=a this.b=b}, bT:function bT(a,b){this.a=a @@ -1483,31 +1499,31 @@ this.b=b}, bv:function bv(){}, cn:function cn(a){this.a=a}, bp:function bp(){}, -a2:function a2(a,b,c,d){var _=this +a3:function a3(a,b,c,d){var _=this _.a=null _.b=0 _.d=a _.e=b _.f=c _.$ti=d}, -U:function U(a,b){this.a=a +W:function W(a,b){this.a=a this.$ti=b}, -a4:function a4(a,b,c,d){var _=this +a5:function a5(a,b,c,d){var _=this _.w=a _.a=b _.d=c _.e=d _.r=null}, -T:function T(){}, -aJ:function aJ(){}, +V:function V(){}, +aM:function aM(){}, br:function br(){}, -a5:function a5(a){this.b=a +a6:function a6(a){this.b=a this.a=null}, -aH:function aH(){this.a=0 +aK:function aK(){this.a=0 this.c=this.b=null}, ck:function ck(a,b){this.a=a this.b=b}, -az:function az(a){this.a=1 +aC:function aC(a){this.a=1 this.b=a this.c=null}, bw:function bw(){}, @@ -1521,26 +1537,26 @@ dt(a,b){var s=a[b] return s===a?null:s}, du(a,b,c){if(c==null)a[b]=a else a[b]=c}, -eK(){var s=Object.create(null) +eI(){var s=Object.create(null) A.du(s,"",s) delete s[""] return s}, -ew(a){var s,r={} -if(A.d0(a))return"{...}" -s=new A.bj("") -try{$.v.push(a) +et(a){var s,r={} +if(A.d1(a))return"{...}" +s=new A.bk("") +try{$.w.push(a) s.a+="{" r.a=!0 a.af(0,new A.bO(r,s)) -s.a+="}"}finally{if(0>=$.v.length)return A.z($.v,-1) -$.v.pop()}r=s.a +s.a+="}"}finally{if(0>=$.w.length)return A.A($.w,-1) +$.w.pop()}r=s.a return r.charCodeAt(0)==0?r:r}, -aA:function aA(){}, -aC:function aC(a){var _=this +aD:function aD(){}, +aF:function aF(a){var _=this _.a=0 _.e=_.d=_.c=_.b=null _.$ti=a}, -aB:function aB(a,b){this.a=a +aE:function aE(a,b){this.a=a this.$ti=b}, bu:function bu(a,b,c){var _=this _.a=a @@ -1548,214 +1564,217 @@ _.b=b _.c=0 _.d=null _.$ti=c}, -h:function h(){}, -a_:function a_(){}, +j:function j(){}, +a0:function a0(){}, bO:function bO(a,b){this.a=a this.b=b}, -ep(a,b){a=A.b(a) +en(a,b){a=A.b(a) a.stack=b.h(0) throw a throw A.b("unreachable")}, -ev(a,b,c){var s -if(a>4294967295)A.aS(A.eB(a,0,4294967295,"length",null)) -s=J.df(A.bC(new Array(a),c.i("t<0>"))) -return s}, -dl(a,b,c){var s=J.ee(b) +es(a,b,c){var s,r +if(a>4294967295)A.bD(A.ey(a,0,4294967295,"length",null)) +s=A.bC(new Array(a),c.i("u<0>")) +s.$flags=1 +r=s +return r}, +dm(a,b,c){var s=J.ed(b) if(!s.l())return a -if(c.length===0){do a+=A.o(s.gm()) -while(s.l())}else{a+=A.o(s.gm()) -for(;s.l();)a=a+c+A.o(s.gm())}return a}, -dj(){return A.H(new Error())}, -bH(a){if(typeof a=="number"||A.cy(a)||a==null)return J.aT(a) +if(c.length===0){do a+=A.p(s.gm()) +while(s.l())}else{a+=A.p(s.gm()) +for(;s.l();)a=a+c+A.p(s.gm())}return a}, +dk(){return A.I(new Error())}, +bH(a){if(typeof a=="number"||A.cy(a)||a==null)return J.aV(a) if(typeof a=="string")return JSON.stringify(a) -return A.eA(a)}, -eq(a,b){A.cC(a,"error",t.K) -A.cC(b,"stackTrace",t.l) -A.ep(a,b)}, -aX(a){return new A.aW(a)}, -aU(a,b){return new A.y(!1,null,b,a)}, -d8(a,b,c){return new A.y(!0,a,b,c)}, -eB(a,b,c,d,e){return new A.au(b,c,!0,a,d,"Invalid value")}, -er(a,b,c,d){return new A.b0(b,!0,a,d,"Index out of range")}, -dp(a){return new A.bm(a)}, -dn(a){return new A.bk(a)}, -dk(a){return new A.C(a)}, -bG(a){return new A.b_(a)}, -es(a,b,c){var s,r -if(A.d0(a)){if(b==="("&&c===")")return"(...)" +return A.ex(a)}, +eo(a,b){A.cX(a,"error",t.K) +A.cX(b,"stackTrace",t.l) +A.en(a,b)}, +aZ(a){return new A.aY(a)}, +aW(a,b){return new A.z(!1,null,b,a)}, +da(a,b,c){return new A.z(!0,a,b,c)}, +ey(a,b,c,d,e){return new A.aw(b,c,!0,a,d,"Invalid value")}, +ep(a,b,c,d){return new A.b1(b,!0,a,d,"Index out of range")}, +eA(a){return new A.az(a)}, +dp(a){return new A.bl(a)}, +dl(a){return new A.D(a)}, +bG(a){return new A.b0(a)}, +eq(a,b,c){var s,r +if(A.d1(a)){if(b==="("&&c===")")return"(...)" return b+"..."+c}s=A.bC([],t.s) -$.v.push(a) -try{A.fr(a,s)}finally{if(0>=$.v.length)return A.z($.v,-1) -$.v.pop()}r=A.dl(b,s,", ")+c +$.w.push(a) +try{A.fq(a,s)}finally{if(0>=$.w.length)return A.A($.w,-1) +$.w.pop()}r=A.dm(b,s,", ")+c return r.charCodeAt(0)==0?r:r}, -de(a,b,c){var s,r -if(A.d0(a))return b+"..."+c -s=new A.bj(b) -$.v.push(a) +dg(a,b,c){var s,r +if(A.d1(a))return b+"..."+c +s=new A.bk(b) +$.w.push(a) try{r=s -r.a=A.dl(r.a,a,", ")}finally{if(0>=$.v.length)return A.z($.v,-1) -$.v.pop()}s.a+=c +r.a=A.dm(r.a,a,", ")}finally{if(0>=$.w.length)return A.A($.w,-1) +$.w.pop()}s.a+=c r=s.a return r.charCodeAt(0)==0?r:r}, -fr(a,b){var s,r,q,p,o,n,m,l=a.gq(a),k=0,j=0 +fq(a,b){var s,r,q,p,o,n,m,l=a.gq(a),k=0,j=0 while(!0){if(!(k<80||j<3))break if(!l.l())return -s=A.o(l.gm()) +s=A.p(l.gm()) b.push(s) k+=s.length+2;++j}if(!l.l()){if(j<=5)return -if(0>=b.length)return A.z(b,-1) +if(0>=b.length)return A.A(b,-1) r=b.pop() -if(0>=b.length)return A.z(b,-1) +if(0>=b.length)return A.A(b,-1) q=b.pop()}else{p=l.gm();++j -if(!l.l()){if(j<=4){b.push(A.o(p)) -return}r=A.o(p) -if(0>=b.length)return A.z(b,-1) +if(!l.l()){if(j<=4){b.push(A.p(p)) +return}r=A.p(p) +if(0>=b.length)return A.A(b,-1) q=b.pop() k+=r.length+2}else{o=l.gm();++j for(;l.l();p=o,o=n){n=l.gm();++j if(j>100){while(!0){if(!(k>75&&j>3))break -if(0>=b.length)return A.z(b,-1) +if(0>=b.length)return A.A(b,-1) k-=b.pop().length+2;--j}b.push("...") -return}}q=A.o(p) -r=A.o(o) +return}}q=A.p(p) +r=A.p(o) k+=r.length+q.length+4}}if(j>b.length+2){k+=5 m="..."}else m=null while(!0){if(!(k>80&&b.length>3))break -if(0>=b.length)return A.z(b,-1) +if(0>=b.length)return A.A(b,-1) k-=b.pop().length+2 if(m==null){k+=5 m="..."}}if(m!=null)b.push(m) b.push(q) b.push(r)}, -j:function j(){}, -aW:function aW(a){this.a=a}, -D:function D(){}, -y:function y(a,b,c,d){var _=this +l:function l(){}, +aY:function aY(a){this.a=a}, +E:function E(){}, +z:function z(a,b,c,d){var _=this _.a=a _.b=b _.c=c _.d=d}, -au:function au(a,b,c,d,e,f){var _=this +aw:function aw(a,b,c,d,e,f){var _=this _.e=a _.f=b _.a=c _.b=d _.c=e _.d=f}, -b0:function b0(a,b,c,d,e){var _=this +b1:function b1(a,b,c,d,e){var _=this _.f=a _.a=b _.b=c _.c=d _.d=e}, -bm:function bm(a){this.a=a}, -bk:function bk(a){this.a=a}, -C:function C(a){this.a=a}, -b_:function b_(a){this.a=a}, -av:function av(){}, +az:function az(a){this.a=a}, +bl:function bl(a){this.a=a}, +D:function D(a){this.a=a}, +b0:function b0(a){this.a=a}, +ax:function ax(){}, c6:function c6(a){this.a=a}, c:function c(){}, -p:function p(){}, +q:function q(){}, d:function d(){}, bx:function bx(){}, -bj:function bj(a){this.a=a}, -f9(a,b,c){if(c>=1)return a.$1(b) +bk:function bk(a){this.a=a}, +f7(a,b,c){if(c>=1)return a.$1(b) return a.$0()}, dM(a){return a==null||A.cy(a)||typeof a=="number"||typeof a=="string"||t.U.b(a)||t.E.b(a)||t.e.b(a)||t.O.b(a)||t.D.b(a)||t.k.b(a)||t.w.b(a)||t.B.b(a)||t.q.b(a)||t.J.b(a)||t.Y.b(a)}, -fX(a){if(A.dM(a))return a -return new A.cJ(new A.aC(t.F)).$1(a)}, -cJ:function cJ(a){this.a=a}, -fL(a,b,c,d,e){var s,r=e.i("aK<0>"),q=new A.aK(null,null,r),p=new A.cB(q,c,d) -if(typeof p=="function")A.aS(A.aU("Attempting to rewrap a JS function.",null)) -s=function(f,g){return function(h){return f(g,h,arguments.length)}}(A.f9,p) -s[$.d5()]=p +fW(a){if(A.dM(a))return a +return new A.cI(new A.aF(t.F)).$1(a)}, +cI:function cI(a){this.a=a}, +fK(a,b,c,d,e){var s,r=e.i("aN<0>"),q=new A.aN(null,null,r),p=new A.cB(q,c,d) +if(typeof p=="function")A.bD(A.aW("Attempting to rewrap a JS function.",null)) +s=function(f,g){return function(h){return f(g,h,arguments.length)}}(A.f7,p) +s[$.d7()]=p a[b]=s -return new A.ax(q,r.i("ax<1>"))}, -eD(){var s=new A.c0() -s.al() +return new A.aA(q,r.i("aA<1>"))}, +eB(){var s=new A.c0() +s.ak() return s}, -d1(){var s=0,r=A.fs(t.n),q,p -var $async$d1=A.fF(function(a,b){if(a===1)return A.f5(b,r) -while(true)switch(s){case 0:q=A.eD() +d2(){var s=0,r=A.fr(t.n),q,p +var $async$d2=A.fE(function(a,b){if(a===1)return A.f3(b,r) +while(true)switch(s){case 0:q=A.eB() p=q.a -p===$&&A.e1() -new A.U(p,A.a8(p).i("U<1>")).aK(new A.cK(q)) -return A.f6(null,r)}}) -return A.f7($async$d1,r)}, +p===$&&A.e0() +new A.W(p,A.a9(p).i("W<1>")).aJ(new A.cJ(q)) +return A.f4(null,r)}}) +return A.f5($async$d2,r)}, cB:function cB(a,b,c){this.a=a this.b=b this.c=c}, c0:function c0(){this.a=$}, c1:function c1(a){this.a=a}, -cK:function cK(a){this.a=a}, -h0(a){if(typeof dartPrint=="function"){dartPrint(a) +cJ:function cJ(a){this.a=a}, +h_(a){if(typeof dartPrint=="function"){dartPrint(a) return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a) return}if(typeof print=="function"){print(a) return}throw"Unable to print message: "+String(a)}, -h3(a){A.e0(new A.an("Field '"+a+"' has been assigned during initialization."),new Error())}, -e1(){A.e0(new A.an("Field '' has not been initialized."),new Error())}, -et(a,b,c,d,e,f){var s +h2(a){A.d6(new A.ap("Field '"+a+"' has been assigned during initialization."),new Error())}, +e0(){A.d6(new A.ap("Field '' has not been initialized."),new Error())}, +er(a,b,c,d,e,f){var s if(c==null)return a[b]() else{s=a[b](c) return s}}},B={} var w=[A,J,B] var $={} A.cP.prototype={} -J.b1.prototype={ -gn(a){return A.at(a)}, -h(a){return"Instance of '"+A.bQ(a)+"'"}, -gk(a){return A.W(A.cV(this))}} J.b2.prototype={ +gn(a){return A.av(a)}, +h(a){return"Instance of '"+A.bQ(a)+"'"}, +gk(a){return A.Y(A.cV(this))}} +J.b3.prototype={ h(a){return String(a)}, gn(a){return a?519018:218159}, -gk(a){return A.W(t.y)}, +gk(a){return A.Y(t.y)}, $if:1} -J.aj.prototype={ +J.ak.prototype={ h(a){return"null"}, gn(a){return 0}, $if:1, -$ip:1} -J.al.prototype={$im:1} -J.K.prototype={ +$iq:1} +J.an.prototype={$in:1} +J.L.prototype={ gn(a){return 0}, h(a){return String(a)}} -J.bh.prototype={} -J.aw.prototype={} -J.J.prototype={ -h(a){var s=a[$.d5()] -if(s==null)return this.aj(a) -return"JavaScript function for "+J.aT(s)}} -J.ak.prototype={ +J.bi.prototype={} +J.ay.prototype={} +J.K.prototype={ +h(a){var s=a[$.d7()] +if(s==null)return this.ai(a) +return"JavaScript function for "+J.aV(s)}} +J.am.prototype={ gn(a){return 0}, h(a){return String(a)}} -J.am.prototype={ +J.ao.prototype={ gn(a){return 0}, h(a){return String(a)}} -J.t.prototype={ -aH(a,b){var s -if(!!a.fixed$length)A.aS(A.dp("addAll")) +J.u.prototype={ +aG(a,b){var s +a.$flags&1&&A.h3(a,"addAll",2) for(s=b.gq(b);s.l();)a.push(s.gm())}, -F(a,b,c){return new A.B(a,b,A.cv(a).i("@<1>").u(c).i("B<1,2>"))}, -E(a,b){if(!(b").u(c).i("C<1,2>"))}, +E(a,b){if(!(b"))}, -gn(a){return A.at(a)}, +h(a){return A.dg(a,"[","]")}, +gq(a){return new J.aX(a,a.length,A.cv(a).i("aX<1>"))}, +gn(a){return A.av(a)}, gj(a){return a.length}, $ie:1, -$ic:1} +$ic:1, +$ii:1} J.bN.prototype={} -J.aV.prototype={ +J.aX.prototype={ gm(){var s=this.d return s==null?this.$ti.c.a(s):s}, l(){var s,r=this,q=r.a,p=q.length -if(r.b!==p)throw A.b(A.h2(q)) +if(r.b!==p)throw A.b(A.h1(q)) s=r.c if(s>=p){r.d=null return!1}r.d=q[s] r.c=s+1 return!0}} -J.b4.prototype={ +J.b5.prototype={ h(a){if(a===0&&1/a<0)return"-0.0" else return""+a}, gn(a){var s,r,q,p,o=a|0 @@ -1765,22 +1784,21 @@ r=Math.log(s)/0.6931471805599453|0 q=Math.pow(2,r) p=s<1?s/q:q/s return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911}, -aF(a,b){var s -if(a>0)s=this.aE(a,b) +aE(a,b){var s +if(a>0)s=this.aD(a,b) else{s=b>31?31:b s=a>>s>>>0}return s}, -aE(a,b){return b>31?0:a>>>b}, -gk(a){return A.W(t.H)}, -$il:1} -J.ai.prototype={ -gk(a){return A.W(t.S)}, +aD(a,b){return b>31?0:a>>>b}, +gk(a){return A.Y(t.H)}, +$ih:1} +J.aj.prototype={ +gk(a){return A.Y(t.S)}, $if:1, $ia:1} -J.b3.prototype={ -gk(a){return A.W(t.i)}, +J.b4.prototype={ +gk(a){return A.Y(t.i)}, $if:1} -J.Y.prototype={ -ai(a,b){return a+b}, +J.al.prototype={ h(a){return a}, gn(a){var s,r,q for(s=a.length,r=0,q=0;q>6}r=r+((r&67108863)<<3)&536870911 r^=r>>11 return r+((r&16383)<<15)&536870911}, -gk(a){return A.W(t.N)}, +gk(a){return A.Y(t.N)}, gj(a){return a.length}, $if:1, -$iS:1} -A.an.prototype={ +$iU:1} +A.ap.prototype={ h(a){return"LateInitializationError: "+this.a}} A.e.prototype={} -A.L.prototype={ -gq(a){return new A.Z(this,this.gj(0),this.$ti.i("Z"))}, -F(a,b,c){return new A.B(this,b,this.$ti.i("@").u(c).i("B<1,2>"))}} -A.Z.prototype={ +A.M.prototype={ +gq(a){return new A.a_(this,this.gj(0),this.$ti.i("a_"))}, +F(a,b,c){return new A.C(this,b,this.$ti.i("@").u(c).i("C<1,2>"))}} +A.a_.prototype={ gm(){var s=this.d return s==null?this.$ti.c.a(s):s}, l(){var s,r=this,q=r.a,p=J.dW(q),o=p.gj(q) @@ -1807,23 +1825,23 @@ s=r.c if(s>=o){r.d=null return!1}r.d=p.E(q,s);++r.c return!0}} -A.R.prototype={ +A.T.prototype={ gq(a){var s=this.a -return new A.b6(s.gq(s),this.b,A.a8(this).i("b6<1,2>"))}, +return new A.b7(s.gq(s),this.b,A.a9(this).i("b7<1,2>"))}, gj(a){var s=this.a return s.gj(s)}} -A.af.prototype={$ie:1} -A.b6.prototype={ +A.ag.prototype={$ie:1} +A.b7.prototype={ l(){var s=this,r=s.b if(r.l()){s.a=s.c.$1(r.gm()) return!0}s.a=null return!1}, gm(){var s=this.a return s==null?this.$ti.y[1].a(s):s}} -A.B.prototype={ -gj(a){return J.cM(this.a)}, -E(a,b){return this.b.$1(J.ed(this.a,b))}} -A.ah.prototype={} +A.C.prototype={ +gj(a){return J.cL(this.a)}, +E(a,b){return this.b.$1(J.ec(this.a,b))}} +A.ai.prototype={} A.bV.prototype={ t(a){var s,r,q=this,p=new RegExp(q.a).exec(a) if(p==null)return null @@ -1839,31 +1857,31 @@ if(r!==-1)s.method=p[r+1] r=q.f if(r!==-1)s.receiver=p[r+1] return s}} -A.as.prototype={ +A.au.prototype={ h(a){return"Null check operator used on a null value"}} -A.b5.prototype={ +A.b6.prototype={ h(a){var s,r=this,q="NoSuchMethodError: method not found: '",p=r.b if(p==null)return"NoSuchMethodError: "+r.a s=r.c if(s==null)return q+p+"' ("+r.a+")" return q+p+"' on '"+s+"' ("+r.a+")"}} -A.bl.prototype={ +A.bm.prototype={ h(a){var s=this.a return s.length===0?"Error":"Error: "+s}} A.bP.prototype={ h(a){return"Throw of null ('"+(this.a===null?"null":"undefined")+"' from JavaScript)"}} -A.ag.prototype={} -A.aI.prototype={ +A.ah.prototype={} +A.aL.prototype={ h(a){var s,r=this.b if(r!=null)return r r=this.a s=r!==null&&typeof r==="object"?r.stack:null return this.b=s==null?"":s}, -$ix:1} -A.Q.prototype={ +$iy:1} +A.S.prototype={ h(a){var s=this.constructor,r=s==null?null:s.name -return"Closure '"+A.e2(r==null?"unknown":r)+"'"}, -gaW(){return this}, +return"Closure '"+A.e1(r==null?"unknown":r)+"'"}, +gaV(){return this}, $C:"$1", $R:1, $D:null} @@ -1873,106 +1891,107 @@ A.bU.prototype={} A.bR.prototype={ h(a){var s=this.$static_name if(s==null)return"Closure of unknown static method" -return"Closure '"+A.e2(s)+"'"}} -A.aZ.prototype={ -gn(a){return(A.d3(this.a)^A.at(this.$_target))>>>0}, +return"Closure '"+A.e1(s)+"'"}} +A.b_.prototype={ +gn(a){return(A.d4(this.a)^A.av(this.$_target))>>>0}, h(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.bQ(this.a)+"'")}} A.bq.prototype={ h(a){return"Reading static variable '"+this.a+"' during its initialization"}} -A.bi.prototype={ +A.bj.prototype={ h(a){return"RuntimeError: "+this.a}} -A.cF.prototype={ +A.cE.prototype={ $1(a){return this.a(a)}, $S:6} -A.cG.prototype={ +A.cF.prototype={ $2(a,b){return this.a(a,b)}, $S:7} -A.cH.prototype={ +A.cG.prototype={ $1(a){return this.a(a)}, $S:8} -A.b7.prototype={ -gk(a){return B.u}, +A.b8.prototype={ +gk(a){return B.t}, $if:1, $icN:1} -A.aq.prototype={} -A.b8.prototype={ -gk(a){return B.v}, +A.as.prototype={} +A.b9.prototype={ +gk(a){return B.u}, $if:1, $icO:1} -A.a0.prototype={ +A.a1.prototype={ gj(a){return a.length}, -$iu:1} -A.ao.prototype={ -p(a,b){A.V(b,a,a.length) +$iv:1} +A.aq.prototype={ +p(a,b){A.X(b,a,a.length) return a[b]}, $ie:1, -$ic:1} -A.ap.prototype={$ie:1,$ic:1} -A.b9.prototype={ -gk(a){return B.w}, +$ic:1, +$ii:1} +A.ar.prototype={$ie:1,$ic:1,$ii:1} +A.ba.prototype={ +gk(a){return B.v}, $if:1, $ibI:1} -A.ba.prototype={ -gk(a){return B.x}, +A.bb.prototype={ +gk(a){return B.w}, $if:1, $ibJ:1} -A.bb.prototype={ -gk(a){return B.y}, -p(a,b){A.V(b,a,a.length) +A.bc.prototype={ +gk(a){return B.x}, +p(a,b){A.X(b,a,a.length) return a[b]}, $if:1, $ibK:1} -A.bc.prototype={ -gk(a){return B.z}, -p(a,b){A.V(b,a,a.length) +A.bd.prototype={ +gk(a){return B.y}, +p(a,b){A.X(b,a,a.length) return a[b]}, $if:1, $ibL:1} -A.bd.prototype={ -gk(a){return B.A}, -p(a,b){A.V(b,a,a.length) +A.be.prototype={ +gk(a){return B.z}, +p(a,b){A.X(b,a,a.length) return a[b]}, $if:1, $ibM:1} -A.be.prototype={ -gk(a){return B.B}, -p(a,b){A.V(b,a,a.length) +A.bf.prototype={ +gk(a){return B.A}, +p(a,b){A.X(b,a,a.length) return a[b]}, $if:1, $ibX:1} -A.bf.prototype={ -gk(a){return B.C}, -p(a,b){A.V(b,a,a.length) +A.bg.prototype={ +gk(a){return B.B}, +p(a,b){A.X(b,a,a.length) return a[b]}, $if:1, $ibY:1} -A.ar.prototype={ -gk(a){return B.D}, +A.at.prototype={ +gk(a){return B.C}, gj(a){return a.length}, -p(a,b){A.V(b,a,a.length) +p(a,b){A.X(b,a,a.length) return a[b]}, $if:1, $ibZ:1} -A.bg.prototype={ -gk(a){return B.E}, +A.bh.prototype={ +gk(a){return B.D}, gj(a){return a.length}, -p(a,b){A.V(b,a,a.length) +p(a,b){A.X(b,a,a.length) return a[b]}, $if:1, $ic_:1} -A.aD.prototype={} -A.aE.prototype={} -A.aF.prototype={} A.aG.prototype={} -A.w.prototype={ +A.aH.prototype={} +A.aI.prototype={} +A.aJ.prototype={} +A.x.prototype={ i(a){return A.cs(v.typeUniverse,this,a)}, -u(a){return A.f0(v.typeUniverse,this,a)}} +u(a){return A.eZ(v.typeUniverse,this,a)}} A.bt.prototype={} A.cr.prototype={ -h(a){return A.r(this.a,null)}} +h(a){return A.t(this.a,null)}} A.bs.prototype={ h(a){return this.a}} -A.aL.prototype={$iD:1} +A.aO.prototype={$iE:1} A.c3.prototype={ $1(a){var s=this.a,r=s.a s.a=null @@ -1992,8 +2011,8 @@ A.c5.prototype={ $0(){this.a.$0()}, $S:3} A.cp.prototype={ -am(a,b){if(self.setTimeout!=null)self.setTimeout(A.cD(new A.cq(this,b),0),a) -else throw A.b(A.dp("`setTimeout()` not found."))}} +al(a,b){if(self.setTimeout!=null)self.setTimeout(A.cC(new A.cq(this,b),0),a) +else throw A.b(A.eA("`setTimeout()` not found."))}} A.cq.prototype={ $0(){this.b.$0()}, $S:0} @@ -2002,30 +2021,30 @@ A.cw.prototype={ $1(a){return this.a.$2(0,a)}, $S:4} A.cx.prototype={ -$2(a,b){this.a.$2(1,new A.ag(a,b))}, +$2(a,b){this.a.$2(1,new A.ah(a,b))}, $S:10} A.cA.prototype={ $2(a,b){this.a(a,b)}, $S:11} -A.aY.prototype={ -h(a){return A.o(this.a)}, -$ij:1, +A.R.prototype={ +h(a){return A.p(this.a)}, +$il:1, gH(){return this.b}} -A.ax.prototype={} -A.ay.prototype={ +A.aA.prototype={} +A.aB.prototype={ R(){}, S(){}} -A.a3.prototype={ +A.a4.prototype={ gP(){return this.c<4}, ab(a,b,c,d){var s,r,q,p,o,n=this -if((n.c&4)!==0){s=new A.az($.i) -A.d4(s.gaz()) +if((n.c&4)!==0){s=new A.aC($.k) +A.d5(s.gaw()) if(c!=null)s.c=c -return s}s=$.i +return s}s=$.k r=d?1:0 q=b!=null?32:0 A.dq(s,b) -p=new A.ay(n,a,s,r|q) +p=new A.aB(n,a,s,r|q) p.CW=p p.ch=p p.ay=n.c&1 @@ -2039,10 +2058,10 @@ if(n.d===p)A.bB(n.a) return p}, a8(a){}, a9(a){}, -I(){if((this.c&4)!==0)return new A.C("Cannot add new events after calling close") -return new A.C("Cannot add new events while doing an addStream")}, -av(a){var s,r,q,p,o=this,n=o.c -if((n&2)!==0)throw A.b(A.dk(u.g)) +I(){if((this.c&4)!==0)return new A.D("Cannot add new events after calling close") +return new A.D("Cannot add new events while doing an addStream")}, +au(a){var s,r,q,p,o=this,n=o.c +if((n&2)!==0)throw A.b(A.dl(u.g)) s=o.d if(s==null)return r=n&1 @@ -2061,45 +2080,45 @@ s.CW=s s.ch=s}s.ay=n&4294967293 s=q}else s=s.ch}o.c&=4294967293 if(o.d==null)o.a3()}, -a3(){if((this.c&4)!==0)if(null.gaX())null.a2(null) +a3(){if((this.c&4)!==0)if(null.gaW())null.a2(null) A.bB(this.b)}} -A.aK.prototype={ -gP(){return A.a3.prototype.gP.call(this)&&(this.c&2)===0}, -I(){if((this.c&2)!==0)return new A.C(u.g) -return this.ak()}, +A.aN.prototype={ +gP(){return A.a4.prototype.gP.call(this)&&(this.c&2)===0}, +I(){if((this.c&2)!==0)return new A.D(u.g) +return this.aj()}, A(a){var s=this,r=s.d if(r==null)return if(r===s.e){s.c|=2 r.a0(a) s.c&=4294967293 if(s.d==null)s.a3() -return}s.av(new A.co(s,a))}} +return}s.au(new A.co(s,a))}} A.co.prototype={ $1(a){a.a0(this.b)}, -$S(){return this.a.$ti.i("~(T<1>)")}} -A.a6.prototype={ -aL(a){if((this.c&15)!==6)return!0 +$S(){return this.a.$ti.i("~(V<1>)")}} +A.a7.prototype={ +aK(a){if((this.c&15)!==6)return!0 return this.b.b.Y(this.d,a.a)}, -aJ(a){var s,r=this.e,q=null,p=a.a,o=this.b.b -if(t.C.b(r))q=o.aQ(r,p,a.b) +aI(a){var s,r=this.e,q=null,p=a.a,o=this.b.b +if(t.C.b(r))q=o.aP(r,p,a.b) else q=o.Y(r,p) try{p=q -return p}catch(s){if(t.c.b(A.P(s))){if((this.c&1)!==0)throw A.b(A.aU("The error handler of Future.then must return a value of the returned future's type","onError")) -throw A.b(A.aU("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} -A.n.prototype={ +return p}catch(s){if(t.c.b(A.Q(s))){if((this.c&1)!==0)throw A.b(A.aW("The error handler of Future.then must return a value of the returned future's type","onError")) +throw A.b(A.aW("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} +A.o.prototype={ aa(a){this.a=this.a&1|4 this.c=a}, -Z(a,b,c){var s,r,q=$.i -if(q===B.a){if(b!=null&&!t.C.b(b)&&!t.v.b(b))throw A.b(A.d8(b,"onError",u.c))}else if(b!=null)b=A.fw(b,q) -s=new A.n(q,c.i("n<0>")) +Z(a,b,c){var s,r,q=$.k +if(q===B.a){if(b!=null&&!t.C.b(b)&&!t.v.b(b))throw A.b(A.da(b,"onError",u.c))}else if(b!=null)b=A.fv(b,q) +s=new A.o(q,c.i("o<0>")) r=b==null?1:3 -this.J(new A.a6(s,r,a,b,this.$ti.i("@<1>").u(c).i("a6<1,2>"))) +this.J(new A.a7(s,r,a,b,this.$ti.i("@<1>").u(c).i("a7<1,2>"))) return s}, -aV(a,b){return this.Z(a,null,b)}, -ac(a,b,c){var s=new A.n($.i,c.i("n<0>")) -this.J(new A.a6(s,19,a,b,this.$ti.i("@<1>").u(c).i("a6<1,2>"))) +aU(a,b){return this.Z(a,null,b)}, +ac(a,b,c){var s=new A.o($.k,c.i("o<0>")) +this.J(new A.a7(s,19,a,b,this.$ti.i("@<1>").u(c).i("a7<1,2>"))) return s}, -aC(a){this.a=this.a&1|16 +aB(a){this.a=this.a&1|16 this.c=a}, B(a){this.a=a.a&30|this.a&1 this.c=a.c}, @@ -2107,7 +2126,7 @@ J(a){var s=this,r=s.a if(r<=3){a.a=s.c s.c=a}else{if((r&4)!==0){r=s.c if((r.a&24)===0){r.J(a) -return}s.B(r)}A.aa(null,null,s.b,new A.c7(s,a))}}, +return}s.B(r)}A.ab(null,null,s.b,new A.c7(s,a))}}, T(a){var s,r,q,p,o,n=this,m={} m.a=a if(a==null)return @@ -2119,45 +2138,45 @@ for(p=a;q!=null;p=q,q=o)o=q.a p.a=r}}else{if((s&4)!==0){s=n.c if((s.a&24)===0){s.T(a) return}n.B(s)}m.a=n.D(a) -A.aa(null,null,n.b,new A.ce(m,n))}}, +A.ab(null,null,n.b,new A.ce(m,n))}}, C(){var s=this.c this.c=null return this.D(s)}, D(a){var s,r,q for(s=a,r=null;s!=null;r=s,s=q){q=s.a s.a=r}return r}, -ap(a){var s,r,q,p=this +ao(a){var s,r,q,p=this p.a^=2 -try{a.Z(new A.cb(p),new A.cc(p),t.P)}catch(q){s=A.P(q) -r=A.H(q) -A.d4(new A.cd(p,s,r))}}, +try{a.Z(new A.cb(p),new A.cc(p),t.P)}catch(q){s=A.Q(q) +r=A.I(q) +A.d5(new A.cd(p,s,r))}}, L(a){var s=this,r=s.C() s.a=8 s.c=a -A.a7(s,r)}, +A.a8(s,r)}, v(a,b){var s=this.C() -this.aC(A.bD(a,b)) -A.a7(this,s)}, -a2(a){if(this.$ti.i("X<1>").b(a)){this.a4(a) -return}this.an(a)}, -an(a){this.a^=2 -A.aa(null,null,this.b,new A.c9(this,a))}, -a4(a){if(this.$ti.b(a)){A.eJ(a,this) -return}this.ap(a)}, +this.aB(new A.R(a,b)) +A.a8(this,s)}, +a2(a){if(this.$ti.i("Z<1>").b(a)){this.a4(a) +return}this.am(a)}, +am(a){this.a^=2 +A.ab(null,null,this.b,new A.c9(this,a))}, +a4(a){if(this.$ti.b(a)){A.eH(a,this) +return}this.ao(a)}, K(a,b){this.a^=2 -A.aa(null,null,this.b,new A.c8(this,a,b))}, -$iX:1} +A.ab(null,null,this.b,new A.c8(this,a,b))}, +$iZ:1} A.c7.prototype={ -$0(){A.a7(this.a,this.b)}, +$0(){A.a8(this.a,this.b)}, $S:0} A.ce.prototype={ -$0(){A.a7(this.b,this.a.a)}, +$0(){A.a8(this.b,this.a.a)}, $S:0} A.cb.prototype={ $1(a){var s,r,q,p=this.a p.a^=2 -try{p.L(p.$ti.c.a(a))}catch(q){s=A.P(q) -r=A.H(q) +try{p.L(p.$ti.c.a(a))}catch(q){s=A.Q(q) +r=A.I(q) p.v(s,r)}}, $S:2} A.cc.prototype={ @@ -2176,117 +2195,126 @@ A.c8.prototype={ $0(){this.a.v(this.b,this.c)}, $S:0} A.ch.prototype={ -$0(){var s,r,q,p,o,n,m=this,l=null -try{q=m.a.a -l=q.b.b.aO(q.d)}catch(p){s=A.P(p) -r=A.H(p) -q=m.c&&m.b.a.c.a===s -o=m.a -if(q)o.c=m.b.a.c -else o.c=A.bD(s,r) -o.b=!0 -return}if(l instanceof A.n&&(l.a&24)!==0){if((l.a&16)!==0){q=m.a -q.c=l.c -q.b=!0}return}if(l instanceof A.n){n=m.b.a -q=m.a -q.c=l.aV(new A.ci(n),t.z) +$0(){var s,r,q,p,o,n,m,l=this,k=null +try{q=l.a.a +k=q.b.b.aN(q.d)}catch(p){s=A.Q(p) +r=A.I(p) +if(l.c&&l.b.a.c.a===s){q=l.a +q.c=l.b.a.c}else{q=s +o=r +if(o==null)o=A.cM(q) +n=l.a +n.c=new A.R(q,o) +q=n}q.b=!0 +return}if(k instanceof A.o&&(k.a&24)!==0){if((k.a&16)!==0){q=l.a +q.c=k.c +q.b=!0}return}if(k instanceof A.o){m=l.b.a +q=l.a +q.c=k.aU(new A.ci(m),t.z) q.b=!1}}, $S:0} A.ci.prototype={ $1(a){return this.a}, $S:13} A.cg.prototype={ -$0(){var s,r,q,p,o +$0(){var s,r,q,p,o,n try{q=this.a p=q.a -q.c=p.b.b.Y(p.d,this.b)}catch(o){s=A.P(o) -r=A.H(o) -q=this.a -q.c=A.bD(s,r) -q.b=!0}}, +q.c=p.b.b.Y(p.d,this.b)}catch(o){s=A.Q(o) +r=A.I(o) +q=s +p=r +if(p==null)p=A.cM(q) +n=this.a +n.c=new A.R(q,p) +n.b=!0}}, $S:0} A.cf.prototype={ -$0(){var s,r,q,p,o,n,m=this -try{s=m.a.a.c -p=m.b -if(p.a.aL(s)&&p.a.e!=null){p.c=p.a.aJ(s) -p.b=!1}}catch(o){r=A.P(o) -q=A.H(o) -p=m.a.a.c -n=m.b -if(p.a===r)n.c=p -else n.c=A.bD(r,q) -n.b=!0}}, +$0(){var s,r,q,p,o,n,m,l=this +try{s=l.a.a.c +p=l.b +if(p.a.aK(s)&&p.a.e!=null){p.c=p.a.aI(s) +p.b=!1}}catch(o){r=A.Q(o) +q=A.I(o) +p=l.a.a.c +if(p.a===r){n=l.b +n.c=p +p=n}else{p=r +n=q +if(n==null)n=A.cM(p) +m=l.b +m.c=new A.R(p,n) +p=m}p.b=!0}}, $S:0} A.bo.prototype={} -A.a1.prototype={ -gj(a){var s={},r=new A.n($.i,t.a) +A.a2.prototype={ +gj(a){var s={},r=new A.o($.k,t.a) s.a=0 -this.ag(new A.bS(s,this),!0,new A.bT(s,r),r.gaq()) +this.ag(new A.bS(s,this),!0,new A.bT(s,r),r.gap()) return r}} A.bS.prototype={ $1(a){++this.a.a}, -$S(){return A.a8(this.b).i("~(1)")}} +$S(){return A.a9(this.b).i("~(1)")}} A.bT.prototype={ $0(){var s=this.b,r=this.a.a,q=s.C() s.a=8 s.c=r -A.a7(s,q)}, +A.a8(s,q)}, $S:0} A.bv.prototype={ -gaB(){if((this.b&8)===0)return this.a +gaA(){if((this.b&8)===0)return this.a return this.a.gU()}, -au(){var s,r=this +ar(){var s,r=this if((r.b&8)===0){s=r.a -return s==null?r.a=new A.aH():s}s=r.a.gU() +return s==null?r.a=new A.aK():s}s=r.a.gU() return s}, -gaG(){var s=this.a +gaF(){var s=this.a return(this.b&8)!==0?s.gU():s}, -ao(){if((this.b&4)!==0)return new A.C("Cannot add event after closing") -return new A.C("Cannot add event while adding a stream")}, +an(){if((this.b&4)!==0)return new A.D("Cannot add event after closing") +return new A.D("Cannot add event while adding a stream")}, ab(a,b,c,d){var s,r,q,p,o=this -if((o.b&3)!==0)throw A.b(A.dk("Stream has already been listened to.")) -s=A.eI(o,a,b,c,d) -r=o.gaB() +if((o.b&3)!==0)throw A.b(A.dl("Stream has already been listened to.")) +s=A.eG(o,a,b,c,d) +r=o.gaA() q=o.b|=1 if((q&8)!==0){p=o.a p.sU(s) -p.aN()}else o.a=s -s.aD(r) +p.aM()}else o.a=s +s.aC(r) q=s.e s.e=q|64 new A.cn(o).$0() s.e&=4294967231 s.a5((q&4)!==0) return s}, -a8(a){if((this.b&8)!==0)this.a.aY() +a8(a){if((this.b&8)!==0)this.a.aX() A.bB(this.e)}, -a9(a){if((this.b&8)!==0)this.a.aN() +a9(a){if((this.b&8)!==0)this.a.aM() A.bB(this.f)}} A.cn.prototype={ $0(){A.bB(this.a.d)}, $S:0} A.bp.prototype={ -A(a){this.gaG().a1(new A.a5(a))}} -A.a2.prototype={} -A.U.prototype={ -gn(a){return(A.at(this.a)^892482866)>>>0}} -A.a4.prototype={ +A(a){this.gaF().a1(new A.a6(a))}} +A.a3.prototype={} +A.W.prototype={ +gn(a){return(A.av(this.a)^892482866)>>>0}} +A.a5.prototype={ R(){this.w.a8(this)}, S(){this.w.a9(this)}} -A.T.prototype={ -aD(a){if(a==null)return +A.V.prototype={ +aC(a){if(a==null)return this.r=a if(a.c!=null){this.e|=128 a.G(this)}}, a0(a){var s=this.e if((s&8)!==0)return if(s<64)this.A(a) -else this.a1(new A.a5(a))}, +else this.a1(new A.a6(a))}, R(){}, S(){}, a1(a){var s,r=this,q=r.r -if(q==null)q=r.r=new A.aH() +if(q==null)q=r.r=new A.aK() q.ad(0,a) s=r.e if((s&128)===0){s|=128 @@ -2294,7 +2322,7 @@ r.e=s if(s<256)q.G(r)}}, A(a){var s=this,r=s.e s.e=r|64 -s.d.aU(s.a,a) +s.d.aT(s.a,a) s.e&=4294967231 s.a5((r&4)!==0)}, a5(a){var s,r,q=this,p=q.e @@ -2310,16 +2338,16 @@ q.e=p^64 if(r)q.R() else q.S() p=q.e&=4294967231}if((p&128)!==0&&p<256)q.r.G(q)}} -A.aJ.prototype={ +A.aM.prototype={ ag(a,b,c,d){return this.a.ab(a,d,c,b===!0)}, -aK(a){return this.ag(a,null,null,null)}} +aJ(a){return this.ag(a,null,null,null)}} A.br.prototype={} -A.a5.prototype={} -A.aH.prototype={ +A.a6.prototype={} +A.aK.prototype={ G(a){var s=this,r=s.a if(r===1)return if(r>=1){s.a=1 -return}A.d4(new A.ck(s,a)) +return}A.d5(new A.ck(s,a)) s.a=1}, ad(a,b){var s=this,r=s.c if(r==null)s.b=s.c=b @@ -2334,8 +2362,8 @@ q.b=r if(r==null)q.c=null this.b.A(s.b)}, $S:0} -A.az.prototype={ -aA(){var s,r=this,q=r.a-1 +A.aC.prototype={ +az(){var s,r=this,q=r.a-1 if(q===0){r.a=-1 s=r.c if(s!=null){r.c=null @@ -2343,46 +2371,46 @@ r.b.ah(s)}}else r.a=q}} A.bw.prototype={} A.cu.prototype={} A.cz.prototype={ -$0(){A.eq(this.a,this.b)}, +$0(){A.eo(this.a,this.b)}, $S:0} A.cl.prototype={ ah(a){var s,r,q -try{if(B.a===$.i){a.$0() -return}A.dN(null,null,this,a)}catch(q){s=A.P(q) -r=A.H(q) +try{if(B.a===$.k){a.$0() +return}A.dN(null,null,this,a)}catch(q){s=A.Q(q) +r=A.I(q) A.bA(s,r)}}, -aT(a,b){var s,r,q -try{if(B.a===$.i){a.$1(b) -return}A.dO(null,null,this,a,b)}catch(q){s=A.P(q) -r=A.H(q) +aS(a,b){var s,r,q +try{if(B.a===$.k){a.$1(b) +return}A.dO(null,null,this,a,b)}catch(q){s=A.Q(q) +r=A.I(q) A.bA(s,r)}}, -aU(a,b){return this.aT(a,b,t.z)}, +aT(a,b){return this.aS(a,b,t.z)}, ae(a){return new A.cm(this,a)}, -aP(a){if($.i===B.a)return a.$0() +aO(a){if($.k===B.a)return a.$0() return A.dN(null,null,this,a)}, -aO(a){return this.aP(a,t.z)}, -aS(a,b){if($.i===B.a)return a.$1(b) +aN(a){return this.aO(a,t.z)}, +aR(a,b){if($.k===B.a)return a.$1(b) return A.dO(null,null,this,a,b)}, Y(a,b){var s=t.z -return this.aS(a,b,s,s)}, -aR(a,b,c){if($.i===B.a)return a.$2(b,c) -return A.fx(null,null,this,a,b,c)}, -aQ(a,b,c){var s=t.z -return this.aR(a,b,c,s,s,s)}, -aM(a){return a}, +return this.aR(a,b,s,s)}, +aQ(a,b,c){if($.k===B.a)return a.$2(b,c) +return A.fw(null,null,this,a,b,c)}, +aP(a,b,c){var s=t.z +return this.aQ(a,b,c,s,s,s)}, +aL(a){return a}, X(a){var s=t.z -return this.aM(a,s,s,s)}} +return this.aL(a,s,s,s)}} A.cm.prototype={ $0(){return this.a.ah(this.b)}, $S:0} -A.aA.prototype={ +A.aD.prototype={ gj(a){return this.a}, -gW(){return new A.aB(this,this.$ti.i("aB<1>"))}, -aI(a){var s,r +gW(){return new A.aE(this,this.$ti.i("aE<1>"))}, +aH(a){var s,r if(typeof a=="string"&&a!=="__proto__"){s=this.b return s==null?!1:s[a]!=null}else if(typeof a=="number"&&(a&1073741823)===a){r=this.c -return r==null?!1:r[a]!=null}else return this.ar(a)}, -ar(a){var s=this.d +return r==null?!1:r[a]!=null}else return this.aq(a)}, +aq(a){var s=this.d if(s==null)return!1 return this.O(this.a7(s,a),a)>=0}, p(a,b){var s,r,q @@ -2390,15 +2418,15 @@ if(typeof b=="string"&&b!=="__proto__"){s=this.b r=s==null?null:A.dt(s,b) return r}else if(typeof b=="number"&&(b&1073741823)===b){q=this.c r=q==null?null:A.dt(q,b) -return r}else return this.aw(b)}, -aw(a){var s,r,q=this.d +return r}else return this.av(b)}, +av(a){var s,r,q=this.d if(q==null)return null s=this.a7(q,a) r=this.O(s,a) return r<0?null:s[r+1]}, a_(a,b,c){var s,r,q,p=this,o=p.d -if(o==null)o=p.d=A.eK() -s=A.d3(b)&1073741823 +if(o==null)o=p.d=A.eI() +s=A.d4(b)&1073741823 r=o[s] if(r==null){A.du(o,s,[b,c]);++p.a p.e=null}else{q=p.O(r,b) @@ -2412,7 +2440,7 @@ b.$2(p,o==null?r.a(o):o) if(m!==n.e)throw A.b(A.bG(n))}}, a6(){var s,r,q,p,o,n,m,l,k,j,i=this,h=i.e if(h!=null)return h -h=A.ev(i.a,null,t.z) +h=A.es(i.a,null,t.z) s=i.b r=0 if(s!=null){q=Object.getOwnPropertyNames(s) @@ -2426,14 +2454,14 @@ p=q.length for(o=0;o"))}} @@ -2446,54 +2474,54 @@ else if(q>=r.length){s.d=null return!1}else{s.d=r[q] s.c=q+1 return!0}}} -A.h.prototype={ -gq(a){return new A.Z(a,this.gj(a),A.ae(a).i("Z"))}, +A.j.prototype={ +gq(a){return new A.a_(a,this.gj(a),A.af(a).i("a_"))}, E(a,b){return this.p(a,b)}, -F(a,b,c){return new A.B(a,b,A.ae(a).i("@").u(c).i("B<1,2>"))}, -h(a){return A.de(a,"[","]")}} -A.a_.prototype={ +F(a,b,c){return new A.C(a,b,A.af(a).i("@").u(c).i("C<1,2>"))}, +h(a){return A.dg(a,"[","]")}} +A.a0.prototype={ af(a,b){var s,r,q,p -for(s=this.gW(),s=s.gq(s),r=A.a8(this).y[1];s.l();){q=s.gm() +for(s=this.gW(),s=s.gq(s),r=A.a9(this).y[1];s.l();){q=s.gm() p=this.p(0,q) b.$2(q,p==null?r.a(p):p)}}, gj(a){var s=this.gW() return s.gj(s)}, -h(a){return A.ew(this)}} +h(a){return A.et(this)}} A.bO.prototype={ $2(a,b){var s,r=this.a if(!r.a)this.b.a+=", " r.a=!1 r=this.b -s=A.o(a) +s=A.p(a) s=r.a+=s r.a=s+": " -s=A.o(b) +s=A.p(b) r.a+=s}, $S:14} -A.j.prototype={ -gH(){return A.ez(this)}} -A.aW.prototype={ +A.l.prototype={ +gH(){return A.ew(this)}} +A.aY.prototype={ h(a){var s=this.a if(s!=null)return"Assertion failed: "+A.bH(s) return"Assertion failed"}} -A.D.prototype={} -A.y.prototype={ +A.E.prototype={} +A.z.prototype={ gN(){return"Invalid argument"+(!this.a?"(s)":"")}, gM(){return""}, h(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+p,n=s.gN()+q+o if(!s.a)return n return n+s.gM()+": "+A.bH(s.gV())}, gV(){return this.b}} -A.au.prototype={ +A.aw.prototype={ gV(){return this.b}, gN(){return"RangeError"}, gM(){var s,r=this.e,q=this.f -if(r==null)s=q!=null?": Not less than or equal to "+A.o(q):"" -else if(q==null)s=": Not greater than or equal to "+A.o(r) -else if(q>r)s=": Not in inclusive range "+A.o(r)+".."+A.o(q) -else s=qr)s=": Not in inclusive range "+A.p(r)+".."+A.p(q) +else s=q=4)A.aS(q.ao()) +if(s>=4)A.bD(q.an()) if((s&1)!==0)q.A(r) -else if((s&3)===0)q.au().ad(0,new A.a5(r))}, +else if((s&3)===0)q.ar().ad(0,new A.a6(r))}, $S:17} -A.cK.prototype={ +A.cJ.prototype={ $1(a){var s,r try{s=t.m.a(self) -A.et(s,"postMessage",A.fX(a==null?t.K.a(a):a),null,null,null)}catch(r){A.h0("Received data from WASM worker but it's not a String!\n")}}, -$S:4};(function aliases(){var s=J.K.prototype -s.aj=s.h -s=A.a3.prototype -s.ak=s.I})();(function installTearOffs(){var s=hunkHelpers._static_1,r=hunkHelpers._static_0,q=hunkHelpers._static_2,p=hunkHelpers._instance_2u,o=hunkHelpers._instance_0u -s(A,"fG","eF",1) -s(A,"fH","eG",1) -s(A,"fI","eH",1) -r(A,"dS","fz",0) -q(A,"fJ","fu",5) -p(A.n.prototype,"gaq","v",5) -o(A.az.prototype,"gaz","aA",0)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany +A.er(s,"postMessage",A.fW(a==null?t.K.a(a):a),null,null,null)}catch(r){A.h_("Received data from WASM worker but it's not a String!\n")}}, +$S:4};(function aliases(){var s=J.L.prototype +s.ai=s.h +s=A.a4.prototype +s.aj=s.I})();(function installTearOffs(){var s=hunkHelpers._static_1,r=hunkHelpers._static_0,q=hunkHelpers._static_2,p=hunkHelpers._instance_2u,o=hunkHelpers._instance_0u +s(A,"fF","eD",1) +s(A,"fG","eE",1) +s(A,"fH","eF",1) +r(A,"dS","fy",0) +q(A,"fI","ft",5) +p(A.o.prototype,"gap","v",5) +o(A.aC.prototype,"gaw","az",0)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany r(A.d,null) -q(A.d,[A.cP,J.b1,J.aV,A.j,A.c,A.Z,A.b6,A.ah,A.bV,A.bP,A.ag,A.aI,A.Q,A.w,A.bt,A.cr,A.cp,A.bn,A.aY,A.a1,A.T,A.a3,A.a6,A.n,A.bo,A.bv,A.bp,A.br,A.aH,A.az,A.bw,A.cu,A.a_,A.bu,A.h,A.av,A.c6,A.p,A.bx,A.bj,A.c0]) -q(J.b1,[J.b2,J.aj,J.al,J.ak,J.am,J.b4,J.Y]) -q(J.al,[J.K,J.t,A.b7,A.aq]) -q(J.K,[J.bh,J.aw,J.J]) -r(J.bN,J.t) -q(J.b4,[J.ai,J.b3]) -q(A.j,[A.an,A.D,A.b5,A.bl,A.bq,A.bi,A.bs,A.aW,A.y,A.bm,A.bk,A.C,A.b_]) -q(A.c,[A.e,A.R]) -q(A.e,[A.L,A.aB]) -r(A.af,A.R) -r(A.B,A.L) -r(A.as,A.D) -q(A.Q,[A.bE,A.bF,A.bU,A.cF,A.cH,A.c3,A.c2,A.cw,A.co,A.cb,A.ci,A.bS,A.cJ,A.cB,A.c1,A.cK]) -q(A.bU,[A.bR,A.aZ]) -q(A.bF,[A.cG,A.cx,A.cA,A.cc,A.bO]) -q(A.aq,[A.b8,A.a0]) -q(A.a0,[A.aD,A.aF]) -r(A.aE,A.aD) -r(A.ao,A.aE) -r(A.aG,A.aF) -r(A.ap,A.aG) -q(A.ao,[A.b9,A.ba]) -q(A.ap,[A.bb,A.bc,A.bd,A.be,A.bf,A.ar,A.bg]) -r(A.aL,A.bs) +q(A.d,[A.cP,J.b2,J.aX,A.l,A.c,A.a_,A.b7,A.ai,A.bV,A.bP,A.ah,A.aL,A.S,A.x,A.bt,A.cr,A.cp,A.bn,A.R,A.a2,A.V,A.a4,A.a7,A.o,A.bo,A.bv,A.bp,A.br,A.aK,A.aC,A.bw,A.cu,A.a0,A.bu,A.j,A.ax,A.c6,A.q,A.bx,A.bk,A.c0]) +q(J.b2,[J.b3,J.ak,J.an,J.am,J.ao,J.b5,J.al]) +q(J.an,[J.L,J.u,A.b8,A.as]) +q(J.L,[J.bi,J.ay,J.K]) +r(J.bN,J.u) +q(J.b5,[J.aj,J.b4]) +q(A.l,[A.ap,A.E,A.b6,A.bm,A.bq,A.bj,A.bs,A.aY,A.z,A.az,A.bl,A.D,A.b0]) +q(A.c,[A.e,A.T]) +q(A.e,[A.M,A.aE]) +r(A.ag,A.T) +r(A.C,A.M) +r(A.au,A.E) +q(A.S,[A.bE,A.bF,A.bU,A.cE,A.cG,A.c3,A.c2,A.cw,A.co,A.cb,A.ci,A.bS,A.cI,A.cB,A.c1,A.cJ]) +q(A.bU,[A.bR,A.b_]) +q(A.bF,[A.cF,A.cx,A.cA,A.cc,A.bO]) +q(A.as,[A.b9,A.a1]) +q(A.a1,[A.aG,A.aI]) +r(A.aH,A.aG) +r(A.aq,A.aH) +r(A.aJ,A.aI) +r(A.ar,A.aJ) +q(A.aq,[A.ba,A.bb]) +q(A.ar,[A.bc,A.bd,A.be,A.bf,A.bg,A.at,A.bh]) +r(A.aO,A.bs) q(A.bE,[A.c4,A.c5,A.cq,A.c7,A.ce,A.cd,A.ca,A.c9,A.c8,A.ch,A.cg,A.cf,A.bT,A.cn,A.ck,A.cz,A.cm]) -r(A.aJ,A.a1) -r(A.U,A.aJ) -r(A.ax,A.U) -r(A.a4,A.T) -r(A.ay,A.a4) -r(A.aK,A.a3) -r(A.a2,A.bv) -r(A.a5,A.br) +r(A.aM,A.a2) +r(A.W,A.aM) +r(A.aA,A.W) +r(A.a5,A.V) +r(A.aB,A.a5) +r(A.aN,A.a4) +r(A.a3,A.bv) +r(A.a6,A.br) r(A.cl,A.cu) -r(A.aA,A.a_) -r(A.aC,A.aA) -q(A.y,[A.au,A.b0]) -s(A.aD,A.h) -s(A.aE,A.ah) -s(A.aF,A.h) -s(A.aG,A.ah) -s(A.a2,A.bp)})() -var v={typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{a:"int",l:"double",h_:"num",S:"String",fK:"bool",p:"Null",eu:"List",d:"Object",h7:"Map"},mangledNames:{},types:["~()","~(~())","p(@)","p()","~(@)","~(d,x)","@(@)","@(@,S)","@(S)","p(~())","p(@,x)","~(a,@)","p(d,x)","n<@>(@)","~(d?,d?)","d?(d?)","~(d)","p(m)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti")} -A.f_(v.typeUniverse,JSON.parse('{"bh":"K","aw":"K","J":"K","b2":{"f":[]},"aj":{"p":[],"f":[]},"al":{"m":[]},"K":{"m":[]},"t":{"e":["1"],"m":[],"c":["1"]},"bN":{"t":["1"],"e":["1"],"m":[],"c":["1"]},"b4":{"l":[]},"ai":{"l":[],"a":[],"f":[]},"b3":{"l":[],"f":[]},"Y":{"S":[],"f":[]},"an":{"j":[]},"e":{"c":["1"]},"L":{"e":["1"],"c":["1"]},"R":{"c":["2"],"c.E":"2"},"af":{"R":["1","2"],"e":["2"],"c":["2"],"c.E":"2"},"B":{"L":["2"],"e":["2"],"c":["2"],"c.E":"2","L.E":"2"},"as":{"D":[],"j":[]},"b5":{"j":[]},"bl":{"j":[]},"aI":{"x":[]},"bq":{"j":[]},"bi":{"j":[]},"b7":{"m":[],"cN":[],"f":[]},"aq":{"m":[]},"b8":{"cO":[],"m":[],"f":[]},"a0":{"u":["1"],"m":[]},"ao":{"h":["l"],"u":["l"],"e":["l"],"m":[],"c":["l"]},"ap":{"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"]},"b9":{"bI":[],"h":["l"],"u":["l"],"e":["l"],"m":[],"c":["l"],"f":[],"h.E":"l"},"ba":{"bJ":[],"h":["l"],"u":["l"],"e":["l"],"m":[],"c":["l"],"f":[],"h.E":"l"},"bb":{"bK":[],"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"],"f":[],"h.E":"a"},"bc":{"bL":[],"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"],"f":[],"h.E":"a"},"bd":{"bM":[],"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"],"f":[],"h.E":"a"},"be":{"bX":[],"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"],"f":[],"h.E":"a"},"bf":{"bY":[],"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"],"f":[],"h.E":"a"},"ar":{"bZ":[],"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"],"f":[],"h.E":"a"},"bg":{"c_":[],"h":["a"],"u":["a"],"e":["a"],"m":[],"c":["a"],"f":[],"h.E":"a"},"bs":{"j":[]},"aL":{"D":[],"j":[]},"n":{"X":["1"]},"aY":{"j":[]},"ax":{"U":["1"],"a1":["1"]},"ay":{"T":["1"]},"aK":{"a3":["1"]},"a2":{"bv":["1"]},"U":{"a1":["1"]},"a4":{"T":["1"]},"aJ":{"a1":["1"]},"aA":{"a_":["1","2"]},"aC":{"aA":["1","2"],"a_":["1","2"]},"aB":{"e":["1"],"c":["1"],"c.E":"1"},"aW":{"j":[]},"D":{"j":[]},"y":{"j":[]},"au":{"j":[]},"b0":{"j":[]},"bm":{"j":[]},"bk":{"j":[]},"C":{"j":[]},"b_":{"j":[]},"av":{"j":[]},"bx":{"x":[]},"bM":{"e":["a"],"c":["a"]},"c_":{"e":["a"],"c":["a"]},"bZ":{"e":["a"],"c":["a"]},"bK":{"e":["a"],"c":["a"]},"bX":{"e":["a"],"c":["a"]},"bL":{"e":["a"],"c":["a"]},"bY":{"e":["a"],"c":["a"]},"bI":{"e":["l"],"c":["l"]},"bJ":{"e":["l"],"c":["l"]}}')) -A.eZ(v.typeUniverse,JSON.parse('{"e":1,"ah":1,"a0":1,"T":1,"ay":1,"bp":1,"a4":1,"aJ":1,"br":1,"a5":1,"aH":1,"az":1,"bw":1}')) +r(A.aD,A.a0) +r(A.aF,A.aD) +q(A.z,[A.aw,A.b1]) +s(A.aG,A.j) +s(A.aH,A.ai) +s(A.aI,A.j) +s(A.aJ,A.ai) +s(A.a3,A.bp)})() +var v={typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{a:"int",h:"double",fZ:"num",U:"String",fJ:"bool",q:"Null",i:"List",d:"Object",h7:"Map"},mangledNames:{},types:["~()","~(~())","q(@)","q()","~(@)","~(d,y)","@(@)","@(@,U)","@(U)","q(~())","q(@,y)","~(a,@)","q(d,y)","o<@>(@)","~(d?,d?)","d?(d?)","~(d)","q(n)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti")} +A.eY(v.typeUniverse,JSON.parse('{"bi":"L","ay":"L","K":"L","b3":{"f":[]},"ak":{"q":[],"f":[]},"an":{"n":[]},"L":{"n":[]},"u":{"i":["1"],"e":["1"],"n":[],"c":["1"]},"bN":{"u":["1"],"i":["1"],"e":["1"],"n":[],"c":["1"]},"b5":{"h":[]},"aj":{"h":[],"a":[],"f":[]},"b4":{"h":[],"f":[]},"al":{"U":[],"f":[]},"ap":{"l":[]},"e":{"c":["1"]},"M":{"e":["1"],"c":["1"]},"T":{"c":["2"],"c.E":"2"},"ag":{"T":["1","2"],"e":["2"],"c":["2"],"c.E":"2"},"C":{"M":["2"],"e":["2"],"c":["2"],"c.E":"2","M.E":"2"},"au":{"E":[],"l":[]},"b6":{"l":[]},"bm":{"l":[]},"aL":{"y":[]},"bq":{"l":[]},"bj":{"l":[]},"b8":{"n":[],"cN":[],"f":[]},"as":{"n":[]},"b9":{"cO":[],"n":[],"f":[]},"a1":{"v":["1"],"n":[]},"aq":{"j":["h"],"i":["h"],"v":["h"],"e":["h"],"n":[],"c":["h"]},"ar":{"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"]},"ba":{"bI":[],"j":["h"],"i":["h"],"v":["h"],"e":["h"],"n":[],"c":["h"],"f":[],"j.E":"h"},"bb":{"bJ":[],"j":["h"],"i":["h"],"v":["h"],"e":["h"],"n":[],"c":["h"],"f":[],"j.E":"h"},"bc":{"bK":[],"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"],"f":[],"j.E":"a"},"bd":{"bL":[],"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"],"f":[],"j.E":"a"},"be":{"bM":[],"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"],"f":[],"j.E":"a"},"bf":{"bX":[],"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"],"f":[],"j.E":"a"},"bg":{"bY":[],"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"],"f":[],"j.E":"a"},"at":{"bZ":[],"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"],"f":[],"j.E":"a"},"bh":{"c_":[],"j":["a"],"i":["a"],"v":["a"],"e":["a"],"n":[],"c":["a"],"f":[],"j.E":"a"},"bs":{"l":[]},"aO":{"E":[],"l":[]},"o":{"Z":["1"]},"R":{"l":[]},"aA":{"W":["1"],"a2":["1"]},"aB":{"V":["1"]},"aN":{"a4":["1"]},"a3":{"bv":["1"]},"W":{"a2":["1"]},"a5":{"V":["1"]},"aM":{"a2":["1"]},"aD":{"a0":["1","2"]},"aF":{"aD":["1","2"],"a0":["1","2"]},"aE":{"e":["1"],"c":["1"],"c.E":"1"},"aY":{"l":[]},"E":{"l":[]},"z":{"l":[]},"aw":{"l":[]},"b1":{"l":[]},"az":{"l":[]},"bl":{"l":[]},"D":{"l":[]},"b0":{"l":[]},"ax":{"l":[]},"bx":{"y":[]},"bM":{"i":["a"],"e":["a"],"c":["a"]},"c_":{"i":["a"],"e":["a"],"c":["a"]},"bZ":{"i":["a"],"e":["a"],"c":["a"]},"bK":{"i":["a"],"e":["a"],"c":["a"]},"bX":{"i":["a"],"e":["a"],"c":["a"]},"bL":{"i":["a"],"e":["a"],"c":["a"]},"bY":{"i":["a"],"e":["a"],"c":["a"]},"bI":{"i":["h"],"e":["h"],"c":["h"]},"bJ":{"i":["h"],"e":["h"],"c":["h"]}}')) +A.eX(v.typeUniverse,JSON.parse('{"e":1,"ai":1,"a1":1,"V":1,"aB":1,"bp":1,"a5":1,"aM":1,"br":1,"a6":1,"aK":1,"aC":1,"bw":1}')) var u={g:"Cannot fire new event. Controller is already firing an event",c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"} var t=(function rtii(){var s=A.dV -return{J:s("cN"),Y:s("cO"),V:s("e<@>"),Q:s("j"),B:s("bI"),q:s("bJ"),Z:s("h6"),O:s("bK"),k:s("bL"),U:s("bM"),x:s("c"),s:s("t"),b:s("t<@>"),T:s("aj"),m:s("m"),g:s("J"),p:s("u<@>"),P:s("p"),K:s("d"),L:s("h8"),l:s("x"),N:s("S"),R:s("f"),c:s("D"),D:s("bX"),w:s("bY"),e:s("bZ"),E:s("c_"),o:s("aw"),I:s("a2<@>"),d:s("n<@>"),a:s("n"),F:s("aC"),y:s("fK"),i:s("l"),z:s("@"),v:s("@(d)"),C:s("@(d,x)"),S:s("a"),A:s("0&*"),_:s("d*"),W:s("X

?"),X:s("d?"),H:s("h_"),n:s("~"),u:s("~(d)"),f:s("~(d,x)")}})();(function constants(){B.n=J.b1.prototype -B.o=J.t.prototype -B.p=J.ai.prototype -B.q=J.Y.prototype -B.r=J.J.prototype -B.t=J.al.prototype -B.e=J.bh.prototype -B.b=J.aw.prototype +return{J:s("cN"),Y:s("cO"),V:s("e<@>"),Q:s("l"),B:s("bI"),q:s("bJ"),Z:s("h6"),O:s("bK"),k:s("bL"),U:s("bM"),x:s("c"),s:s("u"),b:s("u<@>"),T:s("ak"),m:s("n"),g:s("K"),p:s("v<@>"),j:s("i<@>"),P:s("q"),K:s("d"),L:s("h8"),l:s("y"),N:s("U"),R:s("f"),c:s("E"),D:s("bX"),w:s("bY"),e:s("bZ"),E:s("c_"),o:s("ay"),I:s("a3<@>"),d:s("o<@>"),a:s("o"),F:s("aF"),y:s("fJ"),i:s("h"),z:s("@"),v:s("@(d)"),C:s("@(d,y)"),S:s("a"),A:s("0&*"),_:s("d*"),W:s("Z?"),X:s("d?"),H:s("fZ"),n:s("~"),u:s("~(d)"),f:s("~(d,y)")}})();(function constants(){B.n=J.b2.prototype +B.o=J.u.prototype +B.p=J.aj.prototype +B.q=J.K.prototype +B.r=J.an.prototype +B.e=J.bi.prototype +B.b=J.ay.prototype B.c=function getTagFallback(o) { var s = Object.prototype.toString.call(o); return s.substring(8, s.length - 1); @@ -2765,48 +2792,48 @@ B.d=function(hooks) { return hooks; } B.a=new A.cl() B.m=new A.bx() -B.u=A.A("cN") -B.v=A.A("cO") -B.w=A.A("bI") -B.x=A.A("bJ") -B.y=A.A("bK") -B.z=A.A("bL") -B.A=A.A("bM") -B.B=A.A("bX") -B.C=A.A("bY") -B.D=A.A("bZ") -B.E=A.A("c_")})();(function staticFields(){$.cj=null -$.v=A.bC([],A.dV("t")) -$.dg=null -$.db=null -$.da=null +B.t=A.B("cN") +B.u=A.B("cO") +B.v=A.B("bI") +B.w=A.B("bJ") +B.x=A.B("bK") +B.y=A.B("bL") +B.z=A.B("bM") +B.A=A.B("bX") +B.B=A.B("bY") +B.C=A.B("bZ") +B.D=A.B("c_")})();(function staticFields(){$.cj=null +$.w=A.bC([],A.dV("u")) +$.dh=null +$.dd=null +$.dc=null $.dX=null $.dR=null $.e_=null -$.cE=null -$.cI=null -$.d_=null -$.a9=null -$.aP=null -$.aQ=null +$.cD=null +$.cH=null +$.d0=null +$.aa=null +$.aS=null +$.aT=null $.cW=!1 -$.i=B.a})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal -s($,"h5","d5",()=>A.fO("_$dart_dartClosure")) -s($,"ha","e3",()=>A.E(A.bW({ +$.k=B.a})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal +s($,"h5","d7",()=>A.fN("_$dart_dartClosure")) +s($,"ha","e2",()=>A.F(A.bW({ toString:function(){return"$receiver$"}}))) -s($,"hb","e4",()=>A.E(A.bW({$method$:null, +s($,"hb","e3",()=>A.F(A.bW({$method$:null, toString:function(){return"$receiver$"}}))) -s($,"hc","e5",()=>A.E(A.bW(null))) -s($,"hd","e6",()=>A.E(function(){var $argumentsExpr$="$arguments$" +s($,"hc","e4",()=>A.F(A.bW(null))) +s($,"hd","e5",()=>A.F(function(){var $argumentsExpr$="$arguments$" try{null.$method$($argumentsExpr$)}catch(r){return r.message}}())) -s($,"hg","e9",()=>A.E(A.bW(void 0))) -s($,"hh","ea",()=>A.E(function(){var $argumentsExpr$="$arguments$" +s($,"hg","e8",()=>A.F(A.bW(void 0))) +s($,"hh","e9",()=>A.F(function(){var $argumentsExpr$="$arguments$" try{(void 0).$method$($argumentsExpr$)}catch(r){return r.message}}())) -s($,"hf","e8",()=>A.E(A.dm(null))) -s($,"he","e7",()=>A.E(function(){try{null.$method$}catch(r){return r.message}}())) -s($,"hj","ec",()=>A.E(A.dm(void 0))) -s($,"hi","eb",()=>A.E(function(){try{(void 0).$method$}catch(r){return r.message}}())) -s($,"hk","d6",()=>A.eE())})();(function nativeSupport(){!function(){var s=function(a){var m={} +s($,"hf","e7",()=>A.F(A.dn(null))) +s($,"he","e6",()=>A.F(function(){try{null.$method$}catch(r){return r.message}}())) +s($,"hj","eb",()=>A.F(A.dn(void 0))) +s($,"hi","ea",()=>A.F(function(){try{(void 0).$method$}catch(r){return r.message}}())) +s($,"hk","d8",()=>A.eC())})();(function nativeSupport(){!function(){var s=function(a){var m={} m[a]=1 return Object.keys(hunkHelpers.convertToFastObject(m))[0]} v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} @@ -2817,15 +2844,15 @@ for(var o=0;;o++){var n=s(p+"_"+o+"_") if(!(n in q)){q[n]=1 v.isolateTag=n break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() -hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.b7,ArrayBufferView:A.aq,DataView:A.b8,Float32Array:A.b9,Float64Array:A.ba,Int16Array:A.bb,Int32Array:A.bc,Int8Array:A.bd,Uint16Array:A.be,Uint32Array:A.bf,Uint8ClampedArray:A.ar,CanvasPixelArray:A.ar,Uint8Array:A.bg}) +hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.b8,ArrayBufferView:A.as,DataView:A.b9,Float32Array:A.ba,Float64Array:A.bb,Int16Array:A.bc,Int32Array:A.bd,Int8Array:A.be,Uint16Array:A.bf,Uint32Array:A.bg,Uint8ClampedArray:A.at,CanvasPixelArray:A.at,Uint8Array:A.bh}) hunkHelpers.setOrUpdateLeafTags({ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false}) -A.a0.$nativeSuperclassTag="ArrayBufferView" -A.aD.$nativeSuperclassTag="ArrayBufferView" -A.aE.$nativeSuperclassTag="ArrayBufferView" -A.ao.$nativeSuperclassTag="ArrayBufferView" -A.aF.$nativeSuperclassTag="ArrayBufferView" +A.a1.$nativeSuperclassTag="ArrayBufferView" A.aG.$nativeSuperclassTag="ArrayBufferView" -A.ap.$nativeSuperclassTag="ArrayBufferView"})() +A.aH.$nativeSuperclassTag="ArrayBufferView" +A.aq.$nativeSuperclassTag="ArrayBufferView" +A.aI.$nativeSuperclassTag="ArrayBufferView" +A.aJ.$nativeSuperclassTag="ArrayBufferView" +A.ar.$nativeSuperclassTag="ArrayBufferView"})() Function.prototype.$1=function(a){return this(a)} Function.prototype.$0=function(){return this()} Function.prototype.$2=function(a,b){return this(a,b)} @@ -2837,6 +2864,6 @@ convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) return}if(typeof document.currentScript!="undefined"){a(document.currentScript) return}var s=document.scripts function onLoad(b){for(var q=0;q","NativeByteBuffer.runtimeType","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","Rti._eval","Rti._bind","_rtiBind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_BroadcastSubscription._onPause","_BroadcastSubscription._onResume","_BroadcastStreamController._mayAddEvent","_BroadcastStreamController._subscribe","_DoneStreamSubscription","_BroadcastSubscription","_BroadcastStreamController._recordPause","_BroadcastStreamController._recordResume","_BroadcastStreamController._addEventError","_BroadcastStreamController._forEachListener","_BroadcastStreamController._callOnCancel","_SyncBroadcastStreamController._mayAddEvent","_SyncBroadcastStreamController._addEventError","_SyncBroadcastStreamController._sendData","_SyncBroadcastStreamController._sendData.","_SyncBroadcastStreamController__sendData_closure","_FutureListener.matchesErrorTest","_FutureListener.handleError","_Future._setChained","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._chainCoreFutureAsync.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","Stream.length","Stream.length.","Stream_length_closure","_Future._complete","_StreamController._pendingEvents","_StreamController._ensurePendingEvents","_StreamController._subscription","_StreamController._badEventState","_StreamController._subscribe","_BufferingStreamSubscription._guardCallback","_StreamController._recordPause","_StreamController._recordResume","_StreamController._subscribe.","_AsyncStreamControllerDispatch._sendData","_ControllerStream.hashCode","_ControllerSubscription._onPause","_ControllerSubscription._onResume","_BufferingStreamSubscription._setPendingEvents","_BufferingStreamSubscription._add","_BufferingStreamSubscription._onPause","_BufferingStreamSubscription._onResume","_BufferingStreamSubscription._addPending","_BufferingStreamSubscription._sendData","_BufferingStreamSubscription._checkState","_BufferingStreamSubscription._mayResumeInput","_StreamImpl.listen","_StreamImpl.listen[function-entry$1]","_PendingEvents.schedule","_PendingEvents.add","_PendingEvents.schedule.","_PendingEvents.handleNext","_DoneStreamSubscription._onMicrotask","_rootHandleError.","_RootZone.runGuarded","_RootZone.runUnaryGuarded","_RootZone.runUnaryGuarded[function-entry$2]","_RootZone.bindCallbackGuarded","_RootZone.run","_RootZone.run[function-entry$1]","_RootZone.runUnary","_RootZone.runUnary[function-entry$2]","_RootZone.runBinary","_RootZone.runBinary[function-entry$3]","_RootZone.registerBinaryCallback","_RootZone.registerBinaryCallback[function-entry$1]","_RootZone.bindCallbackGuarded.","_HashMap.keys","_HashMap.length","_HashMap.containsKey","_HashMap._containsKey","_HashMap.[]","_HashMap._get","_HashMap.[]=","_IdentityHashMap._computeHashCode","_HashMap.forEach","_HashMap._computeKeys","_HashMap._getBucket","_IdentityHashMap._findBucketIndex","_HashMapKeyIterable.length","_HashMapKeyIterable.iterator","_HashMapKeyIterator.current","_HashMapKeyIterator.moveNext","ListBase.iterator","ListBase.elementAt","ListBase.map","ListBase.toString","MapBase.forEach","MapBase.length","MapBase.toString","MapBase.mapToString.","StringBuffer.write","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","Iterable.map","Iterable.length","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.toString","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","jsify._convert","callbackToStream.eventFunction","StreamController","Worker.","_StreamController.add","_StreamController._add","main.","jsSendMessage","Worker.sendMessage","print","DART_CLOSURE_PROPERTY_NAME","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","","$intercepted$elementAt1$ax","$intercepted$get$hashCode$IJavaScriptBigIntJavaScriptSymbolLegacyJavaScriptObjectabnsu","$intercepted$get$iterator$ax","$intercepted$get$length$asx","$intercepted$get$runtimeType$Ibdinsux","$intercepted$map11$ax","$intercepted$toString0$IJavaScriptBigIntJavaScriptFunctionJavaScriptSymbolLegacyJavaScriptObjectabnsux","ArrayIterator","BoundClosure","ByteBuffer","ByteData","Closure","Closure0Args","Closure2Args","EfficientLengthIterable","EfficientLengthMappedIterable","Error","ExceptionAndStackTrace","FixedLengthListMixin","Float32List","Float64List","Function","Future","IndexError","Int16List","Int32List","Int8List","Interceptor","Iterable","JSArray","JSBool","JSInt","JSNull","JSNumNotInt","JSNumber","JSObject","JSObjectUnsafeUtilExtension|_callMethod","JSString","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","LateError","LegacyJavaScriptObject","List","ListBase","ListIterable","ListIterator","Map","MapBase","MapBase_mapToString_closure","MappedIterator","MappedListIterable","NativeByteBuffer","NativeByteData","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint32List","NativeUint8ClampedList","NativeUint8List","Null","NullError","NullThrownFromJavaScriptException","Object","PlainJavaScriptObject","RangeError","Record","Rti","RuntimeError","StackOverflowError","StackTrace","StaticClosure","Stream","String","StringBuffer","TearOffClosure","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","Worker_closure","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_AsyncStreamController","_AsyncStreamControllerDispatch","_BroadcastStream","_BroadcastStreamController","_ControllerStream","_CyclicInitializationError","_DelayedData","_DelayedEvent","_Error","_Exception","_FunctionParameters","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteError_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFutureAsync_closure","_Future__chainForeignFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_HashMap","_HashMapKeyIterable","_HashMapKeyIterator","_IdentityHashMap","_JS_INTEROP_INTERCEPTOR_TAG","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_PendingEvents","_PendingEvents_schedule_closure","_RootZone","_RootZone_bindCallbackGuarded_closure","_StackTrace","_StreamController","_StreamController__subscribe_closure","_StreamImpl","_StreamIterator","_StringStackTrace","_SyncBroadcastStreamController","_TimerImpl_internalCallback","_TypeError","_Zone","_awaitOnObject_closure","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_chainCoreFutureAsync","_chainCoreFutureSync","_computeFieldNamed","_computeSignatureFunctionNewRti","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createStarRti","_current","_getCanonicalRecipe","_getFutureFromFutureOr","_getQuestionFromStar","_getTableEntry","_identityHashCodeProperty","_initializeScheduleImmediate","_installTypeTests","_interceptorFieldNameCache","_isInCallbackLoop","_isUnionOfFunctionType","_lastCallback","_lastPriorityCallback","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupStarRti","_lookupTerminalRti","_newHashTable","_nextCallback","_objectTypeNameNewRti","_propagateToListeners","_receiverFieldNameCache","_rootHandleError_closure","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_setTableEntry","_throw","_wrapJsFunctionForAsync_closure","_writeAll","addErasedTypes","addRules","alternateTagFunction","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___nullErrorHandler$closure","async___startMicrotaskLoop$closure","bind","bool","callbackToStream_eventFunction","collectArray","compose","create","cspForwardCall","cspForwardInterceptedCall","current","defaultStackTrace","dispatchRecordsForInstanceTags","double","eval","evalInEnvironment","evalRecipe","extractPattern","extractStackTrace","filled","findErasedType","findRule","forType","forwardCallTo","forwardInterceptedCallTo","fromMessage","fromTearOff","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getTagFunction","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","indexToType","initHooks_closure","initNativeDispatchFlag","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","iterableToShortString","jsify__convert","main_closure","mapToString","markFixedList","newArrayOrEmpty","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","parse","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","range","receiverOf","safeToString","throwWithStackTrace","toStringVisiting","toType","toTypes","toTypesNamed","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","value","withLength","$add","$index","$indexSet","_addEventError","add","addAll","bindCallbackGuarded","call","containsKey","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_rti#_bind","dart:_rti#_eval","dart:async#_add","dart:async#_addEventError","dart:async#_addListener","dart:async#_addPending","dart:async#_asyncComplete","dart:async#_asyncCompleteError","dart:async#_asyncCompleteWithValue","dart:async#_badEventState","dart:async#_callOnCancel","dart:async#_chainForeignFuture","dart:async#_chainFuture","dart:async#_checkState","dart:async#_cloneResult","dart:async#_completeError","dart:async#_completeWithValue","dart:async#_ensurePendingEvents","dart:async#_forEachListener","dart:async#_mayAddEvent","dart:async#_mayComplete","dart:async#_onMicrotask","dart:async#_onPause","dart:async#_onResume","dart:async#_pendingEvents","dart:async#_prependListeners","dart:async#_recordPause","dart:async#_recordResume","dart:async#_removeListeners","dart:async#_reverseListeners","dart:async#_sendData","dart:async#_setChained","dart:async#_setErrorObject","dart:async#_setPendingEvents","dart:async#_subscribe","dart:async#_subscription","dart:async#_thenAwait","dart:async#_varData=","dart:collection#_computeKeys","dart:collection#_containsKey","dart:collection#_findBucketIndex","dart:collection#_get","dart:collection#_getBucket","dart:core#_errorExplanation","dart:core#_errorName","elementAt","forEach","handleError","hashCode","invalidValue","iterator","keys","length","listen","map","matchTypeError","matchesErrorTest","moveNext","pause","registerBinaryCallback","resume","run","runBinary","runGuarded","runUnary","runUnaryGuarded","runtimeType","schedule","stackTrace","then","toString","Rti._unstar","isTopType","_Universe._canonicalRecipeOfStar","_Universe._canonicalRecipeOfQuestion","_Universe._canonicalRecipeOfFutureOr","_Universe._canonicalRecipeOfBinding","_Universe._canonicalRecipeOfGenericFunction","Error._stringToSafeString","_HashMap._set","JSObjectUnsafeUtilExtension|callMethod","JSObjectUnsafeUtilExtension|getProperty","NullableObjectUtilExtension|jsify","_","_add","_addListener","_asCheck","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_canonicalRecipeOfStar","_chainSource","_cloneResult","_complete","_computeHashCode","_computeIdentityHashCodeProperty","_createBindingRti","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createRecordRti","_createSubscription","_createTerminalRti","_createTimer","_error","_errorTest","_expectsEvent","_failedAsCheckError","_findRule","_functionToJS1","_future","_getBindCache","_getBindingArguments","_getBindingBase","_getCachedRuntimeType","_getEvalCache","_getFunctionParameters","_getFutureOrArgument","_getGenericFunctionBase","_getGenericFunctionBounds","_getGenericFunctionParameterIndex","_getInterfaceName","_getInterfaceTypeArguments","_getIsSubtypeCache","_getKind","_getNamed","_getOptionalPositional","_getPrimary","_getQuestionArgument","_getRecordFields","_getRecordPartialShapeTag","_getRequiredPositional","_getReturnType","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_getStarArgument","_guardCallback","_hasError","_hasOneListener","_hasPending","_hasTableEntry","_hasTimer","_installRti","_isAddingStream","_isCanceled","_isChained","_isCheck","_isClosure","_isComplete","_isDartObject","_isEmpty","_isFiring","_isInitialState","_isInputPaused","_isSubtypeUncached","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_mayAddEvent","_mayAddListener","_mayResumeInput","_name","_objectToString","_onError","_onValue","_outputController","_parseRecipe","_recipeJoin","_removeListener","_removeListeners","_scheduleImmediate","_set","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setError","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_stringToSafeString","_target","_theUniverse","_unstar","_whenCompleteAction","_writeOne","_writeString","_zone","allocate","arrayAt","arrayConcat","arrayLength","arraySplice","asBool","asInt","asRti","asRtiOrNull","asString","as_Type","broadcast","charCodeAt","checkGrowable","collectNamed","complete","completeError","constructorNameFallback","contains","defineProperty","dispatchRecordExtension","dispatchRecordIndexability","dispatchRecordInterceptor","dispatchRecordProto","environment","erasedTypes","evalCache","evalTypeVariable","fieldADI","fieldNI","fixed","future","getDispatchProperty","getLegacyErasedRecipe","getProperty","getRuntimeTypeOfInterceptorNotArray","globalContext","handleNamedGroup","handleNext","handleOptionalGroup","handleStartRecord","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesValue","hasErrorCallback","hasErrorTest","identityHashCode","instanceTypeName","interceptorFieldName","interceptorsByTag","isArray","isClosed","isDigit","isEmpty","isIdentical","isScheduled","jsonEncodeNative","leafTags","listToString","lookupSupertype","lookupTypeVariable","mapGet","mapSet","markFixed","normalize","objectKeys","objectToHumanReadableString","onReceive","perform","pop","position","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","recipe","sendMessage","sharedEmptyArray","shouldChain","stack","stream","stringIndexOf","stringSafeToString","stringSplit","substring","thenAwait","toGenericFunctionParameter","tryStringifyException","typeRules","typed","universe","unmangleGlobalNameIfPreservedAnyways","write","writeAll","zoned"], - "mappings": "A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoFAA,UA6BEA,uBAEFA,C;EASAC,qBApDSA,EACiBA;AAsDxBA,eACMA,WACFA;GAzDGA,EACiBA,uBA6DxBA,eAhB6BA;AAkB3BA,UAAoBA,QAnBaA,EA0ErCA;AAtDIA,UAAmBA,QAsDvBA;AArDsBA;AAClBA,SACEA,QAvB+BA,EA0ErCA;IAxEmCA,OA8B7BA,UAAMA,+BAA4CA,IAD3BA,aAOTA;WAEdA;QAuCGC;WCwkFAC,QADgBA;GDjkFjBF,IA7CNA,WAAyBA,QAkC3BA;AA9BgBA;AACdA,WAAyBA,QA6B3BA;AAvBEA,wBAIEA,QAHcA,EAsBlBA;AAjBcA;AACZA,WAEEA,QAIcA,EAUlBA;wBAPIA,QAHcA,EAUlBA;AALEA,4BAUOG;WCwkFAD,QADgBA;ACpsFvBC,kCFuHOH;AAFLA,QAEKA,EACTA,CADEA,QAAOA,EACTA,C;EGvEiBI;AAKbA,QACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EC+mBAC,QAIAA,QACFA,C;EAwSKC,IACHA;OAAoBA,EAAiBA,YAArCA,gBAAoBA,EACIA,IAAsBA,QAGhDA;AADEA,QACFA,C;EClrBUC,UACOA,YACXA,OAsBJA,2CAnBAA;AADEA,OAGFA,yCAFAA,C;;;;;;;;;;;;;;;;;;;;;;;;;EJ7QKC,WKhFOA,mBACLA;ALiFPA,WAAuBA,QAGzBA;AAF+BA,mBAE/BA,C;EAuBKC,MACHA;eDV0CA;ACYxCA,WAAoBA,QAGxBA,CADEA,OAAcA,QAChBA,C;CAEOC,IACLA;sBAAqBA,QAmBvBA;AAlBEA,uBACEA,SAEEA,UAeNA,MAbSA,UACLA,YAYJA;KAXSA,UACLA,aAUJA;KATSA,WACLA,YAQJA;AANeA;AAKbA,QACFA,C;EA2HaC,aAELA;WAUFA;GATUA;AACZA;AAgJOC,OA5IPD,QACFA,C;EA0IcC,IACZA,cACFA,C;EAOcC,IACRA;AMmeCA,iBNneuBA,GAG1BA,WM+dMA,aN3bVA;AAjCoBA;AAGPA,QAFgBA,SACAA,cCvLtBA,GACHA;ADyMAA,wBAAwCA,QAY5CA;GAXsBA;AAClBA,4BACwBA;AACtBA,4CAEEA,QAMRA,EADEA,OM6bKA,IADGA,aN3bVA,C;EAecC,IACkCA,+BAC5CA,OAAOA,OAcXA;AAZEA,sBACEA,OAixEGC,iBAtwEPD;AAPWA,oBAAPA,aAOJA;AADEA,sBAvBcA,WAwBhBA,C;EAwkBmBE,WACHA;AACdA,WAAqBA,WAEvBA;AADEA,OAAOA,MACTA,C;CAiBFC,MACEA,WAA+BA;AAC/BA,UAAMA,UACRA,C;EAKMC,MACJA;YAAmBA,OOv5BnBA,oBPk6BFA;AAVyBA;AAIvBA,aACEA,OAAkBA,aAKtBA;AADEA,OOn2BAA,+CPo2BFA,C;CAgEAC,IAEEA,OAAOA,KADSA,cAElBA,C;EAGAC,MACEA;WOpiCIA;;;APwiCJA,+BAKEA;eAgBKC;AAPPD,QACFA,C;EAGAC,GAGEA,gBAAOA,eACTA,C;EAOMC,IAEJA,MAAyBA,MAC3BA,C;EAEMC,MACJA,MAAyBA,SAC3BA,C;EA2BAC,IACEA,UAAMA,QACRA,C;CAqJSC,IAULA;AAIUA,OAJAA;AAUNA;AACJA,WAA2BA;AAKXA;AACIA;AACTA;AACEA;AACEA;AAiBfA,OArHFA,mRAyGmBA,4EAcnBA,C;EAMcC,IAmDZA,OAReA;gEAQRA,GACTA,C;EAkCcC,IASZA,OAPeA,gEAORA,GACTA,C;EA8CAC,8BACuCA;AADvCA,4BAGiCA,UAHjCA,AAGuEA,C;CA+ClEC,IAGLA,WACEA,OA7BFA,WA2CFA;AAVWA,qBAAPA,cAA6BA,GAUjCA;AANEA,uBAA6CA,QAM/CA;AAJEA,wBACEA,OAAOA,OAAmBA,eAG9BA;AADEA,OAAOA,OACTA,C;CAKOC,MACKA,gBACeA;AAKzBA,QACFA,C;EAEOC,IACLA;qBACEA,QAqGJA;GAjGgBA;gDAMCA;AAKKA;AACMA,4BAKtBA,mBAEIA,OAAOA,MACCA,KAAsBA,8BA6ExCA;mBA1EgDA;AAAtCA,OAAOA,MA5HfA,WAsMFA,EArEEA,2BAE8BA;AACMA;AACFA;AACOA;AACNA;AACOA;AACJA;AACOA;AACNA;AACOA;AAC/BA;AAAbA,WACEA,OAAOA,MAAmBA,UAwDhCA;KAvDwBA;AAAbA,YAMEA;AAAPA,aAA0BA,UAiDhCA,MAhDwBA,iBACPA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,aACXA,OAAOA,MA9JXA,WAsMFA,CAlCIA,OAAOA,MAtITA,kCAwKFA,CA9BEA,4BCruDOA,oDDuuDHA,OO9oCEA,UP0qCRA;yDAMSA;AAvBLA,OAAOA,MOjkDTA,wCP+jDcA,mCAmBhBA,CAbEA,gEAIEA,gDACEA,OOlqCEA,UP0qCRA;AADEA,QACFA,C;CAqBWC,IACTA;qBACEA,QAAiBA,EAiBrBA;AAfEA,WAAuBA,OAoBvBA,WALFA;GAduBA;AACrBA,WAAmBA,QAarBA;AAKEA;AAVAA;AAIAA,QACFA,C;EAwBIC,IAEFA,WAAoBA,OAAcA,OAMpCA;AALEA,sBACEA,OAAkBA,OAItBA;AADEA,OAAcA,OAChBA,C;EAwEAC,cAEEA,iBAEIA,OAAOA,MAWbA;OATMA,OAAOA,OASbA;OAPMA,OAAOA,SAObA;OALMA,OAAOA,WAKbA;OAHMA,OAAOA,aAGbA,CADEA,UQ54DAC,gER64DFD,C;EAIAE,aAEiBA;AACfA,OAAkCA,QAIpCA;AAHaA;;AAEXA,QACFA,C;EAEAC,MAOUA;AACRA,oBAEYA;AADVA;UAGUA;AADVA;UAGUA;AADVA;UAGUA;AADVA;UAGUA;AAVZA;QAYIA,OAAJA,WACEA,OAAOA,SA0BXA;AAXEA,uEAAOA,UAWTA,C;EA4BSC,iCAcDA,QAGAA,QAEAA,QACqBA,SAGrBA,QAGAA,QAEAA,OAKUA,OACKA,QACAA,SAOfA;EAAiEA;AA6B/DA,kBAoZEA,kCAlZFA,cAkbRA;eA/a0CA;AAkBDA,IAZjCA,+CAEIA;;;;;AAmBNA;AAAJA,KAEMA;;AAWgBA,KAJlBA;;AAOJA,eAAgCA,QAAhCA,QACiBA;AAGfA,0BAESA;AASaA;AAAUA,SAZdA;GAMKA;AAGvBA,YACEA,KAEMA;OAIRA;OAS+BA;OAKQA;AAKzCA,QACFA,C;EAEOC,QAELA,sBAEEA,QAoBJA;AAlBEA,uBAEEA,KAEEA;AAGFA,yDAAOA,QAWXA,CADEA,6CACFA,C;EAEOC;AAiBLA,sBAEIA,4DAAOA,KAuEbA;OA7DMA,8DAAOA,KA6DbA;OAnDMA,kEAAOA,KAmDbA;OAzCMA,sEAAOA,KAyCbA;OA/BMA,0EAAOA,KA+BbA;OArBMA,8EAAOA,KAqBbA;QAVMA,0EAAOA,KAUbA,E;EAIOC,UAELA,KACEA,OAAOA,WA4BXA;AAxBIA,OAAOA,MAHGA,cA2BdA,C;EAEOC;AAMLA,sBAIIA,UAwZNA;OAtZMA,qEAAOA,OA+EbA;OApEMA,wEAAOA,OAoEbA;OAzDMA,4EAAOA,OAyDbA;OA9CMA,gFAAOA,OA8CbA;OAnCMA,oFAAOA,OAmCbA;OAxBMA,wFAAOA,OAwBbA;QAbMA;;2BAAOA,OAabA,E;EAEOC,QAEEA;IA8ILA,UAA+BA;IAJ/BA,UAA4BA;GAxIlBA;AAIHA;AAAPA,QAwBJA,C;EAwBFC,IACEA,OAAeA,OACjBA,C;EAoESC,MACLA,OM1/DeC,MAHOC,cA8BRF,MN+9DuBA,MACvCA,C;EAIOG,IAAoCA,QAAQA,EAASA,C;EAIrDC,IAAuCA,QAAQA,EAAYA,C;EAYpDC,IA/CdA,iDAiDsBA,KAChBA;OACsBA,YAA1BA,YACaA;YAETA,QAINA,CADEA,UAAMA,yCACRA,C;EA4IGC,IACHA,UAaAA,YAZFA,C;EAoEOC,IAELA,OAAOA,CADgBA,iBAEzBA,C;EC3nFAC,IAE6BA,iBAAdA,aAIYA,GA/HlBA;AAgIPA,YAlFAC,yBFOYC;AE2EQF,QFpCeE,EEuGrCF,IAlEgCA,GAjIvBA;AAkIPA,WAAyBA,QAiE3BA;GA7HyBG,kBAtEhBA;AAuIPH,YACuCA,GAApBA;AACjBA,eAGuBA,GA5IlBA;AA6IHA,YA/FJC,yBFOYC;AEwFYF,QFjDWE,EEuGrCF,IArDgCA,GA9IvBA;AA+IHA,WAAyBA,QAoD/BA;GA7HyBG,kBAtEhBA;KAqJPH,WAQEA,WAsCJA;GAnCgBA;GAEHA;AAEXA,YACWA;CACGA;AAxHdC,yBFOYC;AEkHVF,QF3EiCE,EEuGrCF,CAzBEA,aACcA;AACZA,QAuBJA,CApBEA,YACyBA;AAlIzBC,sBA6JoBD,0BFtJRI;AE2HVJ,QFpFiCI,EEuGrCJ,CAhBEA,WACEA,OAAOA,SAeXA;AAZEA,WAEEA,UAAMA;IA7GMA,qBAmHWA;AAjJzBC,sBA6JoBD,0BFtJRI;AE0IVJ,QFnGiCI,EEuGrCJ,MAFIA,OAAOA,SAEXA,C;EAYAK,MACcA;AAlKZJ,yBFOYI,6BE4JCA;AAEbA,QACFA,C;EAEAC,IAGEA,OAAOA,uBACTA,C;EAEAC,eACoBA;AAGTA,IApJKA,oBAoJZA,cAIJA;KAFIA,OAAOA,mBAEXA,C;EAgBKC,YACSA,IAAwBA,MAGtCA;;AADEA,MACFA,C;EAGKC,GACHA;AAAiCA;AACAA;AAEjCA;GAzLuBA;AA+LRA;AAEfA,+BACgBA;AACJA;AACVA,WAAyBA,QAAzBA,QACYA;AACyBA,GAAvBA;AACZA,YAEeA,UADUA;AAEvBA,YAlONR,yBFOYQ;iBEuOZA,WAAyBA,QAAzBA,QACYA;gBACNA,YA9RCA;;;;;YAuSTA,C;EAmCKC,GAESA,mBAAcA;AAiBlBA,QACJA,GALIA,MAAsBA,GAFtBA,MADsBA,GAAtBA,MAAsBA,GADtBA,MAAsBA,GADtBA,MAAsBA,GAHtBA,KAFmCA,CACvCA,IAA+CA;AAqBnDA,2DACqBA;AACnBA,wBAGmCA;AAA/BA,oBACFA,WAAoBA,QAApBA,QACoBA;AAClBA,wBAmBSA,cAZFA;GACOA;GACEA;AAELA;AAEbA;AAEAA,gBACNA,C;EAEAC,MAEEA,OADeA,OAEjBA,C;EQhJQC,aAGeA,WAEPA,KAGGA;AAEjBA,WAGEA,WAsBJA;AAnBEA,SACEA,QAkBJA;AANWA,QAFWA,QAElBA,sBAMJA;AADEA,OAAOA,IACTA,C;ECpJAC,4BAGMA,QACFA,OAAOA,uCAGXA;AADEA,QACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CC0qDKC,QACHA,mBACEA,UAAMA,UAEVA,C;;;;;;;;;;;;;;;;;;;;ELnqDaC,MAKOA,OAwiHoBA;AAriHpCA,gBAdIA,WAkjHyBC,QAniH/BD,C;EAEWE,MA2xEPA,OAuwCkCA;AA3hHpCA,gBAxBIA,gBAkjHyBC,MAzhH/BD,C;EAuEYE,WA+8GmBC;AA78G7BD,uBACEA,OAAOA,MA+8GoBA,GA58G/BA;AADEA,qBACFA,C;EAqJcE,IAGZA,QAmzGmCA,GAlzGrCA,C;EAsIEC,IASFA,OAAiBA,MAzBOA,mBA0B1BA,C;CAuEIC,6DAylG6BH;AAvlG/BG,8CAMIA,SAoFNA;WAggGiCA;AAhlGvBA;AACJA,SAAuDA,SA+E7DA;AA9EMA,OAAiBA,aA8EvBA;WAggGiCA;AA1kGvBA;AACJA,SAAuDA,SAyE7DA;AAxEMA,OAAiBA,aAwEvBA;WAggGiCA;AApkGvBA;AACJA,SAAuDA,SAmE7DA;AAlEMA,OAAiBA,aAkEvBA;WAhaWA;AAiWmCA;AAExCA,SAEEA,SA2DRA;AA1DMA,OAAiBA,UAyjGgBC,KA//FvCD;YAggGiCE;AAtjGLF;IAhWjBA;AAmWDA;AACJA,gBACyDA,SAiD/DA;AAhDMA,OAAiBA,YAgDvBA;YA7b6CG;IAiDlCH;AAkWDA;AACJA,SAAmDA,SAyCzDA;AAxCMA,OAAiBA,YAwCvBA;YAggGiCI;AApiGvBJ;IA/UCA;AAkVDA;AAEJA,gBAEEA,SA6BRA;AA5BMA,OAAiBA,YA4BvBA;YAzWWA;KA44GgCA;AAzjGjCA;IAshGuBK;AAphGLL;AACtBA,gBAC+CA,SAkBrDA;AAjBMA,OAAiBA,eAiBvBA;YA6/FiCM;AAxgG3BN,QAAmBA,SAWzBA;IAqiGkDA;AA1iG5CA,WAAsBA,SAK5BA;AAJMA,QAINA;QAFMA,UAAMA,yDAEZA,C;EAEQO,UAIkBA,eA6hGiBA;AA5hGzCA,yBAy/F+BA;AAv/FRA;AACrBA,SACYA;OAIdA,YACFA,C;EAEQC,UAKkBA,mBA4gGiBA;AA3gGzCA,0BA6gGgDA;;GArCjBA;AAp+FRA;AACrBA,SACYA;AAEZA,oBAGFA,YACFA,C;EAEoBC,UAKdA,SAzQAA,sBAQAA,KAqQAA,iBAnPAA,KAsPAA;AACJA,uBAEiDA,QAQnDA;AAhSMC;CAQSD;CAQAA;CAiBAA;AA8PbA,QACFA,C;EAcQE,SAEYA;AAElBA,QACFA,C;EAKKC,WAEaA;AAChBA,YACEA,sBACEA,OAAOA,OAabA;AAJMA,OA65F2BA,MAz5FjCA,CADEA,WACFA,C;EAOIC,MACFA;AAAQA,4BA5CNA,IAiDaA;AACXA,WAAiBA,QAIvBA,CADEA,OAAOA,OACTA,C;EAKIC,IAUOA,iBAxEPA,GAwEAA,cASJA;AAg5FoCA,oBAr5FhCA,OAAOA,OAKXA;AADEA,OAAOA,KADWA,QAEpBA,C;EAIIC,WAiBQA,EAAwBA;AAIlCA,WAAiBA,QAUnBA;iCALIA,QAKJA;AADEA,QACFA,C;EAKIC,IAEuCA,OAD/BA;AACVA,wBACFA,C;EAOIC,WACgBA,gBACNA;AACZA,WAAmBA,QAErBA;AADEA,OAAOA,SACTA,C;EAGIC,0BAxIAA,kDA2JMA,iBAGUA,MA9ZMA,eA+ZFA;;AAGtBA,QACFA,C;EASIC,aACUA,UAqzFoCA;AAnzFhDA,uBAtZiBA,QAzBOpB;AA8bjBqB;AAZLD,QAGJA,CADEA,QACFA,C;EAOKC,IAEHA,WADUA,QAEZA,C;EAyDIC,IAhFqBA,oBAxKrBC;AA2PFD,WAAyBA,QAO3BA;AANaA,YAETA,OAisFiCA,OAjsFLA,EAIhCA;AA4tFoCA,oBA9tFNA,OAxDlBA,OA0DZA;AADEA,OAAOA,OACTA,C;CAIKE,IAKUA,OAr0BTA;AAi0BJA,gBA/zBMC,YAg0BRD,C;EAQME,IA5nBKA,WAbKA;AA+oBdA,SACEA,QA/0BIC,GAk3BND,WA9BFA;AAHgCA,QAzhBNA;AA2gBXA,GAr0BTA;AAo1BJA,gBAl1BMD,YAo1BRC,C;CAsBKE,IACHA,OAAOA,IA1hBUA,MAzBO5B,oBAojB1B4B,C;EAuDKC,IAGCA;AAGKA,WAAPA,oBA4DJA;AA++EIC;KAA2CA;AAziF7CD,KACEA,OAAOA,aAyDXA;GA19BmDA;AAm6BjDA,SACEA,OAAOA,aAsDXA;AA7CEA,SACEA,OAAOA,aA4CXA;SAghFiCnC;GAHAI;AAnjF/B+B,SACEA,OAAOA,aAqCXA;;;;;AAjCEA,WACEA,OAAOA,UAgCXA;AA7BEA,aA4iFqC3B;AAriF/B2B,IA13BGA,iBA7FHA;AA+9BFA,YACEA,OAAOA,aAafA;AAVMA,OAAOA,aAUbA,OANSA,WAkCKA,QAm/EyBzB,IA34G5B2B;AAw3BPF,OAAOA,uBAIXA,CAFEA,OAAOA,aAETA,C;CAGKG,QAzkCMA,CAVHA;AAqlCNA,aACFA,C;EA8BQC;AA28EJH;KAh8E+CG;AALjDA;;KAMIA;AAFGA,YAznCEA,CATHA;AAyoCNA,aACFA,C;EAEKC,WAq9E4BpC;AAn9ExBoC,uCAGEA,SACmBA,kBAk9EGxC,KAj9ECwC,eAi9EDtC;AAt9E/BsC,QAOFA,C;EAGKC,IAGCA;AACJA,WAAoBA,OAAOA,OAG7BA;AADEA,OAAOA,MAvvBiBA,cAsvBRA,YAElBA,C;EAQKC,IACHA,WAAoBA,QAMtBA;AADEA,OA/pCSA,IAslHsBC,OAt7EjCD,C;EAGKE,IAGCA;AACJA,WAAoBA,OAAOA,OAY7BA;GA9lCeA;AA4lCKA,iBA3hBhBA,GAwhBAA,YAKJA;AADEA,kBACFA,C;EAIKC,IAGCA;AACJA,WAAoBA,OAAOA,OAoB7BA;AAdEA,sBAAgDA,QAclDA;AAw6EoCA,oBAp7ENA,QAY9BA;GA1nCeA;AAwnCKA,iBAvjBhBA,GAojBAA,YAKJA;AADEA,kBACFA,C;EAIQC,IAGFA;AACJA,YAEMA,WACFA,QAWNA,MAruCWA,UAmuCiCA,QAE5CA;AADEA,SACFA,C;EAIQC,IAGFA;AACJA,WACEA,QAGJA;KAjvCWA,UA+uCiCA,QAE5CA;AADEA,SACFA,C;EAQMC,MACJA,UALkBA,KADMA,OAAgBA,cAO1CA,C;EAqBgBC,MAIZA,OAHiCA,mBAEFA,IADfA,kDAKlBA,C;EAOAC,oCAAqEA,C;CAE7DC,MACNA,OAHFA,uBAGuCA,UACvCA,C;EAaGC,IA/yCMA,cAmlHsBhD,QAGAJ;AApyE/BoD,QAoyE+BlD,SAlyEnBkD,MA35BYA,iBAzZfA,IAqzCXA,C;EAIKC,IACHA,cACFA,C;EAIQC,IACNA,WAAoBA,QAStBA;AADEA,UAAiBA,gBACnBA,C;EAIKC,IACHA,QACFA,C;EAIQC,IACNA,QACFA,C;EAIKC,IACHA,QACFA,C;EAIKC,IACHA,oBACFA,C;EAMKC,IACHA,UAAoBA,QAGtBA;AAFEA,UAAqBA,QAEvBA;AADEA,UAAiBA,cACnBA,C;EAIMC,IACJA,UAAoBA,QAUtBA;AATEA,UAAqBA,QASvBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,cACnBA,C;EAIMC,IACJA,UAAoBA,QAItBA;AAHEA,UAAqBA,QAGvBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,eACnBA,C;EAIOC,IACLA,sBAAoBA,QAEtBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAoBA,QAStBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBACnBA,C;EAIKC,IACHA,4CAEFA,C;EAIIC,6CACkBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,6CACiBA,QAStBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,aACnBA,C;EAIKC,6CACiBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cACnBA,C;EAIKC,IACHA,yBACFA,C;EAIIC,IACFA,sBAAoBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,IACHA,sBAAoBA,QAStBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,aACnBA,C;EAIKC,IACHA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cACnBA,C;EAIKC,IACHA,yBACFA,C;EAIOC,IACLA,sBAAuBA,QAEzBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAuBA,QASzBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAuBA,QAGzBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBACnBA,C;EAEOC,MACEA;AACPA,qBA2mEyCA,QA3mEzCA,WAEMA,UAskEyBA;AAnkE/BA,QACFA,C;EAEOC,yBA+jEgCpE,MA34G5BoE;AAo1CTA,UAEEA,UAAaA,aAmBjBA;GAskE2CA;AAkBrCA;GAlBqCA;AAjlEzCA,mCACEA;AAEAA,SAAqBA;AAChBA,QA0iEwBA;AAziE7BA,gBAwiEmCA,IAriEnCA,IAEFA,aACFA,C;EAEOC,WAEEA;AAGPA,iBA+jEyCA;AA7jEvCA,YAC2BA;UAEWA;IAEVA;AAC5BA,gBACEA;+BAKFA,kBAEsDA;AAAOA;AAArCA,2BAAcA;AAApCA,eAAsBA;IA4gEKA;GAHA3E;AA9BcgC,wCA2CI4C;KA3CJ5C;AAz+DzC2C,MAEoBA,yBAItBA,YA3B0BA;IA95CepE;IA0ElCoE;GAqJLA;GAiwGqCA;GAzvGrCA;GAyvGqCA;GAvuGrCA;GAuuGqCA;AAxhEjBA;AAIxBA,kCAEMA,YA++DyBA;AA1+D/BA,QACEA;AAEAA,4BAEMA,YAq+DuBA;AAj+D7BA,QAGFA,QACEA;AAEAA,8BACEA;IAq9D6BA,MAn9D3BA;AAEeA,SAs9DUA,eADMA,IA/8DnCA,QAGFA,eAEuCA;aAOvCA,yBACFA,C;CAYOE,2BAo7D0B7E;AAj7D/B6E,SAA4BA,cA4E9BA;AA3EEA,SAA6BA,eA2E/BA;AA1EEA,SAA0BA,YA0E5BA;AAzEEA,SAA2BA,aAyE7BA;AAxEEA,SAAyBA,WAwE3BA;AAtEEA,SAWIA,OATSA,KA46DkBjF,KAx2DjCiF;AAvDEA,aA+5D+BtC;AA75DlBsC;GA05DkB7E;AAp5D7B6E,sCA+CJA,CA5CEA,SAEEA,kBAAmBA,KAk5DU/E,SAx2DjC+E;AAvCEA,UAESA,QA44D4BzE;AAl4DnByE,GA7hDTA;AA+hDPA,QAHcA,iCA4BlBA,CAtBEA,UACEA,OAAOA,SAqBXA;AAlBEA,UACEA,OAAOA,cAiBXA;AAdEA,UAGEA,OAAOA,MAm3DsBrE,MAz2GtBqE,GAigDXA;AAPEA,cA9kD2CpE;GA+kDboE;AAEEA;AAAvBA,+BAAOA;AAAdA,QAAOA,GAIXA,CADEA,SACFA,C;EAEOC,WD71DOA,mBACLA;AC81DPA,WAAuBA,QAEzBA;AADEA,mBACFA,C;EAgLiBC,aAXXC,GASAD;KAIFA,uBAbEC,GASAD;AAOFA,QACFA,C;EAEWE,uBAhBPA,OAkBUA;AACZA,WACEA,OAAOA,YAcXA;KAbSA,uBAkqDsBA;AA99CtBA;AAjMsBA;AAC3BA;AAGgBA;AAYTC;AAVPD,QAIJA,MAFIA,QAEJA,C;EAKYC,MACRA,aA3CAA,MA2C+CA,C;EA2BvCC,MACRA,OAAOA,MApEPA,MAoEiDA,C;EAS1CC,QA8qDPA,SAlwDAA;AAuFFA,WAAmBA,QAIrBA;AA2DoBA,OADGA;AAgnDrBA;AA3qDAA,QACFA,C;EAEWC,mBAlvDkCA;AAqvD3CA,WACUA,GApvDNA;AAq5GFA;AA7pDFA,WAAmBA,QAIrBA;AA6CoBA,OADGA;AAgnDrBA;AA7pDAA,QACFA,C;EAEWC,qBA5uDkCA;AA8uD3CA,WACUA,GA7uDNA;GA+zG+BrF;AAkEjCqF;AA/oDFA,WAAmBA,QAUrBA;AAHYA,YAokDmBtF,SAn5GtBsF;AA09GPA;AAzoDAA,QACFA,C;CA6BWC,OA7jELA;CAIAA;AAikEJA,QACFA,C;EAmFWC,QA4gDPA,WAlwDAA;AAyPFA,WAAmBA,QAErBA;AA1qEIC;CAwIEC;CAwLAA;AAg3DGF;AAogDPG,CArwDEA;AA0PFH,QACFA,C;EASWI,QA8/CPA,SAlEiC3F,WAhsDjC2F;AAwQFA,WAAmBA,QAGrBA;AADqBA;AA2/CnBD,CArwDEA;AAyQFC,QAEFA,C;EAEWC,UAETA;SA+6C6B7F;AA76CvB6F;KAE6BA;AAFjCA,KAIEA,QAQNA,CA5sEIJ;CAwIEI;CA6CAA;AAshEGA,CA34DHA;AA24DJA,eACFA,C;EAEWC,QAm+CPA,SAlEiC7F,WAhsDjC6F;AAoSFA,WAAmBA,QAGrBA;AADqBA;AA+9CnBH,CArwDEA;AAqSFG,QAEFA,C;EAEWC,UAETA;SAm5C6B/F;;AAj5CvB+F,kCAESA,SAELA,eAg5CmBjG;AAp5C3BiG,KAKEA,QAoBNA;uBAjBMA,UAiBNA;KAhBWA,aA24CoBnG;AAv4CrBmG,IAo4CqB/F,cAGAF,IAt4CvBiG,QAWRA;KATQA,OAAWA,SASnBA,EArvEIN;CAwIEM;CA6CAA;AA+jEGA,CAp7DHA;AAo7DJA,eACFA,C;EAEWC,QA07CPA,SAlEiC/F,WAhsDjC+F;AA6UFA,WAAmBA,QAGrBA;AADqBA;AAs7CnBL,CArwDEA;AA8UFK,QAEFA,C;EAEWC,UAETA;SA7nE+CA;AA+nEzCA,4BAGFA,QAYNA;KAXWA,SACLA,OAgGFA,eAtFJA;yBARMA,UAQNA,CApxEIR;CAwIEQ;CA6CAA;AA8lEGA,CAn9DHA;AAm9DJA,eACFA,C;EAEWC,MA25CPA,sBAlwDAA;AA2WFA,WAAmBA,QAGrBA;AA7xEIT;CAwIEU;CA6CAA;CA2IAA;AAq+DGD;AA+4CPP,CArwDEA;AA4WFO,QAEFA,C;EAWcE,iBA22C2BA;AAx2CvCA,sCAq0C6BA,GADMnG;AA9zCnCmG,QACFA,C;EAEcC,qBA+1C2BA;AA31CvCA,qCA61C8CA;GA1CfA;UAKFA,KADMpG,IA5yCnCoG,QACFA,C;EAaWC,QAEFA;IAg0CgCC,UAv0CjCD;AAq2CJA,GAlwDAA;AAuaFA,WAAmBA,QAGrBA;AAz1EIb;CAwIEe;CA6CAA;CAeAA;IA+8GmCA,WArlHnCA,IAulH0CA;CAr1G1CA;AAsiEGF;AA80CPX,CArwDEA;AAwaFW,QAEFA,C;EA+BWG,QACLA;IAovCyBzG,YAGAK;AAkD3BoG,GAx8GKA,kBAsqEyCA;AAATA,IAbnCA,GA4vC+BxG;AAkEjCwG,GAlwDAA;AAodFA,WAAmBA,QAGrBA;AAt4EIhB;CAwIEiB;CA6CAA;CAeAA;CA4HAA;AA+kEGD;AAqyCPd,CArwDEA;AAqdFc,QAEFA,C;EAsBWE,QAJLA,oCAyxCFA,CAlwDAA;AAkfFA,WAAmBA,QAGrBA;AAp6EIlB;CAwIEmB;CA6CAA;CAeAA;CA4HAA;AA6mEGD;AAuwCPhB,CArwDEA;AAmfFgB,QAEFA,C;EAmDWE,QArBLC,iBAxoEQA,OAwFVC,MAiwGqCA,WAzvGrCA,MAyvGqCA,WAvuGrCA,MAuuGqCA;AA/sCvCD,QAIMA;AAEAA,qBAINA,QAEgCA;AAC1BA,qBA7W2CA;AA6kD/CD,GAlwDAA;AA6iBFA,WAAmBA,QAGrBA;AA/9EIpB;CAwIEuB;CA6CAA;CAeAA;CA4HAA;AAwqEGH;AA4sCPlB,CArwDEA;AA8iBFkB,QAEFA,C;EAoBWI,UAHHA,SA+nC6BhH,wBAkEjCgH,CAlwDAA;AAykBFA,WAAmBA,QAMrBA;AAFMA;AAwrCJtB,CArwDEA;AA0kBFsB,QAKFA,C;EAEWC,YAETA;SAipCuCA;AA9oCNA;AAC/BA,wBA0mC2BA;IAHAlH,eAnmCvBkH,KAGJA,QAEMA;AAEAA;AACJA,OAAOA,iBAabA,EA/hFIzB;CAwIEyB;CA6CAA;CAeAA;AA01EGA,CA9tEHA;AA8tEJA,eACFA,C;EA6HcC,UAEZA,gCAcFA,C;EAqBWC,yBAhB6BA,MACDA;OAmBnBA,YAAlBA,MAXwCA;AAatCA,gBACMA;KACCA,uDACDA;KACCA,UACDA;KAEJA;AACAA,kBAEIA;QArBRA;AAyBQA;QAzBRA;AA6BQA;QA7BRA,OAiCYA,KA9C4BA,IACCA,GAeNA;AA+B3BA;QAlCRA,OAuYiBA,MApZuBA,GA87BXC;AA14BrBD;QAvCRA,OA7iBOA,MAgiBiCA;AAwDhCA;QA3CRA,OAxiBOA,MA2hBiCA;AA4DhCA;SA/CRA,OAniBOA,MAshBiCA;AAgEhCA;QAnDRE,QATqCA;KAg+BEA;AAh6B/BF;QAGAA;AACAA;QAGAA;AACAA;WA5EgCA;AAaxCA,OAqEsBA,OAENA,OAnFyBA,GAeNA,UAPIA;AA6E/BA;WAtFgCA;AAaxCA,OA+EsBA,OAENA,OA7FyBA,GAeNA,UAPIA;AAuF/BA;WAhGgCA;AAaxCA,OAyFsBA,OAENA,OAvGyBA,GAeNA,UAPIA;AAiG/BA;QA7FRA;AAAAE,QATqCA;KAg+BEA;AAr3B/BF;QAGAA;AACAA;QAtGRE,QATqCA;KAg+BEA;AA72B/BF;QAy3BNG,YA5+BmCA;AAsUrCC,MA1UwCD,IACCA;AA67BZA;AAj7B7BC;;AA8GQJ;SA9GRE,QATqCA;KAg+BEA;AAr2B/BF;SAi3BNK,YA5+BmCA;AA6UrCC,MAjVwCD,IACCA;AA67BZA;AAj7B7BC;;AAsHQN;QAy3BNO;AA/+BFA,OA4+BEA;AA5+BFA;AAAAL,QATqCA;KAg+BEA;AA5qBhCF;AAjLCA;QAGAA,0BA1H2BA;AA+HnCA,OAAOA,KA/IiCA,IACCA,KA+I3CA,C;EAOWQ,UACLA;OACcA,QAAlBA,SA9IwCA;AAgJtCA,mBAAyBA;AACXA,cA/IhBA;AAkJAA,QACFA,C;EAEWC,YAELA;OACcA,QAAlBA,SA1JwCA;AA4JtCA,WACEA,KAAeA;AACHA,UAC0BA,0DMp3FKA;KNm3F/BA;AACPA,MAGLA,OA40BFA;AAx0BFA,SAjLwCA;GACCA;IA67BZ7H,WAGAK;AAvjDRwH,UAsjDczH,GA/hBjC0H;AAphCFD,WACEA,uBAA4BA;AA+nB9BA,OA7nBiBA,kBA6nBjBA;AA4KAA,QACFA,C;EAEYE,MAEMA,SA9LwBA,iBAgBLA;AAgLnCA,sBAnLAA,OAqLwBA;KAEXA,SAnM4BA;QA67BZ/H,YAj7B7B+H,OA4LoBA,YAhMmBA;AAkMjCA;QA9LNA,OAiM4BA;AACtBA,OAGRA,C;EAOYC,MAzMyBA,aAhBKA;AA8OxCA,sBAEEA,iBAhOiCA;AAmO7BA;OAnO6BA;AAuO7BA;QA1ONA;AA8OMA,WA9ONA;AAoP6BA;AAjPMA;AAoPnCA,iBApPmCA;cAhsBgBA;;AAy7B9BA,SAxQoBA;AAnyEvCnH;CAQSmH;CAQAA;CAiBAA;AA8wEXA,OAoQkBA;AACdA,MAgBNA;OArREA,OA8QkBA,OAqqBiBA;AAnqB/BA,MAKNA;QAFMA,UAAMA,qCAA8CA,SAE1DA,C;EAyBYC,MA3SyBA;AA6SnCA,UAhTAA,OA/hBOA,MAkhBiCA;AA+TtCA,MAOJA,CALEA,UApTAA,OA1hBOA,MA6gBiCA;AAmUtCA,MAGJA,CADEA,UAAMA,sCAA+CA,QACvDA,C;EAEeV,MAwqBXA,gBA5+BmCA;AAsUrCA,MA1UwCA,IACCA;AA67BZA;AAlnB7BA,QACFA,C;CAWWW,QACTA,sBAEEA,OAAiBA,UA3gCgCA,KAkhCrDA;KALSA,uBACUA,CAAiCA;AAAhDA,kBAIJA,MAFIA,QAEJA,C;EAEYC,iBAgoB6BA;AA9nBvCA,gBAEaA,cA8nBiCA,IA3nBhDA,C;EAEYC,iBAunB6BA;AApnBvCA,iBAEaA,cAonBiCA,IAjnBhDA,C;EAEWC,mBAukBoBrI;AArkB7BqI,WACEA,SAAgBA,QAukBWhI,EAjjB/BgI;GAr2FSA;GAy7GgCA;AAvmBrCA,QACEA,QAmkByBA,KAjjB/BA;AAfIA;GAgkB2BhI;GAHAL,QAzjB3BqI,SAAgBA,QAWpBA;AATEA,SACEA,UAAMA;GAv2FDA;OAm8GgCA,QAvlBrCA,QAojB2BA,KAjjB/BA;AADEA,UAAMA,4BAAsCA,QAC9CA,C;EAoDGC,iBAvhGKA;WAAoBA,GAApBA;AAqlHJA;AA3jBJA,YAqBSA;AAyiBPA,WA1jBFA,SAAmCA,QAOrCA;AANEA,SAAkCA,QAMpCA;AADEA,QACFA,C;CAuCKC,cAWHA;SAA8BA,QAwKhCA;AAoPIA;KA5ZmCA;AAGrCA,KAA4BA,QAqK9BA;GAkRiCvI;AApb/BuI,SAA0BA,QAkK5BA;AA/JMA,UAAmBA,QA+JzBA;GArtGmDC;AAyjGjDD,SAA+BA,QA4JjCA;AAzJ0BA;AACxBA,KAGMA,UA0ayBA,EAHA9H,cAva6B8H,QAqJ9DA;GAkRiCvI;;AA/Z/BuI,MACEA,SACEA,OAAOA,WAgaoBzI,QArRjCyI;AAxIIA,qCAwIJA,aAnIIA,SACEA,OAAOA,OAuZoBzI,YArRjCyI;AA/HIA,SACEA,OAAOA,OAmZoB3I,YArRjC2I;AA3HIA,YA2HJA,CAvHEA,SACEA,OAAOA,OA2YsB3I,YArRjC2I;AAjHEA,UAOgBA;AANdA,OAAOA,iBAgHXA,CApGEA,UACOA,WAwXwBzI,aAtX3ByI,QAiGNA;AA/FIA,OAAOA,MAAyBA,mBA+FpCA,CA1FEA,UAEUA;AADRA,UAEIA,OA4WyBhG,YArRjCgG,CA7EEA,UACMA,cAiWyBzI,SA/V3ByI,QA0ENA;AAxEIA,OAAOA,UACCA,eAuEZA,CAnEEA,UAEUA;AADRA,UAEIA,WAqVyBhG,QArRjCgG,CAzDEA,KAAsBA,QAyDxBA;AAtDiCA;yBAE7BA,QAoDJA;AAhDMA;cAAqDA,QAgD3DA;AA3CEA,sBAC2BA,QA0C7BA;AAzCIA,UAAsCA,QAyC1CA;GAplGWA;;GA44GgCA;gBA3VfA,QAmC5BA;AAuUMA;;AArWFA,oBAmT6BA;;AAhTtBA,wBACAA,kBACHA,QAyBRA,CArBIA,OAAOA,QA0SsB/H,cArRjC+H,CAlBEA,sBAC2BA,QAiB7BA;AAhBIA,KAA+BA,QAgBnCA;AAfIA,OAAOA,kBAeXA,CAXEA,UACEA,SAAgCA,QAUpCA;AATIA,OAAOA,kBASXA,CALEA,aACEA,OAAOA,kBAIXA;AADEA,QACFA,C;EAEKE,oBAKCA;AAECA,aA4Q0BlI,kBA3Q7BkI,QAuFJA;IA/rGWA;;GAqJLA;;GAiwGqCA;;AAlSzCA,OAA2DA,QA2E7DA;AAzEMA;GAz9FAA;;GAyvGqCA;;AAxRzCA,WAC2DA,QAgE7DA;AA9DEA,oBAuRgDA;AApRzCA,YA+OwBA,gBA9O3BA,QA0DNA,CAtDEA,oBA+QgDA;AA3QzCA,YAsOwBA,kBArO3BA,QAiDNA,CA7CEA,oBAsQgDA;AAlQzCA,YA6NwBA,gBA5N3BA,QAwCNA,IAhhGMA;;GAuuGqCA;;AArPzCA,0BAiNqCA;KA/MnCA,KACEA,QAA4BA,QA2BlCA;IAmLuCA;AA5MjCA;AACAA,SAAyCA,QAwB/CA;IA+KmCA;AApM7BA,UACEA,MAAiBA,QAoBzBA;AAnBQA,YA4O0CA;AAxO5CA,UAAiCA,QAevCA;GAyNkDA;AArOvCA,YAgMsBA,kBA/LzBA,QAWRA;AAVMA,YAIFA,UAqL+BA,MApL0BA,QAK7DA;AAJMA,KAGJA,QACFA,C;EAEKC,+BAiLkCtI;KA5KrCsI,WAhhDI1D,GASA0D;AAohDFA,WAAkBA,QA8BtBA;AA7BIA,uBA8JmCA;AA5JjCA,YAhYAA;AAoYFA,WAAqBA,QAuBzBA;GAqK2CA;AALnCA,oBA3tGkBC,aA4kD6BA;AA29CnDD,gBAE+BA,eAmJIA;AA/InCA,OAAOA,iBAhxGAA,QA8xGXA,CAFEA,OAAOA,QA5xGEA,mBA8xGXA,C;EAEKE,yBAmKsCA;AAxJzCA,gBA8BSA,WAuFsBA,iBAtFzBA,QAKRA;AADEA,QACFA,C;EAEKC,uBA7zGMA,YA+6GgCA;gBA1GnBA,QAaxBA;IAyDuCvI,SAnEnBuI,QAUpBA;AAREA,gBAGOA,WA+DwBA,iBA9D3BA,QAINA;AADEA,QACFA,C;EAEKC,WAqD4B9I;uBAlD3B8I,WACKA,SACmBA,kBAmDGlJ,KAlDCkJ,eAkDDhJ;AAtD/BgJ,QAKFA,C;EAWK9G,IAA8BA;AAK/BA;KAA2CA;AALZA,QACsCA,C;CAMpE+G,WA4B4B/I;AA1B/B+I,0CAKFA,C;EA2CcC,MAFRA,4BAkBqCA;AAZvCA,oBAxBmCA;AA+B/BL,UAHNK,C;EAEeL,IAA+BA,yBA1tGtBA,aA4kD6BA,IAgpDLA,C;;;;;;;;;;;EOvtHhCM,GACdA;AAESA,OADLA,yBACFA,aAgCJA;OA9BMA,6BACAA,iBAEQA;AACCA;;AASIA,0BACXA,KAPYA,gBAQhBA;AAEAA,OAAOA,eAaXA,MAJWA,OADEA,oBACTA,aAIJA;AADEA,OAAOA,MACTA,C;EAEYC,IAKVA,uBACIA,KALYA,eAMlBA,C;EAEYC,IAKVA,kBACIA,KALYA,eAMlBA,C;EAEYC,IAWHA,SATTA,C;EA0BAC;;QAaAA,C;EA0FWC,IACXA,OAjCAA,SCoGAC,SAAyBA,GAAzBA,aDpGAD,aAkCFA,C;EAUQE,MAENA;CACUA;AACVA,QAxBwBA,EAyB1BA,C;EASQC,MACNA,SACFA,C;EAQQC,MAhE4BA;KAC3BA,GACHA;QAGAA;mBAFeA,KAEfA;KAEAA,OA2DNA,C;EAOQC,MAGFA,eAAyBA,UA9DzBA;IADEA,GACFA;KAEAA,QA6DNA,C;EASKC,MAECA,wBAEqBA;oBASvBA;;oBAEAA;KCLFA,WAAyBA;CA4IvBA;CACAA;ADnIAA,aAEJA,C;EAIkBC;;OACAA;AAuBhBA,OAAYA,CE6QeA,KF7QgBA,YAG7CA,C;EG3TEC,MACcA;AADdA,0BAEiCA,UAFjCA,AAEyDA,C;EAOvCC,IAChBA;AAAUA,aACeA;AACvBA,WAAwBA,QAG5BA,CADEA,QAAkBA,EACpBA,C;EFiiBYC,MAEVA;QA1QsBA,iBA8GfA;AA+JPA,UACEA,IP1XJA,0DO6XmBA;AACfA,MAYJA,KAV0BA;CAAjBA;AACPA,eAC+BA;AAC7BA;AACAA,kBAEoCA;AACpCA;AACAA,OAEJA,C;EAQYC;QAtSYA,kBA8GfA;CA2LLA,KAEFA,UACEA,IPxZJA,0DO2ZmBA;AACfA,MAuBJA,CArBEA,kBAGsCA;AACpCA;AACAA;AACAA,MAeJA,iBAVkCA,UAC9BA;AACAA,MAQJA;ACmhCEA,gBDthCOA,GAAwBA,cAGjCA,C;EAgIYC;KAEVA;GAvcqBA;AAAOA;AAAeA;AA0czCA,YACEA,oBApWGA;AC8sCPA,MDv2B0CA,IAAkBA,IAExDA,MA+JNA,EA1JoBA;GACyBA;AACzCA,0BACWA;AACTA,MAAsBA;CACtBA;GACwBA,MAGGA;GAAOA;CAQ/BA;CACDA;AAKkCA,SAnqBhBA;AAmqBGA,6BArCpBA;AAqCLA,SArqBeA,EAAOA;AAuqBPA,SAAWA;AAARA,eAAHA;AAAbA,MCu0BJA,MDn0B0CA,IAAkBA;AACtDA,MA4HRA,IAxH0BA;AAApBA;KAmFIA;GA9vBmBA;AAivBvBA,cA/D+BA,gBAgE7BA;KACKA,MACLA,aA9BsBA,cA+BpBA,UAGFA,aAzBcA,cA0BZA;AAKJA;GAIIA;wBACAA;cAprBuCA,OAAsBA,iBAmrB9BA;AAAnCA,SAKmBA,EAASA;KAplBTA,eA2MIA;CAC3BA;AACOA;CAtEPA,IACYA,OAAkCA;CAC9CA,IAA4BA;CAgdlBA;AACAA,cAEAA;AAKJA,MAeRA,KAXqBA,EAASA;GA1ZDA;CAC3BA;AACOA;GA0ZAA;GACcA;AADnBA,QApfFA;CACAA,WAKAA,IAAwBA;CACxBA,MAofEA;IAEJA,C;EAqDOC,MACUA,YACfA,OAAOA,MAWXA;AARmBA,YACfA,QAOJA;AALEA,UAAoBA,sBAKtBA,C;EGx8BKC,GACHA;OAAiBA,IAAjBA,WAAuDA;GAEpCA;;AAEjBA;AACOA,SAEXA,C;EAEKC;IAKDA;;IAIIA,UJ3BJA,OAAyBA,GI4BMA,QAGnCA,C;EAMKC,IAnDHA,qBAqDoCA;AACpCA;KAEOA,IJ1CLA,OAAyBA,GI2CMA,mBAGlBA,IAGjBA,C;EAQKC,iBACCA;AAAJA,YACEA;MACwBA;AACxBA,MAgBJA,CA3FEA;GA8E4CA;AAC5CA,aACQA;oBAG0BA;CAC1BA;MACeA;AAErBA,kBAIJA,C;EA0BKC,kBACsBA;IACXA,QAGZA,UAHYA;AAIZA,MAUJA,CFggDIA,WEjgDkCA,QACtCA,C;EC64EUC,ICxkDWA;AD2kDfA,OC5kDJA,UD4kDkCA,C;EE5uD/BC,IAC8BA,MAMnCA,C;EA2BEC,mBLnQ2BC;AIndVA;ACstBjBD,0BAEmDA,C;EDnrBnCE,iBAEEA;AACAA,YACdA,OAAOA,MAQXA;AALkBA,YACdA,QAIJA;AAFEA,UAAUA,0HAEZA,C;EAsVGC,MJsmCDA,SIpmCJA,C;EJ81BKC,MACHA,KAA+BA,cAGjCA,C;EAEEC,mBACmBA;AAAnBA,SAAoCA,OAAOA,MAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,qBAEmBA;AAAnBA,SAAoCA,OAAOA,OAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,uBAEmBA;AAAnBA,SAAoCA,OAAOA,SAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAqBKC,cAEYA,OAGPA;AAKRA,OACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EMhnCSC,aACOA;AAGZA,mBACFA,C;EAEYC,QAIVA;WAQFA,C;EAoBOC,GAIOA;AAIZA;;AAEAA,QACFA,C;EC9QcC,IAEZA;AAAIA,WACFA,aAwBJA;ACyXAA;ID5YIA;;CAEKA;AACLA,OAAUA;iBAYVA,mCAAiBA;AAAjBA,aC4Z0CA;ADzZ5CA,6BACFA,C;;;;;;;;;;;;;;;;;;EC0IaC,MACHA;AACyBA;AACjCA;AACAA,wBACFA,C;EAoCQC,QACFA;ArB1RJA,gBACEA,KAAiBA;AA+EjBC,OAAsCA,KAHLC;AqBuNnCF,QACFA,C;EA+NcG,QACgBA;AACvBA,UAAqBA,QAa5BA;ICpKoBA,gBDuKgCA,OAbVA;MAC7BA,YAYuCA,OAVZA;KAC7BA,OASyCA,UAPVA,QAGxCA,QACFA,C;EA6NsBC,GAAWA,WAAsBA,YAAsBA,C;EhBrsB/DC,IACgBA,wCAC1BA,OAAOA,OAMXA;AAJEA,sBACEA,OP8qFGxP,iBO3qFPwP;AADEA,OgBkLkBA,OhBjLpBA,C;EA8BaC,MACXA;AACAA;AACAA,SACFA,C;EAYAC,sBAA8BA,C;EAsD9BC,iCAEuBA,C;EAcvBC,gCAEsBA,C;EA8EtBC,uDAIiEA,C;EAqKjEC,wDAEsEA,C;EAkFtEC,sBAAqCA,C;EAcrCC,sBAAkCA,C;EAyBlCC,qBAAwBA,C;EAaxBC,sBAAkDA,C;EkBsPpCC,QAEZA;AAAIA,YACFA,oBAEEA,aAgBNA;AAdIA,gBAcJA,CAZ+BA;AAC7BA;IAEEA,kBAGAA,OALFA,UAKEA,YALFA,MAKmBA;AAAjBA,CALFA,SFxTYA;AE+TZA,6BAIFA,C;EAYcC,QAEZA;AAAIA,WACFA,gBAYJA;AF/WAA;AEsWEA;IAEEA;AFvVUA,CAAZA,SAAsBA,mBE0VpBA,OALFA,UAKEA,YALFA,MAKmBA;AAAjBA,CALFA;GFvU4CA;AE+U5CA,6BACFA,C;EA0BGC,MAwB6BA;AAGhCA;AACOA,UAAeA,MAkFxBA;AAjFwBA;AACpBA;IACeA,UACfA,IAQGA,WACHA,QAAoCA,MAqExCA;AApEqBA,+BAAMA;AAANA;AACGA,+BAAMA;AAANA,eAEKA,SACzBA;AACKA,WACHA,SACEA,OAAYA;AACZA,MA4DRA,CA1DyBA;AACCA,+BAAMA;AAANA;IACKA,eAEHA,SACtBA;KAGOA,MAAPA,SAEgBA,SACdA;AACAA,UAQEA;AAEYA,+BAAMA;AAANA,UAAmBA,UAC7BA,IAEFA;AACAA,MAgCVA,EA7B4BA;AACHA;IACMA,SAA2BA,iBAOtCA,WAEhBA;AAfgBA;AAqBlBA,sBAAqCA;AACzBA,+BAAMA;AAANA,UAAmBA;AAC7BA,YAEEA;AAzBcA,SA4BlBA,WACEA;AAEFA;AACAA,SACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EC1xBAC,QACEA,QAAiBA,OAAOA,OAE1BA;AADEA,OAAOA,MACTA,C;EClNKC,IACDA,gBACEA,iDAGAA,UACAA,UACAA,UACAA,UACAA,UACAA,UACAA,UACAA,UACAA,UACAA,UACAA,QAAWA,C;EAGTC,IACFA,WACFA,QA8BJA;AADEA,OAzBgBA,SNuVPA,eM9TFA,KACTA,C;;EChDUC,YCiVRC,+CD1UkBD;AFiFlBA,wBACEA,KAAMA;mEAEOA;AAWWA;AGjH1BE;AD0BAF,kBC1BAE,aD2BFF,C;EAGEG;;QAMAA,C;EAWGC,GAEGA;mBAFHA,cAEGA;4BAASA;GAZgBC;;URmcPA,QAiVxBC,WQvwBmBF;AAcrBA;AAfQA,wBAeRA,C;;;;;;;EEtDKG,IACHA,iCAEEA;AACAA,MAoBJA,+DAdIA;AACAA,MAaJA,CATEA,6BACEA;AACAA,MAOJA,CADEA,0CACFA,C;EClBKC,IAEHA,KCRAA,mEDOgBA,YAElBA,C;EAGKC,GAEHA,KCHAA,+CDEgBA,YAElBA,C;EEJSC,cAELA;WACEA,OAAOA,MAYXA;KAVWA;AAAPA,QAUJA,E;;;;AlCyR+BC;EAAvBA,IAAYA,cAA+BA,C;CAE5CC,IAAcA,sBC6JLA,WD7JiDA,C;EAoBxDC,IACLA,OO6qBGA,IADGA,WP5qByDA,C;AAQ9CC;CAAdA,IAAcA,gBAAgCA,C;EAU7CC,IAAYA,sBAAwCA,C;EAGnDC,IAAeA,eAAmCA,C;;;CAcpDC,IAAcA,YAAMA,C;EAEnBC,IAAYA,QAACA,C;;;;AAmDAC;EALbC,IAAYA,QAACA,C;CAKdD,IAAcA,gBAA+BA,C;;;;CAyB7CE,IACiCA,OAApBA;AAClBA,WAAyBA,OAAaA,UAExCA;AADEA,iCAAkCA,OACpCA,C;AAiBqBC;EAHbC,IAAYA,QAACA,C;CAGdD,IAAcA,gBAA+BA,C;AAqB/BE;EAHbC,IAAYA,QAACA,C;CAGdD,IAAcA,gBAA+BA,C;;EGpO/CE,MACHA;oBAlHEA,KAAMA;AAwHRA,qBAEEA,OAFFA,OAIFA,C;CAgCYC,QACVA,OEuGFA,YFvGSA,QEuGTA,2BFtGAA,C;CAyGEC,MACWA;AAAXA,QAAWA,GACbA,C;CA+SOC,IAAcA,OgC9KJA,ehC8K+BA,C;EAahCC,IAAYA,OA8H5BA,YAEyBA,QAhIGA,QA8H5BA,WA9HkDA,C;EAE1CC,IAAYA,OAAWA,OAAoBA,C;EAE3CC,IAAUA,eAAiCA,C;;;;;EA+H7CC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAEzBC,mBACUA,MAAUA;IAKnBA,OACFA,UAAMA;GAGJA;AAAJA,UACEA;AACAA,QAKJA,EAHEA,IAAWA;CACXA;AACAA,QACFA,C;;CiCxnBOC,IACLA,gBACEA,YAIJA;KAFIA,UAEJA,C;EAEQC,IACFA;AAGJA,SAAsBA,kBA6BxBA;AAxBiBA;AACEA;AAIJA;AAWGA;AAOhBA,6EACFA,C;EAyGIC,MACFA;OACMA;;AAKAA,WANNA,QAOFA,C;EAOIC,MACFA,mBASFA,C;EAiDSC,IAAeA,eAAkCA,C;;AA+MlCC;EAAfA,IAAeA,eAAkCA,C;;;AAWlCC;EAAfA,IAAeA,eAAqCA,C;;;EXzoB7CC,MAEdA,UACFA,C;CA4WOC,IAAcA,QAAIA,C;EAMjBC,IAGFA;OACgBA,gBAApBA,SAC8BA;AACrBA;AACAA,QAEFA;AACAA;AACPA,kCACFA,C;EAGSC,IAAeA,eAAqCA,C;EAErDC,IAAUA,eAA4BA,C;;;;CQ5YvCC,IAELA,sCADcA,EAIhBA,C;;A5BgSAC;EArSgBA,IAAYA,oBAuSHA,WAFzBA,qBArSiDA,C;CA8IrCC,QACRA,OA2OJA,qDA3O6CA,C;;EA2JvCC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAGzBC,GACoBA,gBAAVA,eAAUA;IACnBA,OACFA,UAAMA;GAEJA;AAAJA,UACEA;AACAA,QAKJA,CAHaA,CAAXA;AAEAA,QACFA,C;;EAkBgBC,IAwBhBA,UAxBiDA;AAArBA,gBAA+BA,YAAUA,GAAzCA,WAwB5BA,aAxBwEA,C;EAGhEC,IAAoBA,UAAVA;cAAgBA,C;;;CAuB7BC,iBACCA;UACSA,CAAXA,IAAWA,MAAaA;AACxBA,QAIJA,EAFEA;AACAA,QACFA,C;EAEMC,GAAoBA,UAATA;uBAASA,YAAIA,C;AAcJC;EAAlBA,IAAUA,mBAAcA,C;CAC9BC,MAAwBA,iBAAGA,eAAyBA,C;;;CJu7BtDC,iCAEyDA,IAD3CA;AAEZA,WAAmBA,WAmBrBA;AAlBeA;GACTA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;AAIAA,QACFA,C;;CAmNOC,IACLA,gDACFA,C;;CAaOC,+DACDA;AAAJA,WAAqBA,6BAA4BA,EAMnDA;GALMA;AAAJA,WACEA,kBAA0DA,MAI9DA;AAFEA,6BACoDA,MACtDA,C;;CAQOC,cAAcA;QwBptCDA,+BxBotCgDA,C;;CAQ7DC,IAGLA,8BAD6BA,kDAE/BA,C;;;CAyMOC,gBACDA;AAAJA,WAAoBA,QAQtBA;MAL+BA;iCAEnBA;AAEVA,WAAOA,eACTA,C;;;CA+nBOC,IAMcA,UAJDA,6BAEeA;AAEjCA,+CACFA,C;;;;;;;;;CAqBOC,cAEDA;AACJA,WAAkBA,wCAEpBA;AADEA,kBAAmBA,WACrBA,C;AAsCyBC;EADjBA,IAENA,gBADsCA,IACDA,SAfjBA,eAgBtBA,C;CAGOC,IAGLA,sBAzBkBA,iCAthEJA,SAgjEgCA,QAChDA,C;;CA+LOC,IAELA,sCADwBA,gCAI1BA,C;;CAOOC,IAAcA,2BAAgBA,EAAQA,C;AC90ErBC;EAAPA,IAAOA,WAA0BA,KAAUA,C;;AAErCA;EAAnBA,MAAmBA,WAA6BA,OAAsBA,C;;AAEtDA;EAAhBA,IAAgBA,WAAeA,KAAqBA,C;;;EUjX/CC,IAAeA,UAAUA,C;;;;;EA8XzBC,IAAeA,UAAQA,C;;;;EA0QxBC,IAAUA,eAAgCA,C;;;CA2BlCC,MACdA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;;EAsDSC,IAAeA,UAAWA,C;;;;EAsC1BC,IAAeA,UAAWA,C;;;;EAsC1BC,IAAeA,UAASA,C;CAEpBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;EAsCSC,IAAeA,UAASA,C;CAEpBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;EAsCSC,IAAeA,UAAQA,C;CAEnBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;EAyCSC,IAAeA,UAAUA,C;CAErBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;EAsCSC,IAAeA,UAAUA,C;CAErBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;EAuCSC,IAAeA,UAAgBA,C;EAEhCC,IAAUA,eAAgCA,C;CAErCC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;EAmDSC,IAAeA,UAASA,C;EAEzBC,IAAUA,eAAgCA,C;CAErCC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;;;;AL1kBiBC;CAtZbA,IAEFA,aAiZsBtU,qBAhZxBsU,C;CAKIC,IAA8BA,OAsZjBA,MAXOC,qBA3YmDD,C;;AA08BtDE;CAAdA,IAAcA,eAAaA,QAAWA,C;;CAkUtCC,IAAcA,aAAQA,C;;;EOh3CzBC,oBACUA;CACRA;AACCA,MACHA,C;;;EAMOC,IAELA;;MAG4DA;MACxDA;8CACLA,C;;;EASHC,GACEA,WACFA,C;;;EAOAC,GACEA,WACFA,C;;;EAkCF/J,aAgEOA,kBAxDOA,gBACNA,KAPiBA;KASrBA,UAAMA,kCAEVA,C;;EAXIgK,GAGEA,WACFA,C;;;AA6JYC;EAAZA,IAAYA,qBAAgDA,C;;;EAEvCA,MAGvBA,Ybg2CFA,ca/1CCA,C;;;EA0C0CC,MACzCA,IAAkBA,OACnBA,C;;AGzSsBC;CAAhBA,IAAcA,eAAEA,GAAMA,C;;;;;CasBxBC,GAAYA,C;CAIZC,GAAaA,C;;EA4FTC,GAAgBA,WAACA,IAAuBA,C;EA+C3BC,UAEpBA;KAzEoBA,WV4jBtBA,YJtG2BC;AIyGzBA,KAAkBA;AAClBA,YACEA;AUvfAD,QAUJA,IdkY2BhJ;;;AIndVA;AUvGjBgJ;CAOUE;CAARA;CAgIaF,KAAeA;GAESA;CACrCA;CACaA;CACAA;AACbA,YACEA;MAEQA;IAmCIA,OAEZA,MAAYA;AAEdA,QACFA,C;EAmBKG,IAAkDA,C;EAClDC,IAAmDA,C;CAIlDC,GtBqVNA,QsBjcsBA,UA8GlBA,2DAIJA;AADEA,OtBgVFA,yDsB/UAA,C;EA6DKC,0BA3JkBA;AA6JrBA,aACEA,UAAUA;GApJOA;AAuJnBA,WAAcA,MAgChBA;AA7BYA;CAOVA;KAEAA,aA3RkCA;AA4RhCA,eACeA;AACbA;;GAE+CA;AAC/CA,iBApJ+CA;AAEnDA,YAEEA;MAESA;AAEXA,YAEEA;MAEKA;CAG2BA;CAArBA,OAwIIA;YAGeA;IA/KbA,SAqLjBA,MAEJA,C;EAEKC,WAvNiBA,kBA4NHA,WACFA;AAGfA,SAAYA,GACdA,C;AAU+BC;EAAtBA,GAAgBA,0CAvNFA,SAuNkCA,C;CAEzDC,GtBoNAA,QsB7auBA,UA2NnBA,mBAIJA;AADEA,OAAaA,SACfA,C;CAEKC,kBAvNgBA;AAwNnBA,WAAcA,MAehBA;QArPuCA;AA2OnCA;;IA7NiBA,SAgOfA;AAEFA,MAKJA,CAHEA,KAAiBA,cAGnBA,C;;EAHmBC,IACfA,SAAkBA,GACnBA,C;EAFgBC,kC;;Ef1NdC,IAEIA,QApCiBA,WAmCLA,QAErBA;AADEA,WAxCiBA,EAAOA,SAgBiBA,IAwBkBA,GAC7DA,C;EAEYC,gBAEeA,aASkBA,SAtD1BA,EAAOA;AAiDNA,YACPA,YACuCA;KAEvCA;IAMFA;AAAPA,QAeJA,UAdIA,SAFFA,iBAxDwBA,UA6DpBA,UAAMA;AAMRA,UAAMA,wGAXRA,QAgBFA,C;;EAkHKC,QAEHA,OAA0BA;IAC1BA,IACFA,C;CAEUC,mBCkRiBA;QDhREA,IAEbA,wBACAA,SACVA,UAAoBA,4BAQtBA,WAIYA;AArDhBA;;AAyDEA,OA3OFA;AA4OEA,QACFA,C;EAxBUC,8B;EA8BAC,QAjEVA,eAAyBA,GAAzBA;AAmEEA,OA/OFA;AAgPEA,QACFA,C;EA2EKC,QAEHA,OAAwBA;IACxBA,IACFA,C;CASKC,QAGHA,IACYA,UAAkCA;IAC9CA,IAA4BA,EAC9BA,C;CAEKC,kBA9IDA;AAgJFA,UACWA,IAAgBA;CACzBA,UAEAA,iBArCKA;KA7GgBA,YAwJjBA;AACAA,MAURA,CARMA,OC8rCJA,gBD1rCEA,GAAwBA,eAI5BA,C;CAEKC,IACHA;;WAAuBA,MA+BzBA;GAvMIA;AAyKFA,YACuCA;CACrCA;AACAA,eAEiCA;AAC/BA,2BAEgBA;CAETA,WAGTA,iBAvEKA;KA7GgBA,YA0LjBA;AACAA,MAURA,CARMA,OAGUA,CAAZA;ACypCFA,gBDxpCEA,GAAwBA,eAI5BA,C;CAEiBC,aAIYA;AAEpBA,IADPA;AACAA,gBACFA,C;CAEiBC,IACEA;AAEjBA,mCACkCA;CACxBA,KAIVA,QACFA,C;EASKC,IAKHA;;IAEEA,IAAYA,YAQAA,0BATdA;AAaEA;AAKAA,KAAkBA,iBAItBA,C;CA8FKC,IAG0BA;CA7O7BA;CACAA;AA8OAA,SACFA,C;CAEKC,MAG0BA;AA1O7BA,QAAoBA;AA4OpBA,YACFA,C;EAGKC,0BAaOA,MACRA;AACAA,MAGJA,CADEA,UACFA,C;EAqCKC;ACo7BHA,mBDl7BAA,GAAwBA,iBAG1BA,C;EAMKC,IAEOA,kBAERA;AACAA,MAIJA,CADEA,UACFA,C;CAEKC;AC85BHA,mBD15BAA,GAAwBA,mBAG1BA,C;;;EAnS4BC,GACtBA,SAAsBA,OAAMA,GAC7BA,C;;;EAgCuBC,GACtBA,SAAsBA,SAAMA,GAC7BA,C;;;EAuCWC,oBAEVA;;IAEEA,IAAyBA,uBAD3BA;AAEEA;AACAA,SAEHA,C;;;EAAWA,MAEVA,aACDA,C;;;EAMiBA,GAChBA,aAAeA,OAAGA,GACnBA,C;;;EAsE4BC,GAC7BA,WAAqBA,OAAQA,GAC9BA,C;;;EAkGuBC,GACtBA,aAAmBA,GACpBA,C;;;EAsBuBC,GACtBA,aAAeA,OAAOA,GACvBA,C;;;EA8DGC,GAMMA;SAEeA;AAjnBlBA,GA9EUC,EAAOA,OAqBcA,aAyqBhCD;AAEEA;GACIA,OAAsBA,EAja3BA,EAiayCA;;AAAxCA,MACEA,MAAuBA,EAla1BA;KAoa8BA,CAA3BA;CAEFA;AACAA,MAkBJA,wBAjiBmBA,iBACFA;CAkhBXA,IA3aHA;CA4aGA,MAGFA,MAUJA,2BAJyBA;;AACEA,CAAvBA,QAA2CA;CAC3CA,MAEJA,C;;;EAH+CE,IAAOA,aAAcA,C;;;EAKpEC,GACEA;;GACyBA;AA1rBxBA,CA0rBCA,IA7tBSC,EAAOA,MASmBA,OAotBSD,aAD9CA;AAEEA;;AAC2BA,CAA3BA;CACAA,MAEJA,C;;;EAEAE,GACEA;SAC0BA,EAtczBA;;AAucKA,eACAA,EA5tBYC,UA6tBSD,CAAvBA,IAAuBA;CACvBA,gBALJA;AAOEA;KACcA,EA7cfA;;IA6c6BA,QAC1BA;KAE2BA,CAA3BA;CAEFA,MAEJA,C;;;;EIyZUE,IJ9+BhBA,oBAAyBA;CIg/BnBA;AACJA,QACIA,oBAIQA,cADQA;AAKpBA,QACFA,C;;EATMC,cAECA,C;EAFDC,iC;;EAIQD,GJtoBmBA,UIuoBzBA,WAAiBA;CJ32BvBE;CACAA;AAqOEF,SIsoBGA,C;;;GErwBgBG,GAMRA,QAlBcA,UAezBA,WAAOA,EAIXA;AADEA,WAD2CA,OAE7CA,C;EAGkBC,GAEhBA;KAxB2BA,WDqDzBA,GC5BiBA;AAIjBA,gBAFEA,eAUNA,CALyBA,GADoBA;AAK3CA,QACFA,C;GAK+BC,GAKLA,UAHNA;AAKlBA,WAjD2BA,kBAkD7BA,C;EAKMC,GbENA,Qa9DsBA,UA8DlBA,gDAIJA;AADEA,ObHFA,iDaIAA,C;EAwGsBC,UAEpBA;KA9KGA,UA+KDA,UAAMA;AAEkCA;AAGPA;;AAEnCA,iBACgDA;AACrCA;AACTA,aAEAA;AAEFA;GDzb0BC;CAqL1BD;ACqQ4BA,YDpQpBA;;AAERA;ACsQAA,QACFA,C;EA0DKE,YAtPwBA,UAyPzBA,IAD8CA;AAGhDA,SAAYA,GACdA,C;EAEKC,YA9PwBA,UAiQzBA,IAD8CA;AAGhDA,SAAYA,GACdA,C;;EA7E8BC,GAC1BA,SAAYA,KACbA,C;;;CA8FEC,IACHA,WAAcA,GDnQhBA,YCoQAA,C;;AGjuB+BC;EH6wBvBA,IAAYA,kCAAiCA,C;;CAoBhDC,GACHA,eACFA,C;CAEKC,GACHA,eACFA,C;;ED7tBKC,IAEHA,WAA2BA,MAM7BA;IALEA;IAuekBA;AApehBA,UAEJA,C;EAqJKC,cAhCoBA;AAkCvBA,aAAiBA,MAMnBA;AALEA,QACEA;KAEAA,QAgPJA,YA9OAA,C;CA0BKC,GAELA,C;CAEKC,GAELA,C;EAaKC,oBACWA;WAgOZA,GAhOYA;AACdA;GApFuBA;AAqFvBA,gBACEA;;AACAA,SACEA,OAGNA,C;CAIKC,kBApGuBA;CAyG1BA;AACAA,QAAsBA;;AAEtBA,eACFA,C;EAsFKC,sBA9LoBA;iBAgMJA,EAAQA,aACzBA;;AACmBA,aA/LgBA,aAAIA;gBAuWvBC;SAxKhBD,MACEA;YAKJA,QACEA,eACEA;AACAA,MAgBNA,CAhO0DA;AAmNtDA,SAAqCA;CACrCA;AACAA,KACEA;KAEAA;kBAKJA,sBACUA,CAARA,OAEJA,C;ACkWIE;EDxVkBA,UAMpBA,WCkVEA,mBDjVJA,C;EAPsBC,qC;;;;CAgHjBC,kBAPmBA;AAQtBA,SAAiBA,MAcnBA;AAZEA,UAEEA;AACAA,MASJA,CAPEA,KAAkBA;CAMlBA,IACFA,C;EAQKC,oBACaA;AAChBA,YACEA,IAAoBA;MAEpBA,IAA6BA,IAEjCA,C;;EAtBoBC,iBACDA;CACfA;AACAA,SAA+BA,MAEhCA;GAsBqBA;GAAiBA;CAEvCA;AACAA,YACEA;AAvGFC,IA4EaD,MA5EMC,GA6ElBD,C;;;EAwJEE,mBACoBA;AACvBA,WAEEA;GACIA;AAAJA,aACEA;AACAA,iBAIFA,IAEJA,C;;;;EJ0lB+BC,GACvBA,SAAoBA,OAAOA,GAClCA,C;;;EAgMIC,IACHA;QACgBA,MAAgBA,IAC5BA;AACAA,MAMNA,CAJIA,gCALFA;AAMEA;AA4DFA,UAzDFA,C;EAEKC,MACHA;QACgBA,MAAgBA,IAC5BA;AACAA,MAMNA,CAJIA,kCALFA;AAMEA;AAgDFA,UA7CFA,C;EAVKC,8B;EAqCWC,IACdA,OAAOA,gBACTA,C;EAwBEC,IACgDA,IAA7BA,MAAUA,GAAYA,aAE3CA;AADEA,OAAOA,sBACTA,C;EAHEC,0B;EAMAC,MACgDA,IAA7BA,MAAUA,GAAYA,cAE3CA;AADEA,OAAOA,wBACTA,C;CAHEC;wB;EAKAC,QACgDA,IAA7BA,MAAUA,GAAYA,gBAE3CA;AADEA,OAAOA,0BACTA,C;EAHEC;4B;EAS4BC,IAE1BA,QAACA,C;CAFyBC;wB;AA7CfC;EAANA,GAAMA,qBAAgBA,GAAEA,C;;AM5pCjCC;EA9WQC,IAAUA,aAAOA,C;EAITD,GACdA,qBAyWFA,oBAxWAA,C;EAMKE,IACHA;8CACgBA;AACdA,mBAkOUA,SA3NdA,MANSA,2CAIEA,MAHIA;AACXA,mBA+NUA,SA3NdA,MAFIA,iBAEJA,C;EAEKC,cACQA;AACXA,WAAkBA,QAGpBA;AADEA,OAAOA,OADMA,kBAEfA,C;CAYYC,MACVA;8CACgBA;AAC8BA;AAA5CA,QAOJA,MANSA,iDACMA;AAC8BA;AAAzCA,QAIJA,MAFIA,OAAOA,UAEXA,C;EAEGC,kBACUA;AACXA,WAAkBA,WAIpBA;AAHeA;AACDA;AACZA,iBAA4BA,KAC9BA,C;EAEcC,4BAeDA;AACXA,WAAiCA,GAAfA;AE3GkBC;GF6GvBD;AACbA,YACEA;CAEAA,aAEYA;AACZA;KAGEA;CAEAA,SAlBNA,C;EAiEKE,MACSA;OACkBA,eAENA,UAFxBA,YACYA;AACMA;AAAhBA,eAAsBA;QACUA,GAC9BA,UAAMA,SAGZA,C;EAEKC,qCACUA;AACbA,WAAoBA,QAiDtBA;AAhDgBA,QAAOA;GAIPA;AAHFA;AAIZA,YACcA;GACEA;AACdA,uBACeA,IAEbA,QAKOA;AACXA,YACcA;GACEA;AACdA,4BAKEA,QAKOA;AACXA,YACcA;GACEA;AACdA,oBAEeA,EADHA;GAEGA;AACbA,wBACYA,IAEVA,MAMNA,QADAA,IAEFA,C;EAyEMC,MAEJA,QAAOA,CEjT6BH,mBFkTtCG,C;;CAiCIC,MACFA;WAAoBA,QAMtBA;GALeA;AACbA,qBACgBA;AAAdA,yBAAkDA,QAGtDA,CADEA,QACFA,C;;EAoDQC,IAAUA,aAAKA,EAAOA,C;EAIdC,IAyBhBA,UAxBgCA;AAA9BA,kBAAoCA,OAwBtCA,oBAvBAA,C;;EAyBMC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAEzBC,iBACQA,MACEA,MACmBA;QAAKA,GACnCA,UAAMA;YACaA,UACnBA;AACAA,QASJA,OAPIA,IAAWA;CAIXA;AACAA,QAEJA,E;AjBnKAC;E8BxSgBA,IAAYA,iB9B0SHA,W8B1SGA,Q9BwS5BA,Y8BxSiDA,C;CAE/CC,MAAwBA,OAAIA,WAAOA,C;CAyIzBC,QAA0BA,O9BkPtCA,Y8BlPsCA,Q9BkPtCA,6B8BlPuEA,C;CA6WhEC,IAAcA,OAWJA,eAXsBA,C;;EZhgBlCC,MACHA;AAAcA,kBAAdA,UACwBA,gBADxBA;AACkBA;AAAhBA,eAAsBA,UAE1BA,C;EAoEQC,IAAUA;OAAKA,OAAMA,C;CAItBC,IAAcA,iBAAiBA,C;;EAaxBC;KACHA,OACHA;CAEFA;MACAA;AC2YWA;;CA2BfC;AA3BeD;MDxYZA,C;;AC+IoCE;EAAzBA,GAAcA,iBAAkCA,C;;ChB1IzDC,cACDA;AAAJA,WACEA,2BAAkCA,OAGtCA;AADEA,wBACFA,C;;;EAoFWC,GAAcA,+BAAoBA,YAAwBA,C;EAC1DC,GAAqBA,QAAEA,C;CAE3BC,IAKaA,cAJEA,8BAEGA;AAKFA,KAFhBA,GAAWA,QAKlBA;AADEA,qBAD0BA,KAAaA,OAEzCA,C;;;EAWSC,GAAgBA,WAAMA,EAAYA,C;EA2IhCC,GAAcA,kBAAYA,C;EAC1BC,eAGSA,SACFA;AAChBA,WAEgDA;KAGzCA,WAC0CA;KAC1CA,OACoCA,0CAAQA;KAKXA;AAExCA,QACFA,C;;EAkBQC,GAAgBA,WAAMA,EAAYA,C;EA8D/BC,GAAcA,kBAAYA,C;EAC1BC,UA/DmBA,KAmE1BA,oCAMJA;UAJMA;AAAJA,SACEA,8BAGJA;AADEA,sCACFA,C;;;CAoCOC,IAAcA,oCAAyBA,EAAQA,C;;CAc/CC,IAELA,iCADmBA,EAIrBA,C;;CAoBOC,IAAcA,wBAAaA,EAAQA,C;;CAcnCC,cACDA;AAAJA,WACEA,iDAIJA;AAFEA,mDACaA,WACfA,C;;CAgBOC,IAAcA,sBAAgBA,C;EAErBC,GAAcA,WAAIA,C;;;CCrkB3BC,IAGLA,wBAFuBA,EAGzBA,C;AiByMwCC;CAA5BA,QAA4BA,yCAAqCA,C;EA2RrEC,IAGiBA;AACvBA,QAAOA,OACLA;AAEFA,QACFA,C;CAySOC,IAAcA,yBAAqCA,C;AF3uBhCC;EAAlBA,IAAYA,oCAAcA,C;Ca/C3BC,IAAcA,YAAMA,C;Ab8BIC;EAAvBA,IAAYA,iBAA+BA,C;CAG5CC,IAAcA,sBvBmaLA,cuBnaiDA,C;EAQxDC,IAAeA,iBAAgCA,C;;;CchBjDC,IAAcA,QAAWA,C;;;Ed6cxBC,IAAUA,aAAUA,OAAMA,C;CA4B3BC,cAAuCA;AAAzBA,6BAAmCA,C;;EIzfxDC,IAEEA;AAAIA,WACFA,QAoBJA;MAlBMA;WACFA,OAAOA,QAiBXA;sBAdyBA;AACrBA;AACkBA,eAAlBA;AAC6CA,aAASA,UAEtDA,QASJA,MAReA,aAEYA;AAAvBA;AACAA,SAAqBA;AACrBA,QAIJA,MAFIA,QAEJA,C;;;ECtCAC,IACiBA,UAAfA,SAAeA,MAAkBA;ACwN5BA,WAAcA,KAAMA;AACzBA,MDxNFA,C;;;EAUA5P,GRwwBI6P,IQjwB2B7P;AAL7BA,SDyCAA,kBCzC+CA,uBAIjDA,C;;EAJiD8P,aKpB7CA,YLsBAA,EAG2BA;;GR4dLC;AAoFxBD,QAAmBA,KAAMA;AAoDzBC,aACEA;KACKA,aACLA,OAAuBA,KDzH3BC,YShfGF,C;;;EAeuBG,IAIxBA;IU1CqDC;ACgDnDA,qBDPsBA,aV7CsBC,qCY8BhDC,gEZyBCH,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;c7BFUI,IACTA,0BADSA,A;cCmtCmBC,IAC1BA,IAAeA;0CADWA,A;cAKAC,IAC1BA,IAAeA;0CADWA,A;cAKAC,IAC1BA,IAAeA,WADWA,A;cAKAC,IAC1BA,IAuNaA;8DAQRA,GAhOqBA,A;cAKAC,IAC1BA,IAAeA,aADWA,A;cAKAC,IAC1BA,IA4NaA;kEAQRA,GArOqBA,A;cAKAC,IAC1BA,IAAeA,WADWA,A;cAKAC,IAC1BA,IA+OaA,wDAORA,GAvPqBA,A;cAKAC,IAC1BA,IAAeA,aADWA,A;cAKAC,IAC1BA,IAmPaA,4DAORA,GA3PqBA,A;cavyCRC,IAClBA,MADkBA,A", + "sources": ["org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart","org-dartlang-sdk:///lib/internal/internal.dart","org-dartlang-sdk:///lib/internal/iterable.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart","org-dartlang-sdk:///lib/core/errors.dart","org-dartlang-sdk:///lib/core/exceptions.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/records.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart","org-dartlang-sdk:///lib/async/future_impl.dart","org-dartlang-sdk:///lib/async/zone.dart","org-dartlang-sdk:///lib/async/async_error.dart","org-dartlang-sdk:///lib/async/schedule_microtask.dart","org-dartlang-sdk:///lib/async/stream.dart","org-dartlang-sdk:///lib/async/stream_impl.dart","org-dartlang-sdk:///lib/async/stream_controller.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart","org-dartlang-sdk:///lib/collection/maps.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_string.dart","org-dartlang-sdk:///lib/core/iterable.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_allow_interop_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart","worker.dart","org-dartlang-sdk:///lib/async/broadcast_stream_controller.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_primitives.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/late_helper.dart","org-dartlang-sdk:///lib/internal/errors.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart","org-dartlang-sdk:///lib/collection/list.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart","org-dartlang-sdk:///lib/core/null.dart","org-dartlang-sdk:///lib/core/stacktrace.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_patch.dart","org-dartlang-sdk:///lib/js_interop_unsafe/js_interop_unsafe.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart","org-dartlang-sdk:///lib/core/print.dart"], + "names": ["makeDispatchRecord","getNativeInterceptor","lookupInterceptorByConstructor","JS_INTEROP_INTERCEPTOR_TAG","cacheInterceptorOnConstructor","checkNotNullable","isToStringVisiting","MappedIterable","unminifyOrTag","isJsIndexable","S","Primitives.objectHashCode","Primitives.objectTypeName","Primitives._objectTypeNameNewRti","Primitives.safeToString","Primitives.stringSafeToString","Primitives.extractStackTrace","ioore","diagnoseIndexError","wrapException","initializeExceptionWrapper","toStringWrapper","throwExpression","throwExpressionWithWrapper","throwUnsupportedOperation","_diagnoseUnsupportedOperation","throwConcurrentModificationError","TypeErrorDecoder.extractPattern","TypeErrorDecoder.provokeCallErrorOn","TypeErrorDecoder.provokePropertyErrorOn","JsNoSuchMethodError","unwrapException","saveStackTrace","_unwrapNonDartException","getTraceFromException","objectHashCode","_invokeClosure","Exception","convertDartClosureToJS","convertDartClosureToJSUncached","Closure.fromTearOff","Closure._computeSignatureFunctionNewRti","Closure.cspForwardCall","Closure.forwardCallTo","Closure.cspForwardInterceptedCall","Closure.forwardInterceptedCallTo","closureFromTearOff","BoundClosure.evalRecipe","evalInInstance","_rtiEval","BoundClosure.receiverOf","BoundClosure.interceptorOf","BoundClosure._computeFieldNamed","throwCyclicInit","getIsolateAffinityTag","lookupAndCacheInterceptor","setDispatchProperty","patchInstance","lookupInterceptor","patchProto","patchInteriorProto","makeLeafDispatchRecord","makeDefaultDispatchRecord","initNativeDispatch","initNativeDispatchContinue","initHooks","applyHooksTransformer","createRecordTypePredicate","quoteStringForRegExp","_checkValidIndex","Rti._getQuestionFromStar","Rti._getStarArgument","Rti._getFutureFromFutureOr","Rti._getFutureOrArgument","Rti._isUnionOfFunctionType","Rti._getKind","Rti._getCanonicalRecipe","findType","_substitute","Rti._getInterfaceName","Rti._getBindingBase","Rti._getRecordPartialShapeTag","Rti._getReturnType","Rti._getGenericFunctionBase","Rti._getGenericFunctionParameterIndex","_substituteArray","_substituteNamed","_substituteFunctionParameters","_FunctionParameters.allocate","_setArrayType","closureFunctionType","instanceOrFunctionType","instanceType","_arrayInstanceType","_instanceType","_instanceTypeFromConstructor","_instanceTypeFromConstructorMiss","getTypeFromTypesTable","getRuntimeTypeOfDartObject","_structuralTypeOf","_instanceFunctionType","createRuntimeType","_createAndCacheRuntimeType","_createRuntimeType","_Type","typeLiteral","_installSpecializedIsTest","isDefinitelyTopType","_recordSpecializedIsTest","_finishIsFn","_installSpecializedAsCheck","_nullIs","_generalIsTestImplementation","_generalNullableIsTestImplementation","Rti._getQuestionArgument","_isTestViaProperty","_isListTestViaProperty","_generalAsCheckImplementation","_generalNullableAsCheckImplementation","_failedAsCheck","_Error.compose","_TypeError.fromMessage","_TypeError.forType","_isFutureOr","_isObject","_asObject","_isTop","_asTop","_isNever","_isBool","_asBool","_asBoolS","_asBoolQ","_asDouble","_asDoubleS","_asDoubleQ","_isInt","_asInt","_asIntS","_asIntQ","_isNum","_asNum","_asNumS","_asNumQ","_isString","_asString","_asStringS","_asStringQ","_rtiArrayToString","_recordRtiToString","_functionRtiToString","isLegacyObjectType","_rtiToString","_unminifyOrTag","_Universe.findRule","_Universe._findRule","_Universe.findErasedType","_Universe.addRules","_Universe.addErasedTypes","_Universe.eval","_Universe.evalInEnvironment","_Universe.bind","_Universe._installTypeTests","_Universe._lookupTerminalRti","Rti.allocate","_Universe._createTerminalRti","_Universe._installRti","_Universe._lookupStarRti","_Universe._createStarRti","_Universe._lookupQuestionRti","_Universe._createQuestionRti","_Universe._lookupFutureOrRti","_Universe._createFutureOrRti","_Universe._lookupGenericFunctionParameterRti","_Universe._createGenericFunctionParameterRti","_Universe._canonicalRecipeJoin","_Universe._canonicalRecipeJoinNamed","_Universe._lookupInterfaceRti","_Universe._canonicalRecipeOfInterface","_Universe._createInterfaceRti","_Universe._lookupBindingRti","_Universe._createBindingRti","_Universe._lookupRecordRti","_Universe._createRecordRti","_Universe._lookupFunctionRti","_Universe._canonicalRecipeOfFunction","_Universe._canonicalRecipeOfFunctionParameters","_Universe._createFunctionRti","_Universe._lookupGenericFunctionRti","_Universe._createGenericFunctionRti","_Parser.create","_Parser.parse","_Parser.toGenericFunctionParameter","_Parser.pushStackFrame","_Parser.collectArray","_Parser.handleOptionalGroup","_Parser.collectNamed","_Parser.handleNamedGroup","_Parser.handleStartRecord","_Parser.handleDigit","_Parser.handleIdentifier","_Universe.evalTypeVariable","_Parser.handleTypeArguments","_Parser.handleArguments","_Parser.handleExtendedOperations","_Parser.toType","_Parser.toTypes","_Parser.toTypesNamed","_Parser.indexToType","isSubtype","_isSubtype","isBottomType","_isFunctionSubtype","_isInterfaceSubtype","_Utils.newArrayOrEmpty","_areArgumentsSubtypes","_isRecordSubtype","isNullable","isSoundTopType","_Utils.objectAssign","_AsyncRun._initializeScheduleImmediate","_AsyncRun._scheduleImmediateJsOverride","_AsyncRun._scheduleImmediateWithSetImmediate","_AsyncRun._scheduleImmediateWithTimer","_TimerImpl","_makeAsyncAwaitCompleter","_AsyncAwaitCompleter._future","_asyncStartSync","_asyncAwait","_asyncReturn","_asyncRethrow","_awaitOnObject","_wrapJsFunctionForAsync","AsyncError.defaultStackTrace","_Future._chainCoreFutureSync","_Future._chainCoreFutureAsync","_Future._propagateToListeners","_registerErrorHandler","_microtaskLoop","_startMicrotaskLoop","_scheduleAsyncCallback","_schedulePriorityAsyncCallback","scheduleMicrotask","StreamIterator","_runGuarded","_ControllerSubscription","_BufferingStreamSubscription","_BufferingStreamSubscription._registerErrorHandler","_nullErrorHandler","_rootHandleError","_rootRun","_rootRunUnary","_rootRunBinary","_rootScheduleMicrotask","_HashMap._getTableEntry","_HashMap._setTableEntry","_HashMap._newHashTable","MapBase.mapToString","Error._throw","List.filled","JSArray.fixed","JSArray.markFixed","StringBuffer._writeAll","StackTrace.current","Error.safeToString","Error.throwWithStackTrace","AssertionError","ArgumentError","ArgumentError.value","RangeError.range","IndexError.withLength","UnsupportedError","UnimplementedError","StateError","ConcurrentModificationError","Iterable.iterableToShortString","Iterable.iterableToFullString","_iterablePartsToStrings","_callDartFunctionFast1","_noJsifyRequired","jsify","callbackToStream","StreamController.broadcast","_BroadcastStreamController.stream","Worker","main","Worker.onReceive","_StreamController.stream","printString","throwLateFieldADI","throwUnnamedLateFieldNI","JSObjectUnsafeUtilExtension._callMethod","Interceptor.hashCode","Interceptor.toString","Interceptor.runtimeType","JSBool.toString","JSBool.hashCode","JSBool.runtimeType","JSNull.toString","JSNull.hashCode","LegacyJavaScriptObject.toString","LegacyJavaScriptObject.hashCode","JavaScriptFunction.toString","JavaScriptBigInt.toString","JavaScriptBigInt.hashCode","JavaScriptSymbol.toString","JavaScriptSymbol.hashCode","JSArray.addAll","JSArray.map","JSArray.elementAt","JSArray.toString","JSArray.iterator","JSArray.hashCode","JSArray.length","ArrayIterator.current","ArrayIterator.moveNext","JSNumber.toString","JSNumber.hashCode","JSNumber._shrOtherPositive","JSNumber._shrBothPositive","JSNumber.runtimeType","JSInt.runtimeType","JSNumNotInt.runtimeType","JSString.toString","JSString.hashCode","JSString.runtimeType","JSString.length","LateError.toString","ListIterable.iterator","ListIterable.map","ListIterator.current","ListIterator.moveNext","MappedIterable.iterator","MappedIterable.length","MappedIterator.moveNext","MappedIterator.current","MappedListIterable.length","MappedListIterable.elementAt","TypeErrorDecoder.matchTypeError","NullError.toString","JsNoSuchMethodError.toString","UnknownJsTypeError.toString","NullThrownFromJavaScriptException.toString","_StackTrace.toString","Closure.toString","StaticClosure.toString","BoundClosure.hashCode","BoundClosure.toString","_CyclicInitializationError.toString","RuntimeError.toString","initHooks.","NativeByteBuffer.runtimeType","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","Rti._eval","Rti._bind","_rtiBind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_BroadcastSubscription._onPause","_BroadcastSubscription._onResume","_BroadcastStreamController._mayAddEvent","_BroadcastStreamController._subscribe","_DoneStreamSubscription","_BroadcastSubscription","_BroadcastStreamController._recordPause","_BroadcastStreamController._recordResume","_BroadcastStreamController._addEventError","_BroadcastStreamController._forEachListener","_BroadcastStreamController._callOnCancel","_SyncBroadcastStreamController._mayAddEvent","_SyncBroadcastStreamController._addEventError","_SyncBroadcastStreamController._sendData","_SyncBroadcastStreamController._sendData.","_SyncBroadcastStreamController__sendData_closure","_FutureListener.matchesErrorTest","_FutureListener.handleError","_Future._setChained","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._setError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._chainCoreFutureAsync.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","Stream.length","Stream.length.","Stream_length_closure","_Future._complete","_StreamController._pendingEvents","_StreamController._ensurePendingEvents","_StreamController._subscription","_StreamController._badEventState","_StreamController._subscribe","_BufferingStreamSubscription._guardCallback","_StreamController._recordPause","_StreamController._recordResume","_StreamController._subscribe.","_AsyncStreamControllerDispatch._sendData","_ControllerStream.hashCode","_ControllerSubscription._onPause","_ControllerSubscription._onResume","_BufferingStreamSubscription._setPendingEvents","_BufferingStreamSubscription._add","_BufferingStreamSubscription._onPause","_BufferingStreamSubscription._onResume","_BufferingStreamSubscription._addPending","_BufferingStreamSubscription._sendData","_BufferingStreamSubscription._checkState","_BufferingStreamSubscription._mayResumeInput","_StreamImpl.listen","_StreamImpl.listen[function-entry$1]","_PendingEvents.schedule","_PendingEvents.add","_PendingEvents.schedule.","_PendingEvents.handleNext","_DoneStreamSubscription._onMicrotask","_rootHandleError.","_RootZone.runGuarded","_RootZone.runUnaryGuarded","_RootZone.runUnaryGuarded[function-entry$2]","_RootZone.bindCallbackGuarded","_RootZone.run","_RootZone.run[function-entry$1]","_RootZone.runUnary","_RootZone.runUnary[function-entry$2]","_RootZone.runBinary","_RootZone.runBinary[function-entry$3]","_RootZone.registerBinaryCallback","_RootZone.registerBinaryCallback[function-entry$1]","_RootZone.bindCallbackGuarded.","_HashMap.keys","_HashMap.length","_HashMap.containsKey","_HashMap._containsKey","_HashMap.[]","_HashMap._get","_HashMap.[]=","_IdentityHashMap._computeHashCode","_HashMap.forEach","_HashMap._computeKeys","_HashMap._getBucket","_IdentityHashMap._findBucketIndex","_HashMapKeyIterable.length","_HashMapKeyIterable.iterator","_HashMapKeyIterator.current","_HashMapKeyIterator.moveNext","ListBase.iterator","ListBase.elementAt","ListBase.map","ListBase.toString","MapBase.forEach","MapBase.length","MapBase.toString","MapBase.mapToString.","StringBuffer.write","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","Iterable.map","Iterable.length","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.toString","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","jsify._convert","callbackToStream.eventFunction","StreamController","Worker.","_StreamController.add","_StreamController._add","main.","jsSendMessage","Worker.sendMessage","print","DART_CLOSURE_PROPERTY_NAME","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","","$intercepted$elementAt1$ax","$intercepted$get$hashCode$IJavaScriptBigIntJavaScriptSymbolLegacyJavaScriptObjectabnsu","$intercepted$get$iterator$ax","$intercepted$get$length$asx","$intercepted$get$runtimeType$Ibdinsux","$intercepted$map11$ax","$intercepted$toString0$IJavaScriptBigIntJavaScriptFunctionJavaScriptSymbolLegacyJavaScriptObjectabnsux","ArrayIterator","AsyncError","BoundClosure","ByteBuffer","ByteData","Closure","Closure0Args","Closure2Args","EfficientLengthIterable","EfficientLengthMappedIterable","Error","ExceptionAndStackTrace","FixedLengthListMixin","Float32List","Float64List","Function","Future","IndexError","Int16List","Int32List","Int8List","Interceptor","Iterable","JSArray","JSBool","JSInt","JSNull","JSNumNotInt","JSNumber","JSObject","JSObjectUnsafeUtilExtension|_callMethod","JSString","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","LateError","LegacyJavaScriptObject","List","ListBase","ListIterable","ListIterator","Map","MapBase","MapBase_mapToString_closure","MappedIterator","MappedListIterable","NativeByteBuffer","NativeByteData","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint32List","NativeUint8ClampedList","NativeUint8List","Null","NullError","NullThrownFromJavaScriptException","Object","PlainJavaScriptObject","RangeError","Record","Rti","RuntimeError","StackOverflowError","StackTrace","StaticClosure","Stream","String","StringBuffer","TearOffClosure","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","Worker_closure","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_AsyncStreamController","_AsyncStreamControllerDispatch","_BroadcastStream","_BroadcastStreamController","_ControllerStream","_CyclicInitializationError","_DelayedData","_DelayedEvent","_Error","_Exception","_FunctionParameters","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteError_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFutureAsync_closure","_Future__chainForeignFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_HashMap","_HashMapKeyIterable","_HashMapKeyIterator","_IdentityHashMap","_JS_INTEROP_INTERCEPTOR_TAG","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_PendingEvents","_PendingEvents_schedule_closure","_RootZone","_RootZone_bindCallbackGuarded_closure","_StackTrace","_StreamController","_StreamController__subscribe_closure","_StreamImpl","_StreamIterator","_StringStackTrace","_SyncBroadcastStreamController","_TimerImpl_internalCallback","_TypeError","_Zone","_awaitOnObject_closure","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_chainCoreFutureAsync","_chainCoreFutureSync","_computeFieldNamed","_computeSignatureFunctionNewRti","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createStarRti","_current","_getCanonicalRecipe","_getFutureFromFutureOr","_getQuestionFromStar","_getTableEntry","_identityHashCodeProperty","_initializeScheduleImmediate","_installTypeTests","_interceptorFieldNameCache","_isInCallbackLoop","_isUnionOfFunctionType","_lastCallback","_lastPriorityCallback","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupStarRti","_lookupTerminalRti","_newHashTable","_nextCallback","_objectTypeNameNewRti","_propagateToListeners","_receiverFieldNameCache","_rootHandleError_closure","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_setTableEntry","_throw","_wrapJsFunctionForAsync_closure","_writeAll","addErasedTypes","addRules","alternateTagFunction","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___nullErrorHandler$closure","async___startMicrotaskLoop$closure","bind","bool","callbackToStream_eventFunction","collectArray","compose","create","cspForwardCall","cspForwardInterceptedCall","current","defaultStackTrace","dispatchRecordsForInstanceTags","double","eval","evalInEnvironment","evalRecipe","extractPattern","extractStackTrace","filled","findErasedType","findRule","forType","forwardCallTo","forwardInterceptedCallTo","fromMessage","fromTearOff","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getTagFunction","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","indexToType","initHooks_closure","initNativeDispatchFlag","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","iterableToShortString","jsify__convert","main_closure","mapToString","newArrayOrEmpty","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","parse","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","range","receiverOf","safeToString","throwWithStackTrace","toStringVisiting","toType","toTypes","toTypesNamed","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","value","withLength","$index","$indexSet","_addEventError","add","addAll","bindCallbackGuarded","call","containsKey","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_rti#_bind","dart:_rti#_eval","dart:async#_add","dart:async#_addEventError","dart:async#_addListener","dart:async#_addPending","dart:async#_asyncComplete","dart:async#_asyncCompleteError","dart:async#_asyncCompleteWithValue","dart:async#_badEventState","dart:async#_callOnCancel","dart:async#_chainForeignFuture","dart:async#_chainFuture","dart:async#_checkState","dart:async#_cloneResult","dart:async#_completeError","dart:async#_completeWithValue","dart:async#_ensurePendingEvents","dart:async#_forEachListener","dart:async#_mayAddEvent","dart:async#_mayComplete","dart:async#_onMicrotask","dart:async#_onPause","dart:async#_onResume","dart:async#_pendingEvents","dart:async#_prependListeners","dart:async#_recordPause","dart:async#_recordResume","dart:async#_removeListeners","dart:async#_reverseListeners","dart:async#_sendData","dart:async#_setChained","dart:async#_setErrorObject","dart:async#_setPendingEvents","dart:async#_subscribe","dart:async#_subscription","dart:async#_thenAwait","dart:async#_varData=","dart:collection#_computeKeys","dart:collection#_containsKey","dart:collection#_findBucketIndex","dart:collection#_get","dart:collection#_getBucket","dart:core#_errorExplanation","dart:core#_errorName","elementAt","forEach","handleError","hashCode","invalidValue","iterator","keys","length","listen","map","matchTypeError","matchesErrorTest","moveNext","pause","registerBinaryCallback","resume","run","runBinary","runGuarded","runUnary","runUnaryGuarded","runtimeType","schedule","stackTrace","then","toString","Rti._unstar","isTopType","_Universe._canonicalRecipeOfStar","_Universe._canonicalRecipeOfQuestion","_Universe._canonicalRecipeOfFutureOr","_Universe._canonicalRecipeOfBinding","_Universe._canonicalRecipeOfGenericFunction","Error._stringToSafeString","_HashMap._set","JSObjectUnsafeUtilExtension|callMethod","JSObjectUnsafeUtilExtension|getProperty","NullableObjectUtilExtension|jsify","_","_add","_addListener","_asCheck","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_canonicalRecipeOfStar","_chainSource","_cloneResult","_complete","_computeHashCode","_computeIdentityHashCodeProperty","_createBindingRti","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createRecordRti","_createSubscription","_createTerminalRti","_createTimer","_error","_errorTest","_expectsEvent","_failedAsCheckError","_findRule","_functionToJS1","_future","_getBindCache","_getBindingArguments","_getBindingBase","_getCachedRuntimeType","_getEvalCache","_getFunctionParameters","_getFutureOrArgument","_getGenericFunctionBase","_getGenericFunctionBounds","_getGenericFunctionParameterIndex","_getInterfaceName","_getInterfaceTypeArguments","_getIsSubtypeCache","_getKind","_getNamed","_getOptionalPositional","_getPrimary","_getQuestionArgument","_getRecordFields","_getRecordPartialShapeTag","_getRequiredPositional","_getReturnType","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_getStarArgument","_guardCallback","_hasError","_hasOneListener","_hasPending","_hasTableEntry","_hasTimer","_installRti","_isAddingStream","_isCanceled","_isChained","_isCheck","_isClosure","_isComplete","_isDartObject","_isEmpty","_isFiring","_isInitialState","_isInputPaused","_isSubtypeUncached","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_mayAddEvent","_mayAddListener","_mayResumeInput","_name","_objectToString","_onError","_onValue","_outputController","_parseRecipe","_recipeJoin","_removeListener","_removeListeners","_scheduleImmediate","_set","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setError","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_stringToSafeString","_target","_theUniverse","_unstar","_whenCompleteAction","_writeOne","_writeString","_zone","allocate","arrayAt","arrayConcat","arrayLength","arraySplice","asBool","asInt","asRti","asRtiOrNull","asString","as_Type","broadcast","charCodeAt","checkGrowable","collectNamed","complete","completeError","constructorNameFallback","contains","defineProperty","dispatchRecordExtension","dispatchRecordIndexability","dispatchRecordInterceptor","dispatchRecordProto","environment","erasedTypes","evalCache","evalTypeVariable","fieldADI","fieldNI","fixed","future","getDispatchProperty","getLegacyErasedRecipe","getProperty","getRuntimeTypeOfInterceptorNotArray","globalContext","handleNamedGroup","handleNext","handleOptionalGroup","handleStartRecord","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesValue","hasErrorCallback","hasErrorTest","identityHashCode","instanceTypeName","interceptorFieldName","interceptorsByTag","isArray","isClosed","isDigit","isEmpty","isIdentical","isScheduled","jsonEncodeNative","leafTags","listToString","lookupSupertype","lookupTypeVariable","mapGet","mapSet","markFixed","markFixedList","normalize","objectKeys","objectToHumanReadableString","onReceive","perform","pop","position","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","recipe","sendMessage","sharedEmptyArray","shouldChain","stack","stream","stringIndexOf","stringSafeToString","stringSplit","substring","thenAwait","toGenericFunctionParameter","tryStringifyException","typeRules","typed","universe","unmangleGlobalNameIfPreservedAnyways","write","writeAll","zoned"], + "mappings": "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", "x_org_dartlang_dart2js": { "minified_names": { - "global": "A,104,B,613,C,273,D,646,E,778,F,725,G,108,H,33,I,217,J,599,K,604,L,607,M,828,N,77,O,31,P,30,Q,569,R,8,S,642,T,246,U,665,V,68,W,100,X,580,Y,595,Z,608,a,800,a0,621,a1,641,a2,661,a3,664,a4,245,a5,667,a6,673,a7,744,a8,93,a9,742,aA,684,aB,685,aC,687,aD,689,aE,690,aF,691,aG,692,aH,693,aI,697,aJ,700,aK,703,aL,705,aM,708,aN,736,aO,740,aP,729,aQ,730,aR,216,aS,23,aT,564,aU,557,aV,565,aW,266,aX,557,aY,232,aZ,566,a_,610,aa,253,ab,84,ac,65,ad,788,ae,91,af,573,ag,575,ah,576,ai,589,aj,590,ak,598,al,601,am,602,an,603,ao,622,ap,623,aq,624,ar,627,as,630,at,34,au,634,av,638,aw,652,ax,663,ay,392,az,391,b,20,b0,581,b1,585,b2,588,b3,591,b4,592,b5,29,b6,612,b7,614,b8,615,b9,616,bA,249,bB,244,bC,88,bD,557,bE,570,bF,571,bG,557,bH,825,bI,577,bJ,578,bK,582,bL,583,bM,584,bN,596,bO,611,bP,631,bQ,818,bR,640,bS,437,bT,437,bU,644,bV,647,bW,821,bX,648,bY,649,bZ,650,b_,274,ba,617,bb,618,bc,619,bd,620,be,625,bf,626,bg,628,bh,633,bi,637,bj,643,bk,272,bl,653,bm,271,bn,655,bo,656,bp,662,bq,666,br,668,bs,669,bt,671,bu,686,bv,698,bw,701,bx,702,by,775,bz,110,c,586,c0,284,c1,654,c2,657,c3,658,c4,659,c5,660,c6,670,c7,674,c8,675,c9,676,cA,753,cB,765,cC,6,cD,37,cE,773,cF,798,cG,798,cH,798,cI,802,cJ,805,cK,806,cL,60,cM,561,cN,567,cO,568,cP,597,cQ,557,cR,720,cS,731,cT,735,cU,737,cV,94,cW,727,cX,45,cY,790,cZ,1,c_,651,ca,677,cb,678,cc,678,cd,678,ce,679,cf,680,cg,681,ch,682,ci,683,cj,688,ck,694,cl,695,cm,696,cn,699,co,402,cp,223,cq,704,cr,103,cs,776,ct,809,cu,706,cv,92,cw,707,cx,707,cy,128,cz,746,d,632,d0,7,d1,285,d2,0,d3,34,d4,242,d5,545,d6,747,d7,559,d8,835,d9,712,dA,732,dB,733,dC,738,dD,739,dE,817,dF,214,dG,102,dH,118,dI,149,dJ,211,dK,135,dL,127,dM,279,dN,250,dO,251,dP,147,dQ,240,dR,757,dS,762,dT,89,dU,19,dV,76,dW,789,dX,791,dY,21,dZ,59,d_,799,da,726,db,745,dc,824,dd,784,de,803,df,808,dg,723,dh,721,di,728,dj,771,dk,557,dl,754,dm,822,dn,557,dp,557,dq,237,dr,767,ds,711,dt,722,du,751,dv,766,dw,768,dx,795,dy,819,dz,829,e,572,e0,24,e1,290,e2,9,e3,810,e4,811,e5,812,e6,813,e7,814,e8,815,e9,831,eA,825,eB,823,eC,719,eD,557,eE,724,eF,748,eG,749,eH,750,eI,557,eJ,710,eK,741,eL,792,eM,793,eN,794,eO,796,eP,797,eQ,830,eR,557,eS,786,eT,709,eU,714,eV,715,eW,716,eX,717,eY,734,eZ,755,e_,820,ea,832,eb,833,ec,834,ed,558,ee,560,ef,562,eg,563,eh,772,ei,777,ej,801,ek,713,el,769,em,770,en,785,eo,787,ep,752,eq,826,er,836,es,804,et,594,eu,605,ev,780,ew,807,ex,557,ey,743,ez,779,f,645,f0,763,f1,781,f2,782,f3,124,f4,126,f5,229,f6,228,f7,226,f8,230,f9,278,fA,98,fB,86,fC,85,fD,152,fE,32,fF,231,fG,758,fH,759,fI,760,fJ,761,fK,764,fL,281,fM,38,fN,66,fO,53,fP,97,fQ,96,fR,64,fS,62,fT,63,fU,90,fV,106,fW,208,fX,280,fY,54,fZ,61,f_,756,fa,116,fb,111,fc,117,fd,112,fe,109,ff,105,fg,95,fh,35,fi,122,fj,212,fk,115,fl,139,fm,123,fn,215,fo,143,fp,114,fq,125,fr,277,fs,224,ft,238,fu,248,fv,148,fw,237,fx,252,fy,241,fz,239,h,606,h0,288,h1,67,h2,25,h3,289,h4,22,h5,545,h6,579,h7,609,h8,635,h9,557,hA,227,hB,10,hC,52,h_,816,ha,810,hb,811,hc,812,hd,813,he,814,hf,815,hg,831,hh,832,hi,833,hj,834,hk,747,hl,129,hm,131,hn,130,ho,132,hp,134,hq,133,hr,136,hs,138,ht,137,hu,140,hv,142,hw,141,hx,144,hy,146,hz,145,i,718,j,574,k,209,l,774,m,593,n,672,o,11,p,629,q,783,r,151,t,587,u,600,v,827,w,636,x,639,y,267,z,18", - "instance": "A,878,B,862,C,876,D,877,E,893,F,902,G,915,H,916,I,851,J,852,K,855,L,864,M,891,N,892,O,888,P,867,R,870,S,871,T,873,U,885,V,897,W,899,X,907,Y,912,Z,917,a0,850,a1,853,a2,854,a3,858,a4,860,a5,861,a6,886,a7,890,a8,874,a9,875,aA,869,aB,872,aC,880,aD,881,aE,846,aF,847,aG,883,aH,842,aI,845,aJ,895,aK,901,aL,904,aM,907,aN,908,aO,909,aP,909,aQ,910,aR,910,aS,912,aT,913,aU,913,aV,917,aW,844,aX,868,aY,906,a_,839,aa,879,ab,882,ac,884,ad,841,ae,843,af,894,ag,901,ah,911,ai,837,aj,918,ak,840,al,557,am,557,an,856,ao,857,ap,859,aq,863,ar,887,au,865,av,866,aw,889,az,869,gH,916,gM,891,gN,892,gP,867,gU,885,gV,897,gW,899,gaB,872,gaG,883,gaW,844,gaX,868,gaq,863,gaz,869,gj,900,gk,914,gm,771,gn,896,gq,898,h,918,i,849,j,900,k,914,l,905,m,771,n,896,p,838,q,898,sU,885,sj,900,t,903,u,848,v,863" + "global": "A,17,B,105,C,614,D,273,E,647,F,779,G,726,H,109,I,34,J,218,K,600,L,605,M,608,N,828,O,78,P,32,Q,31,R,566,S,570,T,7,U,643,V,246,W,666,X,69,Y,101,Z,581,a,801,a0,611,a1,622,a2,642,a3,662,a4,665,a5,245,a6,668,a7,674,a8,745,a9,94,aA,664,aB,391,aC,390,aD,685,aE,686,aF,688,aG,690,aH,691,aI,692,aJ,693,aK,694,aL,698,aM,701,aN,704,aO,706,aP,709,aQ,737,aR,741,aS,730,aT,731,aU,217,aV,564,aW,557,aX,565,aY,266,aZ,557,a_,609,aa,743,ab,253,ac,85,ad,66,ae,789,af,92,ag,574,ah,576,ai,577,aj,590,ak,591,al,596,am,599,an,602,ao,603,ap,604,aq,623,ar,624,as,625,at,628,au,631,av,35,aw,635,ax,639,ay,653,az,271,b,19,b0,274,b1,582,b2,586,b3,589,b4,592,b5,593,b6,30,b7,613,b8,615,b9,616,bA,249,bB,244,bC,89,bD,22,bE,571,bF,572,bG,557,bH,825,bI,578,bJ,579,bK,583,bL,584,bM,585,bN,597,bO,612,bP,632,bQ,818,bR,641,bS,437,bT,437,bU,645,bV,648,bW,821,bX,649,bY,650,bZ,651,b_,567,ba,617,bb,618,bc,619,bd,620,be,621,bf,626,bg,627,bh,629,bi,634,bj,638,bk,644,bl,272,bm,654,bn,656,bo,657,bp,663,bq,667,br,669,bs,670,bt,672,bu,687,bv,699,bw,702,bx,703,by,776,bz,111,c,587,c0,284,c1,655,c2,658,c3,659,c4,660,c5,661,c6,671,c7,675,c8,676,c9,677,cA,754,cB,766,cC,38,cD,774,cE,799,cF,799,cG,799,cH,803,cI,806,cJ,807,cK,61,cL,561,cM,773,cN,568,cO,569,cP,598,cQ,557,cR,721,cS,732,cT,736,cU,738,cV,95,cW,728,cX,5,cY,46,cZ,791,c_,652,ca,678,cb,679,cc,679,cd,679,ce,680,cf,681,cg,682,ch,683,ci,684,cj,689,ck,695,cl,696,cm,697,cn,700,co,401,cp,224,cq,705,cr,104,cs,777,ct,809,cu,707,cv,93,cw,708,cx,708,cy,129,cz,747,d,633,d0,800,d1,6,d2,285,d3,0,d4,35,d5,242,d6,23,d7,545,d8,748,d9,559,dA,733,dB,734,dC,739,dD,740,dE,817,dF,215,dG,103,dH,119,dI,150,dJ,212,dK,136,dL,128,dM,279,dN,250,dO,251,dP,148,dQ,240,dR,758,dS,763,dT,90,dU,18,dV,77,dW,790,dX,792,dY,20,dZ,60,d_,1,da,835,db,713,dc,727,dd,746,de,824,df,785,dg,804,dh,724,di,722,dj,729,dk,772,dl,557,dm,755,dn,822,dp,557,dq,237,dr,768,ds,712,dt,723,du,752,dv,767,dw,769,dx,796,dy,819,dz,829,e,573,e0,290,e1,8,e2,810,e3,811,e4,812,e5,813,e6,814,e7,815,e8,831,e9,832,eA,557,eB,557,eC,725,eD,749,eE,750,eF,751,eG,557,eH,711,eI,742,eJ,793,eK,794,eL,795,eM,797,eN,798,eO,830,eP,557,eQ,787,eR,710,eS,715,eT,716,eU,717,eV,718,eW,735,eX,756,eY,757,eZ,764,e_,820,ea,833,eb,834,ec,558,ed,560,ee,562,ef,563,eg,778,eh,802,ei,714,ej,770,ek,771,el,786,em,788,en,753,eo,826,ep,836,eq,805,er,595,es,781,et,808,eu,557,ev,744,ew,780,ex,825,ey,823,ez,720,f,646,f0,783,f1,125,f2,127,f3,230,f4,229,f5,227,f6,231,f7,278,f8,25,f9,117,fA,87,fB,86,fC,153,fD,33,fE,232,fF,759,fG,760,fH,761,fI,762,fJ,765,fK,281,fL,39,fM,67,fN,54,fO,98,fP,97,fQ,65,fR,63,fS,64,fT,91,fU,107,fV,209,fW,280,fX,55,fY,62,fZ,816,f_,782,fa,112,fb,118,fc,113,fd,110,fe,106,ff,96,fg,36,fh,123,fi,213,fj,116,fk,140,fl,124,fm,216,fn,144,fo,115,fp,126,fq,277,fr,225,fs,238,ft,248,fu,149,fv,237,fw,252,fx,241,fy,239,fz,99,h,775,h0,68,h1,26,h2,289,h3,24,h4,21,h5,545,h6,580,h7,610,h8,636,h9,557,hA,228,hB,9,hC,53,h_,288,ha,810,hb,811,hc,812,hd,813,he,814,hf,815,hg,831,hh,832,hi,833,hj,834,hk,748,hl,130,hm,132,hn,131,ho,133,hp,135,hq,134,hr,137,hs,139,ht,138,hu,141,hv,143,hw,142,hx,145,hy,147,hz,146,i,606,j,607,k,719,l,575,m,210,n,594,o,673,p,10,q,630,r,784,t,152,u,588,v,601,w,827,x,637,y,640,z,267", + "instance": "A,877,B,861,C,875,D,876,E,892,F,901,G,914,H,915,I,850,J,851,K,854,L,863,M,890,N,891,O,887,P,866,R,869,S,870,T,872,U,884,V,896,W,898,X,906,Y,911,Z,916,a0,849,a1,852,a2,853,a3,857,a4,859,a5,860,a6,885,a7,889,a8,873,a9,874,aA,871,aB,879,aC,880,aD,845,aE,846,aF,882,aG,841,aH,844,aI,894,aJ,900,aK,903,aL,906,aM,907,aN,908,aO,908,aP,909,aQ,909,aR,911,aS,912,aT,912,aU,916,aV,843,aW,867,aX,905,a_,838,aa,878,ab,881,ac,883,ad,840,ae,842,af,893,ag,900,ah,910,ai,917,aj,839,ak,557,al,557,am,855,an,856,ao,858,ap,862,aq,886,ar,864,au,865,av,888,aw,868,az,868,gH,915,gM,890,gN,891,gP,866,gU,884,gV,896,gW,898,gaA,871,gaF,882,gaV,843,gaW,867,gap,862,gaw,868,gj,899,gk,913,gm,772,gn,895,gq,897,h,917,i,848,j,899,k,913,l,904,m,772,n,895,p,837,q,897,sU,884,sj,899,t,902,u,847,v,862" }, - "frames": "4zHA6He6jCyB;oCAKAAyB;eAKCTG;kBACeDE;gEAIlBAE;KAGOFO;iGAaA/iCAA8CgBCeANKkDuC,A,I;qMATrCjDAAmB0BDeAVWkDoC,A,AAUvC2/BkC,A;65DKiKWngB2C;QAEFsXyC;oYJ3QW4NuB;uEA6BL7EG;oQAuJqB9HqC;wGA8JlB0JiB;cAAAAa;0CAuBQhCS;gJAYVgCiB;oFAqBLwCAARF/BiB,A;yDAkBWUW;mKAumBoB9RoB;oDAUtBA+C;8DAwEGtRqC;yfAyQZAmR;gZA4MAAW;ifA0DyBAW;uWAkCJAW;cAOpBAkC;6BAIiBkgBoD;OAChBlgBU;0DAOC8kBI;aAIgB9kBwC;2JASjBAU;yEAiCmBAW;sCAGtBAc;sSAkIFAAQn5D8BAgE,A;keRojE1BAkC;cAEAA0D;y4CAyPEA4D;6sBAqF6BkiBuC;AACH+BmC;yEA4HtB/jCAM/9DTCMA3B4Bu+Bc,A,M;qDNghElB1eiD;kKAuJXAY;4EC7iFO0jBI;YACc/iCAAsE3BDAFlJAy/ByB,kF,A;QE4E2Bx/BAAuEpB2/BE,A;OAtEWoDI;uBAKK9iCAAzCJuhCkB,AAAZuBI,A;6CA+CMAI;YACkB/iCAAyD/BDAFlJAy/ByB,kF,A;QEyF+Bx/BAA0DxB2/BE,A;OAzDWoDI;uBAGK9iCAApDJuhCkB,AAAZuBS,A;4EA0EE/iCAA+BTDAFlJAy/ByB,kF,A;QEmHSx/BAAgCF2/BE,A;sDAvBEz/BAA2BTHAFvJAy/BsB,A,0BEuJAz/BkF,A;QA3BSGAA4BFy/BE,A;+DAfoCqCqB;UAElC9hCAAYTHAFvJAy/BsB,A,0BEuJAz/BkF,A;QAZSGAAaFy/BE,A;gEAMP5/BAF9JAy/ByB,6B;yJE0K2CwCoB;gLAsCjCRmB;0KAaFzhCAF7NRy/ByB,mG;2DE2O2BuD4D;wTA+EXtiCc;81CKzNSo+BG;gBAIjBtBW;AADuCnDAAgK/BwEQ,A;WAtJOjDO;AAFAkDG;gBAGftBgB;AAD0CrEAAgKlC0FM,A;gBApFCnFAAzBsBkFG,A;oCA2BECG;uCA2JzBEG;sBAgJMfmB;iEAyEPtEAA/YwBkFG,A;mEAwZbCG;qEAMAAG;qEAMAAG;qEAMWrFG;uDAMkBDAA7WvCwFK,A;aAgXGhGAApWH8FG,A;sBAsWQ/FG;6EAQHkBAApWIHO,A;AAqWJEG;sEAMIGAAlVT2EG,A;sBAqViC3FG;6EAU5BGQ;AACDoFQ;uBAGDrFAAzVHyFG,A;+EAgWIvFAAtVJsFG,A;sBA0VULO;uIAeNEkB;yBAGDII;kFAaCJkB;0BAImBFO;AACEAS;AACtBMM;qFAcK5EsB;AAIALK;iBAGQDK;8CAMiB2EAAxRRhfc,A;AAyRrBoeM;AAEAHM;AAEADK;uHAwCFuBM;yDAaZ5DI;sEAuBFEG;eAIOuGoB;qSAkFkBzGkD;uBAKvB+Ce;uDAeYOI;uBAENl9BQAvZU28BoB,A;6DAieFp7BoBAlFlBq4BgB,A;uCAsFc+DO;GAEL0CoB;OAAwBvHO;uBAOMr3BO;AAA9Bk2BG;gBAA8Bl2BAAKrCi6BY,A;SAS0BwDW;AADV/W0B;iBAGXlKAAmCTAAAAAAAACMydG,A,A,W;SAlC6BiBoB;AAE/Bl7BG;AADOk2BG;gBACPl2BAAfAi6BY,A;mBAuCqB17BMA1hBH28BoB,A;gEA0lBlB76BAAoiF6B8yB+B,A;6BAjiFzByDG;qEAcYuEAAr/BY5DAAuKhBwEQ,A,A;AA+0BQnFAAl7BekFG,A;0KA87BnBrFAA33BJwFG,A;IA43BMvFiB;AAYdoEU;uEAUCx6BQA8BmB42BAA15BZ+EI,A,AA25BMhFI,A;+DArBXiBC;AADPoCK;0CAsCAj6BAAg8E6B8yB0B,A;mEAr7EtBcC;AADP8FK;6BAKWnDAAnhCwBkFQ,A;kEAwhCCvEAAr7BxBwEK,A;eAs7B4B1FAA56B5B0FsB,A;mEAu7BCbc;gDAeNhDI;AADOlBAA18BF+EO,A;mDAo9BFzEG;iBAKVeG;8GAsBOuGoB;YACGtHG;iBAKVeG;wFA0BWHU;+DAYAAU;uCAWTvC0B;qJAuCc9KuB;mBAiBTqNc;AADSiDAAzwChBvEAAoEmCkFQ,A,AApEPvEAAuKhBwEK,A,A;QAmmCQ1FAAzlCR0FS,A;MA2lCmBbiB;AAD3BhDI;kiDA2NmByDQ;qBAEDIO;sCAYA7EAAv1CV+EM,A;AAw1CKhFG;qCAMG0EQ;AACFuFkB;AACEvFU;gEAOGIO;gBAELEI;kHAaMNQ;kNAgBFIO;AACjB17BAAo+DwB8yBAAK/B/rBAAGawvBAA58GwBkFG,A,A,wCAy8GhB74BAAgBd+7Ba,A,K,A;oDAh/DY5HAAv3CCLO,A;AAw3CeXM;AAEbeM;AACcwEW;AAEd7EM;AACc6EW;AACN9EM;AACP8EQ;0DASCIQ;2DAUEAQ;oEAYbFM;yBAIIEe;AAEJEI;sGA6BArFAApjDwBkFG,A;wIA6jDdvEAA19CTwEK,A;cAy+Ca/EAAp+Cb+EG,A;cAs+CSnFAA9kDckFG,A;uEAulDVzFAA1+Cb0FS,A;mBA++CItFAAzhDJwFI,A;GAkiDMvFG;4HAgBOJAAz/CbyFM,A;AA0/CGxFG;eAODCAAv/CIOM,A;qFA+/CF2KuB;yDAoLP9LAAHK2LG,S;uBAKP3LAALO2LG,I;oCAWDtEO;+DAKOnBI;AACPjDgB;oGAiBO0IM;wBA4BAtEM;aAWHsCS;AADPrCe;oBAGFzDyB;AACH+FW;gCAMSrJG;cAGVkEa;AAEakFW;oBAET9FuB;AACH+FW;kCAKSzJG;cAGViEgB;AAEuBtTAApuDfuVI,A;AAquDKsDW;gCAGX3IAA95D6BkFS,A;AA+5Dd9FQ;AAKhBwJW;mBAqCHzFS;AACAOQ;qBAuFeiFW;AADPrCW;oBAGsB5HAAIpBkGAAz3DPhfsB,A,AA03DH+dM,AACALM,W;AANGpCAApFA0HC,AAAOtCa,A;qBAiGKqCS;AAFN7KAA/CKhOAAz0DJuVW,A,A;AAy3DFiBW;oCAGLpFAAnGA0HC,AAAOtCa,A;0CA0GOtGAAzjEgBkFG,A;oEAikEvBNAAn5DPhfsB,A;AAo5DH+dM;AACAIK;CACATM;4BAQeqFS;AAFN/KAAzEK9NAA30DJuVW,A,A;AAq5DFiBW;oCAGLpFAA/HA0HC,AAAOtCa,A;4CAsIOtGAArlEgBkFQ,A;0DA0lEZzFAA7+DX0FI,A;kEAm/DaxEAA7/DbwEG,A;IA8/DiBnFAAjmEMkFc,A;AAmmEdzFAAt/DT0FI,A;gCA6/DAPAA57DPhfsB,A;AA67DH+dM;AACAIK;CACATM;4BAQeqFS;AAFNlLAAhHK3NAA70DJuVW,A,A;AA87DFiBW;oCAGLpFAAxKA0HC,AAAOtCa,A;wCA+KOtGG;0DAMVkCe;qCAKG0CAA39DPhfsB,A;AA49DH+dM;AACAIK;CACATM;0BAOeqFsB;AADPrCW;oBAIRhIAAKUsGAA7+DPhfsB,A,AA8+DH+dO,AACAIM,AACATM,W;AATGpCAAtMA0HC,AAAOtCa,A;8BAqNMvBQ;sCAEIIG;AACCrVAAj/DXuVI,A;kCA0/DMNQ;qCAGmBFO;AACZIwB;AAIPEK;AACKrVAAngEXuVI,A;uCAuhED1HAAVOoHU,mB;AAYD4DG;AADPrCW;oBAIO/HAAKLqGAAziEPhfsB,A,AA0iEH+dM,AACAIM,AACAES,AACgBcW,AAEdjBI,AAA6BeK,AAE/BvBM,W;AAdGpCAAlQA0HC,AAAOtCa,A;yCAsSNtGAArvE6BkFY,A;AAsvErB7FAAvqEF8FG,A;AAyqEDLG;AAAgB1FkB;QAEhB9BGAjBLxNAAnjEMuVuB,A,A;AAskEKsDG;AADPrCW;oBAIOlIAAKLwGAAtlEPhfsB,A,AAulEH+dO,AACAIM,AACAEM,AACAXM,W;AAVGpCAA/SA0HC,AAAOtCa,A;qBAyUDzIoC;AAEM8KC;AADPrCW;oBAIR9HAAKUoGAApnEPhfsB,A,AAqnEH+dO,AACAIM,AACAEM,AACAXM,W;AAVGpCAA7UA0HC,AAAOtCa,A;qBAoYD/IAAtCPCiB,AADY1NO,AACZ0NAAKkB+CM,AACcwEW,AAEd7EM,AACc6EW,AACN9EM,AACP8EsB,oF,AAZvBjCY,A;AAyCiB6FG;AADPrCW;oBAIRjIAAKUuGAA/qEPhfsB,A,AAgrEH+dO,AACAIM,AACAEM,AACAXM,W;AAVGpCAAxYA0HC,AAAOtCa,A;uBAgaD5ISAPH5NAAlrEIuVwB,A,A;AA2rEKsDC;AADPrCW;sCAGLpFAApaA0HC,AAAOtCa,A;sDA8aQvBQ;kCAICIQ;AACXnFAAl4EyBkFe,A;sEAm5EvBNAAruEPhfsB,A;AAsuEH+dO;AACAIM;AACAEK;CACAXM;4FAqKoBwGM;AACJIU;kBAGT1EkB;4LAcHmEW;cAIAAW;cAIAAO;KACWkBI;AAAkBzEG;AAAqB+CU;cAIlDQO;AACIcM;AAA2BIG;AAA3BJAAkWSvFU,A;cA9VbyEO;AAAsB1HM;AAAiB4IW;cAIvClBO;AAAsB3HM;AAAkB6IW;eAIxClBO;AAAsBvHM;AAAeyIW;cAIrCjBAAgFRDQ,AAAYPS,AACerEQ,A;iEArEX8FG;AACRlBO;cAIkBvDG;AAAqB+CU;AAC/BLK;iBAIA+BG;AACRlBO;cAIkBvDG;AAAqB+CU;AAC/BLK;iBAIA+BG;AACRlBO;cAIkBvDG;AAAqB+CU;AAC/BLK;cAIRaW;AACACAAqCRDQ,AAAYPS,AACerEQ,A;sCA9BnB6EAA6BRDQ,AAAYPS,AACerEQ,A;cA1BnBoCAA2KStUAAoCEmSY,AAAmBoEI,MACtByBI,AAAkBzEM,AACPlBY,A,AArC3ByEU,AACAAW,A;eAzKQCAAqBRDQ,AAAYPS,AACerEQ,A;eAlBnBkCAAyKSvBAAqCEVY,AAAmBoEI,MACjByBI,AAAkBzEM,AACZlBY,A,AAtC3ByEU,AACAAW,A;cAvKYvCAA4KKgDmB,AAGjBTO,AAAmBYkB,AACnBZW,AACACAApKADQ,AAAYPS,AACerEQ,A,M;wCANhBoEU;YACG0BI;AAAkBzEK;sDAWrBZkB;uCAIXmEU;uEAQWnEkB;0FAIyC0CoB;kBAM7BqCmB;SAKbMM;AAAkBzEO;AADZGAAhzBDvGAA76DsBkFW,A,AA+6DjB7FAAh2DN8FG,A,UAm2DatFAA/2DbwFG,A,AAk3DYqDI,+C;AAsyBxBiBO;AAEcpDkB;AAGdoDU;4BAMqBkBiB;AAEZ1BQ;sBAGTQO;2BAE4BvDc;AAChBpGAA9uFuBkFY,A;AAgvF/ByEO;YAGmCbK;cAInCaO;+BA+BKRa;AAnBY0B2B;uCAwBI1BU;aAIbAU;cAIRQU;WAIJAU;YAKKRU;iBAGIAwB;AAC0BamB;AACbAK;SACc5DM;AACmBxBAA3iFlBhfc,A;AA4iFfoeM;AAEAHM;AAEADK;AACpB+FO;2BASAAO;OAGyBtEY;kFAgCnB8Dc;UAERQO;AAAsBxHM;AAAgB0IY;iBAItClBO;AAAsB5HM;AAAc8IY;0EAOnB7FgB;AAAmBoEI;MACtByBI;AAAkBzEM;AACPlBY;2DAiBK8EK;8FASZjFQ;8BAEAFI;sBAOAEQ;+BAGAFI;wBAOL7EAAj6FsBkFG,A;4BAm6FR7FAAp1Ff8FE,A;IAq1FY/FM;AACP2FQ;gBAEDIK;SAIE9FAA51FN8FM,A;AA61FDnFAA56FwBkFQ,A;wFAm7FbpFU;AACPiFQ;QAEDIK;qEAwDDpF8B;AACG4IW;YAET7G8B;AACF8GW;0GA8DLrM0B;sBAEYyDAAljGuBkFG,A;wCAyjGnCj1BAA4ZE+vBG,A;0CAtZemFE;AADHvFAAx7FFsFc,A;YA67FAlFAAnkGuBkFsB,A;iCA2kGRzFAA99Ff0FQ,A;0EAu+FM1FAAv+FN0FY,A;wBA2+FMxEAAr/FNwEY,A;qCA6/FIxEAA7/FJwEY,A;qEAghGI1FAAtgGJ0Fa,A;2FAkhGQ/EAAvhGR+EY,A;yBAkiGa1FAA7hGb0FS,A;+FAyiGiB/EAA9iGjB+EQ,A;+IAskGIxFM;AACAAM;AACGoFgB;AACAAQ;SAGkBDwB;AACAAwB;oBAGjBKO;AACAAI;kEAOkBzFAApkG1ByFM,A;AAqkGNzFAArkGMyFQ,A;sQAgmGM3EAA1mGN2EQ,A;AA2mGM3EAA3mGN2EU,A;aAgnGsB3FO;AACAAM;AAGdeM;AAEAAM;AACewEW;AACAAQ;yBAMf7EM;AAEAAM;AACe6EW;AACAAQ;wCAKAFI;YACbMgB;6BAOaNI;YACbMkB;6BASbNM;YACaMgB;YAMOlFM;AACAAM;AACP8EW;AACAAQ;0BAIFMS;0BAGEAI;2BAIEJM;qCAMcJM;sBAENAM;YACbMkB;+BAQRFM;0DASIpFAAvvGHwFM,A;AAwvGGxFAAxvGHwFQ,A;WAswGOrGAAnhDL2LG,I;2CAshDCtFI;YAIMoDI;uBAEH1DQ;AACWvPoBAsLA8Oa,AAAjB0FK,A;+BApLW3EK;wBAITvFQ;gBAOFAW;AACAAQ;8BAWIiFQ;2BAUAIO;AACAAU;6CAwCA9EM;AACAAM;AACA0EgB;AACAAQ;aAEFzEAA30GF+EM,A;AA40GE/EAA50GF+EG,A;oCAg1GMFO;AACAAU;iCASPnFAAn7GwBkF+B,A;sCAu7GIvEAAp1G3BwEK,A;eAq1G+B1FAA30G/B0FI,A;uBAu1GiB5I+B;uBAQlByDAA58GwBkFG,A;qDA+/G1B6D4B;AACEhEQ;oBAEEMI;4CAOgBfa;AAAjB0FI;grBO/pHRrLS;4BA2BR/YU;wBAwGOASApCSsZAAAAtZyB,A,a;uCAmDC+gBE;+BAqBjBhBwG;oCAUACgC;gIA4BmBhgBoB;AAAAueW;8HAiCPjRK;mLC0PImOiB;AACItDG;cAIE7G0D;wIAyBNmKkB;AACItDI;mBAIE7G0D;2GAuBbjlBgB;uFAuIkB4uBqB;gCAGYjCG;AACxByIM;sHA+BcIG;2CACD9CK;0CAIb0CM;mDA4EIGG;uLAkBTyCwB;wBAMgBzIe;AACFwBsB;AACZhFyB;gDAcIgFwB;iBAEVmBiB;AAGAXmB;sQG72BQPU;iBAUqBrdqB;qCAKrBqdU;sFAoBkBrdiB;6IAuD3B3TW;iBCi5EG2TqB;OAAAAU;uCExsDFAAD/tBgBsN0B,AAAX+XU,A;uPA+YN5DS;0lFGpZUzhBmB;oHAoBNyWG;uYCsLsCqKyDrBxRtCmCYA6EiC+B2B,A,A;0DqBub1BzCgB;AAED1DO;0BAGFAO;oBAGEAU;4IhB/dJLAgByLSiGAvB4NX/BiB,A,A;QOnZA7FO;8jBkB6vBCuImB;8EAqBcplBc;oBAGpBolB6B;wDAMK3OG;0lDE10BiBzWe;mDCfP2fARsJX3f+C,A;gBQ9IQqZuK;AAEEkLACwFUvkBO,A;kBDxFVukBACwFUvkBa,A;yBDpF5BAO;2IAoBAqjBAAX+BrG2B,AAAkBuHQRiczBvkBW,A,A;+bWtda4gBmE;yBAMAC+C;0MhCuSLuCW;gBAqB5BjCe;qjBGxEFtBqB;sDA2CO7fY;QAAAA2B;qEA2ZqB4iBe;gBAaF5iBoB;QAAAAW;oqCE3rBAAkB;wBAAAAgC;mBA+IxBAqD;sOA4LwBAU;6CAAAAa;k6BJgvCEuiB+B;qrBAq6BwB9De;8BAOlC7BiC;AACAwGS;m5CMz4EXjjCiB;iBAAAAAAoZ0Bu+BqB,A;eA9YD/pBMAsZZ+pBqB,A;2aOlbhBrDkB;sPAsKArbc;8PgBpFAqiBW;AACSriBYVmfIsNI,AADnBtNAAAAA+B,A,A;YUhfyBAAA1KnBAATyzBAAAD/tBgBsN0B,AAAX+XU,A,A,uBUhGXrlBAAAAAc,A,A;AAkLEwXwE;kDAgCaxXQ;AADTqiBU;mEAIOriByD;+BAgEP+bG;qCAIADG;kDAaE5CI;iEAMAiE6E;qDAUFrBS;sBAOAuGkB;mGAkB0CtGS;OAIjC/bQ;AADT+bU;0DAQADG;0BACAZW;4BAMEYS;+IfpNDiGW;oBACEhDW;AAA6B9FI;8CAazB8FK;gGAQL8CU;oTAsIkBvUW;kGAoBAtNuC;OACPwWwD;uDASOxW+B;OACP4kByD;2GAoGblIG;6CAQiBvEQ;AACLyDY;qBAQdvvBgB;+EAQEqwBG;kGAiBiBvEQ;AACLyDY;gCAQdvvBgB;2RAgKFkyBW;kCAQAZmB;gGA8DAtxBmB;iGAwBAAmB;yjBAwEyBs1BGAjnBlB5CS,AAAUHa,A;8BAmnBwB5FE;2BACDAQ;mDAOc4CiB;AAC3BXmB;IACqBjCI;+LAkBjB0IC;IAAAAAA1rBxB3CQ,AAA+BhCO,A;8HAmsBC/DS;iBAElB8IAA3sBdhFU,A;wDAgtBsB9Da;yFIiaHhZ6B;kKAQpBqYU;uBAAAAAJtoBJkGW,S;wCM5HGhDU;0DAUAAW;AAGmBvbG;uFAkBpBubkB;QAYKvbQ;AADLqiBU;wDAIGriBiD;uCA2GFgcU;sJAgBLhBADtQsBiBI,Q;YCsQtBjBqC;yBAgEIOU;yCAQAAU;4GAyBsBvbY;qBA6CImVkB;2JD/rBXoNsB;6BA2Jf/GG;mDAIcxbY;qDAgDSAG;2BAEtBmbG;mEAciBcI;gFA6FlBdoB;iDAEoBwBgCA/L2B4FkB,A;sEA0M5BtGY;iGA4BnBpDmB;qBAAAAmB;oHA6GA4JG;uMAWFnBmCA6BFgCI,A;MA7BEhCAA6BFgCG,A;iUJ66BE7BU;0GAYAAU;ogBMv+CKzhBmB;8CAAAAoB;qFAU8BobS;6EAGHAS;8bAqDhCkC2BAOShFAAoOe0JwB,A,iH;qlBAhCf1JAAgCe0JmB,A;yLAmEnBhiBU;4BAAAAoB;iNa/ZmBAkB;qBAAAAW;QAAAAY;+CA2IUAY;QAAAA6B;eA6WjB4iBe;8RZlafuCmB;AACAAAC0YJrGU,A;ADzYIqGe;s1Bf4WoB/PK;+5BgB5aMgOc;2iBKtC9BxR6B;gCAYoB5RARgFdAI,A;AQhFNgdgC;SACiBkEkB;0DACc9JY;EAC7B4FoB;AAAApLARmjBG6KG,qBACLlFkDAsD6BvXY,A,A;6CQllB3BmkBAAhBFllBAAlCFmiBc,AAAcjKqB,AAA6CEa,qC,A;AAqDvDlYAa9CFskBgE,A;qsTzCixCiBE0G;CAAAAG;6DAUAC8G;CAAAAG;2DAUACuD;CAAAAG;6DAUAC2D;CAAAAG;" + "frames": "2xHAqIe4jCyB;oCAKAAyB;eAKCTG;kBACeDE;gEAIlBAE;KAGOFO;iGAaA9iCAA8CgBCeANKmDuC,A,I;qMATrClDAAmB0BDeAVWmDoC,A,AAUvCy/BkC,A;23DImKWlgB2C;QAEFqXyC;sYHrRW6NuB;uEA6BL9EG;oQAuJqB9HqC;wGA8JlB0JiB;cAAAAa;0CAuBQhCS;gJAYVgCiB;oFAqBLyCAARFhCiB,A;yDAkBWWW;mKAknBoB9RoB;oDAUtBA+C;8DAwEGtRqC;qvBAqHdAwC;qTA8NEAmR;gZA4MAAW;ifA0DyBAW;uWAkCJAW;cAOpBAkC;6BAIiBigBoD;OAChBjgBU;0DAOC8kBI;aAIgB9kBwC;2JASjBAU;yEAiCmBAW;sCAGtBAc;sSAkIFAAOx+D8BAgE,A;kePyoE1BAkC;cAEAA0D;y4CAyPEA4D;6sBAqF6BiiBuC;AACHgCmC;yEA4HtB9jCAKpjETCMA3B4Bq+Bc,A,M;qDLqmElBzeiD;yCACKijBW;uHAsJhBjjBY;4ECloFO0jBI;YACc9iCAAsE3BDAF1IAu/ByB,kF,A;QEoE2Bt/BAAuEpBy/BE,A;OAtEWqDI;uBAKK7iCAAzCJqhCkB,AAAZwBI,A;6CA+CMAI;YACkB9iCAAyD/BDAF1IAu/ByB,kF,A;QEiF+Bt/BAA0DxBy/BE,A;OAzDWqDI;uBAGK7iCAApDJqhCkB,AAAZwBS,A;4EA0EE9iCAA+BTDAF1IAu/ByB,kF,A;QE2GSt/BAAgCFy/BE,A;sDAvBEv/BAA2BTHAF/IAu/BsB,A,0BE+IAv/BkF,A;QA3BSGAA4BFu/BE,A;+DAfoCqCqB;UAElC5hCAAYTHAF/IAu/BsB,A,0BE+IAv/BkF,A;QAZSGAAaFu/BE,A;gEAMP1/BAFtJAu/ByB,6B;yJEkK2CwCoB;gLAsCjCRmB;0KAaFvhCAFrNRu/ByB,mG;2DEmO2BwD4D;wTA+EXriCc;81CIzNSk+BG;gBAIjBtBW;AADuCnDAAgK/BwEQ,A;WAtJOjDO;AAFAkDG;gBAGftBgB;AAD0CrEAAgKlC0FM,A;gBApFCnFAAzBsBkFG,A;oCA2BECG;uCA2JzBEG;sBAgJMfmB;iEAyEPtEAA/YwBkFG,A;mEAwZbCG;qEAMAAG;qEAMAAG;qEAMWrFG;uDAMkBDAA7WvCwFK,A;aAgXGhGAApWH8FG,A;sBAsWQ/FG;6EAQHkBAApWIHO,A;AAqWJEG;sEAMIGAAlVT2EG,A;sBAqViC3FG;6EAU5BGQ;AACDoFQ;uBAGDrFAAzVHyFG,A;+EAgWIvFAAtVJsFG,A;sBA0VULO;uIAeNEkB;yBAGDII;kFAaCJkB;0BAImBFO;AACEAS;AACtBMM;qFAcK5EsB;AAIALK;iBAGQDK;8CAMiB2EAAxRR/ec,A;AAyRrBmeM;AAEAHM;AAEADK;uHAwCFuBM;yDAaZ5DI;sEAuBFEG;eAIOuGoB;qSAkFkBzGkD;uBAKvB+Ce;uDAeYOI;uBAENh9BQAvZUy8BoB,A;6DAieFl7BoBAlFlBm4BgB,A;uCAsFc+DO;GAEL0CoB;OAAwBvHO;uBAOMn3BO;AAA9Bg2BG;gBAA8Bh2BAAKrC+5BY,A;SAS0BwDW;AADV7W0B;iBAGXnKAAmCTAAAAAAAACMwdG,A,A,W;SAlC6BiBoB;AAE/Bh7BG;AADOg2BG;gBACPh2BAAfA+5BY,A;mBAuCqBx7BMA1hBHy8BoB,A;gEA0lBlB36BAAoiF6B4yB+B,A;6BAjiFzByDG;qEAcYuEAAr/BY5DAAuKhBwEQ,A,A;AA+0BQnFAAl7BekFG,A;0KA87BnBrFAA33BJwFG,A;IA43BMvFiB;AAYdoEU;sEAUCt6BQA8BmB02BAA15BZ+EI,A,AA25BMhFI,A;+DArBXiBC;AADPoCK;0CAsCA/5BAAg8E6B4yB0B,A;mEAr7EtBcC;AADP8FK;6BAKWnDAAnhCwBkFQ,A;kEAwhCCvEAAr7BxBwEK,A;eAs7B4B1FAA56B5B0FsB,A;mEAu7BCbc;gDAeNhDI;AADOlBAA18BF+EO,A;mDAo9BFzEG;iBAKVeG;8GAsBOuGoB;YACGtHG;iBAKVeG;wFA0BWHU;+DAYAAU;uCAWTvC0B;qJAuCc5KuB;mBAiBTmNc;AADSiDAAzwChBvEAAoEmCkFQ,A,AApEPvEAAuKhBwEK,A,A;QAmmCQ1FAAzlCR0FS,A;MA2lCmBbiB;AAD3BhDI;kiDA2NmByDQ;qBAEDIO;sCAYA7EAAv1CV+EM,A;AAw1CKhFG;qCAMG0EQ;AACFwFkB;AACExFU;gEAOGIO;gBAELEI;kHAaMNQ;0MAgBFIO;AACjBx7BAAo+DwB4yBAAK/B7rBAAGasvBAA58GwBkFG,A,A,wCAy8GhB34BAAgBd67Ba,A,K,A;oDAh/DY5HAAv3CCLO,A;AAw3CeXM;AAEbeM;AACcwEW;AAEd7EM;AACc6EW;AACN9EM;AACP8EQ;0DASCIQ;2DAUEAQ;oEAYbFM;yBAIIEe;AAEJEI;sGA6BArFAApjDwBkFG,A;wIA6jDdvEAA19CTwEK,A;cAy+Ca/EAAp+Cb+EG,A;cAs+CSnFAA9kDckFG,A;uEAulDVzFAA1+Cb0FS,A;mBA++CItFAAzhDJwFI,A;GAkiDMvFG;4HAgBOJAAz/CbyFM,A;AA0/CGxFG;eAODCAAv/CIOM,A;qFA+/CF4KuB;yDAoLP/LAAHK4LG,S;uBAKP5LAALO4LG,I;oCAWDvEO;+DAKOnBI;AACPjDgB;oGAiBO2IM;wBA4BAvEM;aAWHsCS;AADPrCe;oBAGFzDyB;AACH+FW;gCAMSrJG;cAGVkEa;AAEakFW;oBAET9FuB;AACH+FW;kCAKSzJG;cAGViEgB;AAEuBpTAApuDfqVI,A;AAquDKsDW;gCAGX3IAA95D6BkFS,A;AA+5Dd9FQ;AAKhBwJW;mBAqCHzFS;AACAOQ;qBAuFeiFW;AADPrCW;oBAGsB5HAAIpBkGAAz3DP/esB,A,AA03DH8dM,AACALM,W;AANGpCAApFA0HC,AAAOtCa,A;qBAiGKqCS;AAFN7KAA/CK9NAAz0DJqVW,A,A;AAy3DFiBW;oCAGLpFAAnGA0HC,AAAOtCa,A;0CA0GOtGAAzjEgBkFG,A;oEAikEvBNAAn5DP/esB,A;AAo5DH8dM;AACAIK;CACATM;4BAQeqFS;AAFN/KAAzEK5NAA30DJqVW,A,A;AAq5DFiBW;oCAGLpFAA/HA0HC,AAAOtCa,A;4CAsIOtGAArlEgBkFQ,A;0DA0lEZzFAA7+DX0FI,A;kEAm/DaxEAA7/DbwEG,A;IA8/DiBnFAAjmEMkFc,A;AAmmEdzFAAt/DT0FI,A;gCA6/DAPAA57DP/esB,A;AA67DH8dM;AACAIK;CACATM;4BAQeqFS;AAFNlLAAhHKzNAA70DJqVW,A,A;AA87DFiBW;oCAGLpFAAxKA0HC,AAAOtCa,A;wCA+KOtGG;0DAMVkCe;qCAKG0CAA39DP/esB,A;AA49DH8dM;AACAIK;CACATM;0BAOeqFsB;AADPrCW;oBAIRhIAAKUsGAA7+DP/esB,A,AA8+DH8dO,AACAIM,AACATM,W;AATGpCAAtMA0HC,AAAOtCa,A;8BAqNMvBQ;sCAEIIG;AACCnVAAj/DXqVI,A;kCA0/DMNQ;qCAGmBFO;AACZIwB;AAIPEK;AACKnVAAngEXqVI,A;uCAuhED1HAAVOoHU,mB;AAYD4DG;AADPrCW;oBAIO/HAAKLqGAAziEP/esB,A,AA0iEH8dM,AACAIM,AACAES,AACgBcW,AAEdjBI,AAA6BeK,AAE/BvBM,W;AAdGpCAAlQA0HC,AAAOtCa,A;yCAsSNtGAArvE6BkFY,A;AAsvErB7FAAvqEF8FG,A;AAyqEDLG;AAAgB1FkB;QAEhB9BGAjBLtNAAnjEMqVuB,A,A;AAskEKsDG;AADPrCW;oBAIOlIAAKLwGAAtlEP/esB,A,AAulEH8dO,AACAIM,AACAEM,AACAXM,W;AAVGpCAA/SA0HC,AAAOtCa,A;qBAyUDzIoC;AAEM8KC;AADPrCW;oBAIR9HAAKUoGAApnEP/esB,A,AAqnEH8dO,AACAIM,AACAEM,AACAXM,W;AAVGpCAA7UA0HC,AAAOtCa,A;qBAoYD/IAAtCPCiB,AADYxNO,AACZwNAAKkB+CM,AACcwEW,AAEd7EM,AACc6EW,AACN9EM,AACP8EsB,oF,AAZvBjCY,A;AAyCiB6FG;AADPrCW;oBAIRjIAAKUuGAA/qEP/esB,A,AAgrEH8dO,AACAIM,AACAEM,AACAXM,W;AAVGpCAAxYA0HC,AAAOtCa,A;uBAgaD5ISAPH1NAAlrEIqVwB,A,A;AA2rEKsDC;AADPrCW;sCAGLpFAApaA0HC,AAAOtCa,A;sDA8aQvBQ;kCAICIQ;AACXnFAAl4EyBkFe,A;sEAm5EvBNAAruEP/esB,A;AAsuEH8dO;AACAIM;AACAEK;CACAXM;4FAqKoByGM;AACJIU;kBAGT3EkB;4LAcHoEW;cAIAAW;cAIAAO;KACWkBI;AAAkB1EG;AAAqBgDU;cAIlDQO;AACIcM;AAA2BIG;AAA3BJAAkWSxFU,A;cA9Vb0EO;AAAsB3HM;AAAiB6IW;cAIvClBO;AAAsB5HM;AAAkB8IW;eAIxClBO;AAAsBxHM;AAAe0IW;cAIrCjBAAgFRDQ,AAAYPS,AACetEQ,A;iEArEX+FG;AACRlBO;cAIkBxDG;AAAqBgDU;AAC/BLK;iBAIA+BG;AACRlBO;cAIkBxDG;AAAqBgDU;AAC/BLK;iBAIA+BG;AACRlBO;cAIkBxDG;AAAqBgDU;AAC/BLK;cAIRaW;AACACAAqCRDQ,AAAYPS,AACetEQ,A;sCA9BnB8EAA6BRDQ,AAAYPS,AACetEQ,A;cA1BnBoCAA2KSpUAAoCEiSY,AAAmBqEI,MACtByBI,AAAkB1EM,AACPlBY,A,AArC3B0EU,AACAAW,A;eAzKQCAAqBRDQ,AAAYPS,AACetEQ,A;eAlBnBkCAAyKSvBAAqCEVY,AAAmBqEI,MACjByBI,AAAkB1EM,AACZlBY,A,AAtC3B0EU,AACAAW,A;cAvKYxCAA4KKiDmB,AAGjBTO,AAAmBYkB,AACnBZW,AACACAApKADQ,AAAYPS,AACetEQ,A,M;wCANhBqEU;YACG0BI;AAAkB1EK;sDAWrBZkB;uCAIXoEU;uEAQWpEkB;0FAIyC0CoB;kBAM7BsCmB;SAKbMM;AAAkB1EO;AADZGAAhzBDvGAA76DsBkFW,A,AA+6DjB7FAAh2DN8FG,A,UAm2DatFAA/2DbwFG,A,AAk3DYqDI,+C;AAsyBxBkBO;AAEcrDkB;AAGdqDU;4BAMqBkBiB;AAEZ1BQ;sBAGTQO;2BAE4BxDc;AAChBpGAA9uFuBkFY,A;AAgvF/B0EO;YAGmCbK;cAInCaO;+BA+BKRa;AAnBY0B2B;uCAwBI1BU;aAIbAU;cAIRQU;WAIJAU;YAKKRU;iBAGIAwB;AAC0BamB;AACbAK;SACc7DM;AACmBxBAA3iFlB/ec,A;AA4iFfmeM;AAEAHM;AAEADK;AACpBgGO;2BASAAO;OAGyBvEY;kFAgCnB+Dc;UAERQO;AAAsBzHM;AAAgB2IY;iBAItClBO;AAAsB7HM;AAAc+IY;0EAOnB9FgB;AAAmBqEI;MACtByBI;AAAkB1EM;AACPlBY;2DAiBK+EK;8FASZlFQ;8BAEAFI;sBAOAEQ;+BAGAFI;wBAOL7EAAj6FsBkFG,A;4BAm6FR7FAAp1Ff8FE,A;IAq1FY/FM;AACP2FQ;gBAEDIK;SAIE9FAA51FN8FM,A;AA61FDnFAA56FwBkFQ,A;wFAm7FbpFU;AACPiFQ;QAEDIK;qEAwDDpF8B;AACG4IW;YAET7G8B;AACF8GW;0GA8DLrM0B;sBAEYyDAAljGuBkFG,A;wCAyjGnC/0BAA4ZE6vBG,A;0CAtZemFE;AADHvFAAx7FFsFc,A;YA67FAlFAAnkGuBkFsB,A;iCA2kGRzFAA99Ff0FQ,A;0EAu+FM1FAAv+FN0FY,A;wBA2+FMxEAAr/FNwEY,A;qCA6/FIxEAA7/FJwEY,A;qEAghGI1FAAtgGJ0Fa,A;2FAkhGQ/EAAvhGR+EY,A;yBAkiGa1FAA7hGb0FS,A;+FAyiGiB/EAA9iGjB+EQ,A;+IAskGIxFM;AACAAM;AACGoFgB;AACAAQ;SAGkBDwB;AACAAwB;oBAGjBKO;AACAAI;kEAOkBzFAApkG1ByFM,A;AAqkGNzFAArkGMyFQ,A;sQAgmGM3EAA1mGN2EQ,A;AA2mGM3EAA3mGN2EU,A;aAgnGsB3FO;AACAAM;AAGdeM;AAEAAM;AACewEW;AACAAQ;yBAMf7EM;AAEAAM;AACe6EW;AACAAQ;wCAKAFI;YACbMgB;6BAOaNI;YACbMkB;6BASbNM;YACaMgB;YAMOlFM;AACAAM;AACP8EW;AACAAQ;0BAIFMS;0BAGEAI;2BAIEJM;qCAMcJM;sBAENAM;YACbMkB;+BAQRFM;0DASIpFAAvvGHwFM,A;AAwvGGxFAAxvGHwFQ,A;WAswGOrGAAnhDL4LG,I;2CAshDCvFI;YAIMoDI;uBAEH1DQ;AACWtPoBAsLA6Oa,AAAjB2FK,A;+BApLW5EK;wBAITvFQ;gBAOFAW;AACAAQ;8BAWIiFQ;2BAUAIO;AACAAU;6CAwCA9EM;AACAAM;AACA0EgB;AACAAQ;aAEFzEAA30GF+EM,A;AA40GE/EAA50GF+EG,A;oCAg1GMFO;AACAAU;iCASPnFAAn7GwBkF+B,A;sCAu7GIvEAAp1G3BwEK,A;eAq1G+B1FAA30G/B0FI,A;uBAu1GiB5I+B;uBAQlByDAA58GwBkFG,A;qDA+/G1B8D4B;AACEjEQ;oBAEEMI;4CAOgBfa;AAAjB2FI;grBQvpHRtLS;4BA2BR9YU;wBAwGOASApCSqZAAAArZyB,A,a;uCAmDC8gBE;+BAqBjBhBwG;oCAUACgC;gIA4BmB/foB;AAAAseW;8HAiCP/QK;0GC2RIiOiB;AACItDG;cAIE5G0D;wIAyBNkKkB;AACItDI;mBAIE5G0D;2GAuBbjlBgB;uFAuIkB2uBqB;gCAGYjCG;AACxByIM;sHA+BcIG;2CACD9CK;0CAIb0CM;mDA4EIGG;uLAkBT0CwB;wBAMgB1Ie;AACFwBsB;AACZhFyB;gDAcIgFwB;iBAEVmBiB;AAGAXmB;sQGt5BQPU;iBAUqBpdqB;qCAKrBodU;sFAoBkBpdiB;6IAuD3B3TW;iBCg5EG2TqB;OAAAAU;uCE9sDFAADxtBgBuN0B,AAAX8XU,A;uPAgZN7DS;wlFGrZUxhBmB;oHAoBNwWG;yYCsLsCqKyDfxRtCmCOA6EiCgCqC,I,A;0Deub1B1CgB;AAED1DO;0BAGFAO;oBAGEAU;4IjB/dJLAiByLSkGAvB4NXhCiB,A,A;QMnZA7FO;8jBmB6vBCwImB;8EAqBcplBc;oBAGpBolB6B;wDAMK5OG;0lDE10BiBxWe;mDCfP0fARsJX1f+C,A;gBQ9IQoZuK;AAEEmLACwFUvkBO,A;kBDxFVukBACwFUvkBa,A;yBDpF5BAO;2IAoBAqjBAAX+BtG2B,AAAkBwHQRiczBvkBW,A,A;+bWtda2gBmE;yBAMAC+C;0MhC+SLwCW;gBAqB5BlCe;iiBStFFtB+B;sDA2CO5fY;QAAAA2B;qEA2ZqB2iBe;gBAaF3iBoB;QAAAAW;upCLrrBAAkB;yBAAAAiC;mBA+IxBAqD;uOAsMwBAU;6CAAAAa;k6BH2zCEsiB+B;qrBAq6BwB9De;8BAOlC7BiC;AACAyGS;g6CK99EXhjCiB;iBAAAAAAoZ0Bq+BqB,A;eA9YD/pBMAsZZ+pBqB,A;2aQ1ahBrDkB;sPAsKApbc;6PgB5FAoiBW;AACSpiBYVofIuNI,AADnBvNAAAAA+B,A,A;YUjfyBAAA1KnBAATkzBAAADxtBgBuN0B,AAAX8XU,A,A,uBUhGXrlBAAAAAc,A,A;AAkLEuXwE;kDAgCavXQ;AADToiBU;mEAIOpiByD;+BAyDP8bG;qCAIADG;kDAaE5CI;iEAMAiE6E;qDAUFrBS;sBAOAuGkB;mGAkB0CtGS;OAIjC9bQ;AADT8bU;0DAQADG;0BACAZW;4BAMEYS;+IfpKDiGW;oBACEhDW;AAA6B9FI;8CAazB8FK;gGAQL8CU;oTAsIkBrUW;kGAoBAvNuC;OACPuWwD;uDASOvW+B;OACP4kByD;2GAoGbnIG;6CAQiBvEQ;AACLyDY;qBAQdtvBgB;+EAQEowBG;kGAiBiBvEQ;AACLyDY;gCAQdtvBgB;2RAgKFiyBW;kCAQAZQA3OoB1dc,A;gGAySpB3TmB;iGAwBAAmB;2jBAwEyBq1BGAjnBlB5CS,AAAUHa,A;+BAmnBwB5FE;uBACDAQ;mBAEH/YiB;yDAKiB2biB;AAC3BXmB;IACqBjCI;iMAkBjB0IC;IAAAAAA1rBxB3CQ,AAA+BhCO,A;kDA4rBH9coB;0FAOI+YS;iBAElB8IAA3sBdhFU,A;wDAgtBsB9DO;gDAGQ/YiB;6EIoXXA6B;kKAQpBoYU;uBAAAAAJ5lBJkGW,S;wCMrKGhDU;0DAUAAW;AAGmBtbG;uFAkBpBsbkB;QAYKtbQ;AADLoiBU;wDAIGpiBiD;uCAoGF+bU;sJAgBLhBAD9PsBiBI,Q;YC8PtBjBqC;yBAgEIOU;yCAQAAU;4GAyBsBtbY;qBA6CIkVkB;2JDxrBXoNsB;6BA2Jf/GG;mDAIcvbY;qDAiDSAG;2BAEtBkbG;mEAciBcI;gFA6FlBdoB;iDAEoBwBgCAhM2B4FkB,A;sEA2M5BtGY;iGA4BnBpDmB;qBAAAAmB;oHA6GA4JG;uMAWFnBmCA6BFiCI,A;MA7BEjCAA6BFiCG,A;iUJ27BE9BU;0GAYAAU;ogBMt/CKxhBmB;8CAAAAoB;qFAU8BmbS;6EAGHAS;8bAqDhCkC2BAOShFAAoOe0JwB,A,iH;qlBAhCf1JAAgCe0JmB,A;yLAmEnB/hBU;4BAAAAoB;iNa/ZmBAkB;sBAAAAW;QAAAAa;+CA2IUAY;QAAAA6B;eA6WjB2iBe;8RZlafwCmB;AACAAAC0YJtGU,A;ADzYIsGe;s1BhB4WoBhQK;+5BiB5aMiOc;2iBKtC9BzR6B;gCAYoB3RARgFdAI,A;AQhFN+cgC;SACiBkEkB;0DACc9JY;EAC7B4FoB;AAAApLARmjBG6KG,qBACLlFkDA+C6BtXY,A,A;6CQ/kB3BmkBAAZFllBAAlCFkiBc,AAAcjKqB,AAA6CEa,qC,A;AAiDvDjYAa1CFskBgE,A;25TzCs2CiBE0G;CAAAAG;6DAUAC8G;CAAAAG;2DAUACuD;CAAAAG;6DAUAC2D;CAAAAG;" } }