Compare commits

..

No commits in common. "0.70.0-integration-tests" and "main" have entirely different histories.

77 changed files with 508 additions and 52096 deletions

View File

@ -2,33 +2,17 @@
"out_dir": "", "out_dir": "",
"python_module_name": "main", "python_module_name": "main",
"project_name": "", "project_name": "",
"project_name_slug": "",
"project_description": "", "project_description": "",
"product_name": "{{ cookiecutter.project_name }}", "product_name": "{{ cookiecutter.project_name }}",
"org_name": "{{ cookiecutter.org_name if 'org_name' in cookiecutter else 'com.flet' }}", "org_name": "com.flet",
"company_name": "Your Company", "company_name": "Your Company",
"copyright": "Copyright (c) 2023 Your Company", "copyright": "Copyright (c) 2023 Your Company",
"flutter": null,
"sep": "/", "sep": "/",
"bundle_id": "{{ cookiecutter.bundle_id if 'bundle_id' in cookiecutter else cookiecutter.org_name + '.' + cookiecutter.project_name_slug }}", "kotlin_dir": "{{ cookiecutter.org_name.replace('.', cookiecutter.sep) }}{{ cookiecutter.sep }}{{ cookiecutter.project_name }}{{ cookiecutter.sep }}",
"org_name_2": "{{ cookiecutter.bundle_id.rsplit('.', 1)[0] if 'bundle_id' in cookiecutter else cookiecutter.org_name if 'org_name' in cookiecutter else 'com.flet' }}", "hide_loading_animation": true,
"ios_provisioning_profile": "", "team_id": "",
"ios_export_method": "",
"ios_signing_certificate": "",
"ios_export_options": {},
"ios_team_id": "",
"package_name": "{{ cookiecutter.bundle_id.rsplit('.', 1)[-1].replace('-', '_') if 'bundle_id' in cookiecutter else cookiecutter.project_name }}",
"kotlin_dir": "{{ cookiecutter.org_name_2.replace('.', cookiecutter.sep) }}{{ cookiecutter.sep }}{{ cookiecutter.package_name }}{{ cookiecutter.sep }}",
"base_url": "/", "base_url": "/",
"route_url_strategy": "path", "route_url_strategy": "path",
"web_renderer": "canvaskit", "web_renderer": "canvaskit",
"use_color_emoji": false, "use_color_emoji": "false"
"pwa_background_color": "#FFFFFF",
"pwa_theme_color": "#0175C2",
"split_per_abi": false,
"no_cdn": false,
"no_wasm": false,
"options": null,
"pyproject": null,
"_extensions": ["cookiecutter_extensions.FletExtension"]
} }

View File

@ -1,22 +0,0 @@
from jinja2 import pass_context
from jinja2.ext import Extension
class FletExtension(Extension):
def __init__(self, environment):
super(FletExtension, self).__init__(environment)
environment.globals["get_pyproject"] = self.get_pyproject
@pass_context
def get_pyproject(self, context, setting):
pyproject = context.get("cookiecutter", {}).get("pyproject", {})
if not setting:
return pyproject
d = pyproject
for k in setting.split("."):
d = d.get(k)
if d is None:
return None
return d

View File

@ -1,3 +0,0 @@
{% for key, value in cookiecutter.items() -%}
{{ key }}: {{ value }}
{% endfor %}

View File

@ -0,0 +1,71 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
android {
namespace "{{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}"
compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "{{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a'
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {}

View File

@ -1,103 +0,0 @@
import java.util.Properties
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}
val localProperties = Properties().apply {
val localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {
localPropertiesFile.inputStream().use { load(it) }
}
}
val flutterVersionCode = localProperties.getProperty("flutter.versionCode")?.toIntOrNull() ?: 1
val flutterVersionName = localProperties.getProperty("flutter.versionName") ?: "1.0"
android {
namespace = "{{ cookiecutter.org_name_2 }}.{{ cookiecutter.package_name }}"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
packaging {
jniLibs {
useLegacyPackaging = true
keepDebugSymbols += listOf(
"*/arm64-v8a/libpython*.so",
"*/armeabi-v7a/libpython*.so",
"*/x86/libpython*.so",
"*/x86_64/libpython*.so",
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
sourceSets["main"].java.srcDir("src/main/kotlin")
{% set min_sdk_version = get_pyproject("tool.flet.android.min_sdk_version") %}
{% set target_sdk_version = get_pyproject("tool.flet.android.target_sdk_version") %}
defaultConfig {
applicationId = "{{ cookiecutter.org_name_2 }}.{{ cookiecutter.package_name }}"
val resolvedMinSdk = {{ min_sdk_version if min_sdk_version else "flutter.minSdkVersion" }}
minSdk = resolvedMinSdk
val resolvedTargetSdk = {{ target_sdk_version if target_sdk_version else "flutter.targetSdkVersion" }}
targetSdk = resolvedTargetSdk
versionCode = flutterVersionCode
versionName = flutterVersionName
println("Gradle build config:")
println(" minSdkVersion: $resolvedMinSdk")
println(" targetSdkVersion: $resolvedTargetSdk")
println(" versionCode: $flutterVersionCode")
println(" versionName: $flutterVersionName")
// flet: split_per_abi {% if not cookiecutter.split_per_abi %}
ndk {
{% if cookiecutter.options.target_arch %}
abiFilters += listOf({% for arch in cookiecutter.options.target_arch %}"{{ arch }}"{% if not loop.last %}, {% endif %}{% endfor %})
{% else %}
abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64")
{% endif %}
}
// flet: end of split_per_abi {% endif %}
}
// flet: android_signing {% if cookiecutter.options.android_signing %}
signingConfigs {
create("release") {
keyAlias = System.getenv("FLET_ANDROID_SIGNING_KEY_ALIAS")
keyPassword = System.getenv("FLET_ANDROID_SIGNING_KEY_PASSWORD")
storeFile = System.getenv("FLET_ANDROID_SIGNING_KEY_STORE")?.let { file(it) }
storePassword = System.getenv("FLET_ANDROID_SIGNING_KEY_STORE_PASSWORD")
}
}
// flet: end of android_signing {% endif %}
buildTypes {
release {
// flet: android_signing {% if cookiecutter.options.android_signing %}
signingConfig = signingConfigs.getByName("release")
// {% else %}
signingConfig = signingConfigs.getByName("debug")
// flet: end of android_signing {% endif %}
}
}
}
flutter {
source = "../.."
}
dependencies {}

View File

@ -1,2 +0,0 @@
-keep class com.flet.serious_python_android.** { *; }
-keepnames class * { *; }

View File

@ -3,6 +3,5 @@
the Flutter tool needs it to communicate with the running application the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" /> </manifest>
</manifest>

View File

@ -1,29 +1,13 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- flet: permission {% for k, v in cookiecutter.options.android_permissions.items() %} {% if v == True %} --> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="{{ k }}" />
<!-- flet: end of permission {% endif %} {% endfor %} -->
<!-- flet: feature {% for k, v in cookiecutter.options.android_features.items() %} -->
<uses-feature android:name="{{ k }}" android:required="{% if v == True %}true{% else %}false{% endif %}" />
<!-- flet: end of feature {% endfor %} -->
<!-- {% set manifest_application = cookiecutter.pyproject.get('tool', {}).get('flet', {}).get('android', {}).get('manifest_application', {}) %} -->
<application <application
android:label="{{ cookiecutter.product_name }}" android:label="{{ cookiecutter.project_name }}"
android:name="${applicationName}" android:name="${applicationName}"
android:enableOnBackInvokedCallback="true"
{% if manifest_application -%}{% for k, v in cookiecutter.pyproject.tool.flet.android.manifest_application.items() -%}
android:{{ k }}="{{ v }}"
{% endfor -%}{% endif -%}
android:icon="@mipmap/ic_launcher"> android:icon="@mipmap/ic_launcher">
<!-- flet: meta-data {% for k, v in cookiecutter.options.android_meta_data.items() %} -->
<meta-data android:name="{{ k }}" android:value="{{ v }}" />
<!-- flet: end of meta-data {% endfor %} -->
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:launchMode="singleTop" android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
@ -33,24 +17,13 @@
while the Flutter UI initializes. After that, this theme continues while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. --> to determine the Window background behind the Flutter UI. -->
<meta-data <meta-data
android:name="io.flutter.embedding.android.NormalTheme" android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" android:resource="@style/NormalTheme"
/> />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER" /> <!-- Google TV -->
</intent-filter> </intent-filter>
<!-- flet: deep linking {% if cookiecutter.options.deep_linking.scheme and cookiecutter.options.deep_linking.host %} -->
<meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="{{ cookiecutter.options.deep_linking.scheme }}"
android:host="{{ cookiecutter.options.deep_linking.host }}" />
</intent-filter>
<!-- flet: end of deep linking {% endif %} -->
</activity> </activity>
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
@ -58,15 +31,4 @@
android:name="flutterEmbedding" android:name="flutterEmbedding"
android:value="2" /> android:value="2" />
</application> </application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT" />
<data android:mimeType="text/plain" />
</intent>
</queries>
</manifest> </manifest>

View File

@ -1,5 +1,6 @@
package {{ cookiecutter.org_name_2 }}.{{ cookiecutter.package_name }} package {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity
class MainActivity : FlutterActivity() class MainActivity: FlutterActivity() {
}

View File

@ -3,6 +3,5 @@
the Flutter tool needs it to communicate with the running application the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" /> </manifest>
</manifest>

View File

@ -0,0 +1,31 @@
buildscript {
ext.kotlin_version = '1.7.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@ -1,24 +0,0 @@
allprojects {
repositories {
google()
mavenCentral()
}
}
val newBuildDir: Directory =
rootProject.layout.buildDirectory
.dir("../../build")
.get()
rootProject.layout.buildDirectory.value(newBuildDir)
subprojects {
val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
project.layout.buildDirectory.value(newSubprojectBuildDir)
}
subprojects {
project.evaluationDependsOn(":app")
}
tasks.register<Delete>("clean") {
delete(rootProject.layout.buildDirectory)
}

View File

@ -1,2 +1,3 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true

View File

@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

View File

@ -0,0 +1,20 @@
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}
settings.ext.flutterSdkPath = flutterSdkPath()
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
plugins {
id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
}
}
include ":app"
apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle"

View File

@ -1,27 +0,0 @@
pluginManagement {
val flutterSdkPath =
run {
val properties = java.util.Properties()
file("local.properties").inputStream().use { properties.load(it) }
val flutterSdkPath = properties.getProperty("flutter.sdk")
require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
flutterSdkPath
}
settings.extra["flutterSdkPath"] = flutterSdkPath
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.11.1" apply false
id("org.jetbrains.kotlin.android") version "2.2.20" apply false
}
include(":app")

View File

@ -1,55 +0,0 @@
import 'package:flet_integration_test/flet_integration_test.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:{{ cookiecutter.project_name }}/main.dart' as app;
void main() {
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized();
group('end-to-end test', () {
testWidgets('test app', (tester) async {
const testerServerUrl = String.fromEnvironment('FLET_TEST_SERVER_URL');
late FlutterWidgetTester widgetTester;
if (testerServerUrl.isNotEmpty) {
debugPrint('Connecting to remote tester at $testerServerUrl');
widgetTester = await RemoteWidgetTester.connect(
tester: tester,
binding: binding,
serverUri: Uri.parse(testerServerUrl),
);
} else {
widgetTester = FlutterWidgetTester(tester, binding);
}
app.tester = widgetTester;
final args = <String>[];
const fletTestAppUrl = String.fromEnvironment('FLET_TEST_APP_URL');
if (fletTestAppUrl.isNotEmpty) {
args.add(fletTestAppUrl);
}
const fletTestPidFile = String.fromEnvironment('FLET_TEST_PID_FILE_PATH');
if (fletTestPidFile.isNotEmpty) {
args.add(fletTestPidFile);
}
const fletTestAssetsDir = String.fromEnvironment('FLET_TEST_ASSETS_DIR');
if (fletTestAssetsDir.isNotEmpty) {
args.add(fletTestAssetsDir);
}
app.main(args);
await Future<void>.delayed(const Duration(milliseconds: 500));
await widgetTester.pump(duration: const Duration(seconds: 1));
await widgetTester
.pumpAndSettle(duration: const Duration(milliseconds: 100));
await widgetTester.waitForTeardown();
});
});
}

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project # Uncomment this line to define a global platform for your project
platform :ios, '13.0' platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true' ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@ -37,52 +37,8 @@ target 'Runner' do
end end
end end
=begin
{% set permission_mapping = {
"PERMISSION_EVENTS": ["NSCalendarsUsageDescription", "NSCalendarWriteOnlyAccessUsageDescription"],
"PERMISSION_EVENTS_FULL_ACCESS": ["NSCalendarsFullAccessUsageDescription"],
"PERMISSION_REMINDERS": ["NSRemindersFullAccessUsageDescription"],
"PERMISSION_CONTACTS": ["NSContactsUsageDescription"],
"PERMISSION_CAMERA": ["NSCameraUsageDescription"],
"PERMISSION_MICROPHONE": ["NSMicrophoneUsageDescription"],
"PERMISSION_SPEECH_RECOGNIZER": ["NSSpeechRecognitionUsageDescription"],
"PERMISSION_PHOTOS": ["NSPhotoLibraryUsageDescription"],
"PERMISSION_PHOTOS_ADD_ONLY": ["NSPhotoLibraryAddUsageDescription"],
"PERMISSION_LOCATION": [
"NSLocationUsageDescription",
"NSLocationAlwaysAndWhenInUseUsageDescription",
"NSLocationWhenInUseUsageDescription"
],
"PERMISSION_LOCATION_WHENINUSE": ["NSLocationWhenInUseUsageDescription"],
"PERMISSION_MEDIA_LIBRARY": ["NSAppleMusicUsageDescription"],
"PERMISSION_SENSORS": ["NSMotionUsageDescription"],
"PERMISSION_BLUETOOTH": ["NSBluetoothAlwaysUsageDescription", "NSBluetoothPeripheralUsageDescription"],
"PERMISSION_APP_TRACKING_TRANSPARENCY": ["NSUserTrackingUsageDescription"],
"PERMISSION_CRITICAL_ALERTS": ["UNAuthorizationOptionCriticalAlert"],
"PERMISSION_ASSISTANT": ["NSSiriUsageDescription"]
} %}
=end
post_install do |installer| post_install do |installer|
installer.pods_project.targets.each do |target| installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target) flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
{%- for macro, plist_keys in permission_mapping.items() %}
{%- set ns = namespace(enabled=False) %}
{%- for key in plist_keys %}
{%- if key in cookiecutter.options.info_plist %}
{%- set ns.enabled = True %}
{%- endif %}
{%- endfor %}
{%- if ns.enabled %}
'{{ macro }}=1',
{%- endif %}
{%- endfor %}
]
end
end end
end end

View File

@ -345,7 +345,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
@ -360,16 +360,9 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
{% if cookiecutter.ios_team_id %} {% if cookiecutter.team_id %}
DEVELOPMENT_TEAM = "{{ cookiecutter.ios_team_id }}"; DEVELOPMENT_TEAM = {{ cookiecutter.team_id }};
{% endif %}
{% if cookiecutter.ios_signing_certificate %}
CODE_SIGN_IDENTITY = "{{ cookiecutter.ios_signing_certificate }}";
{% endif %}
{% if cookiecutter.ios_provisioning_profile %}
PROVISIONING_PROFILE_SPECIFIER = "{{ cookiecutter.ios_provisioning_profile }}";
{% endif %} {% endif %}
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@ -377,7 +370,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }};
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -394,7 +387,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -412,7 +405,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@ -428,7 +421,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@ -482,7 +475,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -531,7 +524,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
@ -548,16 +541,9 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
{% if cookiecutter.ios_team_id %} {% if cookiecutter.team_id %}
DEVELOPMENT_TEAM = "{{ cookiecutter.ios_team_id }}"; DEVELOPMENT_TEAM = {{ cookiecutter.team_id }};
{% endif %}
{% if cookiecutter.ios_signing_certificate %}
CODE_SIGN_IDENTITY = "{{ cookiecutter.ios_signing_certificate }}";
{% endif %}
{% if cookiecutter.ios_provisioning_profile %}
PROVISIONING_PROFILE_SPECIFIER = "{{ cookiecutter.ios_provisioning_profile }}";
{% endif %} {% endif %}
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@ -565,7 +551,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }};
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -580,16 +566,9 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
{% if cookiecutter.ios_team_id %} {% if cookiecutter.team_id %}
DEVELOPMENT_TEAM = "{{ cookiecutter.ios_team_id }}"; DEVELOPMENT_TEAM = {{ cookiecutter.team_id }};
{% endif %}
{% if cookiecutter.ios_signing_certificate %}
CODE_SIGN_IDENTITY = "{{ cookiecutter.ios_signing_certificate }}";
{% endif %}
{% if cookiecutter.ios_provisioning_profile %}
PROVISIONING_PROFILE_SPECIFIER = "{{ cookiecutter.ios_provisioning_profile }}";
{% endif %} {% endif %}
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@ -597,7 +576,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }};
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;

View File

@ -1,7 +1,7 @@
import UIKit import UIKit
import Flutter import Flutter
@main @UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate { @objc class AppDelegate: FlutterAppDelegate {
override func application( override func application(
_ application: UIApplication, _ application: UIApplication,

View File

@ -1,101 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>{{ cookiecutter.product_name }}</string> <string>{{ cookiecutter.product_name }}</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>{{ cookiecutter.project_name }}</string> <string>{{ cookiecutter.project_name }}</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string> <string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string> <string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true /> <true/>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIMainStoryboardFile</key> <key>UIMainStoryboardFile</key>
<string>Main</string> <string>Main</string>
<key>UISupportedInterfaceOrientations</key> <key>UISupportedInterfaceOrientations</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>UISupportedInterfaceOrientations~ipad</key> <key>UISupportedInterfaceOrientations~ipad</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>CADisableMinimumFrameDurationOnPhone</key> <key>CADisableMinimumFrameDurationOnPhone</key>
<true /> <true/>
<key>UIApplicationSupportsIndirectInputEvents</key> <key>UIApplicationSupportsIndirectInputEvents</key>
<true /> <true/>
<key>NSAppTransportSecurity</key> </dict>
<dict> </plist>
<key>NSAllowsArbitraryLoads</key>
<true />
</dict>
<!-- flet: deep linking {% if cookiecutter.options.deep_linking.scheme and cookiecutter.options.deep_linking.host%} -->
<key>FlutterDeepLinkingEnabled</key>
<true />
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>{{ cookiecutter.options.deep_linking.host }}</string>
<key>CFBundleURLSchemes</key>
<array>
<string>{{ cookiecutter.options.deep_linking.scheme }}</string>
</array>
</dict>
</array>
<!-- flet: end of deep linking {% endif %} -->
{% macro render_dict(d) -%}
{% for key, value in d.items() -%}
<key>{{ key }}</key>
{% if value is string -%}
<string>{{ value }}</string>
{% elif value is boolean -%}
<{{ "true" if value else "false" }}/>
{% elif value is mapping -%}
<dict>
{{ render_dict(value) }}
</dict>
{% elif value is sequence -%} {# Support for lists/arrays #}
<array>
{% for item in value -%}
{% if item is string -%}
<string>{{ item }}</string>
{% elif item is boolean -%}
<{{ "true" if item else "false" }}/>
{% elif item is mapping -%}
<dict>
{{ render_dict(item) }}
</dict>
{% endif -%}
{% endfor -%}
</array>
{% endif -%}
{% endfor -%}
{% endmacro -%}
{{ render_dict(cookiecutter.options.info_plist) }}
</dict>
</plist>

View File

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>{{ cookiecutter.ios_export_method }}</string>
<key>provisioningProfiles</key>
<dict>
<key>{{ cookiecutter.bundle_id }}</key>
<string>{{ cookiecutter.ios_provisioning_profile }}</string>
</dict>
{% if cookiecutter.ios_team_id %}
<key>teamID</key>
<string>{{ cookiecutter.ios_team_id }}</string>
{% endif %}
{% if cookiecutter.ios_signing_certificate %}
<key>signingCertificate</key>
<string>{{ cookiecutter.ios_signing_certificate }}</string>
{% endif %}
{% macro render_dict(d) -%}
{% for key, value in d.items() -%}
<key>{{ key }}</key>
{% if value is string -%}
<string>{{ value }}</string>
{% elif value is boolean -%}
<{{ "true" if value else "false" }}/>
{% elif value is mapping -%}
<dict>
{{ render_dict(value) }}
</dict>
{% elif value is sequence -%} {# Support for lists/arrays #}
<array>
{% for item in value -%}
{% if item is string -%}
<string>{{ item }}</string>
{% elif item is boolean -%}
<{{ "true" if item else "false" }}/>
{% elif item is mapping -%}
<dict>
{{ render_dict(item) }}
</dict>
{% endif -%}
{% endfor -%}
</array>
{% endif -%}
{% endfor -%}
{% endmacro -%}
{{ render_dict(cookiecutter.ios_export_options) }}
</dict>
</plist>

View File

@ -5,74 +5,78 @@ import 'package:flet/flet.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:path_provider/path_provider.dart' as path_provider;
import 'package:serious_python/serious_python.dart'; import 'package:serious_python/serious_python.dart';
import 'package:url_strategy/url_strategy.dart'; import 'package:url_strategy/url_strategy.dart';
import 'package:window_manager/window_manager.dart';
import "python.dart"; const bool isProduction = bool.fromEnvironment('dart.vm.product');
{% for dep in cookiecutter.flutter.dependencies %}
import 'package:{{ dep }}/{{ dep }}.dart' as {{ dep }};
{% endfor %}
/*
{% set show_boot_screen = get_pyproject("tool.flet." ~ cookiecutter.options.config_platform ~ ".app.boot_screen.show")
or get_pyproject("tool.flet.app.boot_screen.show")
or False %}
{% set boot_screen_message = get_pyproject("tool.flet." ~ cookiecutter.options.config_platform ~ ".app.boot_screen.message")
or get_pyproject("tool.flet.app.boot_screen.message") %}
{% set show_startup_screen = get_pyproject("tool.flet." ~ cookiecutter.options.config_platform ~ ".app.startup_screen.show")
or get_pyproject("tool.flet.app.startup_screen.show")
or False %}
{% set startup_screen_message = get_pyproject("tool.flet." ~ cookiecutter.options.config_platform ~ ".app.startup_screen.message")
or get_pyproject("tool.flet.app.startup_screen.message") %}
show_boot_screen: {{ show_boot_screen }}
boot_screen_message: {{ boot_screen_message }}
show_startup_screen: {{ show_startup_screen }}
startup_screen_message: {{ startup_screen_message }}
*/
const bool isRelease = bool.fromEnvironment('dart.vm.product');
const assetPath = "app/app.zip"; const assetPath = "app/app.zip";
const pythonModuleName = "{{ cookiecutter.python_module_name }}"; const pythonModuleName = "{{ cookiecutter.python_module_name }}";
final showAppBootScreen = bool.tryParse("{{ show_boot_screen }}".toLowerCase()) ?? false; final hideLoadingPage =
const appBootScreenMessage = '{{ boot_screen_message | default("Preparing the app for its first launch…", true) }}'; bool.tryParse("{{ cookiecutter.hide_loading_animation }}".toLowerCase()) ??
final showAppStartupScreen = bool.tryParse("{{ show_startup_screen }}".toLowerCase()) ?? false; true;
const appStartupScreenMessage = '{{ startup_screen_message | default("Getting things ready…", true) }}'; const outLogFilename = "out.log";
const errorExitCode = 100;
Tester? tester; const pythonScript = """
import certifi, os, runpy, socket, sys, traceback
List<FletExtension> extensions = [ os.environ["REQUESTS_CA_BUNDLE"] = certifi.where()
{% for dep in cookiecutter.flutter.dependencies %} os.environ["SSL_CERT_FILE"] = certifi.where()
{{ dep }}.Extension(),
{% endfor %}
];
String outLogFilename = ""; if os.getenv("FLET_PLATFORM") == "android":
import ssl
def create_default_context(
purpose=ssl.Purpose.SERVER_AUTH, *, cafile=None, capath=None, cadata=None
):
return ssl.create_default_context(
purpose=purpose, cafile=certifi.where(), capath=capath, cadata=cadata
)
ssl._create_default_https_context = create_default_context
out_file = open("$outLogFilename", "w+", buffering=1)
callback_socket_addr = os.environ.get("FLET_PYTHON_CALLBACK_SOCKET_ADDR")
if ":" in callback_socket_addr:
addr, port = callback_socket_addr.split(":")
callback_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
callback_socket.connect((addr, int(port)))
else:
callback_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
callback_socket.connect(callback_socket_addr)
sys.stdout = sys.stderr = out_file
def flet_exit(code=0):
callback_socket.sendall(str(code).encode())
out_file.close()
callback_socket.close()
sys.exit = flet_exit
ex = None
try:
runpy.run_module("{module_name}", run_name="__main__")
except Exception as e:
ex = e
traceback.print_exception(e)
sys.exit(0 if ex is None else $errorExitCode)
""";
// global vars // global vars
List<String> _args = [];
String pageUrl = ""; String pageUrl = "";
String assetsDir = ""; String assetsDir = "";
String appDir = ""; String appDir = "";
Map<String, String> environmentVariables = {}; Map<String, String> environmentVariables = {};
void main(List<String> args) async { void main() async {
_args = List<String>.from(args); if (isProduction) {
// ignore: avoid_returning_null_for_void
var devPageUrl = const String.fromEnvironment("FLET_PAGE_URL"); debugPrint = (String? message, {int? wrapWidth}) => null;
if (devPageUrl != "") {
_args.addAll([devPageUrl, "--debug"]);
}
for (var ext in extensions) {
ext.ensureInitialized();
} }
runApp(FutureBuilder( runApp(FutureBuilder(
@ -80,16 +84,14 @@ void main(List<String> args) async {
builder: (BuildContext context, AsyncSnapshot snapshot) { builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) { if (snapshot.hasData) {
// OK - start Python program // OK - start Python program
return kIsWeb || (isDesktopPlatform() && _args.isNotEmpty) return kIsWeb
? FletApp( ? FletApp(
pageUrl: pageUrl, pageUrl: pageUrl,
assetsDir: assetsDir, assetsDir: assetsDir,
showAppStartupScreen: showAppStartupScreen, hideLoadingPage: hideLoadingPage,
appStartupScreenMessage: appStartupScreenMessage, )
extensions: extensions,
tester: tester)
: FutureBuilder( : FutureBuilder(
future: runPythonApp(args), future: runPythonApp(),
builder: builder:
(BuildContext context, AsyncSnapshot<String?> snapshot) { (BuildContext context, AsyncSnapshot<String?> snapshot) {
if (snapshot.hasData || snapshot.hasError) { if (snapshot.hasData || snapshot.hasError) {
@ -102,12 +104,10 @@ void main(List<String> args) async {
} else { } else {
// no result of error // no result of error
return FletApp( return FletApp(
pageUrl: pageUrl, pageUrl: pageUrl,
assetsDir: assetsDir, assetsDir: assetsDir,
showAppStartupScreen: showAppStartupScreen, hideLoadingPage: hideLoadingPage,
appStartupScreenMessage: appStartupScreenMessage, );
extensions: extensions,
tester: tester);
} }
}); });
} else if (snapshot.hasError) { } else if (snapshot.hasError) {
@ -118,21 +118,12 @@ void main(List<String> args) async {
text: snapshot.error.toString())); text: snapshot.error.toString()));
} else { } else {
// loading // loading
return MaterialApp(home: showAppBootScreen ? const BootScreen() : const BlankScreen()); return const MaterialApp(home: BlankScreen());
} }
})); }));
} }
Future prepareApp() async { Future prepareApp() async {
if (!_args.contains("--debug") && isRelease) {
// ignore: avoid_returning_null_for_void
debugPrint = (String? message, {int? wrapWidth}) => null;
} else {
_args.remove("--debug");
}
await setupDesktop();
if (kIsWeb) { if (kIsWeb) {
// web mode - connect via HTTP // web mode - connect via HTTP
pageUrl = Uri.base.toString(); pageUrl = Uri.base.toString();
@ -140,22 +131,9 @@ Future prepareApp() async {
if (routeUrlStrategy == "path") { if (routeUrlStrategy == "path") {
setPathUrlStrategy(); setPathUrlStrategy();
} }
} else if (_args.isNotEmpty && isDesktopPlatform()) {
// developer mode
debugPrint("Flet app is running in Developer mode");
pageUrl = _args[0];
if (_args.length > 1) {
var pidFilePath = _args[1];
debugPrint("Args contain a path to PID file: $pidFilePath}");
var pidFile = await File(pidFilePath).create();
await pidFile.writeAsString("$pid");
}
if (_args.length > 2) {
assetsDir = _args[2];
debugPrint("Args contain a path assets directory: $assetsDir}");
}
} else { } else {
// production mode await setupDesktop();
// extract app from asset // extract app from asset
appDir = await extractAssetZip(assetPath, checkHash: true); appDir = await extractAssetZip(assetPath, checkHash: true);
@ -164,29 +142,6 @@ Future prepareApp() async {
assetsDir = path.join(appDir, "assets"); assetsDir = path.join(appDir, "assets");
// configure apps DATA and TEMP directories
WidgetsFlutterBinding.ensureInitialized();
var appTempPath = (await path_provider.getApplicationCacheDirectory()).path;
var appDataPath =
(await path_provider.getApplicationDocumentsDirectory()).path;
if (defaultTargetPlatform != TargetPlatform.iOS &&
defaultTargetPlatform != TargetPlatform.android) {
// append app name to the path and create dir
PackageInfo packageInfo = await PackageInfo.fromPlatform();
appDataPath = path.join(appDataPath, "flet", packageInfo.packageName);
if (!await Directory(appDataPath).exists()) {
await Directory(appDataPath).create(recursive: true);
}
}
environmentVariables["FLET_APP_STORAGE_DATA"] = appDataPath;
environmentVariables["FLET_APP_STORAGE_TEMP"] = appTempPath;
outLogFilename = path.join(appTempPath, "console.log");
environmentVariables["FLET_APP_CONSOLE"] = outLogFilename;
environmentVariables["FLET_PLATFORM"] = environmentVariables["FLET_PLATFORM"] =
defaultTargetPlatform.name.toLowerCase(); defaultTargetPlatform.name.toLowerCase();
@ -197,7 +152,7 @@ Future prepareApp() async {
environmentVariables["FLET_SERVER_PORT"] = tcpPort.toString(); environmentVariables["FLET_SERVER_PORT"] = tcpPort.toString();
} else { } else {
// use UDS on other platforms // use UDS on other platforms
pageUrl = "flet_$pid.sock"; pageUrl = "flet.sock";
environmentVariables["FLET_SERVER_UDS_PATH"] = pageUrl; environmentVariables["FLET_SERVER_UDS_PATH"] = pageUrl;
} }
} }
@ -205,13 +160,8 @@ Future prepareApp() async {
return ""; return "";
} }
Future<String?> runPythonApp(List<String> args) async { Future<String?> runPythonApp() async {
var argvItems = args.map((a) => "\"${a.replaceAll('"', '\\"')}\""); var script = pythonScript.replaceAll('{module_name}', pythonModuleName);
var argv = "[${argvItems.isNotEmpty ? argvItems.join(',') : '""'}]";
var script = pythonScript
.replaceAll("{outLogFilename}", outLogFilename.replaceAll("\\", "\\\\"))
.replaceAll('{module_name}', pythonModuleName)
.replaceAll('{argv}', argv);
var completer = Completer<String>(); var completer = Completer<String>();
@ -226,7 +176,7 @@ Future<String?> runPythonApp(List<String> args) async {
'Python output TCP Server is listening on port ${outSocketServer.port}'); 'Python output TCP Server is listening on port ${outSocketServer.port}');
socketAddr = "$tcpAddr:${outSocketServer.port}"; socketAddr = "$tcpAddr:${outSocketServer.port}";
} else { } else {
socketAddr = "stdout_$pid.sock"; socketAddr = "stdout.sock";
if (await File(socketAddr).exists()) { if (await File(socketAddr).exists()) {
await File(socketAddr).delete(); await File(socketAddr).delete();
} }
@ -325,34 +275,6 @@ class ErrorScreen extends StatelessWidget {
} }
} }
class BootScreen extends StatelessWidget {
const BootScreen({
super.key,
});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const SizedBox(
width: 30,
height: 30,
child: CircularProgressIndicator(strokeWidth: 3),
),
const SizedBox(
height: 10,
),
Text(appBootScreenMessage, style: Theme.of(context).textTheme.bodySmall,)
],
),
),
);
}
}
class BlankScreen extends StatelessWidget { class BlankScreen extends StatelessWidget {
const BlankScreen({ const BlankScreen({
super.key, super.key,
@ -373,25 +295,3 @@ Future<int> getUnusedPort() {
return port; return port;
}); });
} }
Future setupDesktop() async {
if (isDesktopPlatform()) {
WidgetsFlutterBinding.ensureInitialized();
await windowManager.ensureInitialized();
Map<String, String> env = Platform.environment;
var hideWindowOnStart = env["FLET_HIDE_WINDOW_ON_START"];
var hideAppOnStart = env["FLET_HIDE_APP_ON_START"];
debugPrint("hideWindowOnStart: $hideWindowOnStart");
debugPrint("hideAppOnStart: $hideAppOnStart");
await windowManager.waitUntilReadyToShow(null, () async {
if (hideWindowOnStart == null && hideAppOnStart == null) {
await windowManager.show();
await windowManager.focus();
} else if (hideAppOnStart != null) {
await windowManager.setSkipTaskbar(true);
}
});
}
}

View File

@ -1,104 +0,0 @@
const errorExitCode = 100;
const pythonScript = """
import os, runpy, socket, sys, traceback
# fix for cryptography package
os.environ["CRYPTOGRAPHY_OPENSSL_NO_LEGACY"] = "1"
# fix for: https://github.com/flet-dev/serious-python/issues/85#issuecomment-2065000974
os.environ["OPENBLAS_NUM_THREADS"] = "1"
def initialize_ctypes():
import ctypes.util
import os
import pathlib
import sys
android_native_lib_dir = os.getenv("ANDROID_NATIVE_LIBRARY_DIR")
def find_library_override_imp(name: str):
if name is None:
return None
if pathlib.Path(name).exists():
return name
if sys.platform == "ios":
for lf in [
f"Frameworks/{name}.framework/{name}",
f"Frameworks/lib{name}.framework/lib{name}",
]:
lib_path = pathlib.Path(sys.executable).parent.joinpath(lf)
if lib_path.exists():
return str(lib_path)
elif android_native_lib_dir:
for lf in [f"lib{name}.so", f"{name}.so", name]:
lib_path = pathlib.Path(android_native_lib_dir).joinpath(lf)
if lib_path.exists():
return str(lib_path)
return None
find_library_original = ctypes.util.find_library
def find_library_override(name):
return find_library_override_imp(name) or find_library_original(name)
ctypes.util.find_library = find_library_override
CDLL_init_original = ctypes.CDLL.__init__
def CDLL_init_override(self, name, *args, **kwargs):
CDLL_init_original(
self, find_library_override_imp(name) or name, *args, **kwargs
)
ctypes.CDLL.__init__ = CDLL_init_override
initialize_ctypes()
out_file = open("{outLogFilename}", "w+", buffering=1)
callback_socket_addr = os.getenv("FLET_PYTHON_CALLBACK_SOCKET_ADDR")
if ":" in callback_socket_addr:
addr, port = callback_socket_addr.split(":")
callback_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
callback_socket.connect((addr, int(port)))
else:
callback_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
callback_socket.connect(callback_socket_addr)
sys.stdout = sys.stderr = out_file
def flet_exit(code=0):
callback_socket.sendall(str(code).encode())
out_file.close()
callback_socket.close()
sys.exit = flet_exit
ex = None
try:
import certifi
os.environ["REQUESTS_CA_BUNDLE"] = certifi.where()
os.environ["SSL_CERT_FILE"] = certifi.where()
if os.getenv("FLET_PLATFORM") == "android":
import ssl
def create_default_context(
purpose=ssl.Purpose.SERVER_AUTH, *, cafile=None, capath=None, cadata=None
):
return ssl.create_default_context(
purpose=purpose, cafile=certifi.where(), capath=capath, cadata=cadata
)
ssl._create_default_https_context = create_default_context
sys.argv = {argv}
runpy.run_module("{module_name}", run_name="__main__")
except Exception as e:
ex = e
traceback.print_exception(e)
sys.exit(0 if ex is None else 100)
""";

View File

@ -7,7 +7,7 @@ project(runner LANGUAGES CXX)
set(BINARY_NAME "{{ cookiecutter.project_name }}") set(BINARY_NAME "{{ cookiecutter.project_name }}")
# The unique GTK application identifier for this application. See: # The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID # https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "{{ cookiecutter.bundle_id }}") set(APPLICATION_ID "{{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake. # versions of CMake.
@ -41,7 +41,7 @@ endif()
# of modifying this function. # of modifying this function.
function(APPLY_STANDARD_SETTINGS TARGET) function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_14) target_compile_features(${TARGET} PUBLIC cxx_std_14)
target_compile_options(${TARGET} PRIVATE -Wall -Werror -Wno-unused-variable -Wno-unused-function) target_compile_options(${TARGET} PRIVATE -Wall -Werror)
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>") target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>") target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
endfunction() endfunction()
@ -73,7 +73,6 @@ apply_standard_settings(${BINARY_NAME})
# Add dependency libraries. Add any application-specific dependencies here. # Add dependency libraries. Add any application-specific dependencies here.
target_link_libraries(${BINARY_NAME} PRIVATE flutter) target_link_libraries(${BINARY_NAME} PRIVATE flutter)
target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
target_link_libraries(${BINARY_NAME} PRIVATE ${MIMALLOC_LIB})
# Run the Flutter tool portions of the build. This must not be removed. # Run the Flutter tool portions of the build. This must not be removed.
add_dependencies(${BINARY_NAME} flutter_assemble) add_dependencies(${BINARY_NAME} flutter_assemble)
@ -139,12 +138,6 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST})
endif() endif()
endforeach(plugin) endforeach(plugin)
# Copy the native assets provided by the build.dart from all packages.
set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
install(DIRECTORY "${NATIVE_ASSETS_DIR}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
# Fully re-copy the assets directory on each build to avoid having stale files # Fully re-copy the assets directory on each build to avoid having stale files
# from a previous install. # from a previous install.
set(FLUTTER_ASSET_DIR_NAME "flutter_assets") set(FLUTTER_ASSET_DIR_NAME "flutter_assets")

View File

@ -6,20 +6,20 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <record_linux/record_linux_plugin.h> #include <audioplayers_linux/audioplayers_linux_plugin.h>
#include <screen_retriever_linux/screen_retriever_linux_plugin.h> #include <screen_retriever/screen_retriever_plugin.h>
#include <serious_python_linux/serious_python_linux_plugin.h> #include <serious_python_linux/serious_python_linux_plugin.h>
#include <url_launcher_linux/url_launcher_plugin.h> #include <url_launcher_linux/url_launcher_plugin.h>
#include <window_manager/window_manager_plugin.h> #include <window_manager/window_manager_plugin.h>
#include <window_to_front/window_to_front_plugin.h> #include <window_to_front/window_to_front_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) { void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) record_linux_registrar = g_autoptr(FlPluginRegistrar) audioplayers_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "RecordLinuxPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "AudioplayersLinuxPlugin");
record_linux_plugin_register_with_registrar(record_linux_registrar); audioplayers_linux_plugin_register_with_registrar(audioplayers_linux_registrar);
g_autoptr(FlPluginRegistrar) screen_retriever_linux_registrar = g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverLinuxPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
screen_retriever_linux_plugin_register_with_registrar(screen_retriever_linux_registrar); screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
g_autoptr(FlPluginRegistrar) serious_python_linux_registrar = g_autoptr(FlPluginRegistrar) serious_python_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "SeriousPythonLinuxPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "SeriousPythonLinuxPlugin");
serious_python_linux_plugin_register_with_registrar(serious_python_linux_registrar); serious_python_linux_plugin_register_with_registrar(serious_python_linux_registrar);

View File

@ -3,8 +3,8 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
record_linux audioplayers_linux
screen_retriever_linux screen_retriever
serious_python_linux serious_python_linux
url_launcher_linux url_launcher_linux
window_manager window_manager

View File

@ -7,17 +7,19 @@
#include "flutter/generated_plugin_registrant.h" #include "flutter/generated_plugin_registrant.h"
struct _MyApplication { struct _MyApplication
{
GtkApplication parent_instance; GtkApplication parent_instance;
char** dart_entrypoint_arguments; char **dart_entrypoint_arguments;
}; };
G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
// Implements GApplication::activate. // Implements GApplication::activate.
static void my_application_activate(GApplication* application) { static void my_application_activate(GApplication *application)
MyApplication* self = MY_APPLICATION(application); {
GtkWindow* window = MyApplication *self = MY_APPLICATION(application);
GtkWindow *window =
GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
// Use a header bar when running in GNOME as this is the common style used // Use a header bar when running in GNOME as this is the common style used
@ -29,31 +31,36 @@ static void my_application_activate(GApplication* application) {
// if future cases occur). // if future cases occur).
gboolean use_header_bar = TRUE; gboolean use_header_bar = TRUE;
#ifdef GDK_WINDOWING_X11 #ifdef GDK_WINDOWING_X11
GdkScreen* screen = gtk_window_get_screen(window); GdkScreen *screen = gtk_window_get_screen(window);
if (GDK_IS_X11_SCREEN(screen)) { if (GDK_IS_X11_SCREEN(screen))
const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); {
if (g_strcmp0(wm_name, "GNOME Shell") != 0) { const gchar *wm_name = gdk_x11_screen_get_window_manager_name(screen);
if (g_strcmp0(wm_name, "GNOME Shell") != 0)
{
use_header_bar = FALSE; use_header_bar = FALSE;
} }
} }
#endif #endif
if (use_header_bar) { if (use_header_bar)
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); {
GtkHeaderBar *header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar)); gtk_widget_show(GTK_WIDGET(header_bar));
gtk_header_bar_set_title(header_bar, "{{ cookiecutter.product_name }}"); gtk_header_bar_set_title(header_bar, "{{ cookiecutter.product_name }}");
gtk_header_bar_set_show_close_button(header_bar, TRUE); gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else { }
else
{
gtk_window_set_title(window, "{{ cookiecutter.product_name }}"); gtk_window_set_title(window, "{{ cookiecutter.product_name }}");
} }
gtk_window_set_default_size(window, 1280, 720); gtk_window_set_default_size(window, 1280, 720);
gtk_widget_realize(GTK_WIDGET(window)); gtk_widget_show(GTK_WIDGET(window));
g_autoptr(FlDartProject) project = fl_dart_project_new(); g_autoptr(FlDartProject) project = fl_dart_project_new();
fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
FlView* view = fl_view_new(project); FlView *view = fl_view_new(project);
gtk_widget_show(GTK_WIDGET(view)); gtk_widget_show(GTK_WIDGET(view));
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
@ -63,16 +70,18 @@ static void my_application_activate(GApplication* application) {
} }
// Implements GApplication::local_command_line. // Implements GApplication::local_command_line.
static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { static gboolean my_application_local_command_line(GApplication *application, gchar ***arguments, int *exit_status)
MyApplication* self = MY_APPLICATION(application); {
MyApplication *self = MY_APPLICATION(application);
// Strip out the first argument as it is the binary name. // Strip out the first argument as it is the binary name.
self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
g_autoptr(GError) error = nullptr; g_autoptr(GError) error = nullptr;
if (!g_application_register(application, nullptr, &error)) { if (!g_application_register(application, nullptr, &error))
g_warning("Failed to register: %s", error->message); {
*exit_status = 1; g_warning("Failed to register: %s", error->message);
return TRUE; *exit_status = 1;
return TRUE;
} }
g_application_activate(application); g_application_activate(application);
@ -81,42 +90,25 @@ static gboolean my_application_local_command_line(GApplication* application, gch
return TRUE; return TRUE;
} }
// Implements GApplication::startup.
static void my_application_startup(GApplication* application) {
//MyApplication* self = MY_APPLICATION(object);
// Perform any actions required at application startup.
G_APPLICATION_CLASS(my_application_parent_class)->startup(application);
}
// Implements GApplication::shutdown.
static void my_application_shutdown(GApplication* application) {
//MyApplication* self = MY_APPLICATION(object);
// Perform any actions required at application shutdown.
G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application);
}
// Implements GObject::dispose. // Implements GObject::dispose.
static void my_application_dispose(GObject* object) { static void my_application_dispose(GObject *object)
MyApplication* self = MY_APPLICATION(object); {
MyApplication *self = MY_APPLICATION(object);
g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
G_OBJECT_CLASS(my_application_parent_class)->dispose(object); G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
} }
static void my_application_class_init(MyApplicationClass* klass) { static void my_application_class_init(MyApplicationClass *klass)
{
G_APPLICATION_CLASS(klass)->activate = my_application_activate; G_APPLICATION_CLASS(klass)->activate = my_application_activate;
G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
G_APPLICATION_CLASS(klass)->startup = my_application_startup;
G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
G_OBJECT_CLASS(klass)->dispose = my_application_dispose; G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
} }
static void my_application_init(MyApplication* self) {} static void my_application_init(MyApplication *self) {}
MyApplication* my_application_new() { MyApplication *my_application_new()
{
return MY_APPLICATION(g_object_new(my_application_get_type(), return MY_APPLICATION(g_object_new(my_application_get_type(),
"application-id", APPLICATION_ID, "application-id", APPLICATION_ID,
"flags", G_APPLICATION_NON_UNIQUE, "flags", G_APPLICATION_NON_UNIQUE,

View File

@ -5,26 +5,24 @@
import FlutterMacOS import FlutterMacOS
import Foundation import Foundation
import audioplayers_darwin
import package_info_plus import package_info_plus
import path_provider_foundation import path_provider_foundation
import record_darwin import screen_retriever
import screen_retriever_macos
import serious_python_darwin import serious_python_darwin
import shared_preferences_foundation import shared_preferences_foundation
import url_launcher_macos import url_launcher_macos
import wakelock_plus
import window_manager import window_manager
import window_to_front import window_to_front
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
RecordPlugin.register(with: registry.registrar(forPlugin: "RecordPlugin")) ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin"))
SeriousPythonPlugin.register(with: registry.registrar(forPlugin: "SeriousPythonPlugin")) SeriousPythonPlugin.register(with: registry.registrar(forPlugin: "SeriousPythonPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin"))
WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin"))
WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin")) WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin"))
} }

View File

@ -226,9 +226,8 @@
33CC10E52044A3C60003C045 /* Project object */ = { 33CC10E52044A3C60003C045 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
BuildIndependentTargetsInParallel = YES;
LastSwiftUpdateCheck = 0920; LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 1510; LastUpgradeCheck = 1430;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
331C80D4294CF70F00263BE5 = { 331C80D4294CF70F00263BE5 = {
@ -385,7 +384,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{ cookiecutter.project_name }}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{ cookiecutter.project_name }}"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{ cookiecutter.project_name }}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{ cookiecutter.project_name }}";
@ -399,7 +398,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{ cookiecutter.project_name }}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{ cookiecutter.project_name }}"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{ cookiecutter.project_name }}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{ cookiecutter.project_name }}";
@ -413,7 +412,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }}.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{ cookiecutter.project_name }}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{ cookiecutter.project_name }}"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/{{ cookiecutter.project_name }}.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/{{ cookiecutter.project_name }}";
@ -425,7 +424,6 @@
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@ -449,11 +447,9 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -501,7 +497,6 @@
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@ -525,11 +520,9 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
@ -557,7 +550,6 @@
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@ -581,11 +573,9 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;

View File

@ -1,13 +1,9 @@
import Cocoa import Cocoa
import FlutterMacOS import FlutterMacOS
@main @NSApplicationMain
class AppDelegate: FlutterAppDelegate { class AppDelegate: FlutterAppDelegate {
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true return true
} }
override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
return true
}
} }

View File

@ -8,7 +8,7 @@
PRODUCT_NAME = {{ cookiecutter.product_name }} PRODUCT_NAME = {{ cookiecutter.product_name }}
// The application's bundle identifier // The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.bundle_id }} PRODUCT_BUNDLE_IDENTIFIER = {{ cookiecutter.org_name }}.{{ cookiecutter.project_name }}
// The copyright displayed in application information // The copyright displayed in application information
PRODUCT_COPYRIGHT = {{ cookiecutter.copyright }}. All rights reserved. PRODUCT_COPYRIGHT = {{ cookiecutter.copyright }}. All rights reserved.

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<!-- flet: entitlement {% for k, v in cookiecutter.options.macos_entitlements.items() %} --> <key>com.apple.security.app-sandbox</key>
<key>{{ k }}</key> <false/>
<!-- flet: True {% if v == True %} --> <key>com.apple.security.cs.allow-jit</key>
<true /> <true/>
<!-- flet: False {% elif v == False %} --> <key>com.apple.security.network.server</key>
<false /> <true/>
<!-- flet: end of entitlement {% endif %} {% endfor %} --> </dict>
</dict> </plist>
</plist>

View File

@ -1,62 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key> <key>CFBundleIconFile</key>
<string></string> <string></string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string> <string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string> <string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string> <string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string> <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>
<string>$(PRODUCT_COPYRIGHT)</string> <string>$(PRODUCT_COPYRIGHT)</string>
<key>NSMainNibFile</key> <key>NSMainNibFile</key>
<string>MainMenu</string> <string>MainMenu</string>
<key>NSPrincipalClass</key> <key>NSPrincipalClass</key>
<string>NSApplication</string> <string>NSApplication</string>
</dict>
{% macro render_dict(d) -%} </plist>
{% for key, value in d.items() -%}
<key>{{ key }}</key>
{% if value is string -%}
<string>{{ value }}</string>
{% elif value is boolean -%}
<{{ "true" if value else "false" }}/>
{% elif value is mapping -%}
<dict>
{{ render_dict(value) }}
</dict>
{% elif value is sequence -%} {# Support for lists/arrays #}
<array>
{% for item in value -%}
{% if item is string -%}
<string>{{ item }}</string>
{% elif item is boolean -%}
<{{ "true" if item else "false" }}/>
{% elif item is mapping -%}
<dict>
{{ render_dict(item) }}
</dict>
{% endif -%}
{% endfor -%}
</array>
{% endif -%}
{% endfor -%}
{% endmacro -%}
{{ render_dict(cookiecutter.options.info_plist) }}
</dict>
</plist>

View File

@ -1,6 +1,5 @@
import Cocoa import Cocoa
import FlutterMacOS import FlutterMacOS
import window_manager
class MainFlutterWindow: NSWindow { class MainFlutterWindow: NSWindow {
override func awakeFromNib() { override func awakeFromNib() {
@ -13,9 +12,4 @@ class MainFlutterWindow: NSWindow {
super.awakeFromNib() super.awakeFromNib()
} }
override public func order(_ place: NSWindow.OrderingMode, relativeTo otherWin: Int) {
super.order(place, relativeTo: otherWin)
hiddenWindowAtLaunch()
}
} }

View File

@ -1,13 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<!-- flet: entitlement {% for k, v in cookiecutter.options.macos_entitlements.items() %} --> <key>com.apple.security.app-sandbox</key>
<key>{{ k }}</key> <false/>
<!-- flet: True {% if v == True %} --> </dict>
<true /> </plist>
<!-- flet: False {% elif v == False %} -->
<false />
<!-- flet: end of entitlement {% endif %} {% endfor %} -->
</dict>
</plist>

View File

@ -1,5 +1,5 @@
name: '{{ cookiecutter.project_name }}' name: {{ cookiecutter.project_name.replace("-", "_") }}
description: '{{ cookiecutter.project_description }}' description: {{ cookiecutter.project_description }}
publish_to: 'none' publish_to: 'none'
version: 1.0.0+1 version: 1.0.0+1
@ -11,62 +11,31 @@ dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
serious_python: 0.9.2 serious_python: ^0.7.0
# serious_python:
# git:
# url: https://github.com/flet-dev/serious-python
# path: src/serious_python
# ref: 'd059aef'
flet: ^0.19.0
# flet:
# git:
# url: https://github.com/flet-dev/flet.git
# path: package
# ref: '37b9581'
path: ^1.9.0 path: ^1.8.3
url_strategy: ^0.2.0 url_strategy: ^0.2.0
cupertino_icons: ^1.0.6 cupertino_icons: ^1.0.2
path_provider: ^2.1.4
package_info_plus: ^8.0.2
window_manager: ^0.4.3
dependency_overrides:
#flet: 0.27.6
flet:
git:
path: packages/flet
ref: main
url: https://github.com/flet-dev/flet.git
# serious_python: 0.9.4
serious_python:
git:
url: https://github.com/flet-dev/serious-python.git
ref: ios-bundle-id-fix
path: src/serious_python
wakelock_plus: ^1.2.10
web: ^1.0.0
window_manager: ^0.4.3
# {% if 'flet_audio_recorder' in cookiecutter.flutter.dependencies %}
record: ^5.1.1
# {% endif %}
# {% if 'flet_webview' in cookiecutter.flutter.dependencies %}
webview_flutter_android: ^4.0.0
# {% endif %}
# {% if 'flet_geolocator' in cookiecutter.flutter.dependencies %}
# geolocator: ^12.0.0
# geolocator_android: ^4.6.0
# {% endif %}
dev_dependencies: dev_dependencies:
flutter_launcher_icons: ^0.14.1
flutter_native_splash: ^2.4.1
flutter_lints: ^2.0.0
integration_test:
sdk: flutter
flutter_test: flutter_test:
sdk: flutter sdk: flutter
flet_integration_test:
git: flutter_launcher_icons: "^0.13.1"
url: https://github.com/flet-dev/flet.git flutter_native_splash: ^2.3.6
ref: v1-flet-test flutter_lints: ^2.0.0
path: packages/flet_integration_test
flutter: flutter:
@ -82,8 +51,6 @@ flutter_launcher_icons:
android: true android: true
image_path_android: "images/icon.png" image_path_android: "images/icon.png"
adaptive_icon_background: '#ffffff'
adaptive_icon_foreground: images/icon.png
ios: true ios: true
image_path_ios: "images/icon.png" image_path_ios: "images/icon.png"
@ -135,10 +102,14 @@ flutter_native_splash:
# 768 pixels in diameter. # 768 pixels in diameter.
image: "images/icon.png" image: "images/icon.png"
# Splash screen background color.
color: "#ffffff"
# The image_dark, color_dark, icon_background_color_dark, and branding_dark set values that # The image_dark, color_dark, icon_background_color_dark, and branding_dark set values that
# apply when the device is in dark mode. If they are not specified, the app will use the # apply when the device is in dark mode. If they are not specified, the app will use the
# parameters from above. # parameters from above.
image_dark: "images/icon.png" image_dark: "images/icon.png"
color_dark: "#333333"
# The android, ios and web parameters can be used to disable generating a splash screen on a given # The android, ios and web parameters can be used to disable generating a splash screen on a given
# platform. # platform.
@ -159,4 +130,4 @@ flutter_native_splash:
image_ios: "images/icon.png" image_ios: "images/icon.png"
image_dark_ios: "images/icon.png" image_dark_ios: "images/icon.png"
image_web: "images/icon.png" image_web: "images/icon.png"
image_dark_web: "images/icon.png" image_dark_web: "images/icon.png"

View File

@ -1,28 +0,0 @@
[
{
"family": "MaterialIcons",
"fonts": [
{
"asset": "fonts/MaterialIcons-Regular.otf"
}
]
},
{% if cookiecutter.no_cdn %}
{
"family": "Roboto",
"fonts": [
{
"asset": "fonts/roboto.woff2"
}
]
},
{% endif %}
{
"family": "packages/cupertino_icons/CupertinoIcons",
"fonts": [
{
"asset": "packages/cupertino_icons/assets/CupertinoIcons.ttf"
}
]
}
]

View File

@ -1,192 +0,0 @@
var CanvasKitInit = (() => {
var _scriptName = import.meta.url;
return (
function(moduleArg = {}) {
var moduleRtn;
var r=moduleArg,ba,ca,da=new Promise((a,b)=>{ba=a;ca=b}),fa="object"==typeof window,ia="function"==typeof importScripts;
(function(a){a.ce=a.ce||[];a.ce.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,e="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||e||(c=document.getElementById(b),c)))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.Ae=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var e={width:b,height:c,colorType:a.ColorType.RGBA_8888,
alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},f=b*c*4,k=a._malloc(f);if(e=a.Surface._makeRasterDirect(e,k,4*b))e.Ae=null,e.$e=b,e.Xe=c,e.Ye=f,e.He=k,e.getCanvas().clear(a.TRANSPARENT);return e};a.MakeRasterDirectSurface=function(b,c,e){return a.Surface._makeRasterDirect(b,c.byteOffset,e)};a.Surface.prototype.flush=function(b){a.$d(this.Zd);this._flush();if(this.Ae){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.He,this.Ye);c=new ImageData(c,this.$e,this.Xe);b?this.Ae.getContext("2d").putImageData(c,
0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.Ae.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=function(){this.He&&a._free(this.He);this.delete()};a.$d=a.$d||function(){};a.Be=a.Be||function(){return null}})})(r);
(function(a){a.ce=a.ce||[];a.ce.push(function(){function b(l,p,v){return l&&l.hasOwnProperty(p)?l[p]:v}function c(l){var p=ja(ka);ka[p]=l;return p}function e(l){return l.naturalHeight||l.videoHeight||l.displayHeight||l.height}function f(l){return l.naturalWidth||l.videoWidth||l.displayWidth||l.width}function k(l,p,v,w){l.bindTexture(l.TEXTURE_2D,p);w||v.alphaType!==a.AlphaType.Premul||l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);return p}function n(l,p,v){v||p.alphaType!==a.AlphaType.Premul||
l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null)}a.GetWebGLContext=function(l,p){if(!l)throw"null canvas passed into makeWebGLContext";var v={alpha:b(p,"alpha",1),depth:b(p,"depth",1),stencil:b(p,"stencil",8),antialias:b(p,"antialias",0),premultipliedAlpha:b(p,"premultipliedAlpha",1),preserveDrawingBuffer:b(p,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(p,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(p,"failIfMajorPerformanceCaveat",
0),enableExtensionsByDefault:b(p,"enableExtensionsByDefault",1),explicitSwapControl:b(p,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(p,"renderViaOffscreenBackBuffer",0)};v.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw"explicitSwapControl is not supported";l=na(l,v);if(!l)return 0;oa(l);z.le.getExtension("WEBGL_debug_renderer_info");return l};a.deleteContext=function(l){z===pa[l]&&(z=null);"object"==typeof JSEvents&&
JSEvents.Af(pa[l].le.canvas);pa[l]&&pa[l].le.canvas&&(pa[l].le.canvas.Ve=void 0);pa[l]=null};a._setTextureCleanup({deleteTexture:function(l,p){var v=ka[p];v&&pa[l].le.deleteTexture(v);ka[p]=null}});a.MakeWebGLContext=function(l){if(!this.$d(l))return null;var p=this._MakeGrContext();if(!p)return null;p.Zd=l;var v=p.delete.bind(p);p["delete"]=function(){a.$d(this.Zd);v()}.bind(p);return z.Je=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.$d(this.Zd);
this._getResourceCacheLimitBytes()};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.$d(this.Zd);this._getResourceCacheUsageBytes()};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.$d(this.Zd);this._releaseResourcesAndAbandonContext()};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(l){a.$d(this.Zd);this._setResourceCacheLimitBytes(l)};a.MakeOnScreenGLSurface=function(l,p,v,w,A,D){if(!this.$d(l.Zd))return null;p=void 0===A||void 0===D?
this._MakeOnScreenGLSurface(l,p,v,w):this._MakeOnScreenGLSurface(l,p,v,w,A,D);if(!p)return null;p.Zd=l.Zd;return p};a.MakeRenderTarget=function(){var l=arguments[0];if(!this.$d(l.Zd))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(l,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(l,arguments[1]),!p)return null}else return null;p.Zd=l.Zd;return p};a.MakeWebGLCanvasSurface=function(l,p,v){p=p||null;var w=l,A="undefined"!==
typeof OffscreenCanvas&&w instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&w instanceof HTMLCanvasElement||A||(w=document.getElementById(l),w)))throw"Canvas with id "+l+" was not found";l=this.GetWebGLContext(w,v);if(!l||0>l)throw"failed to create webgl context: err "+l;l=this.MakeWebGLContext(l);p=this.MakeOnScreenGLSurface(l,w.width,w.height,p);return p?p:(p=w.cloneNode(!0),w.parentNode.replaceChild(p,w),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface=
a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(l,p){a.$d(this.Zd);l=c(l);if(p=this._makeImageFromTexture(this.Zd,l,p))p.ue=l;return p};a.Surface.prototype.makeImageFromTextureSource=function(l,p,v){p||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.$d(this.Zd);var w=z.le;v=k(w,w.createTexture(),p,v);2===z.version?w.texImage2D(w.TEXTURE_2D,0,w.RGBA,p.width,p.height,
0,w.RGBA,w.UNSIGNED_BYTE,l):w.texImage2D(w.TEXTURE_2D,0,w.RGBA,w.RGBA,w.UNSIGNED_BYTE,l);n(w,p);this._resetContext();return this.makeImageFromTexture(v,p)};a.Surface.prototype.updateTextureFromSource=function(l,p,v){if(l.ue){a.$d(this.Zd);var w=l.getImageInfo(),A=z.le,D=k(A,ka[l.ue],w,v);2===z.version?A.texImage2D(A.TEXTURE_2D,0,A.RGBA,f(p),e(p),0,A.RGBA,A.UNSIGNED_BYTE,p):A.texImage2D(A.TEXTURE_2D,0,A.RGBA,A.RGBA,A.UNSIGNED_BYTE,p);n(A,w,v);this._resetContext();ka[l.ue]=null;l.ue=c(D);w.colorSpace=
l.getColorSpace();p=this._makeImageFromTexture(this.Zd,l.ue,w);v=l.Yd.ae;A=l.Yd.ee;l.Yd.ae=p.Yd.ae;l.Yd.ee=p.Yd.ee;p.Yd.ae=v;p.Yd.ee=A;p.delete();w.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(l,p,v){p||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var w={makeTexture:function(){var A=z,D=A.le,I=k(D,D.createTexture(),p,v);2===A.version?D.texImage2D(D.TEXTURE_2D,0,D.RGBA,
p.width,p.height,0,D.RGBA,D.UNSIGNED_BYTE,l):D.texImage2D(D.TEXTURE_2D,0,D.RGBA,D.RGBA,D.UNSIGNED_BYTE,l);n(D,p,v);return c(I)},freeSrc:function(){}};"VideoFrame"===l.constructor.name&&(w.freeSrc=function(){l.close()});return a.Image._makeFromGenerator(p,w)};a.$d=function(l){return l?oa(l):!1};a.Be=function(){return z&&z.Je&&!z.Je.isDeleted()?z.Je:null}})})(r);
(function(a){function b(g){return(f(255*g[3])<<24|f(255*g[0])<<16|f(255*g[1])<<8|f(255*g[2])<<0)>>>0}function c(g){if(g&&g._ck)return g;if(g instanceof Float32Array){for(var d=Math.floor(g.length/4),h=new Uint32Array(d),m=0;m<d;m++)h[m]=b(g.slice(4*m,4*(m+1)));return h}if(g instanceof Uint32Array)return g;if(g instanceof Array&&g[0]instanceof Float32Array)return g.map(b)}function e(g){if(void 0===g)return 1;var d=parseFloat(g);return g&&-1!==g.indexOf("%")?d/100:d}function f(g){return Math.round(Math.max(0,
Math.min(g||0,255)))}function k(g,d){d&&d._ck||a._free(g)}function n(g,d,h){if(!g||!g.length)return 0;if(g&&g._ck)return g.byteOffset;var m=a[d].BYTES_PER_ELEMENT;h||=a._malloc(g.length*m);a[d].set(g,h/m);return h}function l(g){var d={he:0,count:g.length,colorType:a.ColorType.RGBA_F32};if(g instanceof Float32Array)d.he=n(g,"HEAPF32"),d.count=g.length/4;else if(g instanceof Uint32Array)d.he=n(g,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(g instanceof Array){if(g&&g.length){for(var h=a._malloc(16*
g.length),m=0,t=h/4,u=0;u<g.length;u++)for(var x=0;4>x;x++)a.HEAPF32[t+m]=g[u][x],m++;g=h}else g=0;d.he=g}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof g;return d}function p(g){if(!g)return 0;var d=aa.toTypedArray();if(g.length){if(6===g.length||9===g.length)return n(g,"HEAPF32",P),6===g.length&&a.HEAPF32.set(Vc,6+P/4),P;if(16===g.length)return d[0]=g[0],d[1]=g[1],d[2]=g[3],d[3]=g[4],d[4]=g[5],d[5]=g[7],d[6]=g[12],d[7]=g[13],d[8]=g[15],P;throw"invalid matrix size";
}if(void 0===g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m41;d[3]=g.m12;d[4]=g.m22;d[5]=g.m42;d[6]=g.m14;d[7]=g.m24;d[8]=g.m44;return P}function v(g){if(!g)return 0;var d=X.toTypedArray();if(g.length){if(16!==g.length&&6!==g.length&&9!==g.length)throw"invalid matrix size";if(16===g.length)return n(g,"HEAPF32",la);d.fill(0);d[0]=g[0];d[1]=g[1];d[3]=g[2];d[4]=g[3];d[5]=g[4];d[7]=g[5];d[10]=1;d[12]=g[6];d[13]=g[7];d[15]=g[8];6===g.length&&(d[12]=0,d[13]=0,d[15]=1);return la}if(void 0===
g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m31;d[3]=g.m41;d[4]=g.m12;d[5]=g.m22;d[6]=g.m32;d[7]=g.m42;d[8]=g.m13;d[9]=g.m23;d[10]=g.m33;d[11]=g.m43;d[12]=g.m14;d[13]=g.m24;d[14]=g.m34;d[15]=g.m44;return la}function w(g,d){return n(g,"HEAPF32",d||ha)}function A(g,d,h,m){var t=Ea.toTypedArray();t[0]=g;t[1]=d;t[2]=h;t[3]=m;return ha}function D(g){for(var d=new Float32Array(4),h=0;4>h;h++)d[h]=a.HEAPF32[g/4+h];return d}function I(g,d){return n(g,"HEAPF32",d||V)}function Q(g,d){return n(g,
"HEAPF32",d||tb)}a.Color=function(g,d,h,m){void 0===m&&(m=1);return a.Color4f(f(g)/255,f(d)/255,f(h)/255,m)};a.ColorAsInt=function(g,d,h,m){void 0===m&&(m=255);return(f(m)<<24|f(g)<<16|f(d)<<8|f(h)<<0&268435455)>>>0};a.Color4f=function(g,d,h,m){void 0===m&&(m=1);return Float32Array.of(g,d,h,m)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,"WHITE",{get:function(){return a.Color4f(1,
1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,0,1,1)}});a.getColorComponents=function(g){return[Math.floor(255*
g[0]),Math.floor(255*g[1]),Math.floor(255*g[2]),g[3]]};a.parseColorString=function(g,d){g=g.toLowerCase();if(g.startsWith("#")){d=255;switch(g.length){case 9:d=parseInt(g.slice(7,9),16);case 7:var h=parseInt(g.slice(1,3),16);var m=parseInt(g.slice(3,5),16);var t=parseInt(g.slice(5,7),16);break;case 5:d=17*parseInt(g.slice(4,5),16);case 4:h=17*parseInt(g.slice(1,2),16),m=17*parseInt(g.slice(2,3),16),t=17*parseInt(g.slice(3,4),16)}return a.Color(h,m,t,d/255)}return g.startsWith("rgba")?(g=g.slice(5,
-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("rgb")?(g=g.slice(4,-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("gray(")||g.startsWith("hsl")||!d||(g=d[g],void 0===g)?a.BLACK:g};a.multiplyByAlpha=function(g,d){g=g.slice();g[3]=Math.max(0,Math.min(g[3]*d,1));return g};a.Malloc=function(g,d){var h=a._malloc(d*g.BYTES_PER_ELEMENT);return{_ck:!0,length:d,byteOffset:h,qe:null,subarray:function(m,t){m=this.toTypedArray().subarray(m,t);m._ck=!0;return m},toTypedArray:function(){if(this.qe&&
this.qe.length)return this.qe;this.qe=new g(a.HEAPU8.buffer,h,d);this.qe._ck=!0;return this.qe}}};a.Free=function(g){a._free(g.byteOffset);g.byteOffset=0;g.toTypedArray=null;g.qe=null};var P=0,aa,la=0,X,ha=0,Ea,ea,V=0,Ub,Aa=0,Vb,ub=0,Wb,vb=0,$a,Ma=0,Xb,tb=0,Yb,Zb=0,Vc=Float32Array.of(0,0,1);a.onRuntimeInitialized=function(){function g(d,h,m,t,u,x,C){x||(x=4*t.width,t.colorType===a.ColorType.RGBA_F16?x*=2:t.colorType===a.ColorType.RGBA_F32&&(x*=4));var G=x*t.height;var F=u?u.byteOffset:a._malloc(G);
if(C?!d._readPixels(t,F,x,h,m,C):!d._readPixels(t,F,x,h,m))return u||a._free(F),null;if(u)return u.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,F,G)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,F,G)).slice();break;default:return null}a._free(F);return d}Ea=a.Malloc(Float32Array,4);ha=Ea.byteOffset;X=a.Malloc(Float32Array,16);la=X.byteOffset;aa=a.Malloc(Float32Array,9);P=aa.byteOffset;Xb=a.Malloc(Float32Array,
12);tb=Xb.byteOffset;Yb=a.Malloc(Float32Array,12);Zb=Yb.byteOffset;ea=a.Malloc(Float32Array,4);V=ea.byteOffset;Ub=a.Malloc(Float32Array,4);Aa=Ub.byteOffset;Vb=a.Malloc(Float32Array,3);ub=Vb.byteOffset;Wb=a.Malloc(Float32Array,3);vb=Wb.byteOffset;$a=a.Malloc(Int32Array,4);Ma=$a.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=
function(d){var h=n(d,"HEAPF32"),m=a.Path._MakeFromCmds(h,d.length);k(h,d);return m};a.Path.MakeFromVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),x=n(m,"HEAPF32"),C=a.Path._MakeFromVerbsPointsWeights(t,d.length,u,h.length,x,m&&m.length||0);k(t,d);k(u,h);k(x,m);return C};a.Path.prototype.addArc=function(d,h,m){d=I(d);this._addArc(d,h,m);return this};a.Path.prototype.addCircle=function(d,h,m,t){this._addCircle(d,h,m,!!t);return this};a.Path.prototype.addOval=function(d,h,m){void 0===
m&&(m=1);d=I(d);this._addOval(d,!!h,m);return this};a.Path.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),h=d[0],m=!1;"boolean"===typeof d[d.length-1]&&(m=d.pop());if(1===d.length)this._addPath(h,1,0,0,0,1,0,0,0,1,m);else if(2===d.length)d=d[1],this._addPath(h,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,m);else if(7===d.length||10===d.length)this._addPath(h,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||0,d[8]||0,d[9]||1,m);else return null;return this};a.Path.prototype.addPoly=
function(d,h){var m=n(d,"HEAPF32");this._addPoly(m,d.length/2,h);k(m,d);return this};a.Path.prototype.addRect=function(d,h){d=I(d);this._addRect(d,!!h);return this};a.Path.prototype.addRRect=function(d,h){d=Q(d);this._addRRect(d,!!h);return this};a.Path.prototype.addVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),x=n(m,"HEAPF32");this._addVerbsPointsWeights(t,d.length,u,h.length,x,m&&m.length||0);k(t,d);k(u,h);k(x,m)};a.Path.prototype.arc=function(d,h,m,t,u,x){d=a.LTRBRect(d-
m,h-m,d+m,h+m);u=(u-t)/Math.PI*180-360*!!x;x=new a.Path;x.addArc(d,t/Math.PI*180,u);this.addPath(x,!0);x.delete();return this};a.Path.prototype.arcToOval=function(d,h,m,t){d=I(d);this._arcToOval(d,h,m,t);return this};a.Path.prototype.arcToRotated=function(d,h,m,t,u,x,C){this._arcToRotated(d,h,m,!!t,!!u,x,C);return this};a.Path.prototype.arcToTangent=function(d,h,m,t,u){this._arcToTangent(d,h,m,t,u);return this};a.Path.prototype.close=function(){this._close();return this};a.Path.prototype.conicTo=
function(d,h,m,t,u){this._conicTo(d,h,m,t,u);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.Path.prototype.cubicTo=function(d,h,m,t,u,x){this._cubicTo(d,h,m,t,u,x);return this};a.Path.prototype.dash=function(d,h,m){return this._dash(d,h,m)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.Path.prototype.lineTo=function(d,
h){this._lineTo(d,h);return this};a.Path.prototype.moveTo=function(d,h){this._moveTo(d,h);return this};a.Path.prototype.offset=function(d,h){this._transform(1,0,d,0,1,h,0,0,1);return this};a.Path.prototype.quadTo=function(d,h,m,t){this._quadTo(d,h,m,t);return this};a.Path.prototype.rArcTo=function(d,h,m,t,u,x,C){this._rArcTo(d,h,m,t,u,x,C);return this};a.Path.prototype.rConicTo=function(d,h,m,t,u){this._rConicTo(d,h,m,t,u);return this};a.Path.prototype.rCubicTo=function(d,h,m,t,u,x){this._rCubicTo(d,
h,m,t,u,x);return this};a.Path.prototype.rLineTo=function(d,h){this._rLineTo(d,h);return this};a.Path.prototype.rMoveTo=function(d,h){this._rMoveTo(d,h);return this};a.Path.prototype.rQuadTo=function(d,h,m,t){this._rQuadTo(d,h,m,t);return this};a.Path.prototype.stroke=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._stroke(d)?this:null};a.Path.prototype.transform=function(){if(1===
arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1)}else if(6===arguments.length||9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(d,h,m){return this._trim(d,h,!!m)?this:null};a.Image.prototype.encodeToBytes=function(d,h){var m=a.Be();d=d||a.ImageFormat.PNG;h=h||100;
return m?this._encodeToBytes(d,h,m):this._encodeToBytes(d,h)};a.Image.prototype.makeShaderCubic=function(d,h,m,t,u){u=p(u);return this._makeShaderCubic(d,h,m,t,u)};a.Image.prototype.makeShaderOptions=function(d,h,m,t,u){u=p(u);return this._makeShaderOptions(d,h,m,t,u)};a.Image.prototype.readPixels=function(d,h,m,t,u){var x=a.Be();return g(this,d,h,m,t,u,x)};a.Canvas.prototype.clear=function(d){a.$d(this.Zd);d=w(d);this._clear(d)};a.Canvas.prototype.clipRRect=function(d,h,m){a.$d(this.Zd);d=Q(d);this._clipRRect(d,
h,m)};a.Canvas.prototype.clipRect=function(d,h,m){a.$d(this.Zd);d=I(d);this._clipRect(d,h,m)};a.Canvas.prototype.concat=function(d){a.$d(this.Zd);d=v(d);this._concat(d)};a.Canvas.prototype.drawArc=function(d,h,m,t,u){a.$d(this.Zd);d=I(d);this._drawArc(d,h,m,t,u)};a.Canvas.prototype.drawAtlas=function(d,h,m,t,u,x,C){if(d&&t&&h&&m&&h.length===m.length){a.$d(this.Zd);u||(u=a.BlendMode.SrcOver);var G=n(h,"HEAPF32"),F=n(m,"HEAPF32"),S=m.length/4,T=n(c(x),"HEAPU32");if(C&&"B"in C&&"C"in C)this._drawAtlasCubic(d,
F,G,T,S,u,C.B,C.C,t);else{let q=a.FilterMode.Linear,y=a.MipmapMode.None;C&&(q=C.filter,"mipmap"in C&&(y=C.mipmap));this._drawAtlasOptions(d,F,G,T,S,u,q,y,t)}k(G,h);k(F,m);k(T,x)}};a.Canvas.prototype.drawCircle=function(d,h,m,t){a.$d(this.Zd);this._drawCircle(d,h,m,t)};a.Canvas.prototype.drawColor=function(d,h){a.$d(this.Zd);d=w(d);void 0!==h?this._drawColor(d,h):this._drawColor(d)};a.Canvas.prototype.drawColorInt=function(d,h){a.$d(this.Zd);this._drawColorInt(d,h||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents=
function(d,h,m,t,u){a.$d(this.Zd);d=A(d,h,m,t);void 0!==u?this._drawColor(d,u):this._drawColor(d)};a.Canvas.prototype.drawDRRect=function(d,h,m){a.$d(this.Zd);d=Q(d,tb);h=Q(h,Zb);this._drawDRRect(d,h,m)};a.Canvas.prototype.drawImage=function(d,h,m,t){a.$d(this.Zd);this._drawImage(d,h,m,t||null)};a.Canvas.prototype.drawImageCubic=function(d,h,m,t,u,x){a.$d(this.Zd);this._drawImageCubic(d,h,m,t,u,x||null)};a.Canvas.prototype.drawImageOptions=function(d,h,m,t,u,x){a.$d(this.Zd);this._drawImageOptions(d,
h,m,t,u,x||null)};a.Canvas.prototype.drawImageNine=function(d,h,m,t,u){a.$d(this.Zd);h=n(h,"HEAP32",Ma);m=I(m);this._drawImageNine(d,h,m,t,u||null)};a.Canvas.prototype.drawImageRect=function(d,h,m,t,u){a.$d(this.Zd);I(h,V);I(m,Aa);this._drawImageRect(d,V,Aa,t,!!u)};a.Canvas.prototype.drawImageRectCubic=function(d,h,m,t,u,x){a.$d(this.Zd);I(h,V);I(m,Aa);this._drawImageRectCubic(d,V,Aa,t,u,x||null)};a.Canvas.prototype.drawImageRectOptions=function(d,h,m,t,u,x){a.$d(this.Zd);I(h,V);I(m,Aa);this._drawImageRectOptions(d,
V,Aa,t,u,x||null)};a.Canvas.prototype.drawLine=function(d,h,m,t,u){a.$d(this.Zd);this._drawLine(d,h,m,t,u)};a.Canvas.prototype.drawOval=function(d,h){a.$d(this.Zd);d=I(d);this._drawOval(d,h)};a.Canvas.prototype.drawPaint=function(d){a.$d(this.Zd);this._drawPaint(d)};a.Canvas.prototype.drawParagraph=function(d,h,m){a.$d(this.Zd);this._drawParagraph(d,h,m)};a.Canvas.prototype.drawPatch=function(d,h,m,t,u){if(24>d.length)throw"Need 12 cubic points";if(h&&4>h.length)throw"Need 4 colors";if(m&&8>m.length)throw"Need 4 shader coordinates";
a.$d(this.Zd);const x=n(d,"HEAPF32"),C=h?n(c(h),"HEAPU32"):0,G=m?n(m,"HEAPF32"):0;t||(t=a.BlendMode.Modulate);this._drawPatch(x,C,G,t,u);k(G,m);k(C,h);k(x,d)};a.Canvas.prototype.drawPath=function(d,h){a.$d(this.Zd);this._drawPath(d,h)};a.Canvas.prototype.drawPicture=function(d){a.$d(this.Zd);this._drawPicture(d)};a.Canvas.prototype.drawPoints=function(d,h,m){a.$d(this.Zd);var t=n(h,"HEAPF32");this._drawPoints(d,t,h.length/2,m);k(t,h)};a.Canvas.prototype.drawRRect=function(d,h){a.$d(this.Zd);d=Q(d);
this._drawRRect(d,h)};a.Canvas.prototype.drawRect=function(d,h){a.$d(this.Zd);d=I(d);this._drawRect(d,h)};a.Canvas.prototype.drawRect4f=function(d,h,m,t,u){a.$d(this.Zd);this._drawRect4f(d,h,m,t,u)};a.Canvas.prototype.drawShadow=function(d,h,m,t,u,x,C){a.$d(this.Zd);var G=n(u,"HEAPF32"),F=n(x,"HEAPF32");h=n(h,"HEAPF32",ub);m=n(m,"HEAPF32",vb);this._drawShadow(d,h,m,t,G,F,C);k(G,u);k(F,x)};a.getShadowLocalBounds=function(d,h,m,t,u,x,C){d=p(d);m=n(m,"HEAPF32",ub);t=n(t,"HEAPF32",vb);if(!this._getShadowLocalBounds(d,
h,m,t,u,x,V))return null;h=ea.toTypedArray();return C?(C.set(h),C):h.slice()};a.Canvas.prototype.drawTextBlob=function(d,h,m,t){a.$d(this.Zd);this._drawTextBlob(d,h,m,t)};a.Canvas.prototype.drawVertices=function(d,h,m){a.$d(this.Zd);this._drawVertices(d,h,m)};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(Ma);var h=$a.toTypedArray();d?d.set(h):d=h.slice();return d};a.Canvas.prototype.quickReject=function(d){d=I(d);return this._quickReject(d)};a.Canvas.prototype.getLocalToDevice=
function(){this._getLocalToDevice(la);for(var d=la,h=Array(16),m=0;16>m;m++)h[m]=a.HEAPF32[d/4+m];return h};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(P);for(var d=Array(9),h=0;9>h;h++)d[h]=a.HEAPF32[P/4+h];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Zd=this.Zd;return d};a.Canvas.prototype.readPixels=function(d,h,m,t,u){a.$d(this.Zd);return g(this,d,h,m,t,u)};a.Canvas.prototype.saveLayer=function(d,h,m,t,u){h=I(h);return this._saveLayer(d||
null,h,m||null,t||0,u||a.TileMode.Clamp)};a.Canvas.prototype.writePixels=function(d,h,m,t,u,x,C,G){if(d.byteLength%(h*m))throw"pixels length must be a multiple of the srcWidth * srcHeight";a.$d(this.Zd);var F=d.byteLength/(h*m);x=x||a.AlphaType.Unpremul;C=C||a.ColorType.RGBA_8888;G=G||a.ColorSpace.SRGB;var S=F*h;F=n(d,"HEAPU8");h=this._writePixels({width:h,height:m,colorType:C,alphaType:x,colorSpace:G},F,S,t,u);k(F,d);return h};a.ColorFilter.MakeBlend=function(d,h,m){d=w(d);m=m||a.ColorSpace.SRGB;
return a.ColorFilter._MakeBlend(d,h,m)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw"invalid color matrix";var h=n(d,"HEAPF32"),m=a.ColorFilter._makeMatrix(h);k(h,d);return m};a.ContourMeasure.prototype.getPosTan=function(d,h){this._getPosTan(d,V);d=ea.toTypedArray();return h?(h.set(d),h):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,h,m){d=I(d,V);h=p(h);this._getOutputBounds(d,h,Ma);h=$a.toTypedArray();return m?(m.set(h),m):h.slice()};a.ImageFilter.MakeDropShadow=
function(d,h,m,t,u,x){u=w(u,ha);return a.ImageFilter._MakeDropShadow(d,h,m,t,u,x)};a.ImageFilter.MakeDropShadowOnly=function(d,h,m,t,u,x){u=w(u,ha);return a.ImageFilter._MakeDropShadowOnly(d,h,m,t,u,x)};a.ImageFilter.MakeImage=function(d,h,m,t){m=I(m,V);t=I(t,Aa);if("B"in h&&"C"in h)return a.ImageFilter._MakeImageCubic(d,h.B,h.C,m,t);const u=h.filter;let x=a.MipmapMode.None;"mipmap"in h&&(x=h.mipmap);return a.ImageFilter._MakeImageOptions(d,u,x,m,t)};a.ImageFilter.MakeMatrixTransform=function(d,h,
m){d=p(d);if("B"in h&&"C"in h)return a.ImageFilter._MakeMatrixTransformCubic(d,h.B,h.C,m);const t=h.filter;let u=a.MipmapMode.None;"mipmap"in h&&(u=h.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,t,u,m)};a.Paint.prototype.getColor=function(){this._getColor(ha);return D(ha)};a.Paint.prototype.setColor=function(d,h){h=h||null;d=w(d);this._setColor(d,h)};a.Paint.prototype.setColorComponents=function(d,h,m,t,u){u=u||null;d=A(d,h,m,t);this._setColor(d,u)};a.Path.prototype.getPoint=function(d,
h){this._getPoint(d,V);d=ea.toTypedArray();return h?(h[0]=d[0],h[1]=d[1],h):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,h,m,t,u){t=p(t);u=I(u);return this._makeShader(d,h,m,t,u)};a.Picture.prototype.cullRect=function(d){this._cullRect(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.PictureRecorder.prototype.beginRecording=function(d,h){d=I(d);return this._beginRecording(d,!!h)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Zd=this.Zd;return d};a.Surface.prototype.makeImageSnapshot=
function(d){a.$d(this.Zd);d=n(d,"HEAP32",Ma);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.$d(this.Zd);d=this._makeSurface(d);d.Zd=this.Zd;return d};a.Surface.prototype.Ze=function(d,h){this.te||(this.te=this.getCanvas());return requestAnimationFrame(function(){a.$d(this.Zd);d(this.te);this.flush(h)}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Ze);a.Surface.prototype.We=function(d,h){this.te||
(this.te=this.getCanvas());requestAnimationFrame(function(){a.$d(this.Zd);d(this.te);this.flush(h);this.dispose()}.bind(this))};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.We);a.PathEffect.MakeDash=function(d,h){h||=0;if(!d.length||1===d.length%2)throw"Intervals array must have even length";var m=n(d,"HEAPF32");h=a.PathEffect._MakeDash(m,d.length,h);k(m,d);return h};a.PathEffect.MakeLine2D=function(d,h){h=p(h);return a.PathEffect._MakeLine2D(d,h)};a.PathEffect.MakePath2D=
function(d,h){d=p(d);return a.PathEffect._MakePath2D(d,h)};a.Shader.MakeColor=function(d,h){h=h||null;d=w(d);return a.Shader._MakeColor(d,h)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,h,m,t,u,x,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;x=p(x);var T=ea.toTypedArray();T.set(d);T.set(h,2);d=a.Shader._MakeLinearGradient(V,F.he,F.colorType,S,F.count,u,C,x,G);k(F.he,m);t&&k(S,t);return d};a.Shader.MakeRadialGradient=function(d,h,m,
t,u,x,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;x=p(x);d=a.Shader._MakeRadialGradient(d[0],d[1],h,F.he,F.colorType,S,F.count,u,C,x,G);k(F.he,m);t&&k(S,t);return d};a.Shader.MakeSweepGradient=function(d,h,m,t,u,x,C,G,F,S){S=S||null;var T=l(m),q=n(t,"HEAPF32");C=C||0;G=G||0;F=F||360;x=p(x);d=a.Shader._MakeSweepGradient(d,h,T.he,T.colorType,q,T.count,u,G,F,C,x,S);k(T.he,m);t&&k(q,t);return d};a.Shader.MakeTwoPointConicalGradient=function(d,h,m,t,u,x,C,G,F,S){S=S||null;var T=l(u),q=n(x,"HEAPF32");
F=F||0;G=p(G);var y=ea.toTypedArray();y.set(d);y.set(m,2);d=a.Shader._MakeTwoPointConicalGradient(V,h,t,T.he,T.colorType,q,T.count,C,F,G,S);k(T.he,u);x&&k(q,x);return d};a.Vertices.prototype.bounds=function(d){this._bounds(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.ce&&a.ce.forEach(function(d){d()})};a.computeTonalColors=function(g){var d=n(g.ambient,"HEAPF32"),h=n(g.spot,"HEAPF32");this._computeTonalColors(d,h);var m={ambient:D(d),spot:D(h)};k(d,g.ambient);k(h,g.spot);return m};
a.LTRBRect=function(g,d,h,m){return Float32Array.of(g,d,h,m)};a.XYWHRect=function(g,d,h,m){return Float32Array.of(g,d,g+h,d+m)};a.LTRBiRect=function(g,d,h,m){return Int32Array.of(g,d,h,m)};a.XYWHiRect=function(g,d,h,m){return Int32Array.of(g,d,g+h,d+m)};a.RRectXY=function(g,d,h){return Float32Array.of(g[0],g[1],g[2],g[3],d,h,d,h,d,h,d,h)};a.MakeAnimatedImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeAnimatedImage(d,g.byteLength))?
g:null};a.MakeImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeImage(d,g.byteLength))?g:null};var ab=null;a.MakeImageFromCanvasImageSource=function(g){var d=g.width,h=g.height;ab||=document.createElement("canvas");ab.width=d;ab.height=h;var m=ab.getContext("2d",{willReadFrequently:!0});m.drawImage(g,0,0);g=m.getImageData(0,0,d,h);return a.MakeImage({width:d,height:h,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},
g.data,4*d)};a.MakeImage=function(g,d,h){var m=a._malloc(d.length);a.HEAPU8.set(d,m);return a._MakeImage(g,m,d.length,h)};a.MakeVertices=function(g,d,h,m,t,u){var x=t&&t.length||0,C=0;h&&h.length&&(C|=1);m&&m.length&&(C|=2);void 0===u||u||(C|=4);g=new a._VerticesBuilder(g,d.length/2,x,C);n(d,"HEAPF32",g.positions());g.texCoords()&&n(h,"HEAPF32",g.texCoords());g.colors()&&n(c(m),"HEAPU32",g.colors());g.indices()&&n(t,"HEAPU16",g.indices());return g.detach()};(function(g){g.ce=g.ce||[];g.ce.push(function(){function d(q){q&&
(q.dir=0===q.dir?g.TextDirection.RTL:g.TextDirection.LTR);return q}function h(q){if(!q||!q.length)return[];for(var y=[],M=0;M<q.length;M+=5){var W=g.LTRBRect(q[M],q[M+1],q[M+2],q[M+3]),wa=g.TextDirection.LTR;0===q[M+4]&&(wa=g.TextDirection.RTL);y.push({rect:W,dir:wa})}g._free(q.byteOffset);return y}function m(q){q=q||{};void 0===q.weight&&(q.weight=g.FontWeight.Normal);q.width=q.width||g.FontWidth.Normal;q.slant=q.slant||g.FontSlant.Upright;return q}function t(q){if(!q||!q.length)return 0;for(var y=
[],M=0;M<q.length;M++){var W=u(q[M]);y.push(W)}return n(y,"HEAPU32")}function u(q){if(G[q])return G[q];var y=qa(q)+1,M=g._malloc(y);ra(q,M,y);return G[q]=M}function x(q){q._colorPtr=w(q.color);q._foregroundColorPtr=0;q._backgroundColorPtr=0;q._decorationColorPtr=0;q.foregroundColor&&(q._foregroundColorPtr=w(q.foregroundColor,F));q.backgroundColor&&(q._backgroundColorPtr=w(q.backgroundColor,S));q.decorationColor&&(q._decorationColorPtr=w(q.decorationColor,T));Array.isArray(q.fontFamilies)&&q.fontFamilies.length?
(q._fontFamiliesPtr=t(q.fontFamilies),q._fontFamiliesLen=q.fontFamilies.length):(q._fontFamiliesPtr=0,q._fontFamiliesLen=0);if(q.locale){var y=q.locale;q._localePtr=u(y);q._localeLen=qa(y)}else q._localePtr=0,q._localeLen=0;if(Array.isArray(q.shadows)&&q.shadows.length){y=q.shadows;var M=y.map(function(ma){return ma.color||g.BLACK}),W=y.map(function(ma){return ma.blurRadius||0});q._shadowLen=y.length;for(var wa=g._malloc(8*y.length),wb=wa/4,xb=0;xb<y.length;xb++){var $b=y[xb].offset||[0,0];g.HEAPF32[wb]=
$b[0];g.HEAPF32[wb+1]=$b[1];wb+=2}q._shadowColorsPtr=l(M).he;q._shadowOffsetsPtr=wa;q._shadowBlurRadiiPtr=n(W,"HEAPF32")}else q._shadowLen=0,q._shadowColorsPtr=0,q._shadowOffsetsPtr=0,q._shadowBlurRadiiPtr=0;Array.isArray(q.fontFeatures)&&q.fontFeatures.length?(y=q.fontFeatures,M=y.map(function(ma){return ma.name}),W=y.map(function(ma){return ma.value}),q._fontFeatureLen=y.length,q._fontFeatureNamesPtr=t(M),q._fontFeatureValuesPtr=n(W,"HEAPU32")):(q._fontFeatureLen=0,q._fontFeatureNamesPtr=0,q._fontFeatureValuesPtr=
0);Array.isArray(q.fontVariations)&&q.fontVariations.length?(y=q.fontVariations,M=y.map(function(ma){return ma.axis}),W=y.map(function(ma){return ma.value}),q._fontVariationLen=y.length,q._fontVariationAxesPtr=t(M),q._fontVariationValuesPtr=n(W,"HEAPF32")):(q._fontVariationLen=0,q._fontVariationAxesPtr=0,q._fontVariationValuesPtr=0)}function C(q){g._free(q._fontFamiliesPtr);g._free(q._shadowColorsPtr);g._free(q._shadowOffsetsPtr);g._free(q._shadowBlurRadiiPtr);g._free(q._fontFeatureNamesPtr);g._free(q._fontFeatureValuesPtr);
g._free(q._fontVariationAxesPtr);g._free(q._fontVariationValuesPtr)}g.Paragraph.prototype.getRectsForRange=function(q,y,M,W){q=this._getRectsForRange(q,y,M,W);return h(q)};g.Paragraph.prototype.getRectsForPlaceholders=function(){var q=this._getRectsForPlaceholders();return h(q)};g.Paragraph.prototype.getGlyphInfoAt=function(q){return d(this._getGlyphInfoAt(q))};g.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(q,y){return d(this._getClosestGlyphInfoAtCoordinate(q,y))};g.TypefaceFontProvider.prototype.registerFont=
function(q,y){q=g.Typeface.MakeTypefaceFromData(q);if(!q)return null;y=u(y);this._registerFont(q,y)};g.ParagraphStyle=function(q){q.disableHinting=q.disableHinting||!1;if(q.ellipsis){var y=q.ellipsis;q._ellipsisPtr=u(y);q._ellipsisLen=qa(y)}else q._ellipsisPtr=0,q._ellipsisLen=0;null==q.heightMultiplier&&(q.heightMultiplier=-1);q.maxLines=q.maxLines||0;q.replaceTabCharacters=q.replaceTabCharacters||!1;y=(y=q.strutStyle)||{};y.strutEnabled=y.strutEnabled||!1;y.strutEnabled&&Array.isArray(y.fontFamilies)&&
y.fontFamilies.length?(y._fontFamiliesPtr=t(y.fontFamilies),y._fontFamiliesLen=y.fontFamilies.length):(y._fontFamiliesPtr=0,y._fontFamiliesLen=0);y.fontStyle=m(y.fontStyle);null==y.fontSize&&(y.fontSize=-1);null==y.heightMultiplier&&(y.heightMultiplier=-1);y.halfLeading=y.halfLeading||!1;y.leading=y.leading||0;y.forceStrutHeight=y.forceStrutHeight||!1;q.strutStyle=y;q.textAlign=q.textAlign||g.TextAlign.Start;q.textDirection=q.textDirection||g.TextDirection.LTR;q.textHeightBehavior=q.textHeightBehavior||
g.TextHeightBehavior.All;q.textStyle=g.TextStyle(q.textStyle);q.applyRoundingHack=!1!==q.applyRoundingHack;return q};g.TextStyle=function(q){q.color||(q.color=g.BLACK);q.decoration=q.decoration||0;q.decorationThickness=q.decorationThickness||0;q.decorationStyle=q.decorationStyle||g.DecorationStyle.Solid;q.textBaseline=q.textBaseline||g.TextBaseline.Alphabetic;null==q.fontSize&&(q.fontSize=-1);q.letterSpacing=q.letterSpacing||0;q.wordSpacing=q.wordSpacing||0;null==q.heightMultiplier&&(q.heightMultiplier=
-1);q.halfLeading=q.halfLeading||!1;q.fontStyle=m(q.fontStyle);return q};var G={},F=g._malloc(16),S=g._malloc(16),T=g._malloc(16);g.ParagraphBuilder.Make=function(q,y){x(q.textStyle);y=g.ParagraphBuilder._Make(q,y);C(q.textStyle);return y};g.ParagraphBuilder.MakeFromFontProvider=function(q,y){x(q.textStyle);y=g.ParagraphBuilder._MakeFromFontProvider(q,y);C(q.textStyle);return y};g.ParagraphBuilder.MakeFromFontCollection=function(q,y){x(q.textStyle);y=g.ParagraphBuilder._MakeFromFontCollection(q,y);
C(q.textStyle);return y};g.ParagraphBuilder.ShapeText=function(q,y,M){let W=0;for(const wa of y)W+=wa.length;if(W!==q.length)throw"Accumulated block lengths must equal text.length";return g.ParagraphBuilder._ShapeText(q,y,M)};g.ParagraphBuilder.prototype.pushStyle=function(q){x(q);this._pushStyle(q);C(q)};g.ParagraphBuilder.prototype.pushPaintStyle=function(q,y,M){x(q);this._pushPaintStyle(q,y,M);C(q)};g.ParagraphBuilder.prototype.addPlaceholder=function(q,y,M,W,wa){M=M||g.PlaceholderAlignment.Baseline;
W=W||g.TextBaseline.Alphabetic;this._addPlaceholder(q||0,y||0,M,W,wa||0)};g.ParagraphBuilder.prototype.setWordsUtf8=function(q){var y=n(q,"HEAPU32");this._setWordsUtf8(y,q&&q.length||0);k(y,q)};g.ParagraphBuilder.prototype.setWordsUtf16=function(q){var y=n(q,"HEAPU32");this._setWordsUtf16(y,q&&q.length||0);k(y,q)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(q){var y=n(q,"HEAPU32");this._setGraphemeBreaksUtf8(y,q&&q.length||0);k(y,q)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=
function(q){var y=n(q,"HEAPU32");this._setGraphemeBreaksUtf16(y,q&&q.length||0);k(y,q)};g.ParagraphBuilder.prototype.setLineBreaksUtf8=function(q){var y=n(q,"HEAPU32");this._setLineBreaksUtf8(y,q&&q.length||0);k(y,q)};g.ParagraphBuilder.prototype.setLineBreaksUtf16=function(q){var y=n(q,"HEAPU32");this._setLineBreaksUtf16(y,q&&q.length||0);k(y,q)}})})(r);a.ce=a.ce||[];a.ce.push(function(){a.Path.prototype.op=function(g,d){return this._op(g,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?
this:null}});a.ce=a.ce||[];a.ce.push(function(){a.Canvas.prototype.drawText=function(g,d,h,m,t){var u=qa(g),x=a._malloc(u+1);ra(g,x,u+1);this._drawSimpleText(x,u,d,h,t,m);a._free(x)};a.Canvas.prototype.drawGlyphs=function(g,d,h,m,t,u){if(!(2*g.length<=d.length))throw"Not enough positions for the array of gyphs";a.$d(this.Zd);const x=n(g,"HEAPU16"),C=n(d,"HEAPF32");this._drawGlyphs(g.length,x,C,h,m,t,u);k(C,d);k(x,g)};a.Font.prototype.getGlyphBounds=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(16*
g.length);this._getGlyphWidthBounds(m,g.length,0,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.Font.prototype.getGlyphIDs=function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.Font.prototype.getGlyphIntercepts=
function(g,d,h,m){var t=n(g,"HEAPU16"),u=n(d,"HEAPF32");return this._getGlyphIntercepts(t,g.length,!(g&&g._ck),u,d.length,!(d&&d._ck),h,m)};a.Font.prototype.getGlyphWidths=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(4*g.length);this._getGlyphWidthBounds(m,g.length,t,0,d||null);d=new Float32Array(a.HEAPU8.buffer,t,g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.FontMgr.FromData=function(){if(!arguments.length)return null;var g=arguments;1===g.length&&
Array.isArray(g[0])&&(g=arguments[0]);if(!g.length)return null;for(var d=[],h=[],m=0;m<g.length;m++){var t=new Uint8Array(g[m]),u=n(t,"HEAPU8");d.push(u);h.push(t.byteLength)}d=n(d,"HEAPU32");h=n(h,"HEAPU32");g=a.FontMgr._fromData(d,h,g.length);a._free(d);a._free(h);return g};a.Typeface.MakeTypefaceFromData=function(g){g=new Uint8Array(g);var d=n(g,"HEAPU8");return(g=a.Typeface._MakeTypefaceFromData(d,g.byteLength))?g:null};a.Typeface.MakeFreeTypeFaceFromData=a.Typeface.MakeTypefaceFromData;a.Typeface.prototype.getGlyphIDs=
function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.TextBlob.MakeOnPath=function(g,d,h,m){if(g&&g.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(g,h);m||=0;var t=h.getGlyphIDs(g);t=h.getGlyphWidths(t);var u=[];d=new a.ContourMeasureIter(d,!1,1);for(var x=
d.next(),C=new Float32Array(4),G=0;G<g.length&&x;G++){var F=t[G];m+=F/2;if(m>x.length()){x.delete();x=d.next();if(!x){g=g.substring(0,G);break}m=F/2}x.getPosTan(m,C);var S=C[2],T=C[3];u.push(S,T,C[0]-F/2*S,C[1]-F/2*T);m+=F/2}g=this.MakeFromRSXform(g,u,h);x&&x.delete();d.delete();return g}};a.TextBlob.MakeFromRSXform=function(g,d,h){var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXform(t,m-1,g,h);a._free(t);return h?h:null};a.TextBlob.MakeFromRSXformGlyphs=function(g,
d,h){var m=n(g,"HEAPU16");d=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXformGlyphs(m,2*g.length,d,h);k(m,g);return h?h:null};a.TextBlob.MakeFromGlyphs=function(g,d){var h=n(g,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(h,2*g.length,d);k(h,g);return d?d:null};a.TextBlob.MakeFromText=function(g,d){var h=qa(g)+1,m=a._malloc(h);ra(g,m,h);g=a.TextBlob._MakeFromText(m,h-1,d);a._free(m);return g?g:null};a.MallocGlyphIDs=function(g){return a.Malloc(Uint16Array,g)}});a.ce=a.ce||[];a.ce.push(function(){a.MakePicture=
function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._MakePicture(d,g.byteLength))?g:null}});a.ce=a.ce||[];a.ce.push(function(){a.RuntimeEffect.Make=function(g,d){return a.RuntimeEffect._Make(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.MakeForBlender=function(g,d){return a.RuntimeEffect._MakeForBlender(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.prototype.makeShader=function(g,d){var h=
!g._ck,m=n(g,"HEAPF32");d=p(d);return this._makeShader(m,4*g.length,h,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(g,d,h){var m=!g._ck,t=n(g,"HEAPF32");h=p(h);for(var u=[],x=0;x<d.length;x++)u.push(d[x].Yd.ae);d=n(u,"HEAPU32");return this._makeShaderWithChildren(t,4*g.length,m,d,u.length,h)};a.RuntimeEffect.prototype.makeBlender=function(g){var d=!g._ck,h=n(g,"HEAPF32");return this._makeBlender(h,4*g.length,d)}})})(r);var sa=Object.assign({},r),ta="",ua,va;
if(fa||ia)ia?ta=self.location.href:"undefined"!=typeof document&&document.currentScript&&(ta=document.currentScript.src),_scriptName&&(ta=_scriptName),ta.startsWith("blob:")?ta="":ta=ta.substr(0,ta.replace(/[?#].*/,"").lastIndexOf("/")+1),ia&&(va=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),ua=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
var xa=console.log.bind(console),ya=console.error.bind(console);Object.assign(r,sa);sa=null;var za,Ba=!1,Ca,B,Da,Fa,E,H,J,Ga;function Ha(){var a=za.buffer;r.HEAP8=Ca=new Int8Array(a);r.HEAP16=Da=new Int16Array(a);r.HEAPU8=B=new Uint8Array(a);r.HEAPU16=Fa=new Uint16Array(a);r.HEAP32=E=new Int32Array(a);r.HEAPU32=H=new Uint32Array(a);r.HEAPF32=J=new Float32Array(a);r.HEAPF64=Ga=new Float64Array(a)}var Ia=[],Ja=[],Ka=[],La=0,Na=null,Oa=null;
function Pa(a){a="Aborted("+a+")";ya(a);Ba=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ca(a);throw a;}var Qa=a=>a.startsWith("data:application/octet-stream;base64,"),Ra;function Sa(a){return ua(a).then(b=>new Uint8Array(b),()=>{if(va)var b=va(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ta(a,b,c){return Sa(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{ya(`failed to asynchronously prepare wasm: ${e}`);Pa(e)})}
function Ua(a,b){var c=Ra;return"function"!=typeof WebAssembly.instantiateStreaming||Qa(c)||"function"!=typeof fetch?Ta(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){ya(`wasm streaming compile failed: ${f}`);ya("falling back to ArrayBuffer instantiation");return Ta(c,a,b)}))}function Va(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Wa=a=>{a.forEach(b=>b(r))},Xa=r.noExitRuntime||!0;
class Ya{constructor(a){this.ae=a-24}}
var Za=0,bb=0,cb="undefined"!=typeof TextDecoder?new TextDecoder:void 0,db=(a,b=0,c=NaN)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16<c-b&&a.buffer&&cb)return cb.decode(a.subarray(b,c));for(e="";b<c;){var f=a[b++];if(f&128){var k=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|k);else{var n=a[b++]&63;f=224==(f&240)?(f&15)<<12|k<<6|n:(f&7)<<18|k<<12|n<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e},
eb={},fb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function gb(a){return this.fromWireType(H[a>>2])}
var hb={},ib={},jb={},kb,mb=(a,b,c)=>{function e(l){l=c(l);if(l.length!==a.length)throw new kb("Mismatched type converter count");for(var p=0;p<a.length;++p)lb(a[p],l[p])}a.forEach(l=>jb[l]=b);var f=Array(b.length),k=[],n=0;b.forEach((l,p)=>{ib.hasOwnProperty(l)?f[p]=ib[l]:(k.push(l),hb.hasOwnProperty(l)||(hb[l]=[]),hb[l].push(()=>{f[p]=ib[l];++n;n===k.length&&e(f)}))});0===k.length&&e(f)},nb,K=a=>{for(var b="";B[a];)b+=nb[B[a++]];return b},L;
function ob(a,b,c={}){var e=b.name;if(!a)throw new L(`type "${e}" must have a positive integer typeid pointer`);if(ib.hasOwnProperty(a)){if(c.lf)return;throw new L(`Cannot register type '${e}' twice`);}ib[a]=b;delete jb[a];hb.hasOwnProperty(a)&&(b=hb[a],delete hb[a],b.forEach(f=>f()))}function lb(a,b,c={}){return ob(a,b,c)}
var pb=a=>{throw new L(a.Yd.de.be.name+" instance already deleted");},qb=!1,rb=()=>{},sb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ge)return null;a=sb(a,b,c.ge);return null===a?null:c.cf(a)},yb={},zb={},Ab=(a,b)=>{if(void 0===b)throw new L("ptr should not be undefined");for(;a.ge;)b=a.ye(b),a=a.ge;return zb[b]},Cb=(a,b)=>{if(!b.de||!b.ae)throw new kb("makeClassHandle requires ptr and ptrType");if(!!b.ie!==!!b.ee)throw new kb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Bb(Object.create(a,
{Yd:{value:b,writable:!0}}))},Bb=a=>{if("undefined"===typeof FinalizationRegistry)return Bb=b=>b,a;qb=new FinalizationRegistry(b=>{b=b.Yd;--b.count.value;0===b.count.value&&(b.ee?b.ie.ne(b.ee):b.de.be.ne(b.ae))});Bb=b=>{var c=b.Yd;c.ee&&qb.register(b,{Yd:c},b);return b};rb=b=>{qb.unregister(b)};return Bb(a)},Db=[];function Eb(){}
var Fb=(a,b)=>Object.defineProperty(b,"name",{value:a}),Gb=(a,b,c)=>{if(void 0===a[b].fe){var e=a[b];a[b]=function(...f){if(!a[b].fe.hasOwnProperty(f.length))throw new L(`Function '${c}' called with an invalid number of arguments (${f.length}) - expects one of (${a[b].fe})!`);return a[b].fe[f.length].apply(this,f)};a[b].fe=[];a[b].fe[e.oe]=e}},Hb=(a,b,c)=>{if(r.hasOwnProperty(a)){if(void 0===c||void 0!==r[a].fe&&void 0!==r[a].fe[c])throw new L(`Cannot register public name '${a}' twice`);Gb(r,a,a);
if(r[a].fe.hasOwnProperty(c))throw new L(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);r[a].fe[c]=b}else r[a]=b,r[a].oe=c},Ib=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function Jb(a,b,c,e,f,k,n,l){this.name=a;this.constructor=b;this.se=c;this.ne=e;this.ge=f;this.ff=k;this.ye=n;this.cf=l;this.pf=[]}
var Kb=(a,b,c)=>{for(;b!==c;){if(!b.ye)throw new L(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.ye(a);b=b.ge}return a};function Lb(a,b){if(null===b){if(this.Ke)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Yd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Yd.ae)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);return Kb(b.Yd.ae,b.Yd.de.be,this.be)}
function Nb(a,b){if(null===b){if(this.Ke)throw new L(`null is not a valid ${this.name}`);if(this.De){var c=this.Le();null!==a&&a.push(this.ne,c);return c}return 0}if(!b||!b.Yd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Yd.ae)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.Ce&&b.Yd.de.Ce)throw new L(`Cannot convert argument of type ${b.Yd.ie?b.Yd.ie.name:b.Yd.de.name} to parameter type ${this.name}`);c=Kb(b.Yd.ae,b.Yd.de.be,this.be);if(this.De){if(void 0===
b.Yd.ee)throw new L("Passing raw pointer to smart pointer is illegal");switch(this.uf){case 0:if(b.Yd.ie===this)c=b.Yd.ee;else throw new L(`Cannot convert argument of type ${b.Yd.ie?b.Yd.ie.name:b.Yd.de.name} to parameter type ${this.name}`);break;case 1:c=b.Yd.ee;break;case 2:if(b.Yd.ie===this)c=b.Yd.ee;else{var e=b.clone();c=this.qf(c,Ob(()=>e["delete"]()));null!==a&&a.push(this.ne,c)}break;default:throw new L("Unsupporting sharing policy");}}return c}
function Pb(a,b){if(null===b){if(this.Ke)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Yd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Yd.ae)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.Yd.de.Ce)throw new L(`Cannot convert argument of type ${b.Yd.de.name} to parameter type ${this.name}`);return Kb(b.Yd.ae,b.Yd.de.be,this.be)}
function Qb(a,b,c,e,f,k,n,l,p,v,w){this.name=a;this.be=b;this.Ke=c;this.Ce=e;this.De=f;this.nf=k;this.uf=n;this.Se=l;this.Le=p;this.qf=v;this.ne=w;f||void 0!==b.ge?this.toWireType=Nb:(this.toWireType=e?Lb:Pb,this.ke=null)}
var Rb=(a,b,c)=>{if(!r.hasOwnProperty(a))throw new kb("Replacing nonexistent public symbol");void 0!==r[a].fe&&void 0!==c?r[a].fe[c]=b:(r[a]=b,r[a].oe=c)},N,Sb=(a,b,c=[])=>{a.includes("j")?(a=a.replace(/p/g,"i"),b=(0,r["dynCall_"+a])(b,...c)):b=N.get(b)(...c);return b},Tb=(a,b)=>(...c)=>Sb(a,b,c),O=(a,b)=>{a=K(a);var c=a.includes("j")?Tb(a,b):N.get(b);if("function"!=typeof c)throw new L(`unknown function pointer with signature ${a}: ${b}`);return c},ac,dc=a=>{a=bc(a);var b=K(a);cc(a);return b},ec=
(a,b)=>{function c(k){f[k]||ib[k]||(jb[k]?jb[k].forEach(c):(e.push(k),f[k]=!0))}var e=[],f={};b.forEach(c);throw new ac(`${a}: `+e.map(dc).join([", "]));};function fc(a){for(var b=1;b<a.length;++b)if(null!==a[b]&&void 0===a[b].ke)return!0;return!1}
function gc(a,b,c,e,f){var k=b.length;if(2>k)throw new L("argTypes array size mismatch! Must at least get return value and 'this' types!");var n=null!==b[1]&&null!==c,l=fc(b),p="void"!==b[0].name,v=k-2,w=Array(v),A=[],D=[];return Fb(a,function(...I){D.length=0;A.length=n?2:1;A[0]=f;if(n){var Q=b[1].toWireType(D,this);A[1]=Q}for(var P=0;P<v;++P)w[P]=b[P+2].toWireType(D,I[P]),A.push(w[P]);I=e(...A);if(l)fb(D);else for(P=n?1:2;P<b.length;P++){var aa=1===P?Q:w[P-2];null!==b[P].ke&&b[P].ke(aa)}Q=p?b[0].fromWireType(I):
void 0;return Q})}
var hc=(a,b)=>{for(var c=[],e=0;e<a;e++)c.push(H[b+4*e>>2]);return c},ic=a=>{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},jc=[],kc=[],lc=a=>{9<a&&0===--kc[a+1]&&(kc[a]=void 0,jc.push(a))},mc=a=>{if(!a)throw new L("Cannot use deleted val. handle = "+a);return kc[a]},Ob=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=jc.pop()||kc.length;kc[b]=a;kc[b+1]=1;return b}},nc={name:"emscripten::val",fromWireType:a=>{var b=mc(a);lc(a);
return b},toWireType:(a,b)=>Ob(b),je:8,readValueFromPointer:gb,ke:null},oc=(a,b,c)=>{switch(b){case 1:return c?function(e){return this.fromWireType(Ca[e])}:function(e){return this.fromWireType(B[e])};case 2:return c?function(e){return this.fromWireType(Da[e>>1])}:function(e){return this.fromWireType(Fa[e>>1])};case 4:return c?function(e){return this.fromWireType(E[e>>2])}:function(e){return this.fromWireType(H[e>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},pc=(a,b)=>
{var c=ib[a];if(void 0===c)throw a=`${b} has unknown type ${dc(a)}`,new L(a);return c},Mb=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},qc=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(J[c>>2])};case 8:return function(c){return this.fromWireType(Ga[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},rc=(a,b,c)=>{switch(b){case 1:return c?e=>Ca[e]:e=>B[e];case 2:return c?e=>Da[e>>1]:e=>Fa[e>>
1];case 4:return c?e=>E[e>>2]:e=>H[e>>2];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},ra=(a,b,c)=>{var e=B;if(!(0<c))return 0;var f=b;c=b+c-1;for(var k=0;k<a.length;++k){var n=a.charCodeAt(k);if(55296<=n&&57343>=n){var l=a.charCodeAt(++k);n=65536+((n&1023)<<10)|l&1023}if(127>=n){if(b>=c)break;e[b++]=n}else{if(2047>=n){if(b+1>=c)break;e[b++]=192|n>>6}else{if(65535>=n){if(b+2>=c)break;e[b++]=224|n>>12}else{if(b+3>=c)break;e[b++]=240|n>>18;e[b++]=128|n>>12&63}e[b++]=128|n>>6&
63}e[b++]=128|n&63}}e[b]=0;return b-f},qa=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}return b},sc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,tc=(a,b)=>{var c=a>>1;for(var e=c+b/2;!(c>=e)&&Fa[c];)++c;c<<=1;if(32<c-a&&sc)return sc.decode(B.subarray(a,c));c="";for(e=0;!(e>=b/2);++e){var f=Da[a+2*e>>1];if(0==f)break;c+=String.fromCharCode(f)}return c},uc=(a,b,c)=>{c??=2147483647;if(2>c)return 0;c-=2;var e=
b;c=c<2*a.length?c/2:a.length;for(var f=0;f<c;++f)Da[b>>1]=a.charCodeAt(f),b+=2;Da[b>>1]=0;return b-e},vc=a=>2*a.length,wc=(a,b)=>{for(var c=0,e="";!(c>=b/4);){var f=E[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023)):e+=String.fromCharCode(f)}return e},xc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var e=b;c=e+c-4;for(var f=0;f<a.length;++f){var k=a.charCodeAt(f);if(55296<=k&&57343>=k){var n=a.charCodeAt(++f);k=65536+((k&1023)<<10)|n&1023}E[b>>2]=k;b+=
4;if(b+4>c)break}E[b>>2]=0;return b-e},yc=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);55296<=e&&57343>=e&&++c;b+=4}return b},zc=(a,b,c)=>{var e=[];a=a.toWireType(e,c);e.length&&(H[b>>2]=Ob(e));return a},Ac=[],Bc={},Cc=a=>{var b=Bc[a];return void 0===b?K(a):b},Dc=()=>{function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;
"object"==typeof global&&a(global)?$$$embind_global$$$=global:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");},Ec=a=>{var b=Ac.length;Ac.push(a);return b},Fc=(a,b)=>{for(var c=Array(a),e=0;e<a;++e)c[e]=pc(H[b+4*e>>2],"parameter "+e);return c},Gc=Reflect.construct,R,Hc=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,e)=>b.vertexAttribDivisorANGLE(c,
e),a.drawArraysInstanced=(c,e,f,k)=>b.drawArraysInstancedANGLE(c,e,f,k),a.drawElementsInstanced=(c,e,f,k,n)=>b.drawElementsInstancedANGLE(c,e,f,k,n))},Ic=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},Jc=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},Kc=a=>
{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},Lc=1,Mc=[],Nc=[],Oc=[],Pc=[],ka=[],Qc=[],Rc=[],pa=[],Sc=[],Tc=[],Uc=[],Wc={},Xc={},Yc=4,Zc=0,ja=a=>{for(var b=Lc++,c=a.length;c<b;c++)a[c]=null;return b},$c=(a,b,c,e)=>{for(var f=0;f<a;f++){var k=R[c](),n=k&&ja(e);k?(k.name=n,e[n]=k):U||=1282;E[b+4*f>>2]=n}},na=(a,b)=>{a.Ne||(a.Ne=a.getContext,a.getContext=function(e,f){f=a.Ne(e,f);return"webgl"==e==f instanceof WebGLRenderingContext?f:null});var c=1<b.majorVersion?a.getContext("webgl2",
b):a.getContext("webgl",b);return c?ad(c,b):0},ad=(a,b)=>{var c=ja(pa),e={handle:c,attributes:b,version:b.majorVersion,le:a};a.canvas&&(a.canvas.Ve=e);pa[c]=e;("undefined"==typeof b.df||b.df)&&bd(e);return c},oa=a=>{z=pa[a];r.vf=R=z?.le;return!(a&&!R)},bd=a=>{a||=z;if(!a.mf){a.mf=!0;var b=a.le;b.zf=b.getExtension("WEBGL_multi_draw");b.xf=b.getExtension("EXT_polygon_offset_clamp");b.wf=b.getExtension("EXT_clip_control");b.Bf=b.getExtension("WEBGL_polygon_mode");Hc(b);Ic(b);Jc(b);b.Pe=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");
b.Re=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.me=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.me)b.me=b.getExtension("EXT_disjoint_timer_query");Kc(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},z,U,cd=(a,b)=>{R.bindFramebuffer(a,Oc[b])},dd=a=>{R.bindVertexArray(Rc[a])},ed=a=>R.clear(a),fd=(a,b,c,e)=>R.clearColor(a,b,c,e),gd=a=>R.clearStencil(a),hd=(a,b)=>{for(var c=0;c<a;c++){var e=E[b+
4*c>>2];R.deleteVertexArray(Rc[e]);Rc[e]=null}},jd=[],kd=(a,b)=>{$c(a,b,"createVertexArray",Rc)};function ld(){var a=Kc(R);return a=a.concat(a.map(b=>"GL_"+b))}
var md=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(U||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=R.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>z.version){U||=1282;return}e=ld().length;break;case 33307:case 33308:if(2>z.version){U||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=R.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":U||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=
0;break;default:U||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:E[b+4*a>>2]=f[a];break;case 2:J[b+4*a>>2]=f[a];break;case 4:Ca[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(k){U||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${k})`);return}}break;default:U||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
return}switch(c){case 1:c=e;H[b>>2]=c;H[b+4>>2]=(c-H[b>>2])/4294967296;break;case 0:E[b>>2]=e;break;case 2:J[b>>2]=e;break;case 4:Ca[b]=e?1:0}}else U||=1281},nd=(a,b)=>md(a,b,0),od=(a,b,c)=>{if(c){a=Sc[a];b=2>z.version?R.me.getQueryObjectEXT(a,b):R.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;H[c>>2]=e;H[c+4>>2]=(e-H[c>>2])/4294967296}else U||=1281},qd=a=>{var b=qa(a)+1,c=pd(b);c&&ra(a,c,b);return c},rd=a=>{var b=Wc[a];if(!b){switch(a){case 7939:b=qd(ld().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=
R.getParameter(a))||(U||=1280);b=b?qd(b):0;break;case 7938:b=R.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=z.version&&(c=`OpenGL ES 3.0 (${b})`);b=qd(c);break;case 35724:b=R.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=qd(b);break;default:U||=1280}Wc[a]=b}return b},sd=(a,b)=>{if(2>z.version)return U||=1282,0;var c=Xc[a];if(c)return 0>b||b>=c.length?(U||=1281,0):c[b];switch(a){case 7939:return c=
ld().map(qd),c=Xc[a]=c,0>b||b>=c.length?(U||=1281,0):c[b];default:return U||=1280,0}},td=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),ud=a=>{a-=5120;return 0==a?Ca:1==a?B:2==a?Da:4==a?E:6==a?J:5==a||28922==a||28520==a||30779==a||30782==a?H:Fa},vd=(a,b,c,e,f)=>{a=ud(a);b=e*((Zc||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+Yc-1&-Yc);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},Y=a=>{var b=R.bf;if(b){var c=
b.xe[a];"number"==typeof c&&(b.xe[a]=c=R.getUniformLocation(b,b.Te[a]+(0<c?`[${c}]`:"")));return c}U||=1282},wd=[],xd=[],yd={},Ad=()=>{if(!zd){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in yd)void 0===yd[b]?delete a[b]:a[b]=yd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);zd=c}return zd},zd,Bd=[null,[],[]];
kb=r.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};for(var Cd=Array(256),Dd=0;256>Dd;++Dd)Cd[Dd]=String.fromCharCode(Dd);nb=Cd;L=r.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};
Object.assign(Eb.prototype,{isAliasOf:function(a){if(!(this instanceof Eb&&a instanceof Eb))return!1;var b=this.Yd.de.be,c=this.Yd.ae;a.Yd=a.Yd;var e=a.Yd.de.be;for(a=a.Yd.ae;b.ge;)c=b.ye(c),b=b.ge;for(;e.ge;)a=e.ye(a),e=e.ge;return b===e&&c===a},clone:function(){this.Yd.ae||pb(this);if(this.Yd.we)return this.Yd.count.value+=1,this;var a=Bb,b=Object,c=b.create,e=Object.getPrototypeOf(this),f=this.Yd;a=a(c.call(b,e,{Yd:{value:{count:f.count,ve:f.ve,we:f.we,ae:f.ae,de:f.de,ee:f.ee,ie:f.ie}}}));a.Yd.count.value+=
1;a.Yd.ve=!1;return a},["delete"](){this.Yd.ae||pb(this);if(this.Yd.ve&&!this.Yd.we)throw new L("Object already scheduled for deletion");rb(this);var a=this.Yd;--a.count.value;0===a.count.value&&(a.ee?a.ie.ne(a.ee):a.de.be.ne(a.ae));this.Yd.we||(this.Yd.ee=void 0,this.Yd.ae=void 0)},isDeleted:function(){return!this.Yd.ae},deleteLater:function(){this.Yd.ae||pb(this);if(this.Yd.ve&&!this.Yd.we)throw new L("Object already scheduled for deletion");Db.push(this);this.Yd.ve=!0;return this}});
Object.assign(Qb.prototype,{gf(a){this.Se&&(a=this.Se(a));return a},Oe(a){this.ne?.(a)},je:8,readValueFromPointer:gb,fromWireType:function(a){function b(){return this.De?Cb(this.be.se,{de:this.nf,ae:c,ie:this,ee:a}):Cb(this.be.se,{de:this,ae:a})}var c=this.gf(a);if(!c)return this.Oe(a),null;var e=Ab(this.be,c);if(void 0!==e){if(0===e.Yd.count.value)return e.Yd.ae=c,e.Yd.ee=a,e.clone();e=e.clone();this.Oe(a);return e}e=this.be.ff(c);e=yb[e];if(!e)return b.call(this);e=this.Ce?e.af:e.pointerType;var f=
sb(c,this.be,e.be);return null===f?b.call(this):this.De?Cb(e.be.se,{de:e,ae:f,ie:this,ee:a}):Cb(e.be.se,{de:e,ae:f})}});ac=r.UnboundTypeError=((a,b)=>{var c=Fb(b,function(e){this.name=b;this.message=e;e=Error(e).stack;void 0!==e&&(this.stack=this.toString()+"\n"+e.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");
kc.push(0,1,void 0,1,null,1,!0,1,!1,1);r.count_emval_handles=()=>kc.length/2-5-jc.length;for(var Ed=0;32>Ed;++Ed)jd.push(Array(Ed));var Fd=new Float32Array(288);for(Ed=0;288>=Ed;++Ed)wd[Ed]=Fd.subarray(0,Ed);var Gd=new Int32Array(288);for(Ed=0;288>=Ed;++Ed)xd[Ed]=Gd.subarray(0,Ed);
var Vd={F:(a,b,c)=>{var e=new Ya(a);H[e.ae+16>>2]=0;H[e.ae+4>>2]=b;H[e.ae+8>>2]=c;Za=a;bb++;throw Za;},V:function(){return 0},vd:()=>{},ud:function(){return 0},td:()=>{},sd:()=>{},U:function(){},rd:()=>{},nd:()=>{Pa("")},B:a=>{var b=eb[a];delete eb[a];var c=b.Le,e=b.ne,f=b.Qe,k=f.map(n=>n.kf).concat(f.map(n=>n.sf));mb([a],k,n=>{var l={};f.forEach((p,v)=>{var w=n[v],A=p.hf,D=p.jf,I=n[v+f.length],Q=p.rf,P=p.tf;l[p.ef]={read:aa=>w.fromWireType(A(D,aa)),write:(aa,la)=>{var X=[];Q(P,aa,I.toWireType(X,
la));fb(X)}}});return[{name:b.name,fromWireType:p=>{var v={},w;for(w in l)v[w]=l[w].read(p);e(p);return v},toWireType:(p,v)=>{for(var w in l)if(!(w in v))throw new TypeError(`Missing field: "${w}"`);var A=c();for(w in l)l[w].write(A,v[w]);null!==p&&p.push(e,A);return A},je:8,readValueFromPointer:gb,ke:e}]})},Y:()=>{},md:(a,b,c,e)=>{b=K(b);lb(a,{name:b,fromWireType:function(f){return!!f},toWireType:function(f,k){return k?c:e},je:8,readValueFromPointer:function(f){return this.fromWireType(B[f])},ke:null})},
l:(a,b,c,e,f,k,n,l,p,v,w,A,D)=>{w=K(w);k=O(f,k);l&&=O(n,l);v&&=O(p,v);D=O(A,D);var I=Ib(w);Hb(I,function(){ec(`Cannot construct ${w} due to unbound types`,[e])});mb([a,b,c],e?[e]:[],Q=>{Q=Q[0];if(e){var P=Q.be;var aa=P.se}else aa=Eb.prototype;Q=Fb(w,function(...Ea){if(Object.getPrototypeOf(this)!==la)throw new L("Use 'new' to construct "+w);if(void 0===X.pe)throw new L(w+" has no accessible constructor");var ea=X.pe[Ea.length];if(void 0===ea)throw new L(`Tried to invoke ctor of ${w} with invalid number of parameters (${Ea.length}) - expected (${Object.keys(X.pe).toString()}) parameters instead!`);
return ea.apply(this,Ea)});var la=Object.create(aa,{constructor:{value:Q}});Q.prototype=la;var X=new Jb(w,Q,la,D,P,k,l,v);if(X.ge){var ha;(ha=X.ge).ze??(ha.ze=[]);X.ge.ze.push(X)}P=new Qb(w,X,!0,!1,!1);ha=new Qb(w+"*",X,!1,!1,!1);aa=new Qb(w+" const*",X,!1,!0,!1);yb[a]={pointerType:ha,af:aa};Rb(I,Q);return[P,ha,aa]})},e:(a,b,c,e,f,k,n)=>{var l=hc(c,e);b=K(b);b=ic(b);k=O(f,k);mb([],[a],p=>{function v(){ec(`Cannot call ${w} due to unbound types`,l)}p=p[0];var w=`${p.name}.${b}`;b.startsWith("@@")&&
(b=Symbol[b.substring(2)]);var A=p.be.constructor;void 0===A[b]?(v.oe=c-1,A[b]=v):(Gb(A,b,w),A[b].fe[c-1]=v);mb([],l,D=>{D=[D[0],null].concat(D.slice(1));D=gc(w,D,null,k,n);void 0===A[b].fe?(D.oe=c-1,A[b]=D):A[b].fe[c-1]=D;if(p.be.ze)for(const I of p.be.ze)I.constructor.hasOwnProperty(b)||(I.constructor[b]=D);return[]});return[]})},z:(a,b,c,e,f,k)=>{var n=hc(b,c);f=O(e,f);mb([],[a],l=>{l=l[0];var p=`constructor ${l.name}`;void 0===l.be.pe&&(l.be.pe=[]);if(void 0!==l.be.pe[b-1])throw new L(`Cannot register multiple constructors with identical number of parameters (${b-
1}) for class '${l.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);l.be.pe[b-1]=()=>{ec(`Cannot construct ${l.name} due to unbound types`,n)};mb([],n,v=>{v.splice(1,0,null);l.be.pe[b-1]=gc(p,v,null,f,k);return[]});return[]})},a:(a,b,c,e,f,k,n,l)=>{var p=hc(c,e);b=K(b);b=ic(b);k=O(f,k);mb([],[a],v=>{function w(){ec(`Cannot call ${A} due to unbound types`,p)}v=v[0];var A=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);l&&v.be.pf.push(b);
var D=v.be.se,I=D[b];void 0===I||void 0===I.fe&&I.className!==v.name&&I.oe===c-2?(w.oe=c-2,w.className=v.name,D[b]=w):(Gb(D,b,A),D[b].fe[c-2]=w);mb([],p,Q=>{Q=gc(A,Q,v,k,n);void 0===D[b].fe?(Q.oe=c-2,D[b]=Q):D[b].fe[c-2]=Q;return[]});return[]})},q:(a,b,c)=>{a=K(a);mb([],[b],e=>{e=e[0];r[a]=e.fromWireType(c);return[]})},ld:a=>lb(a,nc),j:(a,b,c,e)=>{function f(){}b=K(b);f.values={};lb(a,{name:b,constructor:f,fromWireType:function(k){return this.constructor.values[k]},toWireType:(k,n)=>n.value,je:8,
readValueFromPointer:oc(b,c,e),ke:null});Hb(b,f)},b:(a,b,c)=>{var e=pc(a,"enum");b=K(b);a=e.constructor;e=Object.create(e.constructor.prototype,{value:{value:c},constructor:{value:Fb(`${e.name}_${b}`,function(){})}});a.values[c]=e;a[b]=e},S:(a,b,c)=>{b=K(b);lb(a,{name:b,fromWireType:e=>e,toWireType:(e,f)=>f,je:8,readValueFromPointer:qc(b,c),ke:null})},w:(a,b,c,e,f,k)=>{var n=hc(b,c);a=K(a);a=ic(a);f=O(e,f);Hb(a,function(){ec(`Cannot call ${a} due to unbound types`,n)},b-1);mb([],n,l=>{l=[l[0],null].concat(l.slice(1));
Rb(a,gc(a,l,null,f,k),b-1);return[]})},C:(a,b,c,e,f)=>{b=K(b);-1===f&&(f=4294967295);f=l=>l;if(0===e){var k=32-8*c;f=l=>l<<k>>>k}var n=b.includes("unsigned")?function(l,p){return p>>>0}:function(l,p){return p};lb(a,{name:b,fromWireType:f,toWireType:n,je:8,readValueFromPointer:rc(b,c,0!==e),ke:null})},p:(a,b,c)=>{function e(k){return new f(Ca.buffer,H[k+4>>2],H[k>>2])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=K(c);lb(a,{name:c,fromWireType:e,
je:8,readValueFromPointer:e},{lf:!0})},o:(a,b,c,e,f,k,n,l,p,v,w,A)=>{c=K(c);k=O(f,k);l=O(n,l);v=O(p,v);A=O(w,A);mb([a],[b],D=>{D=D[0];return[new Qb(c,D.be,!1,!1,!0,D,e,k,l,v,A)]})},R:(a,b)=>{b=K(b);var c="std::string"===b;lb(a,{name:b,fromWireType:function(e){var f=H[e>>2],k=e+4;if(c)for(var n=k,l=0;l<=f;++l){var p=k+l;if(l==f||0==B[p]){n=n?db(B,n,p-n):"";if(void 0===v)var v=n;else v+=String.fromCharCode(0),v+=n;n=p+1}}else{v=Array(f);for(l=0;l<f;++l)v[l]=String.fromCharCode(B[k+l]);v=v.join("")}cc(e);
return v},toWireType:function(e,f){f instanceof ArrayBuffer&&(f=new Uint8Array(f));var k="string"==typeof f;if(!(k||f instanceof Uint8Array||f instanceof Uint8ClampedArray||f instanceof Int8Array))throw new L("Cannot pass non-string to std::string");var n=c&&k?qa(f):f.length;var l=pd(4+n+1),p=l+4;H[l>>2]=n;if(c&&k)ra(f,p,n+1);else if(k)for(k=0;k<n;++k){var v=f.charCodeAt(k);if(255<v)throw cc(p),new L("String has UTF-16 code units that do not fit in 8 bits");B[p+k]=v}else for(k=0;k<n;++k)B[p+k]=f[k];
null!==e&&e.push(cc,l);return l},je:8,readValueFromPointer:gb,ke(e){cc(e)}})},M:(a,b,c)=>{c=K(c);if(2===b){var e=tc;var f=uc;var k=vc;var n=l=>Fa[l>>1]}else 4===b&&(e=wc,f=xc,k=yc,n=l=>H[l>>2]);lb(a,{name:c,fromWireType:l=>{for(var p=H[l>>2],v,w=l+4,A=0;A<=p;++A){var D=l+4+A*b;if(A==p||0==n(D))w=e(w,D-w),void 0===v?v=w:(v+=String.fromCharCode(0),v+=w),w=D+b}cc(l);return v},toWireType:(l,p)=>{if("string"!=typeof p)throw new L(`Cannot pass non-string to C++ string type ${c}`);var v=k(p),w=pd(4+v+b);
H[w>>2]=v/b;f(p,w+4,v+b);null!==l&&l.push(cc,w);return w},je:8,readValueFromPointer:gb,ke(l){cc(l)}})},A:(a,b,c,e,f,k)=>{eb[a]={name:K(b),Le:O(c,e),ne:O(f,k),Qe:[]}},d:(a,b,c,e,f,k,n,l,p,v)=>{eb[a].Qe.push({ef:K(b),kf:c,hf:O(e,f),jf:k,sf:n,rf:O(l,p),tf:v})},kd:(a,b)=>{b=K(b);lb(a,{yf:!0,name:b,je:0,fromWireType:()=>{},toWireType:()=>{}})},jd:()=>1,id:()=>{throw Infinity;},E:(a,b,c)=>{a=mc(a);b=pc(b,"emval::as");return zc(b,c,a)},L:(a,b,c,e)=>{a=Ac[a];b=mc(b);return a(null,b,c,e)},t:(a,b,c,e,f)=>{a=
Ac[a];b=mc(b);c=Cc(c);return a(b,b[c],e,f)},c:lc,K:a=>{if(0===a)return Ob(Dc());a=Cc(a);return Ob(Dc()[a])},n:(a,b,c)=>{var e=Fc(a,b),f=e.shift();a--;var k=Array(a);b=`methodCaller<(${e.map(n=>n.name).join(", ")}) => ${f.name}>`;return Ec(Fb(b,(n,l,p,v)=>{for(var w=0,A=0;A<a;++A)k[A]=e[A].readValueFromPointer(v+w),w+=e[A].je;n=1===c?Gc(l,k):l.apply(n,k);return zc(f,p,n)}))},y:(a,b)=>{a=mc(a);b=mc(b);return Ob(a[b])},H:a=>{9<a&&(kc[a+1]+=1)},G:()=>Ob([]),f:a=>Ob(Cc(a)),D:()=>Ob({}),hd:a=>{a=mc(a);
return!a},m:a=>{var b=mc(a);fb(b);lc(a)},h:(a,b,c)=>{a=mc(a);b=mc(b);c=mc(c);a[b]=c},g:(a,b)=>{a=pc(a,"_emval_take_value");a=a.readValueFromPointer(b);return Ob(a)},X:function(){return-52},W:function(){},gd:(a,b,c,e)=>{var f=(new Date).getFullYear(),k=(new Date(f,0,1)).getTimezoneOffset();f=(new Date(f,6,1)).getTimezoneOffset();H[a>>2]=60*Math.max(k,f);E[b>>2]=Number(k!=f);b=n=>{var l=Math.abs(n);return`UTC${0<=n?"-":"+"}${String(Math.floor(l/60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};
a=b(k);b=b(f);f<k?(ra(a,c,17),ra(b,e,17)):(ra(a,e,17),ra(b,c,17))},fd:()=>performance.now(),ed:a=>R.activeTexture(a),dd:(a,b)=>{R.attachShader(Nc[a],Qc[b])},cd:(a,b)=>{R.beginQuery(a,Sc[b])},bd:(a,b)=>{R.me.beginQueryEXT(a,Sc[b])},ad:(a,b,c)=>{R.bindAttribLocation(Nc[a],b,c?db(B,c):"")},$c:(a,b)=>{35051==a?R.Ie=b:35052==a&&(R.re=b);R.bindBuffer(a,Mc[b])},_c:cd,Zc:(a,b)=>{R.bindRenderbuffer(a,Pc[b])},Yc:(a,b)=>{R.bindSampler(a,Tc[b])},Xc:(a,b)=>{R.bindTexture(a,ka[b])},Wc:dd,Vc:dd,Uc:(a,b,c,e)=>R.blendColor(a,
b,c,e),Tc:a=>R.blendEquation(a),Sc:(a,b)=>R.blendFunc(a,b),Rc:(a,b,c,e,f,k,n,l,p,v)=>R.blitFramebuffer(a,b,c,e,f,k,n,l,p,v),Qc:(a,b,c,e)=>{2<=z.version?c&&b?R.bufferData(a,B,e,c,b):R.bufferData(a,b,e):R.bufferData(a,c?B.subarray(c,c+b):b,e)},Pc:(a,b,c,e)=>{2<=z.version?c&&R.bufferSubData(a,b,B,e,c):R.bufferSubData(a,b,B.subarray(e,e+c))},Oc:a=>R.checkFramebufferStatus(a),Nc:ed,Mc:fd,Lc:gd,Kc:(a,b,c,e)=>R.clientWaitSync(Uc[a],b,(c>>>0)+4294967296*e),Jc:(a,b,c,e)=>{R.colorMask(!!a,!!b,!!c,!!e)},Ic:a=>
{R.compileShader(Qc[a])},Hc:(a,b,c,e,f,k,n,l)=>{2<=z.version?R.re||!n?R.compressedTexImage2D(a,b,c,e,f,k,n,l):R.compressedTexImage2D(a,b,c,e,f,k,B,l,n):R.compressedTexImage2D(a,b,c,e,f,k,B.subarray(l,l+n))},Gc:(a,b,c,e,f,k,n,l,p)=>{2<=z.version?R.re||!l?R.compressedTexSubImage2D(a,b,c,e,f,k,n,l,p):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B,p,l):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B.subarray(p,p+l))},Fc:(a,b,c,e,f)=>R.copyBufferSubData(a,b,c,e,f),Ec:(a,b,c,e,f,k,n,l)=>R.copyTexSubImage2D(a,b,c,
e,f,k,n,l),Dc:()=>{var a=ja(Nc),b=R.createProgram();b.name=a;b.Ge=b.Ee=b.Fe=0;b.Me=1;Nc[a]=b;return a},Cc:a=>{var b=ja(Qc);Qc[b]=R.createShader(a);return b},Bc:a=>R.cullFace(a),Ac:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Mc[e];f&&(R.deleteBuffer(f),f.name=0,Mc[e]=null,e==R.Ie&&(R.Ie=0),e==R.re&&(R.re=0))}},zc:(a,b)=>{for(var c=0;c<a;++c){var e=E[b+4*c>>2],f=Oc[e];f&&(R.deleteFramebuffer(f),f.name=0,Oc[e]=null)}},yc:a=>{if(a){var b=Nc[a];b?(R.deleteProgram(b),b.name=0,Nc[a]=null):U||=1281}},
xc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.deleteQuery(f),Sc[e]=null)}},wc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.me.deleteQueryEXT(f),Sc[e]=null)}},vc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Pc[e];f&&(R.deleteRenderbuffer(f),f.name=0,Pc[e]=null)}},uc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Tc[e];f&&(R.deleteSampler(f),f.name=0,Tc[e]=null)}},tc:a=>{if(a){var b=Qc[a];b?(R.deleteShader(b),Qc[a]=null):U||=1281}},sc:a=>{if(a){var b=Uc[a];b?
(R.deleteSync(b),b.name=0,Uc[a]=null):U||=1281}},rc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=ka[e];f&&(R.deleteTexture(f),f.name=0,ka[e]=null)}},qc:hd,pc:hd,oc:a=>{R.depthMask(!!a)},nc:a=>R.disable(a),mc:a=>{R.disableVertexAttribArray(a)},lc:(a,b,c)=>{R.drawArrays(a,b,c)},kc:(a,b,c,e)=>{R.drawArraysInstanced(a,b,c,e)},jc:(a,b,c,e,f)=>{R.Pe.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},ic:(a,b)=>{for(var c=jd[a],e=0;e<a;e++)c[e]=E[b+4*e>>2];R.drawBuffers(c)},hc:(a,b,c,e)=>{R.drawElements(a,
b,c,e)},gc:(a,b,c,e,f)=>{R.drawElementsInstanced(a,b,c,e,f)},fc:(a,b,c,e,f,k,n)=>{R.Pe.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,e,f,k,n)},ec:(a,b,c,e,f,k)=>{R.drawElements(a,e,f,k)},dc:a=>R.enable(a),cc:a=>{R.enableVertexAttribArray(a)},bc:a=>R.endQuery(a),ac:a=>{R.me.endQueryEXT(a)},$b:(a,b)=>(a=R.fenceSync(a,b))?(b=ja(Uc),a.name=b,Uc[b]=a,b):0,_b:()=>R.finish(),Zb:()=>R.flush(),Yb:(a,b,c,e)=>{R.framebufferRenderbuffer(a,b,c,Pc[e])},Xb:(a,b,c,e,f)=>{R.framebufferTexture2D(a,b,c,ka[e],
f)},Wb:a=>R.frontFace(a),Vb:(a,b)=>{$c(a,b,"createBuffer",Mc)},Ub:(a,b)=>{$c(a,b,"createFramebuffer",Oc)},Tb:(a,b)=>{$c(a,b,"createQuery",Sc)},Sb:(a,b)=>{for(var c=0;c<a;c++){var e=R.me.createQueryEXT();if(!e){for(U||=1282;c<a;)E[b+4*c++>>2]=0;break}var f=ja(Sc);e.name=f;Sc[f]=e;E[b+4*c>>2]=f}},Rb:(a,b)=>{$c(a,b,"createRenderbuffer",Pc)},Qb:(a,b)=>{$c(a,b,"createSampler",Tc)},Pb:(a,b)=>{$c(a,b,"createTexture",ka)},Ob:kd,Nb:kd,Mb:a=>R.generateMipmap(a),Lb:(a,b,c)=>{c?E[c>>2]=R.getBufferParameter(a,
b):U||=1281},Kb:()=>{var a=R.getError()||U;U=0;return a},Jb:(a,b)=>md(a,b,2),Ib:(a,b,c,e)=>{a=R.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;E[e>>2]=a},Hb:nd,Gb:(a,b,c,e)=>{a=R.getProgramInfoLog(Nc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},Fb:(a,b,c)=>{if(c)if(a>=Lc)U||=1281;else if(a=Nc[a],35716==b)a=R.getProgramInfoLog(a),null===a&&(a="(unknown error)"),E[c>>2]=a.length+1;else if(35719==b){if(!a.Ge){var e=
R.getProgramParameter(a,35718);for(b=0;b<e;++b)a.Ge=Math.max(a.Ge,R.getActiveUniform(a,b).name.length+1)}E[c>>2]=a.Ge}else if(35722==b){if(!a.Ee)for(e=R.getProgramParameter(a,35721),b=0;b<e;++b)a.Ee=Math.max(a.Ee,R.getActiveAttrib(a,b).name.length+1);E[c>>2]=a.Ee}else if(35381==b){if(!a.Fe)for(e=R.getProgramParameter(a,35382),b=0;b<e;++b)a.Fe=Math.max(a.Fe,R.getActiveUniformBlockName(a,b).length+1);E[c>>2]=a.Fe}else E[c>>2]=R.getProgramParameter(a,b);else U||=1281},Eb:od,Db:od,Cb:(a,b,c)=>{if(c){a=
R.getQueryParameter(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else U||=1281},Bb:(a,b,c)=>{if(c){a=R.me.getQueryObjectEXT(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else U||=1281},Ab:(a,b,c)=>{c?E[c>>2]=R.getQuery(a,b):U||=1281},zb:(a,b,c)=>{c?E[c>>2]=R.me.getQueryEXT(a,b):U||=1281},yb:(a,b,c)=>{c?E[c>>2]=R.getRenderbufferParameter(a,b):U||=1281},xb:(a,b,c,e)=>{a=R.getShaderInfoLog(Qc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},wb:(a,b,c,e)=>
{a=R.getShaderPrecisionFormat(a,b);E[c>>2]=a.rangeMin;E[c+4>>2]=a.rangeMax;E[e>>2]=a.precision},vb:(a,b,c)=>{c?35716==b?(a=R.getShaderInfoLog(Qc[a]),null===a&&(a="(unknown error)"),E[c>>2]=a?a.length+1:0):35720==b?(a=R.getShaderSource(Qc[a]),E[c>>2]=a?a.length+1:0):E[c>>2]=R.getShaderParameter(Qc[a],b):U||=1281},ub:rd,tb:sd,sb:(a,b)=>{b=b?db(B,b):"";if(a=Nc[a]){var c=a,e=c.xe,f=c.Ue,k;if(!e){c.xe=e={};c.Te={};var n=R.getProgramParameter(c,35718);for(k=0;k<n;++k){var l=R.getActiveUniform(c,k);var p=
l.name;l=l.size;var v=td(p);v=0<v?p.slice(0,v):p;var w=c.Me;c.Me+=l;f[v]=[l,w];for(p=0;p<l;++p)e[w]=p,c.Te[w++]=v}}c=a.xe;e=0;f=b;k=td(b);0<k&&(e=parseInt(b.slice(k+1))>>>0,f=b.slice(0,k));if((f=a.Ue[f])&&e<f[0]&&(e+=f[1],c[e]=c[e]||R.getUniformLocation(a,b)))return e}else U||=1281;return-1},rb:(a,b,c)=>{for(var e=jd[b],f=0;f<b;f++)e[f]=E[c+4*f>>2];R.invalidateFramebuffer(a,e)},qb:(a,b,c,e,f,k,n)=>{for(var l=jd[b],p=0;p<b;p++)l[p]=E[c+4*p>>2];R.invalidateSubFramebuffer(a,l,e,f,k,n)},pb:a=>R.isSync(Uc[a]),
ob:a=>(a=ka[a])?R.isTexture(a):0,nb:a=>R.lineWidth(a),mb:a=>{a=Nc[a];R.linkProgram(a);a.xe=0;a.Ue={}},lb:(a,b,c,e,f,k)=>{R.Re.multiDrawArraysInstancedBaseInstanceWEBGL(a,E,b>>2,E,c>>2,E,e>>2,H,f>>2,k)},kb:(a,b,c,e,f,k,n,l)=>{R.Re.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,E,b>>2,c,E,e>>2,E,f>>2,E,k>>2,H,n>>2,l)},jb:(a,b)=>{3317==a?Yc=b:3314==a&&(Zc=b);R.pixelStorei(a,b)},ib:(a,b)=>{R.me.queryCounterEXT(Sc[a],b)},hb:a=>R.readBuffer(a),gb:(a,b,c,e,f,k,n)=>{if(2<=z.version)if(R.Ie)R.readPixels(a,
b,c,e,f,k,n);else{var l=ud(k);n>>>=31-Math.clz32(l.BYTES_PER_ELEMENT);R.readPixels(a,b,c,e,f,k,l,n)}else(l=vd(k,f,c,e,n))?R.readPixels(a,b,c,e,f,k,l):U||=1280},fb:(a,b,c,e)=>R.renderbufferStorage(a,b,c,e),eb:(a,b,c,e,f)=>R.renderbufferStorageMultisample(a,b,c,e,f),db:(a,b,c)=>{R.samplerParameterf(Tc[a],b,c)},cb:(a,b,c)=>{R.samplerParameteri(Tc[a],b,c)},bb:(a,b,c)=>{R.samplerParameteri(Tc[a],b,E[c>>2])},ab:(a,b,c,e)=>R.scissor(a,b,c,e),$a:(a,b,c,e)=>{for(var f="",k=0;k<b;++k){var n=(n=H[c+4*k>>2])?
db(B,n,e?H[e+4*k>>2]:void 0):"";f+=n}R.shaderSource(Qc[a],f)},_a:(a,b,c)=>R.stencilFunc(a,b,c),Za:(a,b,c,e)=>R.stencilFuncSeparate(a,b,c,e),Ya:a=>R.stencilMask(a),Xa:(a,b)=>R.stencilMaskSeparate(a,b),Wa:(a,b,c)=>R.stencilOp(a,b,c),Va:(a,b,c,e)=>R.stencilOpSeparate(a,b,c,e),Ua:(a,b,c,e,f,k,n,l,p)=>{if(2<=z.version){if(R.re){R.texImage2D(a,b,c,e,f,k,n,l,p);return}if(p){var v=ud(l);p>>>=31-Math.clz32(v.BYTES_PER_ELEMENT);R.texImage2D(a,b,c,e,f,k,n,l,v,p);return}}v=p?vd(l,n,e,f,p):null;R.texImage2D(a,
b,c,e,f,k,n,l,v)},Ta:(a,b,c)=>R.texParameterf(a,b,c),Sa:(a,b,c)=>{R.texParameterf(a,b,J[c>>2])},Ra:(a,b,c)=>R.texParameteri(a,b,c),Qa:(a,b,c)=>{R.texParameteri(a,b,E[c>>2])},Pa:(a,b,c,e,f)=>R.texStorage2D(a,b,c,e,f),Oa:(a,b,c,e,f,k,n,l,p)=>{if(2<=z.version){if(R.re){R.texSubImage2D(a,b,c,e,f,k,n,l,p);return}if(p){var v=ud(l);R.texSubImage2D(a,b,c,e,f,k,n,l,v,p>>>31-Math.clz32(v.BYTES_PER_ELEMENT));return}}p=p?vd(l,n,f,k,p):null;R.texSubImage2D(a,b,c,e,f,k,n,l,p)},Na:(a,b)=>{R.uniform1f(Y(a),b)},Ma:(a,
b,c)=>{if(2<=z.version)b&&R.uniform1fv(Y(a),J,c>>2,b);else{if(288>=b)for(var e=wd[b],f=0;f<b;++f)e[f]=J[c+4*f>>2];else e=J.subarray(c>>2,c+4*b>>2);R.uniform1fv(Y(a),e)}},La:(a,b)=>{R.uniform1i(Y(a),b)},Ka:(a,b,c)=>{if(2<=z.version)b&&R.uniform1iv(Y(a),E,c>>2,b);else{if(288>=b)for(var e=xd[b],f=0;f<b;++f)e[f]=E[c+4*f>>2];else e=E.subarray(c>>2,c+4*b>>2);R.uniform1iv(Y(a),e)}},Ja:(a,b,c)=>{R.uniform2f(Y(a),b,c)},Ia:(a,b,c)=>{if(2<=z.version)b&&R.uniform2fv(Y(a),J,c>>2,2*b);else{if(144>=b){b*=2;for(var e=
wd[b],f=0;f<b;f+=2)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2]}else e=J.subarray(c>>2,c+8*b>>2);R.uniform2fv(Y(a),e)}},Ha:(a,b,c)=>{R.uniform2i(Y(a),b,c)},Ga:(a,b,c)=>{if(2<=z.version)b&&R.uniform2iv(Y(a),E,c>>2,2*b);else{if(144>=b){b*=2;for(var e=xd[b],f=0;f<b;f+=2)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2]}else e=E.subarray(c>>2,c+8*b>>2);R.uniform2iv(Y(a),e)}},Fa:(a,b,c,e)=>{R.uniform3f(Y(a),b,c,e)},Ea:(a,b,c)=>{if(2<=z.version)b&&R.uniform3fv(Y(a),J,c>>2,3*b);else{if(96>=b){b*=3;for(var e=wd[b],f=0;f<
b;f+=3)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2],e[f+2]=J[c+(4*f+8)>>2]}else e=J.subarray(c>>2,c+12*b>>2);R.uniform3fv(Y(a),e)}},Da:(a,b,c,e)=>{R.uniform3i(Y(a),b,c,e)},Ca:(a,b,c)=>{if(2<=z.version)b&&R.uniform3iv(Y(a),E,c>>2,3*b);else{if(96>=b){b*=3;for(var e=xd[b],f=0;f<b;f+=3)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2]}else e=E.subarray(c>>2,c+12*b>>2);R.uniform3iv(Y(a),e)}},Ba:(a,b,c,e,f)=>{R.uniform4f(Y(a),b,c,e,f)},Aa:(a,b,c)=>{if(2<=z.version)b&&R.uniform4fv(Y(a),J,c>>2,4*
b);else{if(72>=b){var e=wd[4*b],f=J;c>>=2;b*=4;for(var k=0;k<b;k+=4){var n=c+k;e[k]=f[n];e[k+1]=f[n+1];e[k+2]=f[n+2];e[k+3]=f[n+3]}}else e=J.subarray(c>>2,c+16*b>>2);R.uniform4fv(Y(a),e)}},za:(a,b,c,e,f)=>{R.uniform4i(Y(a),b,c,e,f)},ya:(a,b,c)=>{if(2<=z.version)b&&R.uniform4iv(Y(a),E,c>>2,4*b);else{if(72>=b){b*=4;for(var e=xd[b],f=0;f<b;f+=4)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2],e[f+3]=E[c+(4*f+12)>>2]}else e=E.subarray(c>>2,c+16*b>>2);R.uniform4iv(Y(a),e)}},xa:(a,b,c,e)=>
{if(2<=z.version)b&&R.uniformMatrix2fv(Y(a),!!c,J,e>>2,4*b);else{if(72>=b){b*=4;for(var f=wd[b],k=0;k<b;k+=4)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2]}else f=J.subarray(e>>2,e+16*b>>2);R.uniformMatrix2fv(Y(a),!!c,f)}},wa:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix3fv(Y(a),!!c,J,e>>2,9*b);else{if(32>=b){b*=9;for(var f=wd[b],k=0;k<b;k+=9)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2],f[k+4]=J[e+(4*k+16)>>2],f[k+
5]=J[e+(4*k+20)>>2],f[k+6]=J[e+(4*k+24)>>2],f[k+7]=J[e+(4*k+28)>>2],f[k+8]=J[e+(4*k+32)>>2]}else f=J.subarray(e>>2,e+36*b>>2);R.uniformMatrix3fv(Y(a),!!c,f)}},va:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix4fv(Y(a),!!c,J,e>>2,16*b);else{if(18>=b){var f=wd[16*b],k=J;e>>=2;b*=16;for(var n=0;n<b;n+=16){var l=e+n;f[n]=k[l];f[n+1]=k[l+1];f[n+2]=k[l+2];f[n+3]=k[l+3];f[n+4]=k[l+4];f[n+5]=k[l+5];f[n+6]=k[l+6];f[n+7]=k[l+7];f[n+8]=k[l+8];f[n+9]=k[l+9];f[n+10]=k[l+10];f[n+11]=k[l+11];f[n+12]=k[l+12];f[n+
13]=k[l+13];f[n+14]=k[l+14];f[n+15]=k[l+15]}}else f=J.subarray(e>>2,e+64*b>>2);R.uniformMatrix4fv(Y(a),!!c,f)}},ua:a=>{a=Nc[a];R.useProgram(a);R.bf=a},ta:(a,b)=>R.vertexAttrib1f(a,b),sa:(a,b)=>{R.vertexAttrib2f(a,J[b>>2],J[b+4>>2])},ra:(a,b)=>{R.vertexAttrib3f(a,J[b>>2],J[b+4>>2],J[b+8>>2])},qa:(a,b)=>{R.vertexAttrib4f(a,J[b>>2],J[b+4>>2],J[b+8>>2],J[b+12>>2])},pa:(a,b)=>{R.vertexAttribDivisor(a,b)},oa:(a,b,c,e,f)=>{R.vertexAttribIPointer(a,b,c,e,f)},na:(a,b,c,e,f,k)=>{R.vertexAttribPointer(a,b,c,
!!e,f,k)},ma:(a,b,c,e)=>R.viewport(a,b,c,e),la:(a,b,c,e)=>{R.waitSync(Uc[a],b,(c>>>0)+4294967296*e)},ka:a=>{var b=B.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+1/c);e=Math.min(e,a+100663296);a:{e=(Math.min(2147483648,65536*Math.ceil(Math.max(a,e)/65536))-za.buffer.byteLength+65535)/65536|0;try{za.grow(e);Ha();var f=1;break a}catch(k){}f=void 0}if(f)return!0}return!1},ja:()=>z?z.handle:0,qd:(a,b)=>{var c=0;Ad().forEach((e,f)=>{var k=b+c;f=H[a+4*f>>2]=k;for(k=0;k<e.length;++k)Ca[f++]=
e.charCodeAt(k);Ca[f]=0;c+=e.length+1});return 0},pd:(a,b)=>{var c=Ad();H[a>>2]=c.length;var e=0;c.forEach(f=>e+=f.length+1);H[b>>2]=e;return 0},ia:a=>{Xa||(Ba=!0);throw new Va(a);},N:()=>52,_:function(){return 52},od:()=>52,Z:function(){return 70},T:(a,b,c,e)=>{for(var f=0,k=0;k<c;k++){var n=H[b>>2],l=H[b+4>>2];b+=8;for(var p=0;p<l;p++){var v=B[n+p],w=Bd[a];0===v||10===v?((1===a?xa:ya)(db(w)),w.length=0):w.push(v)}f+=l}H[e>>2]=f;return 0},ha:cd,ga:ed,fa:fd,ea:gd,J:nd,Q:rd,da:sd,k:Hd,u:Id,i:Jd,I:Kd,
ca:Ld,P:Md,O:Nd,s:Od,x:Pd,r:Qd,v:Rd,ba:Sd,aa:Td,$:Ud},Z=function(){function a(c){Z=c.exports;za=Z.wd;Ha();N=Z.zd;Ja.unshift(Z.xd);La--;0==La&&(null!==Na&&(clearInterval(Na),Na=null),Oa&&(c=Oa,Oa=null,c()));return Z}var b={a:Vd};La++;if(r.instantiateWasm)try{return r.instantiateWasm(b,a)}catch(c){ya(`Module.instantiateWasm callback failed with error: ${c}`),ca(c)}Ra??=r.locateFile?Qa("canvaskit.wasm")?"canvaskit.wasm":ta+"canvaskit.wasm":(new URL("canvaskit.wasm",import.meta.url)).href;
Ua(b,function(c){a(c.instance)}).catch(ca);return{}}(),bc=a=>(bc=Z.yd)(a),pd=r._malloc=a=>(pd=r._malloc=Z.Ad)(a),cc=r._free=a=>(cc=r._free=Z.Bd)(a),Wd=(a,b)=>(Wd=Z.Cd)(a,b),Xd=a=>(Xd=Z.Dd)(a),Yd=()=>(Yd=Z.Ed)();r.dynCall_viji=(a,b,c,e,f)=>(r.dynCall_viji=Z.Fd)(a,b,c,e,f);r.dynCall_vijiii=(a,b,c,e,f,k,n)=>(r.dynCall_vijiii=Z.Gd)(a,b,c,e,f,k,n);r.dynCall_viiiiij=(a,b,c,e,f,k,n,l)=>(r.dynCall_viiiiij=Z.Hd)(a,b,c,e,f,k,n,l);r.dynCall_iiiji=(a,b,c,e,f,k)=>(r.dynCall_iiiji=Z.Id)(a,b,c,e,f,k);
r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=Z.Jd)(a,b,c);r.dynCall_vij=(a,b,c,e)=>(r.dynCall_vij=Z.Kd)(a,b,c,e);r.dynCall_jiiiiii=(a,b,c,e,f,k,n)=>(r.dynCall_jiiiiii=Z.Ld)(a,b,c,e,f,k,n);r.dynCall_jiiiiji=(a,b,c,e,f,k,n,l)=>(r.dynCall_jiiiiji=Z.Md)(a,b,c,e,f,k,n,l);r.dynCall_ji=(a,b)=>(r.dynCall_ji=Z.Nd)(a,b);r.dynCall_iijj=(a,b,c,e,f,k)=>(r.dynCall_iijj=Z.Od)(a,b,c,e,f,k);r.dynCall_iiji=(a,b,c,e,f)=>(r.dynCall_iiji=Z.Pd)(a,b,c,e,f);
r.dynCall_iijjiii=(a,b,c,e,f,k,n,l,p)=>(r.dynCall_iijjiii=Z.Qd)(a,b,c,e,f,k,n,l,p);r.dynCall_iij=(a,b,c,e)=>(r.dynCall_iij=Z.Rd)(a,b,c,e);r.dynCall_vijjjii=(a,b,c,e,f,k,n,l,p,v)=>(r.dynCall_vijjjii=Z.Sd)(a,b,c,e,f,k,n,l,p,v);r.dynCall_jiji=(a,b,c,e,f)=>(r.dynCall_jiji=Z.Td)(a,b,c,e,f);r.dynCall_viijii=(a,b,c,e,f,k,n)=>(r.dynCall_viijii=Z.Ud)(a,b,c,e,f,k,n);r.dynCall_iiiiij=(a,b,c,e,f,k,n)=>(r.dynCall_iiiiij=Z.Vd)(a,b,c,e,f,k,n);
r.dynCall_iiiiijj=(a,b,c,e,f,k,n,l,p)=>(r.dynCall_iiiiijj=Z.Wd)(a,b,c,e,f,k,n,l,p);r.dynCall_iiiiiijj=(a,b,c,e,f,k,n,l,p,v)=>(r.dynCall_iiiiiijj=Z.Xd)(a,b,c,e,f,k,n,l,p,v);function Rd(a,b,c,e,f){var k=Yd();try{N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}function Id(a,b,c){var e=Yd();try{return N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}function Pd(a,b,c){var e=Yd();try{N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}
function Hd(a,b){var c=Yd();try{return N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Od(a,b){var c=Yd();try{N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Jd(a,b,c,e){var f=Yd();try{return N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}function Ud(a,b,c,e,f,k,n,l,p,v){var w=Yd();try{N.get(a)(b,c,e,f,k,n,l,p,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}function Qd(a,b,c,e){var f=Yd();try{N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}
function Td(a,b,c,e,f,k,n){var l=Yd();try{N.get(a)(b,c,e,f,k,n)}catch(p){Xd(l);if(p!==p+0)throw p;Wd(1,0)}}function Md(a,b,c,e,f,k,n,l){var p=Yd();try{return N.get(a)(b,c,e,f,k,n,l)}catch(v){Xd(p);if(v!==v+0)throw v;Wd(1,0)}}function Sd(a,b,c,e,f,k){var n=Yd();try{N.get(a)(b,c,e,f,k)}catch(l){Xd(n);if(l!==l+0)throw l;Wd(1,0)}}function Kd(a,b,c,e,f){var k=Yd();try{return N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}
function Nd(a,b,c,e,f,k,n,l,p,v){var w=Yd();try{return N.get(a)(b,c,e,f,k,n,l,p,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}function Ld(a,b,c,e,f,k,n){var l=Yd();try{return N.get(a)(b,c,e,f,k,n)}catch(p){Xd(l);if(p!==p+0)throw p;Wd(1,0)}}var Zd,$d;Oa=function ae(){Zd||be();Zd||(Oa=ae)};function be(){if(!(0<La)){if(!$d&&($d=1,Wa(Ia),0<La))return;Zd||(Zd=1,r.calledRun=1,Ba||(Wa(Ja),ba(r),r.onRuntimeInitialized?.(),Wa(Ka)))}}be();moduleRtn=da;
return moduleRtn;
}
);
})();
export default CanvasKitInit;

File diff suppressed because one or more lines are too long

View File

@ -1,192 +0,0 @@
var CanvasKitInit = (() => {
var _scriptName = import.meta.url;
return (
function(moduleArg = {}) {
var moduleRtn;
var r=moduleArg,ba,ca,da=new Promise((a,b)=>{ba=a;ca=b}),fa="object"==typeof window,ia="function"==typeof importScripts;
(function(a){a.Xd=a.Xd||[];a.Xd.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,e="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||e||(c=document.getElementById(b),c)))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.ue=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var e={width:b,height:c,colorType:a.ColorType.RGBA_8888,
alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},f=b*c*4,k=a._malloc(f);if(e=a.Surface._makeRasterDirect(e,k,4*b))e.ue=null,e.Ue=b,e.Re=c,e.Se=f,e.Be=k,e.getCanvas().clear(a.TRANSPARENT);return e};a.MakeRasterDirectSurface=function(b,c,e){return a.Surface._makeRasterDirect(b,c.byteOffset,e)};a.Surface.prototype.flush=function(b){a.Ud(this.Td);this._flush();if(this.ue){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.Be,this.Se);c=new ImageData(c,this.Ue,this.Re);b?this.ue.getContext("2d").putImageData(c,
0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.ue.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=function(){this.Be&&a._free(this.Be);this.delete()};a.Ud=a.Ud||function(){};a.ve=a.ve||function(){return null}})})(r);
(function(a){a.Xd=a.Xd||[];a.Xd.push(function(){function b(l,q,v){return l&&l.hasOwnProperty(q)?l[q]:v}function c(l){var q=ja(ka);ka[q]=l;return q}function e(l){return l.naturalHeight||l.videoHeight||l.displayHeight||l.height}function f(l){return l.naturalWidth||l.videoWidth||l.displayWidth||l.width}function k(l,q,v,w){l.bindTexture(l.TEXTURE_2D,q);w||v.alphaType!==a.AlphaType.Premul||l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);return q}function n(l,q,v){v||q.alphaType!==a.AlphaType.Premul||
l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null)}a.GetWebGLContext=function(l,q){if(!l)throw"null canvas passed into makeWebGLContext";var v={alpha:b(q,"alpha",1),depth:b(q,"depth",1),stencil:b(q,"stencil",8),antialias:b(q,"antialias",0),premultipliedAlpha:b(q,"premultipliedAlpha",1),preserveDrawingBuffer:b(q,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(q,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(q,"failIfMajorPerformanceCaveat",
0),enableExtensionsByDefault:b(q,"enableExtensionsByDefault",1),explicitSwapControl:b(q,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(q,"renderViaOffscreenBackBuffer",0)};v.majorVersion=q&&q.majorVersion?q.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw"explicitSwapControl is not supported";l=na(l,v);if(!l)return 0;oa(l);z.fe.getExtension("WEBGL_debug_renderer_info");return l};a.deleteContext=function(l){z===pa[l]&&(z=null);"object"==typeof JSEvents&&
JSEvents.uf(pa[l].fe.canvas);pa[l]&&pa[l].fe.canvas&&(pa[l].fe.canvas.Pe=void 0);pa[l]=null};a._setTextureCleanup({deleteTexture:function(l,q){var v=ka[q];v&&pa[l].fe.deleteTexture(v);ka[q]=null}});a.MakeWebGLContext=function(l){if(!this.Ud(l))return null;var q=this._MakeGrContext();if(!q)return null;q.Td=l;var v=q.delete.bind(q);q["delete"]=function(){a.Ud(this.Td);v()}.bind(q);return z.De=q};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.Ud(this.Td);
this._getResourceCacheLimitBytes()};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.Ud(this.Td);this._getResourceCacheUsageBytes()};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.Ud(this.Td);this._releaseResourcesAndAbandonContext()};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(l){a.Ud(this.Td);this._setResourceCacheLimitBytes(l)};a.MakeOnScreenGLSurface=function(l,q,v,w,A,D){if(!this.Ud(l.Td))return null;q=void 0===A||void 0===D?
this._MakeOnScreenGLSurface(l,q,v,w):this._MakeOnScreenGLSurface(l,q,v,w,A,D);if(!q)return null;q.Td=l.Td;return q};a.MakeRenderTarget=function(){var l=arguments[0];if(!this.Ud(l.Td))return null;if(3===arguments.length){var q=this._MakeRenderTargetWH(l,arguments[1],arguments[2]);if(!q)return null}else if(2===arguments.length){if(q=this._MakeRenderTargetII(l,arguments[1]),!q)return null}else return null;q.Td=l.Td;return q};a.MakeWebGLCanvasSurface=function(l,q,v){q=q||null;var w=l,A="undefined"!==
typeof OffscreenCanvas&&w instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&w instanceof HTMLCanvasElement||A||(w=document.getElementById(l),w)))throw"Canvas with id "+l+" was not found";l=this.GetWebGLContext(w,v);if(!l||0>l)throw"failed to create webgl context: err "+l;l=this.MakeWebGLContext(l);q=this.MakeOnScreenGLSurface(l,w.width,w.height,q);return q?q:(q=w.cloneNode(!0),w.parentNode.replaceChild(q,w),q.classList.add("ck-replaced"),a.MakeSWCanvasSurface(q))};a.MakeCanvasSurface=
a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(l,q){a.Ud(this.Td);l=c(l);if(q=this._makeImageFromTexture(this.Td,l,q))q.oe=l;return q};a.Surface.prototype.makeImageFromTextureSource=function(l,q,v){q||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};q.colorSpace||(q.colorSpace=a.ColorSpace.SRGB);a.Ud(this.Td);var w=z.fe;v=k(w,w.createTexture(),q,v);2===z.version?w.texImage2D(w.TEXTURE_2D,0,w.RGBA,q.width,q.height,
0,w.RGBA,w.UNSIGNED_BYTE,l):w.texImage2D(w.TEXTURE_2D,0,w.RGBA,w.RGBA,w.UNSIGNED_BYTE,l);n(w,q);this._resetContext();return this.makeImageFromTexture(v,q)};a.Surface.prototype.updateTextureFromSource=function(l,q,v){if(l.oe){a.Ud(this.Td);var w=l.getImageInfo(),A=z.fe,D=k(A,ka[l.oe],w,v);2===z.version?A.texImage2D(A.TEXTURE_2D,0,A.RGBA,f(q),e(q),0,A.RGBA,A.UNSIGNED_BYTE,q):A.texImage2D(A.TEXTURE_2D,0,A.RGBA,A.RGBA,A.UNSIGNED_BYTE,q);n(A,w,v);this._resetContext();ka[l.oe]=null;l.oe=c(D);w.colorSpace=
l.getColorSpace();q=this._makeImageFromTexture(this.Td,l.oe,w);v=l.Sd.Vd;A=l.Sd.Zd;l.Sd.Vd=q.Sd.Vd;l.Sd.Zd=q.Sd.Zd;q.Sd.Vd=v;q.Sd.Zd=A;q.delete();w.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(l,q,v){q||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};q.colorSpace||(q.colorSpace=a.ColorSpace.SRGB);var w={makeTexture:function(){var A=z,D=A.fe,I=k(D,D.createTexture(),q,v);2===A.version?D.texImage2D(D.TEXTURE_2D,0,D.RGBA,
q.width,q.height,0,D.RGBA,D.UNSIGNED_BYTE,l):D.texImage2D(D.TEXTURE_2D,0,D.RGBA,D.RGBA,D.UNSIGNED_BYTE,l);n(D,q,v);return c(I)},freeSrc:function(){}};"VideoFrame"===l.constructor.name&&(w.freeSrc=function(){l.close()});return a.Image._makeFromGenerator(q,w)};a.Ud=function(l){return l?oa(l):!1};a.ve=function(){return z&&z.De&&!z.De.isDeleted()?z.De:null}})})(r);
(function(a){function b(g){return(f(255*g[3])<<24|f(255*g[0])<<16|f(255*g[1])<<8|f(255*g[2])<<0)>>>0}function c(g){if(g&&g._ck)return g;if(g instanceof Float32Array){for(var d=Math.floor(g.length/4),h=new Uint32Array(d),m=0;m<d;m++)h[m]=b(g.slice(4*m,4*(m+1)));return h}if(g instanceof Uint32Array)return g;if(g instanceof Array&&g[0]instanceof Float32Array)return g.map(b)}function e(g){if(void 0===g)return 1;var d=parseFloat(g);return g&&-1!==g.indexOf("%")?d/100:d}function f(g){return Math.round(Math.max(0,
Math.min(g||0,255)))}function k(g,d){d&&d._ck||a._free(g)}function n(g,d,h){if(!g||!g.length)return 0;if(g&&g._ck)return g.byteOffset;var m=a[d].BYTES_PER_ELEMENT;h||=a._malloc(g.length*m);a[d].set(g,h/m);return h}function l(g){var d={be:0,count:g.length,colorType:a.ColorType.RGBA_F32};if(g instanceof Float32Array)d.be=n(g,"HEAPF32"),d.count=g.length/4;else if(g instanceof Uint32Array)d.be=n(g,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(g instanceof Array){if(g&&g.length){for(var h=a._malloc(16*
g.length),m=0,t=h/4,u=0;u<g.length;u++)for(var x=0;4>x;x++)a.HEAPF32[t+m]=g[u][x],m++;g=h}else g=0;d.be=g}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof g;return d}function q(g){if(!g)return 0;var d=aa.toTypedArray();if(g.length){if(6===g.length||9===g.length)return n(g,"HEAPF32",O),6===g.length&&a.HEAPF32.set(Vc,6+O/4),O;if(16===g.length)return d[0]=g[0],d[1]=g[1],d[2]=g[3],d[3]=g[4],d[4]=g[5],d[5]=g[7],d[6]=g[12],d[7]=g[13],d[8]=g[15],O;throw"invalid matrix size";
}if(void 0===g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m41;d[3]=g.m12;d[4]=g.m22;d[5]=g.m42;d[6]=g.m14;d[7]=g.m24;d[8]=g.m44;return O}function v(g){if(!g)return 0;var d=X.toTypedArray();if(g.length){if(16!==g.length&&6!==g.length&&9!==g.length)throw"invalid matrix size";if(16===g.length)return n(g,"HEAPF32",la);d.fill(0);d[0]=g[0];d[1]=g[1];d[3]=g[2];d[4]=g[3];d[5]=g[4];d[7]=g[5];d[10]=1;d[12]=g[6];d[13]=g[7];d[15]=g[8];6===g.length&&(d[12]=0,d[13]=0,d[15]=1);return la}if(void 0===
g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m31;d[3]=g.m41;d[4]=g.m12;d[5]=g.m22;d[6]=g.m32;d[7]=g.m42;d[8]=g.m13;d[9]=g.m23;d[10]=g.m33;d[11]=g.m43;d[12]=g.m14;d[13]=g.m24;d[14]=g.m34;d[15]=g.m44;return la}function w(g,d){return n(g,"HEAPF32",d||ha)}function A(g,d,h,m){var t=Ea.toTypedArray();t[0]=g;t[1]=d;t[2]=h;t[3]=m;return ha}function D(g){for(var d=new Float32Array(4),h=0;4>h;h++)d[h]=a.HEAPF32[g/4+h];return d}function I(g,d){return n(g,"HEAPF32",d||V)}function P(g,d){return n(g,
"HEAPF32",d||tb)}a.Color=function(g,d,h,m){void 0===m&&(m=1);return a.Color4f(f(g)/255,f(d)/255,f(h)/255,m)};a.ColorAsInt=function(g,d,h,m){void 0===m&&(m=255);return(f(m)<<24|f(g)<<16|f(d)<<8|f(h)<<0&268435455)>>>0};a.Color4f=function(g,d,h,m){void 0===m&&(m=1);return Float32Array.of(g,d,h,m)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,"WHITE",{get:function(){return a.Color4f(1,
1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,0,1,1)}});a.getColorComponents=function(g){return[Math.floor(255*
g[0]),Math.floor(255*g[1]),Math.floor(255*g[2]),g[3]]};a.parseColorString=function(g,d){g=g.toLowerCase();if(g.startsWith("#")){d=255;switch(g.length){case 9:d=parseInt(g.slice(7,9),16);case 7:var h=parseInt(g.slice(1,3),16);var m=parseInt(g.slice(3,5),16);var t=parseInt(g.slice(5,7),16);break;case 5:d=17*parseInt(g.slice(4,5),16);case 4:h=17*parseInt(g.slice(1,2),16),m=17*parseInt(g.slice(2,3),16),t=17*parseInt(g.slice(3,4),16)}return a.Color(h,m,t,d/255)}return g.startsWith("rgba")?(g=g.slice(5,
-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("rgb")?(g=g.slice(4,-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("gray(")||g.startsWith("hsl")||!d||(g=d[g],void 0===g)?a.BLACK:g};a.multiplyByAlpha=function(g,d){g=g.slice();g[3]=Math.max(0,Math.min(g[3]*d,1));return g};a.Malloc=function(g,d){var h=a._malloc(d*g.BYTES_PER_ELEMENT);return{_ck:!0,length:d,byteOffset:h,ke:null,subarray:function(m,t){m=this.toTypedArray().subarray(m,t);m._ck=!0;return m},toTypedArray:function(){if(this.ke&&
this.ke.length)return this.ke;this.ke=new g(a.HEAPU8.buffer,h,d);this.ke._ck=!0;return this.ke}}};a.Free=function(g){a._free(g.byteOffset);g.byteOffset=0;g.toTypedArray=null;g.ke=null};var O=0,aa,la=0,X,ha=0,Ea,ea,V=0,Ub,Aa=0,Vb,ub=0,Wb,vb=0,$a,Ma=0,Xb,tb=0,Yb,Zb=0,Vc=Float32Array.of(0,0,1);a.onRuntimeInitialized=function(){function g(d,h,m,t,u,x,C){x||(x=4*t.width,t.colorType===a.ColorType.RGBA_F16?x*=2:t.colorType===a.ColorType.RGBA_F32&&(x*=4));var G=x*t.height;var F=u?u.byteOffset:a._malloc(G);
if(C?!d._readPixels(t,F,x,h,m,C):!d._readPixels(t,F,x,h,m))return u||a._free(F),null;if(u)return u.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,F,G)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,F,G)).slice();break;default:return null}a._free(F);return d}Ea=a.Malloc(Float32Array,4);ha=Ea.byteOffset;X=a.Malloc(Float32Array,16);la=X.byteOffset;aa=a.Malloc(Float32Array,9);O=aa.byteOffset;Xb=a.Malloc(Float32Array,
12);tb=Xb.byteOffset;Yb=a.Malloc(Float32Array,12);Zb=Yb.byteOffset;ea=a.Malloc(Float32Array,4);V=ea.byteOffset;Ub=a.Malloc(Float32Array,4);Aa=Ub.byteOffset;Vb=a.Malloc(Float32Array,3);ub=Vb.byteOffset;Wb=a.Malloc(Float32Array,3);vb=Wb.byteOffset;$a=a.Malloc(Int32Array,4);Ma=$a.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=
function(d){var h=n(d,"HEAPF32"),m=a.Path._MakeFromCmds(h,d.length);k(h,d);return m};a.Path.MakeFromVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),x=n(m,"HEAPF32"),C=a.Path._MakeFromVerbsPointsWeights(t,d.length,u,h.length,x,m&&m.length||0);k(t,d);k(u,h);k(x,m);return C};a.Path.prototype.addArc=function(d,h,m){d=I(d);this._addArc(d,h,m);return this};a.Path.prototype.addCircle=function(d,h,m,t){this._addCircle(d,h,m,!!t);return this};a.Path.prototype.addOval=function(d,h,m){void 0===
m&&(m=1);d=I(d);this._addOval(d,!!h,m);return this};a.Path.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),h=d[0],m=!1;"boolean"===typeof d[d.length-1]&&(m=d.pop());if(1===d.length)this._addPath(h,1,0,0,0,1,0,0,0,1,m);else if(2===d.length)d=d[1],this._addPath(h,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,m);else if(7===d.length||10===d.length)this._addPath(h,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||0,d[8]||0,d[9]||1,m);else return null;return this};a.Path.prototype.addPoly=
function(d,h){var m=n(d,"HEAPF32");this._addPoly(m,d.length/2,h);k(m,d);return this};a.Path.prototype.addRect=function(d,h){d=I(d);this._addRect(d,!!h);return this};a.Path.prototype.addRRect=function(d,h){d=P(d);this._addRRect(d,!!h);return this};a.Path.prototype.addVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),x=n(m,"HEAPF32");this._addVerbsPointsWeights(t,d.length,u,h.length,x,m&&m.length||0);k(t,d);k(u,h);k(x,m)};a.Path.prototype.arc=function(d,h,m,t,u,x){d=a.LTRBRect(d-
m,h-m,d+m,h+m);u=(u-t)/Math.PI*180-360*!!x;x=new a.Path;x.addArc(d,t/Math.PI*180,u);this.addPath(x,!0);x.delete();return this};a.Path.prototype.arcToOval=function(d,h,m,t){d=I(d);this._arcToOval(d,h,m,t);return this};a.Path.prototype.arcToRotated=function(d,h,m,t,u,x,C){this._arcToRotated(d,h,m,!!t,!!u,x,C);return this};a.Path.prototype.arcToTangent=function(d,h,m,t,u){this._arcToTangent(d,h,m,t,u);return this};a.Path.prototype.close=function(){this._close();return this};a.Path.prototype.conicTo=
function(d,h,m,t,u){this._conicTo(d,h,m,t,u);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.Path.prototype.cubicTo=function(d,h,m,t,u,x){this._cubicTo(d,h,m,t,u,x);return this};a.Path.prototype.dash=function(d,h,m){return this._dash(d,h,m)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.Path.prototype.lineTo=function(d,
h){this._lineTo(d,h);return this};a.Path.prototype.moveTo=function(d,h){this._moveTo(d,h);return this};a.Path.prototype.offset=function(d,h){this._transform(1,0,d,0,1,h,0,0,1);return this};a.Path.prototype.quadTo=function(d,h,m,t){this._quadTo(d,h,m,t);return this};a.Path.prototype.rArcTo=function(d,h,m,t,u,x,C){this._rArcTo(d,h,m,t,u,x,C);return this};a.Path.prototype.rConicTo=function(d,h,m,t,u){this._rConicTo(d,h,m,t,u);return this};a.Path.prototype.rCubicTo=function(d,h,m,t,u,x){this._rCubicTo(d,
h,m,t,u,x);return this};a.Path.prototype.rLineTo=function(d,h){this._rLineTo(d,h);return this};a.Path.prototype.rMoveTo=function(d,h){this._rMoveTo(d,h);return this};a.Path.prototype.rQuadTo=function(d,h,m,t){this._rQuadTo(d,h,m,t);return this};a.Path.prototype.stroke=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._stroke(d)?this:null};a.Path.prototype.transform=function(){if(1===
arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1)}else if(6===arguments.length||9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(d,h,m){return this._trim(d,h,!!m)?this:null};a.Image.prototype.encodeToBytes=function(d,h){var m=a.ve();d=d||a.ImageFormat.PNG;h=h||100;
return m?this._encodeToBytes(d,h,m):this._encodeToBytes(d,h)};a.Image.prototype.makeShaderCubic=function(d,h,m,t,u){u=q(u);return this._makeShaderCubic(d,h,m,t,u)};a.Image.prototype.makeShaderOptions=function(d,h,m,t,u){u=q(u);return this._makeShaderOptions(d,h,m,t,u)};a.Image.prototype.readPixels=function(d,h,m,t,u){var x=a.ve();return g(this,d,h,m,t,u,x)};a.Canvas.prototype.clear=function(d){a.Ud(this.Td);d=w(d);this._clear(d)};a.Canvas.prototype.clipRRect=function(d,h,m){a.Ud(this.Td);d=P(d);this._clipRRect(d,
h,m)};a.Canvas.prototype.clipRect=function(d,h,m){a.Ud(this.Td);d=I(d);this._clipRect(d,h,m)};a.Canvas.prototype.concat=function(d){a.Ud(this.Td);d=v(d);this._concat(d)};a.Canvas.prototype.drawArc=function(d,h,m,t,u){a.Ud(this.Td);d=I(d);this._drawArc(d,h,m,t,u)};a.Canvas.prototype.drawAtlas=function(d,h,m,t,u,x,C){if(d&&t&&h&&m&&h.length===m.length){a.Ud(this.Td);u||(u=a.BlendMode.SrcOver);var G=n(h,"HEAPF32"),F=n(m,"HEAPF32"),S=m.length/4,T=n(c(x),"HEAPU32");if(C&&"B"in C&&"C"in C)this._drawAtlasCubic(d,
F,G,T,S,u,C.B,C.C,t);else{let p=a.FilterMode.Linear,y=a.MipmapMode.None;C&&(p=C.filter,"mipmap"in C&&(y=C.mipmap));this._drawAtlasOptions(d,F,G,T,S,u,p,y,t)}k(G,h);k(F,m);k(T,x)}};a.Canvas.prototype.drawCircle=function(d,h,m,t){a.Ud(this.Td);this._drawCircle(d,h,m,t)};a.Canvas.prototype.drawColor=function(d,h){a.Ud(this.Td);d=w(d);void 0!==h?this._drawColor(d,h):this._drawColor(d)};a.Canvas.prototype.drawColorInt=function(d,h){a.Ud(this.Td);this._drawColorInt(d,h||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents=
function(d,h,m,t,u){a.Ud(this.Td);d=A(d,h,m,t);void 0!==u?this._drawColor(d,u):this._drawColor(d)};a.Canvas.prototype.drawDRRect=function(d,h,m){a.Ud(this.Td);d=P(d,tb);h=P(h,Zb);this._drawDRRect(d,h,m)};a.Canvas.prototype.drawImage=function(d,h,m,t){a.Ud(this.Td);this._drawImage(d,h,m,t||null)};a.Canvas.prototype.drawImageCubic=function(d,h,m,t,u,x){a.Ud(this.Td);this._drawImageCubic(d,h,m,t,u,x||null)};a.Canvas.prototype.drawImageOptions=function(d,h,m,t,u,x){a.Ud(this.Td);this._drawImageOptions(d,
h,m,t,u,x||null)};a.Canvas.prototype.drawImageNine=function(d,h,m,t,u){a.Ud(this.Td);h=n(h,"HEAP32",Ma);m=I(m);this._drawImageNine(d,h,m,t,u||null)};a.Canvas.prototype.drawImageRect=function(d,h,m,t,u){a.Ud(this.Td);I(h,V);I(m,Aa);this._drawImageRect(d,V,Aa,t,!!u)};a.Canvas.prototype.drawImageRectCubic=function(d,h,m,t,u,x){a.Ud(this.Td);I(h,V);I(m,Aa);this._drawImageRectCubic(d,V,Aa,t,u,x||null)};a.Canvas.prototype.drawImageRectOptions=function(d,h,m,t,u,x){a.Ud(this.Td);I(h,V);I(m,Aa);this._drawImageRectOptions(d,
V,Aa,t,u,x||null)};a.Canvas.prototype.drawLine=function(d,h,m,t,u){a.Ud(this.Td);this._drawLine(d,h,m,t,u)};a.Canvas.prototype.drawOval=function(d,h){a.Ud(this.Td);d=I(d);this._drawOval(d,h)};a.Canvas.prototype.drawPaint=function(d){a.Ud(this.Td);this._drawPaint(d)};a.Canvas.prototype.drawParagraph=function(d,h,m){a.Ud(this.Td);this._drawParagraph(d,h,m)};a.Canvas.prototype.drawPatch=function(d,h,m,t,u){if(24>d.length)throw"Need 12 cubic points";if(h&&4>h.length)throw"Need 4 colors";if(m&&8>m.length)throw"Need 4 shader coordinates";
a.Ud(this.Td);const x=n(d,"HEAPF32"),C=h?n(c(h),"HEAPU32"):0,G=m?n(m,"HEAPF32"):0;t||(t=a.BlendMode.Modulate);this._drawPatch(x,C,G,t,u);k(G,m);k(C,h);k(x,d)};a.Canvas.prototype.drawPath=function(d,h){a.Ud(this.Td);this._drawPath(d,h)};a.Canvas.prototype.drawPicture=function(d){a.Ud(this.Td);this._drawPicture(d)};a.Canvas.prototype.drawPoints=function(d,h,m){a.Ud(this.Td);var t=n(h,"HEAPF32");this._drawPoints(d,t,h.length/2,m);k(t,h)};a.Canvas.prototype.drawRRect=function(d,h){a.Ud(this.Td);d=P(d);
this._drawRRect(d,h)};a.Canvas.prototype.drawRect=function(d,h){a.Ud(this.Td);d=I(d);this._drawRect(d,h)};a.Canvas.prototype.drawRect4f=function(d,h,m,t,u){a.Ud(this.Td);this._drawRect4f(d,h,m,t,u)};a.Canvas.prototype.drawShadow=function(d,h,m,t,u,x,C){a.Ud(this.Td);var G=n(u,"HEAPF32"),F=n(x,"HEAPF32");h=n(h,"HEAPF32",ub);m=n(m,"HEAPF32",vb);this._drawShadow(d,h,m,t,G,F,C);k(G,u);k(F,x)};a.getShadowLocalBounds=function(d,h,m,t,u,x,C){d=q(d);m=n(m,"HEAPF32",ub);t=n(t,"HEAPF32",vb);if(!this._getShadowLocalBounds(d,
h,m,t,u,x,V))return null;h=ea.toTypedArray();return C?(C.set(h),C):h.slice()};a.Canvas.prototype.drawTextBlob=function(d,h,m,t){a.Ud(this.Td);this._drawTextBlob(d,h,m,t)};a.Canvas.prototype.drawVertices=function(d,h,m){a.Ud(this.Td);this._drawVertices(d,h,m)};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(Ma);var h=$a.toTypedArray();d?d.set(h):d=h.slice();return d};a.Canvas.prototype.quickReject=function(d){d=I(d);return this._quickReject(d)};a.Canvas.prototype.getLocalToDevice=
function(){this._getLocalToDevice(la);for(var d=la,h=Array(16),m=0;16>m;m++)h[m]=a.HEAPF32[d/4+m];return h};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(O);for(var d=Array(9),h=0;9>h;h++)d[h]=a.HEAPF32[O/4+h];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Td=this.Td;return d};a.Canvas.prototype.readPixels=function(d,h,m,t,u){a.Ud(this.Td);return g(this,d,h,m,t,u)};a.Canvas.prototype.saveLayer=function(d,h,m,t,u){h=I(h);return this._saveLayer(d||
null,h,m||null,t||0,u||a.TileMode.Clamp)};a.Canvas.prototype.writePixels=function(d,h,m,t,u,x,C,G){if(d.byteLength%(h*m))throw"pixels length must be a multiple of the srcWidth * srcHeight";a.Ud(this.Td);var F=d.byteLength/(h*m);x=x||a.AlphaType.Unpremul;C=C||a.ColorType.RGBA_8888;G=G||a.ColorSpace.SRGB;var S=F*h;F=n(d,"HEAPU8");h=this._writePixels({width:h,height:m,colorType:C,alphaType:x,colorSpace:G},F,S,t,u);k(F,d);return h};a.ColorFilter.MakeBlend=function(d,h,m){d=w(d);m=m||a.ColorSpace.SRGB;
return a.ColorFilter._MakeBlend(d,h,m)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw"invalid color matrix";var h=n(d,"HEAPF32"),m=a.ColorFilter._makeMatrix(h);k(h,d);return m};a.ContourMeasure.prototype.getPosTan=function(d,h){this._getPosTan(d,V);d=ea.toTypedArray();return h?(h.set(d),h):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,h,m){d=I(d,V);h=q(h);this._getOutputBounds(d,h,Ma);h=$a.toTypedArray();return m?(m.set(h),m):h.slice()};a.ImageFilter.MakeDropShadow=
function(d,h,m,t,u,x){u=w(u,ha);return a.ImageFilter._MakeDropShadow(d,h,m,t,u,x)};a.ImageFilter.MakeDropShadowOnly=function(d,h,m,t,u,x){u=w(u,ha);return a.ImageFilter._MakeDropShadowOnly(d,h,m,t,u,x)};a.ImageFilter.MakeImage=function(d,h,m,t){m=I(m,V);t=I(t,Aa);if("B"in h&&"C"in h)return a.ImageFilter._MakeImageCubic(d,h.B,h.C,m,t);const u=h.filter;let x=a.MipmapMode.None;"mipmap"in h&&(x=h.mipmap);return a.ImageFilter._MakeImageOptions(d,u,x,m,t)};a.ImageFilter.MakeMatrixTransform=function(d,h,
m){d=q(d);if("B"in h&&"C"in h)return a.ImageFilter._MakeMatrixTransformCubic(d,h.B,h.C,m);const t=h.filter;let u=a.MipmapMode.None;"mipmap"in h&&(u=h.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,t,u,m)};a.Paint.prototype.getColor=function(){this._getColor(ha);return D(ha)};a.Paint.prototype.setColor=function(d,h){h=h||null;d=w(d);this._setColor(d,h)};a.Paint.prototype.setColorComponents=function(d,h,m,t,u){u=u||null;d=A(d,h,m,t);this._setColor(d,u)};a.Path.prototype.getPoint=function(d,
h){this._getPoint(d,V);d=ea.toTypedArray();return h?(h[0]=d[0],h[1]=d[1],h):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,h,m,t,u){t=q(t);u=I(u);return this._makeShader(d,h,m,t,u)};a.Picture.prototype.cullRect=function(d){this._cullRect(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.PictureRecorder.prototype.beginRecording=function(d,h){d=I(d);return this._beginRecording(d,!!h)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Td=this.Td;return d};a.Surface.prototype.makeImageSnapshot=
function(d){a.Ud(this.Td);d=n(d,"HEAP32",Ma);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.Ud(this.Td);d=this._makeSurface(d);d.Td=this.Td;return d};a.Surface.prototype.Te=function(d,h){this.ne||(this.ne=this.getCanvas());return requestAnimationFrame(function(){a.Ud(this.Td);d(this.ne);this.flush(h)}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Te);a.Surface.prototype.Qe=function(d,h){this.ne||
(this.ne=this.getCanvas());requestAnimationFrame(function(){a.Ud(this.Td);d(this.ne);this.flush(h);this.dispose()}.bind(this))};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Qe);a.PathEffect.MakeDash=function(d,h){h||=0;if(!d.length||1===d.length%2)throw"Intervals array must have even length";var m=n(d,"HEAPF32");h=a.PathEffect._MakeDash(m,d.length,h);k(m,d);return h};a.PathEffect.MakeLine2D=function(d,h){h=q(h);return a.PathEffect._MakeLine2D(d,h)};a.PathEffect.MakePath2D=
function(d,h){d=q(d);return a.PathEffect._MakePath2D(d,h)};a.Shader.MakeColor=function(d,h){h=h||null;d=w(d);return a.Shader._MakeColor(d,h)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,h,m,t,u,x,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;x=q(x);var T=ea.toTypedArray();T.set(d);T.set(h,2);d=a.Shader._MakeLinearGradient(V,F.be,F.colorType,S,F.count,u,C,x,G);k(F.be,m);t&&k(S,t);return d};a.Shader.MakeRadialGradient=function(d,h,m,
t,u,x,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;x=q(x);d=a.Shader._MakeRadialGradient(d[0],d[1],h,F.be,F.colorType,S,F.count,u,C,x,G);k(F.be,m);t&&k(S,t);return d};a.Shader.MakeSweepGradient=function(d,h,m,t,u,x,C,G,F,S){S=S||null;var T=l(m),p=n(t,"HEAPF32");C=C||0;G=G||0;F=F||360;x=q(x);d=a.Shader._MakeSweepGradient(d,h,T.be,T.colorType,p,T.count,u,G,F,C,x,S);k(T.be,m);t&&k(p,t);return d};a.Shader.MakeTwoPointConicalGradient=function(d,h,m,t,u,x,C,G,F,S){S=S||null;var T=l(u),p=n(x,"HEAPF32");
F=F||0;G=q(G);var y=ea.toTypedArray();y.set(d);y.set(m,2);d=a.Shader._MakeTwoPointConicalGradient(V,h,t,T.be,T.colorType,p,T.count,C,F,G,S);k(T.be,u);x&&k(p,x);return d};a.Vertices.prototype.bounds=function(d){this._bounds(V);var h=ea.toTypedArray();return d?(d.set(h),d):h.slice()};a.Xd&&a.Xd.forEach(function(d){d()})};a.computeTonalColors=function(g){var d=n(g.ambient,"HEAPF32"),h=n(g.spot,"HEAPF32");this._computeTonalColors(d,h);var m={ambient:D(d),spot:D(h)};k(d,g.ambient);k(h,g.spot);return m};
a.LTRBRect=function(g,d,h,m){return Float32Array.of(g,d,h,m)};a.XYWHRect=function(g,d,h,m){return Float32Array.of(g,d,g+h,d+m)};a.LTRBiRect=function(g,d,h,m){return Int32Array.of(g,d,h,m)};a.XYWHiRect=function(g,d,h,m){return Int32Array.of(g,d,g+h,d+m)};a.RRectXY=function(g,d,h){return Float32Array.of(g[0],g[1],g[2],g[3],d,h,d,h,d,h,d,h)};a.MakeAnimatedImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeAnimatedImage(d,g.byteLength))?
g:null};a.MakeImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeImage(d,g.byteLength))?g:null};var ab=null;a.MakeImageFromCanvasImageSource=function(g){var d=g.width,h=g.height;ab||=document.createElement("canvas");ab.width=d;ab.height=h;var m=ab.getContext("2d",{willReadFrequently:!0});m.drawImage(g,0,0);g=m.getImageData(0,0,d,h);return a.MakeImage({width:d,height:h,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},
g.data,4*d)};a.MakeImage=function(g,d,h){var m=a._malloc(d.length);a.HEAPU8.set(d,m);return a._MakeImage(g,m,d.length,h)};a.MakeVertices=function(g,d,h,m,t,u){var x=t&&t.length||0,C=0;h&&h.length&&(C|=1);m&&m.length&&(C|=2);void 0===u||u||(C|=4);g=new a._VerticesBuilder(g,d.length/2,x,C);n(d,"HEAPF32",g.positions());g.texCoords()&&n(h,"HEAPF32",g.texCoords());g.colors()&&n(c(m),"HEAPU32",g.colors());g.indices()&&n(t,"HEAPU16",g.indices());return g.detach()};(function(g){g.Xd=g.Xd||[];g.Xd.push(function(){function d(p){p&&
(p.dir=0===p.dir?g.TextDirection.RTL:g.TextDirection.LTR);return p}function h(p){if(!p||!p.length)return[];for(var y=[],M=0;M<p.length;M+=5){var W=g.LTRBRect(p[M],p[M+1],p[M+2],p[M+3]),wa=g.TextDirection.LTR;0===p[M+4]&&(wa=g.TextDirection.RTL);y.push({rect:W,dir:wa})}g._free(p.byteOffset);return y}function m(p){p=p||{};void 0===p.weight&&(p.weight=g.FontWeight.Normal);p.width=p.width||g.FontWidth.Normal;p.slant=p.slant||g.FontSlant.Upright;return p}function t(p){if(!p||!p.length)return 0;for(var y=
[],M=0;M<p.length;M++){var W=u(p[M]);y.push(W)}return n(y,"HEAPU32")}function u(p){if(G[p])return G[p];var y=qa(p)+1,M=g._malloc(y);ra(p,M,y);return G[p]=M}function x(p){p._colorPtr=w(p.color);p._foregroundColorPtr=0;p._backgroundColorPtr=0;p._decorationColorPtr=0;p.foregroundColor&&(p._foregroundColorPtr=w(p.foregroundColor,F));p.backgroundColor&&(p._backgroundColorPtr=w(p.backgroundColor,S));p.decorationColor&&(p._decorationColorPtr=w(p.decorationColor,T));Array.isArray(p.fontFamilies)&&p.fontFamilies.length?
(p._fontFamiliesPtr=t(p.fontFamilies),p._fontFamiliesLen=p.fontFamilies.length):(p._fontFamiliesPtr=0,p._fontFamiliesLen=0);if(p.locale){var y=p.locale;p._localePtr=u(y);p._localeLen=qa(y)}else p._localePtr=0,p._localeLen=0;if(Array.isArray(p.shadows)&&p.shadows.length){y=p.shadows;var M=y.map(function(ma){return ma.color||g.BLACK}),W=y.map(function(ma){return ma.blurRadius||0});p._shadowLen=y.length;for(var wa=g._malloc(8*y.length),wb=wa/4,xb=0;xb<y.length;xb++){var $b=y[xb].offset||[0,0];g.HEAPF32[wb]=
$b[0];g.HEAPF32[wb+1]=$b[1];wb+=2}p._shadowColorsPtr=l(M).be;p._shadowOffsetsPtr=wa;p._shadowBlurRadiiPtr=n(W,"HEAPF32")}else p._shadowLen=0,p._shadowColorsPtr=0,p._shadowOffsetsPtr=0,p._shadowBlurRadiiPtr=0;Array.isArray(p.fontFeatures)&&p.fontFeatures.length?(y=p.fontFeatures,M=y.map(function(ma){return ma.name}),W=y.map(function(ma){return ma.value}),p._fontFeatureLen=y.length,p._fontFeatureNamesPtr=t(M),p._fontFeatureValuesPtr=n(W,"HEAPU32")):(p._fontFeatureLen=0,p._fontFeatureNamesPtr=0,p._fontFeatureValuesPtr=
0);Array.isArray(p.fontVariations)&&p.fontVariations.length?(y=p.fontVariations,M=y.map(function(ma){return ma.axis}),W=y.map(function(ma){return ma.value}),p._fontVariationLen=y.length,p._fontVariationAxesPtr=t(M),p._fontVariationValuesPtr=n(W,"HEAPF32")):(p._fontVariationLen=0,p._fontVariationAxesPtr=0,p._fontVariationValuesPtr=0)}function C(p){g._free(p._fontFamiliesPtr);g._free(p._shadowColorsPtr);g._free(p._shadowOffsetsPtr);g._free(p._shadowBlurRadiiPtr);g._free(p._fontFeatureNamesPtr);g._free(p._fontFeatureValuesPtr);
g._free(p._fontVariationAxesPtr);g._free(p._fontVariationValuesPtr)}g.Paragraph.prototype.getRectsForRange=function(p,y,M,W){p=this._getRectsForRange(p,y,M,W);return h(p)};g.Paragraph.prototype.getRectsForPlaceholders=function(){var p=this._getRectsForPlaceholders();return h(p)};g.Paragraph.prototype.getGlyphInfoAt=function(p){return d(this._getGlyphInfoAt(p))};g.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(p,y){return d(this._getClosestGlyphInfoAtCoordinate(p,y))};g.TypefaceFontProvider.prototype.registerFont=
function(p,y){p=g.Typeface.MakeTypefaceFromData(p);if(!p)return null;y=u(y);this._registerFont(p,y)};g.ParagraphStyle=function(p){p.disableHinting=p.disableHinting||!1;if(p.ellipsis){var y=p.ellipsis;p._ellipsisPtr=u(y);p._ellipsisLen=qa(y)}else p._ellipsisPtr=0,p._ellipsisLen=0;null==p.heightMultiplier&&(p.heightMultiplier=-1);p.maxLines=p.maxLines||0;p.replaceTabCharacters=p.replaceTabCharacters||!1;y=(y=p.strutStyle)||{};y.strutEnabled=y.strutEnabled||!1;y.strutEnabled&&Array.isArray(y.fontFamilies)&&
y.fontFamilies.length?(y._fontFamiliesPtr=t(y.fontFamilies),y._fontFamiliesLen=y.fontFamilies.length):(y._fontFamiliesPtr=0,y._fontFamiliesLen=0);y.fontStyle=m(y.fontStyle);null==y.fontSize&&(y.fontSize=-1);null==y.heightMultiplier&&(y.heightMultiplier=-1);y.halfLeading=y.halfLeading||!1;y.leading=y.leading||0;y.forceStrutHeight=y.forceStrutHeight||!1;p.strutStyle=y;p.textAlign=p.textAlign||g.TextAlign.Start;p.textDirection=p.textDirection||g.TextDirection.LTR;p.textHeightBehavior=p.textHeightBehavior||
g.TextHeightBehavior.All;p.textStyle=g.TextStyle(p.textStyle);p.applyRoundingHack=!1!==p.applyRoundingHack;return p};g.TextStyle=function(p){p.color||(p.color=g.BLACK);p.decoration=p.decoration||0;p.decorationThickness=p.decorationThickness||0;p.decorationStyle=p.decorationStyle||g.DecorationStyle.Solid;p.textBaseline=p.textBaseline||g.TextBaseline.Alphabetic;null==p.fontSize&&(p.fontSize=-1);p.letterSpacing=p.letterSpacing||0;p.wordSpacing=p.wordSpacing||0;null==p.heightMultiplier&&(p.heightMultiplier=
-1);p.halfLeading=p.halfLeading||!1;p.fontStyle=m(p.fontStyle);return p};var G={},F=g._malloc(16),S=g._malloc(16),T=g._malloc(16);g.ParagraphBuilder.Make=function(p,y){x(p.textStyle);y=g.ParagraphBuilder._Make(p,y);C(p.textStyle);return y};g.ParagraphBuilder.MakeFromFontProvider=function(p,y){x(p.textStyle);y=g.ParagraphBuilder._MakeFromFontProvider(p,y);C(p.textStyle);return y};g.ParagraphBuilder.MakeFromFontCollection=function(p,y){x(p.textStyle);y=g.ParagraphBuilder._MakeFromFontCollection(p,y);
C(p.textStyle);return y};g.ParagraphBuilder.ShapeText=function(p,y,M){let W=0;for(const wa of y)W+=wa.length;if(W!==p.length)throw"Accumulated block lengths must equal text.length";return g.ParagraphBuilder._ShapeText(p,y,M)};g.ParagraphBuilder.prototype.pushStyle=function(p){x(p);this._pushStyle(p);C(p)};g.ParagraphBuilder.prototype.pushPaintStyle=function(p,y,M){x(p);this._pushPaintStyle(p,y,M);C(p)};g.ParagraphBuilder.prototype.addPlaceholder=function(p,y,M,W,wa){M=M||g.PlaceholderAlignment.Baseline;
W=W||g.TextBaseline.Alphabetic;this._addPlaceholder(p||0,y||0,M,W,wa||0)};g.ParagraphBuilder.prototype.setWordsUtf8=function(p){var y=n(p,"HEAPU32");this._setWordsUtf8(y,p&&p.length||0);k(y,p)};g.ParagraphBuilder.prototype.setWordsUtf16=function(p){var y=n(p,"HEAPU32");this._setWordsUtf16(y,p&&p.length||0);k(y,p)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(p){var y=n(p,"HEAPU32");this._setGraphemeBreaksUtf8(y,p&&p.length||0);k(y,p)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=
function(p){var y=n(p,"HEAPU32");this._setGraphemeBreaksUtf16(y,p&&p.length||0);k(y,p)};g.ParagraphBuilder.prototype.setLineBreaksUtf8=function(p){var y=n(p,"HEAPU32");this._setLineBreaksUtf8(y,p&&p.length||0);k(y,p)};g.ParagraphBuilder.prototype.setLineBreaksUtf16=function(p){var y=n(p,"HEAPU32");this._setLineBreaksUtf16(y,p&&p.length||0);k(y,p)}})})(r);a.Xd=a.Xd||[];a.Xd.push(function(){a.Path.prototype.op=function(g,d){return this._op(g,d)?this:null};a.Path.prototype.simplify=function(){return this._simplify()?
this:null}});a.Xd=a.Xd||[];a.Xd.push(function(){a.Canvas.prototype.drawText=function(g,d,h,m,t){var u=qa(g),x=a._malloc(u+1);ra(g,x,u+1);this._drawSimpleText(x,u,d,h,t,m);a._free(x)};a.Canvas.prototype.drawGlyphs=function(g,d,h,m,t,u){if(!(2*g.length<=d.length))throw"Not enough positions for the array of gyphs";a.Ud(this.Td);const x=n(g,"HEAPU16"),C=n(d,"HEAPF32");this._drawGlyphs(g.length,x,C,h,m,t,u);k(C,d);k(x,g)};a.Font.prototype.getGlyphBounds=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(16*
g.length);this._getGlyphWidthBounds(m,g.length,0,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.Font.prototype.getGlyphIDs=function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.Font.prototype.getGlyphIntercepts=
function(g,d,h,m){var t=n(g,"HEAPU16"),u=n(d,"HEAPF32");return this._getGlyphIntercepts(t,g.length,!(g&&g._ck),u,d.length,!(d&&d._ck),h,m)};a.Font.prototype.getGlyphWidths=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(4*g.length);this._getGlyphWidthBounds(m,g.length,t,0,d||null);d=new Float32Array(a.HEAPU8.buffer,t,g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.FontMgr.FromData=function(){if(!arguments.length)return null;var g=arguments;1===g.length&&
Array.isArray(g[0])&&(g=arguments[0]);if(!g.length)return null;for(var d=[],h=[],m=0;m<g.length;m++){var t=new Uint8Array(g[m]),u=n(t,"HEAPU8");d.push(u);h.push(t.byteLength)}d=n(d,"HEAPU32");h=n(h,"HEAPU32");g=a.FontMgr._fromData(d,h,g.length);a._free(d);a._free(h);return g};a.Typeface.MakeTypefaceFromData=function(g){g=new Uint8Array(g);var d=n(g,"HEAPU8");return(g=a.Typeface._MakeTypefaceFromData(d,g.byteLength))?g:null};a.Typeface.MakeFreeTypeFaceFromData=a.Typeface.MakeTypefaceFromData;a.Typeface.prototype.getGlyphIDs=
function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.TextBlob.MakeOnPath=function(g,d,h,m){if(g&&g.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(g,h);m||=0;var t=h.getGlyphIDs(g);t=h.getGlyphWidths(t);var u=[];d=new a.ContourMeasureIter(d,!1,1);for(var x=
d.next(),C=new Float32Array(4),G=0;G<g.length&&x;G++){var F=t[G];m+=F/2;if(m>x.length()){x.delete();x=d.next();if(!x){g=g.substring(0,G);break}m=F/2}x.getPosTan(m,C);var S=C[2],T=C[3];u.push(S,T,C[0]-F/2*S,C[1]-F/2*T);m+=F/2}g=this.MakeFromRSXform(g,u,h);x&&x.delete();d.delete();return g}};a.TextBlob.MakeFromRSXform=function(g,d,h){var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXform(t,m-1,g,h);a._free(t);return h?h:null};a.TextBlob.MakeFromRSXformGlyphs=function(g,
d,h){var m=n(g,"HEAPU16");d=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXformGlyphs(m,2*g.length,d,h);k(m,g);return h?h:null};a.TextBlob.MakeFromGlyphs=function(g,d){var h=n(g,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(h,2*g.length,d);k(h,g);return d?d:null};a.TextBlob.MakeFromText=function(g,d){var h=qa(g)+1,m=a._malloc(h);ra(g,m,h);g=a.TextBlob._MakeFromText(m,h-1,d);a._free(m);return g?g:null};a.MallocGlyphIDs=function(g){return a.Malloc(Uint16Array,g)}});a.Xd=a.Xd||[];a.Xd.push(function(){a.MakePicture=
function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._MakePicture(d,g.byteLength))?g:null}});a.Xd=a.Xd||[];a.Xd.push(function(){a.RuntimeEffect.Make=function(g,d){return a.RuntimeEffect._Make(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.MakeForBlender=function(g,d){return a.RuntimeEffect._MakeForBlender(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.prototype.makeShader=function(g,d){var h=
!g._ck,m=n(g,"HEAPF32");d=q(d);return this._makeShader(m,4*g.length,h,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(g,d,h){var m=!g._ck,t=n(g,"HEAPF32");h=q(h);for(var u=[],x=0;x<d.length;x++)u.push(d[x].Sd.Vd);d=n(u,"HEAPU32");return this._makeShaderWithChildren(t,4*g.length,m,d,u.length,h)};a.RuntimeEffect.prototype.makeBlender=function(g){var d=!g._ck,h=n(g,"HEAPF32");return this._makeBlender(h,4*g.length,d)}})})(r);var sa=Object.assign({},r),ta="",ua,va;
if(fa||ia)ia?ta=self.location.href:"undefined"!=typeof document&&document.currentScript&&(ta=document.currentScript.src),_scriptName&&(ta=_scriptName),ta.startsWith("blob:")?ta="":ta=ta.substr(0,ta.replace(/[?#].*/,"").lastIndexOf("/")+1),ia&&(va=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),ua=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
var xa=console.log.bind(console),ya=console.error.bind(console);Object.assign(r,sa);sa=null;var za,Ba=!1,Ca,B,Da,Fa,E,H,J,Ga;function Ha(){var a=za.buffer;r.HEAP8=Ca=new Int8Array(a);r.HEAP16=Da=new Int16Array(a);r.HEAPU8=B=new Uint8Array(a);r.HEAPU16=Fa=new Uint16Array(a);r.HEAP32=E=new Int32Array(a);r.HEAPU32=H=new Uint32Array(a);r.HEAPF32=J=new Float32Array(a);r.HEAPF64=Ga=new Float64Array(a)}var Ia=[],Ja=[],Ka=[],La=0,Na=null,Oa=null;
function Pa(a){a="Aborted("+a+")";ya(a);Ba=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ca(a);throw a;}var Qa=a=>a.startsWith("data:application/octet-stream;base64,"),Ra;function Sa(a){return ua(a).then(b=>new Uint8Array(b),()=>{if(va)var b=va(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ta(a,b,c){return Sa(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{ya(`failed to asynchronously prepare wasm: ${e}`);Pa(e)})}
function Ua(a,b){var c=Ra;return"function"!=typeof WebAssembly.instantiateStreaming||Qa(c)||"function"!=typeof fetch?Ta(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){ya(`wasm streaming compile failed: ${f}`);ya("falling back to ArrayBuffer instantiation");return Ta(c,a,b)}))}function Va(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Wa=a=>{a.forEach(b=>b(r))},Xa=r.noExitRuntime||!0;
class Ya{constructor(a){this.Vd=a-24}}
var Za=0,bb=0,cb="undefined"!=typeof TextDecoder?new TextDecoder:void 0,db=(a,b=0,c=NaN)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16<c-b&&a.buffer&&cb)return cb.decode(a.subarray(b,c));for(e="";b<c;){var f=a[b++];if(f&128){var k=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|k);else{var n=a[b++]&63;f=224==(f&240)?(f&15)<<12|k<<6|n:(f&7)<<18|k<<12|n<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e},
eb={},fb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function gb(a){return this.fromWireType(H[a>>2])}
var hb={},ib={},jb={},kb,mb=(a,b,c)=>{function e(l){l=c(l);if(l.length!==a.length)throw new kb("Mismatched type converter count");for(var q=0;q<a.length;++q)lb(a[q],l[q])}a.forEach(l=>jb[l]=b);var f=Array(b.length),k=[],n=0;b.forEach((l,q)=>{ib.hasOwnProperty(l)?f[q]=ib[l]:(k.push(l),hb.hasOwnProperty(l)||(hb[l]=[]),hb[l].push(()=>{f[q]=ib[l];++n;n===k.length&&e(f)}))});0===k.length&&e(f)},nb,K=a=>{for(var b="";B[a];)b+=nb[B[a++]];return b},L;
function ob(a,b,c={}){var e=b.name;if(!a)throw new L(`type "${e}" must have a positive integer typeid pointer`);if(ib.hasOwnProperty(a)){if(c.ef)return;throw new L(`Cannot register type '${e}' twice`);}ib[a]=b;delete jb[a];hb.hasOwnProperty(a)&&(b=hb[a],delete hb[a],b.forEach(f=>f()))}function lb(a,b,c={}){return ob(a,b,c)}
var pb=a=>{throw new L(a.Sd.Yd.Wd.name+" instance already deleted");},qb=!1,rb=()=>{},sb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ae)return null;a=sb(a,b,c.ae);return null===a?null:c.Xe(a)},yb={},zb={},Ab=(a,b)=>{if(void 0===b)throw new L("ptr should not be undefined");for(;a.ae;)b=a.se(b),a=a.ae;return zb[b]},Cb=(a,b)=>{if(!b.Yd||!b.Vd)throw new kb("makeClassHandle requires ptr and ptrType");if(!!b.ce!==!!b.Zd)throw new kb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Bb(Object.create(a,
{Sd:{value:b,writable:!0}}))},Bb=a=>{if("undefined"===typeof FinalizationRegistry)return Bb=b=>b,a;qb=new FinalizationRegistry(b=>{b=b.Sd;--b.count.value;0===b.count.value&&(b.Zd?b.ce.he(b.Zd):b.Yd.Wd.he(b.Vd))});Bb=b=>{var c=b.Sd;c.Zd&&qb.register(b,{Sd:c},b);return b};rb=b=>{qb.unregister(b)};return Bb(a)},Db=[];function Eb(){}
var Fb=(a,b)=>Object.defineProperty(b,"name",{value:a}),Gb=(a,b,c)=>{if(void 0===a[b].$d){var e=a[b];a[b]=function(...f){if(!a[b].$d.hasOwnProperty(f.length))throw new L(`Function '${c}' called with an invalid number of arguments (${f.length}) - expects one of (${a[b].$d})!`);return a[b].$d[f.length].apply(this,f)};a[b].$d=[];a[b].$d[e.ie]=e}},Hb=(a,b,c)=>{if(r.hasOwnProperty(a)){if(void 0===c||void 0!==r[a].$d&&void 0!==r[a].$d[c])throw new L(`Cannot register public name '${a}' twice`);Gb(r,a,a);
if(r[a].$d.hasOwnProperty(c))throw new L(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);r[a].$d[c]=b}else r[a]=b,r[a].ie=c},Ib=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function Jb(a,b,c,e,f,k,n,l){this.name=a;this.constructor=b;this.me=c;this.he=e;this.ae=f;this.$e=k;this.se=n;this.Xe=l;this.hf=[]}
var Kb=(a,b,c)=>{for(;b!==c;){if(!b.se)throw new L(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.se(a);b=b.ae}return a};function Lb(a,b){if(null===b){if(this.Ee)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Sd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Sd.Vd)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);return Kb(b.Sd.Vd,b.Sd.Yd.Wd,this.Wd)}
function Nb(a,b){if(null===b){if(this.Ee)throw new L(`null is not a valid ${this.name}`);if(this.xe){var c=this.Fe();null!==a&&a.push(this.he,c);return c}return 0}if(!b||!b.Sd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Sd.Vd)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.we&&b.Sd.Yd.we)throw new L(`Cannot convert argument of type ${b.Sd.ce?b.Sd.ce.name:b.Sd.Yd.name} to parameter type ${this.name}`);c=Kb(b.Sd.Vd,b.Sd.Yd.Wd,this.Wd);if(this.xe){if(void 0===
b.Sd.Zd)throw new L("Passing raw pointer to smart pointer is illegal");switch(this.nf){case 0:if(b.Sd.ce===this)c=b.Sd.Zd;else throw new L(`Cannot convert argument of type ${b.Sd.ce?b.Sd.ce.name:b.Sd.Yd.name} to parameter type ${this.name}`);break;case 1:c=b.Sd.Zd;break;case 2:if(b.Sd.ce===this)c=b.Sd.Zd;else{var e=b.clone();c=this.jf(c,Ob(()=>e["delete"]()));null!==a&&a.push(this.he,c)}break;default:throw new L("Unsupporting sharing policy");}}return c}
function Pb(a,b){if(null===b){if(this.Ee)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Sd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Sd.Vd)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.Sd.Yd.we)throw new L(`Cannot convert argument of type ${b.Sd.Yd.name} to parameter type ${this.name}`);return Kb(b.Sd.Vd,b.Sd.Yd.Wd,this.Wd)}
function Qb(a,b,c,e,f,k,n,l,q,v,w){this.name=a;this.Wd=b;this.Ee=c;this.we=e;this.xe=f;this.gf=k;this.nf=n;this.Me=l;this.Fe=q;this.jf=v;this.he=w;f||void 0!==b.ae?this.toWireType=Nb:(this.toWireType=e?Lb:Pb,this.ee=null)}
var Rb=(a,b,c)=>{if(!r.hasOwnProperty(a))throw new kb("Replacing nonexistent public symbol");void 0!==r[a].$d&&void 0!==c?r[a].$d[c]=b:(r[a]=b,r[a].ie=c)},N,Sb=(a,b,c=[])=>{a.includes("j")?(a=a.replace(/p/g,"i"),b=(0,r["dynCall_"+a])(b,...c)):b=N.get(b)(...c);return b},Tb=(a,b)=>(...c)=>Sb(a,b,c),Q=(a,b)=>{a=K(a);var c=a.includes("j")?Tb(a,b):N.get(b);if("function"!=typeof c)throw new L(`unknown function pointer with signature ${a}: ${b}`);return c},ac,dc=a=>{a=bc(a);var b=K(a);cc(a);return b},ec=
(a,b)=>{function c(k){f[k]||ib[k]||(jb[k]?jb[k].forEach(c):(e.push(k),f[k]=!0))}var e=[],f={};b.forEach(c);throw new ac(`${a}: `+e.map(dc).join([", "]));};function fc(a){for(var b=1;b<a.length;++b)if(null!==a[b]&&void 0===a[b].ee)return!0;return!1}
function gc(a,b,c,e,f){var k=b.length;if(2>k)throw new L("argTypes array size mismatch! Must at least get return value and 'this' types!");var n=null!==b[1]&&null!==c,l=fc(b),q="void"!==b[0].name,v=k-2,w=Array(v),A=[],D=[];return Fb(a,function(...I){D.length=0;A.length=n?2:1;A[0]=f;if(n){var P=b[1].toWireType(D,this);A[1]=P}for(var O=0;O<v;++O)w[O]=b[O+2].toWireType(D,I[O]),A.push(w[O]);I=e(...A);if(l)fb(D);else for(O=n?1:2;O<b.length;O++){var aa=1===O?P:w[O-2];null!==b[O].ee&&b[O].ee(aa)}P=q?b[0].fromWireType(I):
void 0;return P})}
var hc=(a,b)=>{for(var c=[],e=0;e<a;e++)c.push(H[b+4*e>>2]);return c},ic=a=>{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},jc=[],kc=[],lc=a=>{9<a&&0===--kc[a+1]&&(kc[a]=void 0,jc.push(a))},mc=a=>{if(!a)throw new L("Cannot use deleted val. handle = "+a);return kc[a]},Ob=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=jc.pop()||kc.length;kc[b]=a;kc[b+1]=1;return b}},nc={name:"emscripten::val",fromWireType:a=>{var b=mc(a);lc(a);
return b},toWireType:(a,b)=>Ob(b),de:8,readValueFromPointer:gb,ee:null},oc=(a,b,c)=>{switch(b){case 1:return c?function(e){return this.fromWireType(Ca[e])}:function(e){return this.fromWireType(B[e])};case 2:return c?function(e){return this.fromWireType(Da[e>>1])}:function(e){return this.fromWireType(Fa[e>>1])};case 4:return c?function(e){return this.fromWireType(E[e>>2])}:function(e){return this.fromWireType(H[e>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},pc=(a,b)=>
{var c=ib[a];if(void 0===c)throw a=`${b} has unknown type ${dc(a)}`,new L(a);return c},Mb=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},qc=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(J[c>>2])};case 8:return function(c){return this.fromWireType(Ga[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},rc=(a,b,c)=>{switch(b){case 1:return c?e=>Ca[e]:e=>B[e];case 2:return c?e=>Da[e>>1]:e=>Fa[e>>
1];case 4:return c?e=>E[e>>2]:e=>H[e>>2];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},ra=(a,b,c)=>{var e=B;if(!(0<c))return 0;var f=b;c=b+c-1;for(var k=0;k<a.length;++k){var n=a.charCodeAt(k);if(55296<=n&&57343>=n){var l=a.charCodeAt(++k);n=65536+((n&1023)<<10)|l&1023}if(127>=n){if(b>=c)break;e[b++]=n}else{if(2047>=n){if(b+1>=c)break;e[b++]=192|n>>6}else{if(65535>=n){if(b+2>=c)break;e[b++]=224|n>>12}else{if(b+3>=c)break;e[b++]=240|n>>18;e[b++]=128|n>>12&63}e[b++]=128|n>>6&
63}e[b++]=128|n&63}}e[b]=0;return b-f},qa=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}return b},sc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,tc=(a,b)=>{var c=a>>1;for(var e=c+b/2;!(c>=e)&&Fa[c];)++c;c<<=1;if(32<c-a&&sc)return sc.decode(B.subarray(a,c));c="";for(e=0;!(e>=b/2);++e){var f=Da[a+2*e>>1];if(0==f)break;c+=String.fromCharCode(f)}return c},uc=(a,b,c)=>{c??=2147483647;if(2>c)return 0;c-=2;var e=
b;c=c<2*a.length?c/2:a.length;for(var f=0;f<c;++f)Da[b>>1]=a.charCodeAt(f),b+=2;Da[b>>1]=0;return b-e},vc=a=>2*a.length,wc=(a,b)=>{for(var c=0,e="";!(c>=b/4);){var f=E[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023)):e+=String.fromCharCode(f)}return e},xc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var e=b;c=e+c-4;for(var f=0;f<a.length;++f){var k=a.charCodeAt(f);if(55296<=k&&57343>=k){var n=a.charCodeAt(++f);k=65536+((k&1023)<<10)|n&1023}E[b>>2]=k;b+=
4;if(b+4>c)break}E[b>>2]=0;return b-e},yc=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);55296<=e&&57343>=e&&++c;b+=4}return b},zc=(a,b,c)=>{var e=[];a=a.toWireType(e,c);e.length&&(H[b>>2]=Ob(e));return a},Ac=[],Bc={},Cc=a=>{var b=Bc[a];return void 0===b?K(a):b},Dc=()=>{function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;
"object"==typeof global&&a(global)?$$$embind_global$$$=global:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");},Ec=a=>{var b=Ac.length;Ac.push(a);return b},Fc=(a,b)=>{for(var c=Array(a),e=0;e<a;++e)c[e]=pc(H[b+4*e>>2],"parameter "+e);return c},Gc=Reflect.construct,R,Hc=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,e)=>b.vertexAttribDivisorANGLE(c,
e),a.drawArraysInstanced=(c,e,f,k)=>b.drawArraysInstancedANGLE(c,e,f,k),a.drawElementsInstanced=(c,e,f,k,n)=>b.drawElementsInstancedANGLE(c,e,f,k,n))},Ic=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},Jc=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},Kc=a=>
{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},Lc=1,Mc=[],Nc=[],Oc=[],Pc=[],ka=[],Qc=[],Rc=[],pa=[],Sc=[],Tc=[],Uc=[],Wc={},Xc={},Yc=4,Zc=0,ja=a=>{for(var b=Lc++,c=a.length;c<b;c++)a[c]=null;return b},$c=(a,b,c,e)=>{for(var f=0;f<a;f++){var k=R[c](),n=k&&ja(e);k?(k.name=n,e[n]=k):U||=1282;E[b+4*f>>2]=n}},na=(a,b)=>{a.He||(a.He=a.getContext,a.getContext=function(e,f){f=a.He(e,f);return"webgl"==e==f instanceof WebGLRenderingContext?f:null});var c=1<b.majorVersion?a.getContext("webgl2",
b):a.getContext("webgl",b);return c?ad(c,b):0},ad=(a,b)=>{var c=ja(pa),e={handle:c,attributes:b,version:b.majorVersion,fe:a};a.canvas&&(a.canvas.Pe=e);pa[c]=e;("undefined"==typeof b.Ye||b.Ye)&&bd(e);return c},oa=a=>{z=pa[a];r.pf=R=z?.fe;return!(a&&!R)},bd=a=>{a||=z;if(!a.ff){a.ff=!0;var b=a.fe;b.tf=b.getExtension("WEBGL_multi_draw");b.rf=b.getExtension("EXT_polygon_offset_clamp");b.qf=b.getExtension("EXT_clip_control");b.vf=b.getExtension("WEBGL_polygon_mode");Hc(b);Ic(b);Jc(b);b.Je=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");
b.Le=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.ge=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.ge)b.ge=b.getExtension("EXT_disjoint_timer_query");Kc(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},z,U,cd=(a,b)=>{R.bindFramebuffer(a,Oc[b])},dd=a=>{R.bindVertexArray(Rc[a])},ed=a=>R.clear(a),fd=(a,b,c,e)=>R.clearColor(a,b,c,e),gd=a=>R.clearStencil(a),hd=(a,b)=>{for(var c=0;c<a;c++){var e=E[b+
4*c>>2];R.deleteVertexArray(Rc[e]);Rc[e]=null}},jd=[],kd=(a,b)=>{$c(a,b,"createVertexArray",Rc)};function ld(){var a=Kc(R);return a=a.concat(a.map(b=>"GL_"+b))}
var md=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(U||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=R.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>z.version){U||=1282;return}e=ld().length;break;case 33307:case 33308:if(2>z.version){U||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=R.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":U||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=
0;break;default:U||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:E[b+4*a>>2]=f[a];break;case 2:J[b+4*a>>2]=f[a];break;case 4:Ca[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(k){U||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${k})`);return}}break;default:U||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
return}switch(c){case 1:c=e;H[b>>2]=c;H[b+4>>2]=(c-H[b>>2])/4294967296;break;case 0:E[b>>2]=e;break;case 2:J[b>>2]=e;break;case 4:Ca[b]=e?1:0}}else U||=1281},nd=(a,b)=>md(a,b,0),od=(a,b,c)=>{if(c){a=Sc[a];b=2>z.version?R.ge.getQueryObjectEXT(a,b):R.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;H[c>>2]=e;H[c+4>>2]=(e-H[c>>2])/4294967296}else U||=1281},qd=a=>{var b=qa(a)+1,c=pd(b);c&&ra(a,c,b);return c},rd=a=>{var b=Wc[a];if(!b){switch(a){case 7939:b=qd(ld().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=
R.getParameter(a))||(U||=1280);b=b?qd(b):0;break;case 7938:b=R.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=z.version&&(c=`OpenGL ES 3.0 (${b})`);b=qd(c);break;case 35724:b=R.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=qd(b);break;default:U||=1280}Wc[a]=b}return b},sd=(a,b)=>{if(2>z.version)return U||=1282,0;var c=Xc[a];if(c)return 0>b||b>=c.length?(U||=1281,0):c[b];switch(a){case 7939:return c=
ld().map(qd),c=Xc[a]=c,0>b||b>=c.length?(U||=1281,0):c[b];default:return U||=1280,0}},td=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),ud=a=>{a-=5120;return 0==a?Ca:1==a?B:2==a?Da:4==a?E:6==a?J:5==a||28922==a||28520==a||30779==a||30782==a?H:Fa},vd=(a,b,c,e,f)=>{a=ud(a);b=e*((Zc||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+Yc-1&-Yc);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},Y=a=>{var b=R.We;if(b){var c=
b.re[a];"number"==typeof c&&(b.re[a]=c=R.getUniformLocation(b,b.Ne[a]+(0<c?`[${c}]`:"")));return c}U||=1282},wd=[],xd=[],yd={},Ad=()=>{if(!zd){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in yd)void 0===yd[b]?delete a[b]:a[b]=yd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);zd=c}return zd},zd,Bd=[null,[],[]];
kb=r.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};for(var Cd=Array(256),Dd=0;256>Dd;++Dd)Cd[Dd]=String.fromCharCode(Dd);nb=Cd;L=r.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};
Object.assign(Eb.prototype,{isAliasOf:function(a){if(!(this instanceof Eb&&a instanceof Eb))return!1;var b=this.Sd.Yd.Wd,c=this.Sd.Vd;a.Sd=a.Sd;var e=a.Sd.Yd.Wd;for(a=a.Sd.Vd;b.ae;)c=b.se(c),b=b.ae;for(;e.ae;)a=e.se(a),e=e.ae;return b===e&&c===a},clone:function(){this.Sd.Vd||pb(this);if(this.Sd.qe)return this.Sd.count.value+=1,this;var a=Bb,b=Object,c=b.create,e=Object.getPrototypeOf(this),f=this.Sd;a=a(c.call(b,e,{Sd:{value:{count:f.count,pe:f.pe,qe:f.qe,Vd:f.Vd,Yd:f.Yd,Zd:f.Zd,ce:f.ce}}}));a.Sd.count.value+=
1;a.Sd.pe=!1;return a},["delete"](){this.Sd.Vd||pb(this);if(this.Sd.pe&&!this.Sd.qe)throw new L("Object already scheduled for deletion");rb(this);var a=this.Sd;--a.count.value;0===a.count.value&&(a.Zd?a.ce.he(a.Zd):a.Yd.Wd.he(a.Vd));this.Sd.qe||(this.Sd.Zd=void 0,this.Sd.Vd=void 0)},isDeleted:function(){return!this.Sd.Vd},deleteLater:function(){this.Sd.Vd||pb(this);if(this.Sd.pe&&!this.Sd.qe)throw new L("Object already scheduled for deletion");Db.push(this);this.Sd.pe=!0;return this}});
Object.assign(Qb.prototype,{af(a){this.Me&&(a=this.Me(a));return a},Ie(a){this.he?.(a)},de:8,readValueFromPointer:gb,fromWireType:function(a){function b(){return this.xe?Cb(this.Wd.me,{Yd:this.gf,Vd:c,ce:this,Zd:a}):Cb(this.Wd.me,{Yd:this,Vd:a})}var c=this.af(a);if(!c)return this.Ie(a),null;var e=Ab(this.Wd,c);if(void 0!==e){if(0===e.Sd.count.value)return e.Sd.Vd=c,e.Sd.Zd=a,e.clone();e=e.clone();this.Ie(a);return e}e=this.Wd.$e(c);e=yb[e];if(!e)return b.call(this);e=this.we?e.Ve:e.pointerType;var f=
sb(c,this.Wd,e.Wd);return null===f?b.call(this):this.xe?Cb(e.Wd.me,{Yd:e,Vd:f,ce:this,Zd:a}):Cb(e.Wd.me,{Yd:e,Vd:f})}});ac=r.UnboundTypeError=((a,b)=>{var c=Fb(b,function(e){this.name=b;this.message=e;e=Error(e).stack;void 0!==e&&(this.stack=this.toString()+"\n"+e.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");
kc.push(0,1,void 0,1,null,1,!0,1,!1,1);r.count_emval_handles=()=>kc.length/2-5-jc.length;for(var Ed=0;32>Ed;++Ed)jd.push(Array(Ed));var Fd=new Float32Array(288);for(Ed=0;288>=Ed;++Ed)wd[Ed]=Fd.subarray(0,Ed);var Gd=new Int32Array(288);for(Ed=0;288>=Ed;++Ed)xd[Ed]=Gd.subarray(0,Ed);
var Vd={F:(a,b,c)=>{var e=new Ya(a);H[e.Vd+16>>2]=0;H[e.Vd+4>>2]=b;H[e.Vd+8>>2]=c;Za=a;bb++;throw Za;},U:function(){return 0},ud:()=>{},td:function(){return 0},sd:()=>{},rd:function(){},qd:()=>{},md:()=>{Pa("")},B:a=>{var b=eb[a];delete eb[a];var c=b.Fe,e=b.he,f=b.Ke,k=f.map(n=>n.df).concat(f.map(n=>n.lf));mb([a],k,n=>{var l={};f.forEach((q,v)=>{var w=n[v],A=q.bf,D=q.cf,I=n[v+f.length],P=q.kf,O=q.mf;l[q.Ze]={read:aa=>w.fromWireType(A(D,aa)),write:(aa,la)=>{var X=[];P(O,aa,I.toWireType(X,la));fb(X)}}});
return[{name:b.name,fromWireType:q=>{var v={},w;for(w in l)v[w]=l[w].read(q);e(q);return v},toWireType:(q,v)=>{for(var w in l)if(!(w in v))throw new TypeError(`Missing field: "${w}"`);var A=c();for(w in l)l[w].write(A,v[w]);null!==q&&q.push(e,A);return A},de:8,readValueFromPointer:gb,ee:e}]})},X:()=>{},ld:(a,b,c,e)=>{b=K(b);lb(a,{name:b,fromWireType:function(f){return!!f},toWireType:function(f,k){return k?c:e},de:8,readValueFromPointer:function(f){return this.fromWireType(B[f])},ee:null})},l:(a,b,
c,e,f,k,n,l,q,v,w,A,D)=>{w=K(w);k=Q(f,k);l&&=Q(n,l);v&&=Q(q,v);D=Q(A,D);var I=Ib(w);Hb(I,function(){ec(`Cannot construct ${w} due to unbound types`,[e])});mb([a,b,c],e?[e]:[],P=>{P=P[0];if(e){var O=P.Wd;var aa=O.me}else aa=Eb.prototype;P=Fb(w,function(...Ea){if(Object.getPrototypeOf(this)!==la)throw new L("Use 'new' to construct "+w);if(void 0===X.je)throw new L(w+" has no accessible constructor");var ea=X.je[Ea.length];if(void 0===ea)throw new L(`Tried to invoke ctor of ${w} with invalid number of parameters (${Ea.length}) - expected (${Object.keys(X.je).toString()}) parameters instead!`);
return ea.apply(this,Ea)});var la=Object.create(aa,{constructor:{value:P}});P.prototype=la;var X=new Jb(w,P,la,D,O,k,l,v);if(X.ae){var ha;(ha=X.ae).te??(ha.te=[]);X.ae.te.push(X)}O=new Qb(w,X,!0,!1,!1);ha=new Qb(w+"*",X,!1,!1,!1);aa=new Qb(w+" const*",X,!1,!0,!1);yb[a]={pointerType:ha,Ve:aa};Rb(I,P);return[O,ha,aa]})},e:(a,b,c,e,f,k,n)=>{var l=hc(c,e);b=K(b);b=ic(b);k=Q(f,k);mb([],[a],q=>{function v(){ec(`Cannot call ${w} due to unbound types`,l)}q=q[0];var w=`${q.name}.${b}`;b.startsWith("@@")&&
(b=Symbol[b.substring(2)]);var A=q.Wd.constructor;void 0===A[b]?(v.ie=c-1,A[b]=v):(Gb(A,b,w),A[b].$d[c-1]=v);mb([],l,D=>{D=[D[0],null].concat(D.slice(1));D=gc(w,D,null,k,n);void 0===A[b].$d?(D.ie=c-1,A[b]=D):A[b].$d[c-1]=D;if(q.Wd.te)for(const I of q.Wd.te)I.constructor.hasOwnProperty(b)||(I.constructor[b]=D);return[]});return[]})},z:(a,b,c,e,f,k)=>{var n=hc(b,c);f=Q(e,f);mb([],[a],l=>{l=l[0];var q=`constructor ${l.name}`;void 0===l.Wd.je&&(l.Wd.je=[]);if(void 0!==l.Wd.je[b-1])throw new L(`Cannot register multiple constructors with identical number of parameters (${b-
1}) for class '${l.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);l.Wd.je[b-1]=()=>{ec(`Cannot construct ${l.name} due to unbound types`,n)};mb([],n,v=>{v.splice(1,0,null);l.Wd.je[b-1]=gc(q,v,null,f,k);return[]});return[]})},a:(a,b,c,e,f,k,n,l)=>{var q=hc(c,e);b=K(b);b=ic(b);k=Q(f,k);mb([],[a],v=>{function w(){ec(`Cannot call ${A} due to unbound types`,q)}v=v[0];var A=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);l&&v.Wd.hf.push(b);
var D=v.Wd.me,I=D[b];void 0===I||void 0===I.$d&&I.className!==v.name&&I.ie===c-2?(w.ie=c-2,w.className=v.name,D[b]=w):(Gb(D,b,A),D[b].$d[c-2]=w);mb([],q,P=>{P=gc(A,P,v,k,n);void 0===D[b].$d?(P.ie=c-2,D[b]=P):D[b].$d[c-2]=P;return[]});return[]})},q:(a,b,c)=>{a=K(a);mb([],[b],e=>{e=e[0];r[a]=e.fromWireType(c);return[]})},kd:a=>lb(a,nc),j:(a,b,c,e)=>{function f(){}b=K(b);f.values={};lb(a,{name:b,constructor:f,fromWireType:function(k){return this.constructor.values[k]},toWireType:(k,n)=>n.value,de:8,
readValueFromPointer:oc(b,c,e),ee:null});Hb(b,f)},b:(a,b,c)=>{var e=pc(a,"enum");b=K(b);a=e.constructor;e=Object.create(e.constructor.prototype,{value:{value:c},constructor:{value:Fb(`${e.name}_${b}`,function(){})}});a.values[c]=e;a[b]=e},R:(a,b,c)=>{b=K(b);lb(a,{name:b,fromWireType:e=>e,toWireType:(e,f)=>f,de:8,readValueFromPointer:qc(b,c),ee:null})},w:(a,b,c,e,f,k)=>{var n=hc(b,c);a=K(a);a=ic(a);f=Q(e,f);Hb(a,function(){ec(`Cannot call ${a} due to unbound types`,n)},b-1);mb([],n,l=>{l=[l[0],null].concat(l.slice(1));
Rb(a,gc(a,l,null,f,k),b-1);return[]})},C:(a,b,c,e,f)=>{b=K(b);-1===f&&(f=4294967295);f=l=>l;if(0===e){var k=32-8*c;f=l=>l<<k>>>k}var n=b.includes("unsigned")?function(l,q){return q>>>0}:function(l,q){return q};lb(a,{name:b,fromWireType:f,toWireType:n,de:8,readValueFromPointer:rc(b,c,0!==e),ee:null})},p:(a,b,c)=>{function e(k){return new f(Ca.buffer,H[k+4>>2],H[k>>2])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=K(c);lb(a,{name:c,fromWireType:e,
de:8,readValueFromPointer:e},{ef:!0})},o:(a,b,c,e,f,k,n,l,q,v,w,A)=>{c=K(c);k=Q(f,k);l=Q(n,l);v=Q(q,v);A=Q(w,A);mb([a],[b],D=>{D=D[0];return[new Qb(c,D.Wd,!1,!1,!0,D,e,k,l,v,A)]})},Q:(a,b)=>{b=K(b);var c="std::string"===b;lb(a,{name:b,fromWireType:function(e){var f=H[e>>2],k=e+4;if(c)for(var n=k,l=0;l<=f;++l){var q=k+l;if(l==f||0==B[q]){n=n?db(B,n,q-n):"";if(void 0===v)var v=n;else v+=String.fromCharCode(0),v+=n;n=q+1}}else{v=Array(f);for(l=0;l<f;++l)v[l]=String.fromCharCode(B[k+l]);v=v.join("")}cc(e);
return v},toWireType:function(e,f){f instanceof ArrayBuffer&&(f=new Uint8Array(f));var k="string"==typeof f;if(!(k||f instanceof Uint8Array||f instanceof Uint8ClampedArray||f instanceof Int8Array))throw new L("Cannot pass non-string to std::string");var n=c&&k?qa(f):f.length;var l=pd(4+n+1),q=l+4;H[l>>2]=n;if(c&&k)ra(f,q,n+1);else if(k)for(k=0;k<n;++k){var v=f.charCodeAt(k);if(255<v)throw cc(q),new L("String has UTF-16 code units that do not fit in 8 bits");B[q+k]=v}else for(k=0;k<n;++k)B[q+k]=f[k];
null!==e&&e.push(cc,l);return l},de:8,readValueFromPointer:gb,ee(e){cc(e)}})},M:(a,b,c)=>{c=K(c);if(2===b){var e=tc;var f=uc;var k=vc;var n=l=>Fa[l>>1]}else 4===b&&(e=wc,f=xc,k=yc,n=l=>H[l>>2]);lb(a,{name:c,fromWireType:l=>{for(var q=H[l>>2],v,w=l+4,A=0;A<=q;++A){var D=l+4+A*b;if(A==q||0==n(D))w=e(w,D-w),void 0===v?v=w:(v+=String.fromCharCode(0),v+=w),w=D+b}cc(l);return v},toWireType:(l,q)=>{if("string"!=typeof q)throw new L(`Cannot pass non-string to C++ string type ${c}`);var v=k(q),w=pd(4+v+b);
H[w>>2]=v/b;f(q,w+4,v+b);null!==l&&l.push(cc,w);return w},de:8,readValueFromPointer:gb,ee(l){cc(l)}})},A:(a,b,c,e,f,k)=>{eb[a]={name:K(b),Fe:Q(c,e),he:Q(f,k),Ke:[]}},d:(a,b,c,e,f,k,n,l,q,v)=>{eb[a].Ke.push({Ze:K(b),df:c,bf:Q(e,f),cf:k,lf:n,kf:Q(l,q),mf:v})},jd:(a,b)=>{b=K(b);lb(a,{sf:!0,name:b,de:0,fromWireType:()=>{},toWireType:()=>{}})},id:()=>1,hd:()=>{throw Infinity;},E:(a,b,c)=>{a=mc(a);b=pc(b,"emval::as");return zc(b,c,a)},L:(a,b,c,e)=>{a=Ac[a];b=mc(b);return a(null,b,c,e)},t:(a,b,c,e,f)=>{a=
Ac[a];b=mc(b);c=Cc(c);return a(b,b[c],e,f)},c:lc,K:a=>{if(0===a)return Ob(Dc());a=Cc(a);return Ob(Dc()[a])},n:(a,b,c)=>{var e=Fc(a,b),f=e.shift();a--;var k=Array(a);b=`methodCaller<(${e.map(n=>n.name).join(", ")}) => ${f.name}>`;return Ec(Fb(b,(n,l,q,v)=>{for(var w=0,A=0;A<a;++A)k[A]=e[A].readValueFromPointer(v+w),w+=e[A].de;n=1===c?Gc(l,k):l.apply(n,k);return zc(f,q,n)}))},y:(a,b)=>{a=mc(a);b=mc(b);return Ob(a[b])},H:a=>{9<a&&(kc[a+1]+=1)},G:()=>Ob([]),f:a=>Ob(Cc(a)),D:()=>Ob({}),gd:a=>{a=mc(a);
return!a},m:a=>{var b=mc(a);fb(b);lc(a)},h:(a,b,c)=>{a=mc(a);b=mc(b);c=mc(c);a[b]=c},g:(a,b)=>{a=pc(a,"_emval_take_value");a=a.readValueFromPointer(b);return Ob(a)},W:function(){return-52},V:function(){},fd:(a,b,c,e)=>{var f=(new Date).getFullYear(),k=(new Date(f,0,1)).getTimezoneOffset();f=(new Date(f,6,1)).getTimezoneOffset();H[a>>2]=60*Math.max(k,f);E[b>>2]=Number(k!=f);b=n=>{var l=Math.abs(n);return`UTC${0<=n?"-":"+"}${String(Math.floor(l/60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};
a=b(k);b=b(f);f<k?(ra(a,c,17),ra(b,e,17)):(ra(a,e,17),ra(b,c,17))},ed:()=>performance.now(),dd:a=>R.activeTexture(a),cd:(a,b)=>{R.attachShader(Nc[a],Qc[b])},bd:(a,b)=>{R.beginQuery(a,Sc[b])},ad:(a,b)=>{R.ge.beginQueryEXT(a,Sc[b])},$c:(a,b,c)=>{R.bindAttribLocation(Nc[a],b,c?db(B,c):"")},_c:(a,b)=>{35051==a?R.Ce=b:35052==a&&(R.le=b);R.bindBuffer(a,Mc[b])},Zc:cd,Yc:(a,b)=>{R.bindRenderbuffer(a,Pc[b])},Xc:(a,b)=>{R.bindSampler(a,Tc[b])},Wc:(a,b)=>{R.bindTexture(a,ka[b])},Vc:dd,Uc:dd,Tc:(a,b,c,e)=>R.blendColor(a,
b,c,e),Sc:a=>R.blendEquation(a),Rc:(a,b)=>R.blendFunc(a,b),Qc:(a,b,c,e,f,k,n,l,q,v)=>R.blitFramebuffer(a,b,c,e,f,k,n,l,q,v),Pc:(a,b,c,e)=>{2<=z.version?c&&b?R.bufferData(a,B,e,c,b):R.bufferData(a,b,e):R.bufferData(a,c?B.subarray(c,c+b):b,e)},Oc:(a,b,c,e)=>{2<=z.version?c&&R.bufferSubData(a,b,B,e,c):R.bufferSubData(a,b,B.subarray(e,e+c))},Nc:a=>R.checkFramebufferStatus(a),Mc:ed,Lc:fd,Kc:gd,Jc:(a,b,c,e)=>R.clientWaitSync(Uc[a],b,(c>>>0)+4294967296*e),Ic:(a,b,c,e)=>{R.colorMask(!!a,!!b,!!c,!!e)},Hc:a=>
{R.compileShader(Qc[a])},Gc:(a,b,c,e,f,k,n,l)=>{2<=z.version?R.le||!n?R.compressedTexImage2D(a,b,c,e,f,k,n,l):R.compressedTexImage2D(a,b,c,e,f,k,B,l,n):R.compressedTexImage2D(a,b,c,e,f,k,B.subarray(l,l+n))},Fc:(a,b,c,e,f,k,n,l,q)=>{2<=z.version?R.le||!l?R.compressedTexSubImage2D(a,b,c,e,f,k,n,l,q):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B,q,l):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B.subarray(q,q+l))},Ec:(a,b,c,e,f)=>R.copyBufferSubData(a,b,c,e,f),Dc:(a,b,c,e,f,k,n,l)=>R.copyTexSubImage2D(a,b,c,
e,f,k,n,l),Cc:()=>{var a=ja(Nc),b=R.createProgram();b.name=a;b.Ae=b.ye=b.ze=0;b.Ge=1;Nc[a]=b;return a},Bc:a=>{var b=ja(Qc);Qc[b]=R.createShader(a);return b},Ac:a=>R.cullFace(a),zc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Mc[e];f&&(R.deleteBuffer(f),f.name=0,Mc[e]=null,e==R.Ce&&(R.Ce=0),e==R.le&&(R.le=0))}},yc:(a,b)=>{for(var c=0;c<a;++c){var e=E[b+4*c>>2],f=Oc[e];f&&(R.deleteFramebuffer(f),f.name=0,Oc[e]=null)}},xc:a=>{if(a){var b=Nc[a];b?(R.deleteProgram(b),b.name=0,Nc[a]=null):U||=1281}},
wc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.deleteQuery(f),Sc[e]=null)}},vc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.ge.deleteQueryEXT(f),Sc[e]=null)}},uc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Pc[e];f&&(R.deleteRenderbuffer(f),f.name=0,Pc[e]=null)}},tc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Tc[e];f&&(R.deleteSampler(f),f.name=0,Tc[e]=null)}},sc:a=>{if(a){var b=Qc[a];b?(R.deleteShader(b),Qc[a]=null):U||=1281}},rc:a=>{if(a){var b=Uc[a];b?
(R.deleteSync(b),b.name=0,Uc[a]=null):U||=1281}},qc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=ka[e];f&&(R.deleteTexture(f),f.name=0,ka[e]=null)}},pc:hd,oc:hd,nc:a=>{R.depthMask(!!a)},mc:a=>R.disable(a),lc:a=>{R.disableVertexAttribArray(a)},kc:(a,b,c)=>{R.drawArrays(a,b,c)},jc:(a,b,c,e)=>{R.drawArraysInstanced(a,b,c,e)},ic:(a,b,c,e,f)=>{R.Je.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},hc:(a,b)=>{for(var c=jd[a],e=0;e<a;e++)c[e]=E[b+4*e>>2];R.drawBuffers(c)},gc:(a,b,c,e)=>{R.drawElements(a,
b,c,e)},fc:(a,b,c,e,f)=>{R.drawElementsInstanced(a,b,c,e,f)},ec:(a,b,c,e,f,k,n)=>{R.Je.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,e,f,k,n)},dc:(a,b,c,e,f,k)=>{R.drawElements(a,e,f,k)},cc:a=>R.enable(a),bc:a=>{R.enableVertexAttribArray(a)},ac:a=>R.endQuery(a),$b:a=>{R.ge.endQueryEXT(a)},_b:(a,b)=>(a=R.fenceSync(a,b))?(b=ja(Uc),a.name=b,Uc[b]=a,b):0,Zb:()=>R.finish(),Yb:()=>R.flush(),Xb:(a,b,c,e)=>{R.framebufferRenderbuffer(a,b,c,Pc[e])},Wb:(a,b,c,e,f)=>{R.framebufferTexture2D(a,b,c,ka[e],
f)},Vb:a=>R.frontFace(a),Ub:(a,b)=>{$c(a,b,"createBuffer",Mc)},Tb:(a,b)=>{$c(a,b,"createFramebuffer",Oc)},Sb:(a,b)=>{$c(a,b,"createQuery",Sc)},Rb:(a,b)=>{for(var c=0;c<a;c++){var e=R.ge.createQueryEXT();if(!e){for(U||=1282;c<a;)E[b+4*c++>>2]=0;break}var f=ja(Sc);e.name=f;Sc[f]=e;E[b+4*c>>2]=f}},Qb:(a,b)=>{$c(a,b,"createRenderbuffer",Pc)},Pb:(a,b)=>{$c(a,b,"createSampler",Tc)},Ob:(a,b)=>{$c(a,b,"createTexture",ka)},Nb:kd,Mb:kd,Lb:a=>R.generateMipmap(a),Kb:(a,b,c)=>{c?E[c>>2]=R.getBufferParameter(a,
b):U||=1281},Jb:()=>{var a=R.getError()||U;U=0;return a},Ib:(a,b)=>md(a,b,2),Hb:(a,b,c,e)=>{a=R.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;E[e>>2]=a},Gb:nd,Fb:(a,b,c,e)=>{a=R.getProgramInfoLog(Nc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},Eb:(a,b,c)=>{if(c)if(a>=Lc)U||=1281;else if(a=Nc[a],35716==b)a=R.getProgramInfoLog(a),null===a&&(a="(unknown error)"),E[c>>2]=a.length+1;else if(35719==b){if(!a.Ae){var e=
R.getProgramParameter(a,35718);for(b=0;b<e;++b)a.Ae=Math.max(a.Ae,R.getActiveUniform(a,b).name.length+1)}E[c>>2]=a.Ae}else if(35722==b){if(!a.ye)for(e=R.getProgramParameter(a,35721),b=0;b<e;++b)a.ye=Math.max(a.ye,R.getActiveAttrib(a,b).name.length+1);E[c>>2]=a.ye}else if(35381==b){if(!a.ze)for(e=R.getProgramParameter(a,35382),b=0;b<e;++b)a.ze=Math.max(a.ze,R.getActiveUniformBlockName(a,b).length+1);E[c>>2]=a.ze}else E[c>>2]=R.getProgramParameter(a,b);else U||=1281},Db:od,Cb:od,Bb:(a,b,c)=>{if(c){a=
R.getQueryParameter(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else U||=1281},Ab:(a,b,c)=>{if(c){a=R.ge.getQueryObjectEXT(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else U||=1281},zb:(a,b,c)=>{c?E[c>>2]=R.getQuery(a,b):U||=1281},yb:(a,b,c)=>{c?E[c>>2]=R.ge.getQueryEXT(a,b):U||=1281},xb:(a,b,c)=>{c?E[c>>2]=R.getRenderbufferParameter(a,b):U||=1281},wb:(a,b,c,e)=>{a=R.getShaderInfoLog(Qc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},vb:(a,b,c,e)=>
{a=R.getShaderPrecisionFormat(a,b);E[c>>2]=a.rangeMin;E[c+4>>2]=a.rangeMax;E[e>>2]=a.precision},ub:(a,b,c)=>{c?35716==b?(a=R.getShaderInfoLog(Qc[a]),null===a&&(a="(unknown error)"),E[c>>2]=a?a.length+1:0):35720==b?(a=R.getShaderSource(Qc[a]),E[c>>2]=a?a.length+1:0):E[c>>2]=R.getShaderParameter(Qc[a],b):U||=1281},tb:rd,sb:sd,rb:(a,b)=>{b=b?db(B,b):"";if(a=Nc[a]){var c=a,e=c.re,f=c.Oe,k;if(!e){c.re=e={};c.Ne={};var n=R.getProgramParameter(c,35718);for(k=0;k<n;++k){var l=R.getActiveUniform(c,k);var q=
l.name;l=l.size;var v=td(q);v=0<v?q.slice(0,v):q;var w=c.Ge;c.Ge+=l;f[v]=[l,w];for(q=0;q<l;++q)e[w]=q,c.Ne[w++]=v}}c=a.re;e=0;f=b;k=td(b);0<k&&(e=parseInt(b.slice(k+1))>>>0,f=b.slice(0,k));if((f=a.Oe[f])&&e<f[0]&&(e+=f[1],c[e]=c[e]||R.getUniformLocation(a,b)))return e}else U||=1281;return-1},qb:(a,b,c)=>{for(var e=jd[b],f=0;f<b;f++)e[f]=E[c+4*f>>2];R.invalidateFramebuffer(a,e)},pb:(a,b,c,e,f,k,n)=>{for(var l=jd[b],q=0;q<b;q++)l[q]=E[c+4*q>>2];R.invalidateSubFramebuffer(a,l,e,f,k,n)},ob:a=>R.isSync(Uc[a]),
nb:a=>(a=ka[a])?R.isTexture(a):0,mb:a=>R.lineWidth(a),lb:a=>{a=Nc[a];R.linkProgram(a);a.re=0;a.Oe={}},kb:(a,b,c,e,f,k)=>{R.Le.multiDrawArraysInstancedBaseInstanceWEBGL(a,E,b>>2,E,c>>2,E,e>>2,H,f>>2,k)},jb:(a,b,c,e,f,k,n,l)=>{R.Le.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,E,b>>2,c,E,e>>2,E,f>>2,E,k>>2,H,n>>2,l)},ib:(a,b)=>{3317==a?Yc=b:3314==a&&(Zc=b);R.pixelStorei(a,b)},hb:(a,b)=>{R.ge.queryCounterEXT(Sc[a],b)},gb:a=>R.readBuffer(a),fb:(a,b,c,e,f,k,n)=>{if(2<=z.version)if(R.Ce)R.readPixels(a,
b,c,e,f,k,n);else{var l=ud(k);n>>>=31-Math.clz32(l.BYTES_PER_ELEMENT);R.readPixels(a,b,c,e,f,k,l,n)}else(l=vd(k,f,c,e,n))?R.readPixels(a,b,c,e,f,k,l):U||=1280},eb:(a,b,c,e)=>R.renderbufferStorage(a,b,c,e),db:(a,b,c,e,f)=>R.renderbufferStorageMultisample(a,b,c,e,f),cb:(a,b,c)=>{R.samplerParameterf(Tc[a],b,c)},bb:(a,b,c)=>{R.samplerParameteri(Tc[a],b,c)},ab:(a,b,c)=>{R.samplerParameteri(Tc[a],b,E[c>>2])},$a:(a,b,c,e)=>R.scissor(a,b,c,e),_a:(a,b,c,e)=>{for(var f="",k=0;k<b;++k){var n=(n=H[c+4*k>>2])?
db(B,n,e?H[e+4*k>>2]:void 0):"";f+=n}R.shaderSource(Qc[a],f)},Za:(a,b,c)=>R.stencilFunc(a,b,c),Ya:(a,b,c,e)=>R.stencilFuncSeparate(a,b,c,e),Xa:a=>R.stencilMask(a),Wa:(a,b)=>R.stencilMaskSeparate(a,b),Va:(a,b,c)=>R.stencilOp(a,b,c),Ua:(a,b,c,e)=>R.stencilOpSeparate(a,b,c,e),Ta:(a,b,c,e,f,k,n,l,q)=>{if(2<=z.version){if(R.le){R.texImage2D(a,b,c,e,f,k,n,l,q);return}if(q){var v=ud(l);q>>>=31-Math.clz32(v.BYTES_PER_ELEMENT);R.texImage2D(a,b,c,e,f,k,n,l,v,q);return}}v=q?vd(l,n,e,f,q):null;R.texImage2D(a,
b,c,e,f,k,n,l,v)},Sa:(a,b,c)=>R.texParameterf(a,b,c),Ra:(a,b,c)=>{R.texParameterf(a,b,J[c>>2])},Qa:(a,b,c)=>R.texParameteri(a,b,c),Pa:(a,b,c)=>{R.texParameteri(a,b,E[c>>2])},Oa:(a,b,c,e,f)=>R.texStorage2D(a,b,c,e,f),Na:(a,b,c,e,f,k,n,l,q)=>{if(2<=z.version){if(R.le){R.texSubImage2D(a,b,c,e,f,k,n,l,q);return}if(q){var v=ud(l);R.texSubImage2D(a,b,c,e,f,k,n,l,v,q>>>31-Math.clz32(v.BYTES_PER_ELEMENT));return}}q=q?vd(l,n,f,k,q):null;R.texSubImage2D(a,b,c,e,f,k,n,l,q)},Ma:(a,b)=>{R.uniform1f(Y(a),b)},La:(a,
b,c)=>{if(2<=z.version)b&&R.uniform1fv(Y(a),J,c>>2,b);else{if(288>=b)for(var e=wd[b],f=0;f<b;++f)e[f]=J[c+4*f>>2];else e=J.subarray(c>>2,c+4*b>>2);R.uniform1fv(Y(a),e)}},Ka:(a,b)=>{R.uniform1i(Y(a),b)},Ja:(a,b,c)=>{if(2<=z.version)b&&R.uniform1iv(Y(a),E,c>>2,b);else{if(288>=b)for(var e=xd[b],f=0;f<b;++f)e[f]=E[c+4*f>>2];else e=E.subarray(c>>2,c+4*b>>2);R.uniform1iv(Y(a),e)}},Ia:(a,b,c)=>{R.uniform2f(Y(a),b,c)},Ha:(a,b,c)=>{if(2<=z.version)b&&R.uniform2fv(Y(a),J,c>>2,2*b);else{if(144>=b){b*=2;for(var e=
wd[b],f=0;f<b;f+=2)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2]}else e=J.subarray(c>>2,c+8*b>>2);R.uniform2fv(Y(a),e)}},Ga:(a,b,c)=>{R.uniform2i(Y(a),b,c)},Fa:(a,b,c)=>{if(2<=z.version)b&&R.uniform2iv(Y(a),E,c>>2,2*b);else{if(144>=b){b*=2;for(var e=xd[b],f=0;f<b;f+=2)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2]}else e=E.subarray(c>>2,c+8*b>>2);R.uniform2iv(Y(a),e)}},Ea:(a,b,c,e)=>{R.uniform3f(Y(a),b,c,e)},Da:(a,b,c)=>{if(2<=z.version)b&&R.uniform3fv(Y(a),J,c>>2,3*b);else{if(96>=b){b*=3;for(var e=wd[b],f=0;f<
b;f+=3)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2],e[f+2]=J[c+(4*f+8)>>2]}else e=J.subarray(c>>2,c+12*b>>2);R.uniform3fv(Y(a),e)}},Ca:(a,b,c,e)=>{R.uniform3i(Y(a),b,c,e)},Ba:(a,b,c)=>{if(2<=z.version)b&&R.uniform3iv(Y(a),E,c>>2,3*b);else{if(96>=b){b*=3;for(var e=xd[b],f=0;f<b;f+=3)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2]}else e=E.subarray(c>>2,c+12*b>>2);R.uniform3iv(Y(a),e)}},Aa:(a,b,c,e,f)=>{R.uniform4f(Y(a),b,c,e,f)},za:(a,b,c)=>{if(2<=z.version)b&&R.uniform4fv(Y(a),J,c>>2,4*
b);else{if(72>=b){var e=wd[4*b],f=J;c>>=2;b*=4;for(var k=0;k<b;k+=4){var n=c+k;e[k]=f[n];e[k+1]=f[n+1];e[k+2]=f[n+2];e[k+3]=f[n+3]}}else e=J.subarray(c>>2,c+16*b>>2);R.uniform4fv(Y(a),e)}},ya:(a,b,c,e,f)=>{R.uniform4i(Y(a),b,c,e,f)},xa:(a,b,c)=>{if(2<=z.version)b&&R.uniform4iv(Y(a),E,c>>2,4*b);else{if(72>=b){b*=4;for(var e=xd[b],f=0;f<b;f+=4)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2],e[f+3]=E[c+(4*f+12)>>2]}else e=E.subarray(c>>2,c+16*b>>2);R.uniform4iv(Y(a),e)}},wa:(a,b,c,e)=>
{if(2<=z.version)b&&R.uniformMatrix2fv(Y(a),!!c,J,e>>2,4*b);else{if(72>=b){b*=4;for(var f=wd[b],k=0;k<b;k+=4)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2]}else f=J.subarray(e>>2,e+16*b>>2);R.uniformMatrix2fv(Y(a),!!c,f)}},va:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix3fv(Y(a),!!c,J,e>>2,9*b);else{if(32>=b){b*=9;for(var f=wd[b],k=0;k<b;k+=9)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2],f[k+4]=J[e+(4*k+16)>>2],f[k+
5]=J[e+(4*k+20)>>2],f[k+6]=J[e+(4*k+24)>>2],f[k+7]=J[e+(4*k+28)>>2],f[k+8]=J[e+(4*k+32)>>2]}else f=J.subarray(e>>2,e+36*b>>2);R.uniformMatrix3fv(Y(a),!!c,f)}},ua:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix4fv(Y(a),!!c,J,e>>2,16*b);else{if(18>=b){var f=wd[16*b],k=J;e>>=2;b*=16;for(var n=0;n<b;n+=16){var l=e+n;f[n]=k[l];f[n+1]=k[l+1];f[n+2]=k[l+2];f[n+3]=k[l+3];f[n+4]=k[l+4];f[n+5]=k[l+5];f[n+6]=k[l+6];f[n+7]=k[l+7];f[n+8]=k[l+8];f[n+9]=k[l+9];f[n+10]=k[l+10];f[n+11]=k[l+11];f[n+12]=k[l+12];f[n+
13]=k[l+13];f[n+14]=k[l+14];f[n+15]=k[l+15]}}else f=J.subarray(e>>2,e+64*b>>2);R.uniformMatrix4fv(Y(a),!!c,f)}},ta:a=>{a=Nc[a];R.useProgram(a);R.We=a},sa:(a,b)=>R.vertexAttrib1f(a,b),ra:(a,b)=>{R.vertexAttrib2f(a,J[b>>2],J[b+4>>2])},qa:(a,b)=>{R.vertexAttrib3f(a,J[b>>2],J[b+4>>2],J[b+8>>2])},pa:(a,b)=>{R.vertexAttrib4f(a,J[b>>2],J[b+4>>2],J[b+8>>2],J[b+12>>2])},oa:(a,b)=>{R.vertexAttribDivisor(a,b)},na:(a,b,c,e,f)=>{R.vertexAttribIPointer(a,b,c,e,f)},ma:(a,b,c,e,f,k)=>{R.vertexAttribPointer(a,b,c,
!!e,f,k)},la:(a,b,c,e)=>R.viewport(a,b,c,e),ka:(a,b,c,e)=>{R.waitSync(Uc[a],b,(c>>>0)+4294967296*e)},ja:a=>{var b=B.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+1/c);e=Math.min(e,a+100663296);a:{e=(Math.min(2147483648,65536*Math.ceil(Math.max(a,e)/65536))-za.buffer.byteLength+65535)/65536|0;try{za.grow(e);Ha();var f=1;break a}catch(k){}f=void 0}if(f)return!0}return!1},ia:()=>z?z.handle:0,pd:(a,b)=>{var c=0;Ad().forEach((e,f)=>{var k=b+c;f=H[a+4*f>>2]=k;for(k=0;k<e.length;++k)Ca[f++]=
e.charCodeAt(k);Ca[f]=0;c+=e.length+1});return 0},od:(a,b)=>{var c=Ad();H[a>>2]=c.length;var e=0;c.forEach(f=>e+=f.length+1);H[b>>2]=e;return 0},ha:a=>{Xa||(Ba=!0);throw new Va(a);},T:()=>52,Z:function(){return 52},nd:()=>52,Y:function(){return 70},S:(a,b,c,e)=>{for(var f=0,k=0;k<c;k++){var n=H[b>>2],l=H[b+4>>2];b+=8;for(var q=0;q<l;q++){var v=B[n+q],w=Bd[a];0===v||10===v?((1===a?xa:ya)(db(w)),w.length=0):w.push(v)}f+=l}H[e>>2]=f;return 0},ga:cd,fa:ed,ea:fd,da:gd,J:nd,P:rd,ca:sd,k:Hd,u:Id,i:Jd,I:Kd,
ba:Ld,O:Md,N:Nd,s:Od,x:Pd,r:Qd,v:Rd,aa:Sd,$:Td,_:Ud},Z=function(){function a(c){Z=c.exports;za=Z.vd;Ha();N=Z.yd;Ja.unshift(Z.wd);La--;0==La&&(null!==Na&&(clearInterval(Na),Na=null),Oa&&(c=Oa,Oa=null,c()));return Z}var b={a:Vd};La++;if(r.instantiateWasm)try{return r.instantiateWasm(b,a)}catch(c){ya(`Module.instantiateWasm callback failed with error: ${c}`),ca(c)}Ra??=r.locateFile?Qa("canvaskit.wasm")?"canvaskit.wasm":ta+"canvaskit.wasm":(new URL("canvaskit.wasm",import.meta.url)).href;Ua(b,
function(c){a(c.instance)}).catch(ca);return{}}(),bc=a=>(bc=Z.xd)(a),pd=r._malloc=a=>(pd=r._malloc=Z.zd)(a),cc=r._free=a=>(cc=r._free=Z.Ad)(a),Wd=(a,b)=>(Wd=Z.Bd)(a,b),Xd=a=>(Xd=Z.Cd)(a),Yd=()=>(Yd=Z.Dd)();r.dynCall_viji=(a,b,c,e,f)=>(r.dynCall_viji=Z.Ed)(a,b,c,e,f);r.dynCall_vijiii=(a,b,c,e,f,k,n)=>(r.dynCall_vijiii=Z.Fd)(a,b,c,e,f,k,n);r.dynCall_viiiiij=(a,b,c,e,f,k,n,l)=>(r.dynCall_viiiiij=Z.Gd)(a,b,c,e,f,k,n,l);r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=Z.Hd)(a,b,c);
r.dynCall_vij=(a,b,c,e)=>(r.dynCall_vij=Z.Id)(a,b,c,e);r.dynCall_jiiiiii=(a,b,c,e,f,k,n)=>(r.dynCall_jiiiiii=Z.Jd)(a,b,c,e,f,k,n);r.dynCall_jiiiiji=(a,b,c,e,f,k,n,l)=>(r.dynCall_jiiiiji=Z.Kd)(a,b,c,e,f,k,n,l);r.dynCall_ji=(a,b)=>(r.dynCall_ji=Z.Ld)(a,b);r.dynCall_iijj=(a,b,c,e,f,k)=>(r.dynCall_iijj=Z.Md)(a,b,c,e,f,k);r.dynCall_jiji=(a,b,c,e,f)=>(r.dynCall_jiji=Z.Nd)(a,b,c,e,f);r.dynCall_viijii=(a,b,c,e,f,k,n)=>(r.dynCall_viijii=Z.Od)(a,b,c,e,f,k,n);
r.dynCall_iiiiij=(a,b,c,e,f,k,n)=>(r.dynCall_iiiiij=Z.Pd)(a,b,c,e,f,k,n);r.dynCall_iiiiijj=(a,b,c,e,f,k,n,l,q)=>(r.dynCall_iiiiijj=Z.Qd)(a,b,c,e,f,k,n,l,q);r.dynCall_iiiiiijj=(a,b,c,e,f,k,n,l,q,v)=>(r.dynCall_iiiiiijj=Z.Rd)(a,b,c,e,f,k,n,l,q,v);function Rd(a,b,c,e,f){var k=Yd();try{N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}function Id(a,b,c){var e=Yd();try{return N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}
function Pd(a,b,c){var e=Yd();try{N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}function Hd(a,b){var c=Yd();try{return N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Od(a,b){var c=Yd();try{N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Jd(a,b,c,e){var f=Yd();try{return N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}function Ud(a,b,c,e,f,k,n,l,q,v){var w=Yd();try{N.get(a)(b,c,e,f,k,n,l,q,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}
function Qd(a,b,c,e){var f=Yd();try{N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}function Td(a,b,c,e,f,k,n){var l=Yd();try{N.get(a)(b,c,e,f,k,n)}catch(q){Xd(l);if(q!==q+0)throw q;Wd(1,0)}}function Md(a,b,c,e,f,k,n,l){var q=Yd();try{return N.get(a)(b,c,e,f,k,n,l)}catch(v){Xd(q);if(v!==v+0)throw v;Wd(1,0)}}function Sd(a,b,c,e,f,k){var n=Yd();try{N.get(a)(b,c,e,f,k)}catch(l){Xd(n);if(l!==l+0)throw l;Wd(1,0)}}
function Kd(a,b,c,e,f){var k=Yd();try{return N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}function Nd(a,b,c,e,f,k,n,l,q,v){var w=Yd();try{return N.get(a)(b,c,e,f,k,n,l,q,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}function Ld(a,b,c,e,f,k,n){var l=Yd();try{return N.get(a)(b,c,e,f,k,n)}catch(q){Xd(l);if(q!==q+0)throw q;Wd(1,0)}}var Zd,$d;Oa=function ae(){Zd||be();Zd||(Oa=ae)};
function be(){if(!(0<La)){if(!$d&&($d=1,Wa(Ia),0<La))return;Zd||(Zd=1,r.calledRun=1,Ba||(Wa(Ja),ba(r),r.onRuntimeInitialized?.(),Wa(Ka)))}}be();moduleRtn=da;
return moduleRtn;
}
);
})();
export default CanvasKitInit;

File diff suppressed because one or more lines are too long

View File

@ -1,158 +0,0 @@
var skwasm = (() => {
var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
return (
function(moduleArg = {}) {
var moduleRtn;
function aa(){e.buffer!=h.buffer&&k();return h}function n(){e.buffer!=h.buffer&&k();return ba}function q(){e.buffer!=h.buffer&&k();return ca}function t(){e.buffer!=h.buffer&&k();return da}function u(){e.buffer!=h.buffer&&k();return ea}function fa(){e.buffer!=h.buffer&&k();return ha}var v=moduleArg,ia,ja,ka=new Promise((a,b)=>{ia=a;ja=b}),la="object"==typeof window,ma="function"==typeof importScripts,w=ma&&self.name?.startsWith("em-pthread"),na=Object.assign({},v),x="",oa,pa;
if(la||ma)ma?x=self.location.href:"undefined"!=typeof document&&document.currentScript&&(x=document.currentScript.src),_scriptName&&(x=_scriptName),x.startsWith("blob:")?x="":x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1),ma&&(pa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),oa=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
var qa=console.log.bind(console),y=console.error.bind(console);Object.assign(v,na);na=null;var e,ra,sa=!1,ta,h,ba,ua,va,ca,da,ea,ha;function k(){var a=e.buffer;h=new Int8Array(a);ua=new Int16Array(a);ba=new Uint8Array(a);va=new Uint16Array(a);ca=new Int32Array(a);da=new Uint32Array(a);ea=new Float32Array(a);ha=new Float64Array(a)}
if(w){var wa,xa=!1;y=function(...b){console.error(b.join(" "))};self.alert=function(...b){postMessage({g:"alert",text:b.join(" "),na:ya()})};v.instantiateWasm=(b,c)=>new Promise(d=>{wa=f=>{f=new WebAssembly.Instance(f,za());c(f);d()}});self.onunhandledrejection=b=>{throw b.reason||b;};function a(b){try{var c=b.data,d=c.g;if("load"===d){let f=[];self.onmessage=g=>f.push(g);self.startWorker=()=>{postMessage({g:"loaded"});for(let g of f)a(g);self.onmessage=a};for(const g of c.ca)if(!v[g]||v[g].proxy)v[g]=
(...l)=>{postMessage({g:"callHandler",ba:g,X:l})},"print"==g&&(qa=v[g]),"printErr"==g&&(y=v[g]);e=c.pa;k();wa(c.qa)}else if("run"===d){Aa(c.l);Ba(c.l,0,0,1,0,0);Ca(c);Da();Ea(c.l);xa||=!0;try{Fa(c.la,c.J)}catch(f){if("unwind"!=f)throw f;}}else"setimmediate"!==c.target&&("checkMailbox"===d?xa&&Ga():d&&(y(`worker: received unknown command ${d}`),y(c)))}catch(f){throw Ha(),f;}}self.onmessage=a}w||(e=new WebAssembly.Memory({initial:256,maximum:32768,shared:!0}),k());
var Ia=[],Ja=[],Ka=[],z=0,La=null,Ma=null;function Na(){z--;if(0==z&&(null!==La&&(clearInterval(La),La=null),Ma)){var a=Ma;Ma=null;a()}}function Oa(a){a="Aborted("+a+")";y(a);sa=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ja(a);throw a;}var Pa=a=>a.startsWith("data:application/octet-stream;base64,"),Qa;function Ra(a){return oa(a).then(b=>new Uint8Array(b),()=>{if(pa)var b=pa(a);else throw"both async and sync fetching of the wasm failed";return b})}
function Sa(a,b,c){return Ra(a).then(d=>WebAssembly.instantiate(d,b)).then(c,d=>{y(`failed to asynchronously prepare wasm: ${d}`);Oa(d)})}function Ta(a,b){var c=Qa;return"function"!=typeof WebAssembly.instantiateStreaming||Pa(c)||"function"!=typeof fetch?Sa(c,a,b):fetch(c,{credentials:"same-origin"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(f){y(`wasm streaming compile failed: ${f}`);y("falling back to ArrayBuffer instantiation");return Sa(c,a,b)}))}
function za(){Ua={__cxa_throw:Va,__pthread_create_js:Wa,__syscall_fcntl64:Xa,__syscall_fstat64:Ya,__syscall_ioctl:Za,__syscall_openat:$a,_abort_js:ab,_emscripten_get_now_is_monotonic:bb,_emscripten_init_main_thread_js:cb,_emscripten_notify_mailbox_postmessage:db,_emscripten_receive_on_main_thread_js:eb,_emscripten_runtime_keepalive_clear:fb,_emscripten_thread_cleanup:gb,_emscripten_thread_mailbox_await:Ea,_emscripten_thread_set_strongref:hb,_emscripten_throw_longjmp:ib,_mmap_js:jb,_munmap_js:kb,_setitimer_js:lb,
_tzset_js:mb,emscripten_check_blocking_allowed:nb,emscripten_exit_with_live_runtime:ob,emscripten_get_now:pb,emscripten_glActiveTexture:qb,emscripten_glAttachShader:rb,emscripten_glBeginQuery:sb,emscripten_glBeginQueryEXT:tb,emscripten_glBindAttribLocation:ub,emscripten_glBindBuffer:vb,emscripten_glBindFramebuffer:wb,emscripten_glBindRenderbuffer:xb,emscripten_glBindSampler:yb,emscripten_glBindTexture:zb,emscripten_glBindVertexArray:Ab,emscripten_glBindVertexArrayOES:Ab,emscripten_glBlendColor:Bb,
emscripten_glBlendEquation:Cb,emscripten_glBlendFunc:Db,emscripten_glBlitFramebuffer:Eb,emscripten_glBufferData:Fb,emscripten_glBufferSubData:Gb,emscripten_glCheckFramebufferStatus:Hb,emscripten_glClear:Ib,emscripten_glClearColor:Jb,emscripten_glClearStencil:Kb,emscripten_glClientWaitSync:Lb,emscripten_glColorMask:Mb,emscripten_glCompileShader:Nb,emscripten_glCompressedTexImage2D:Ob,emscripten_glCompressedTexSubImage2D:Pb,emscripten_glCopyBufferSubData:Qb,emscripten_glCopyTexSubImage2D:Rb,emscripten_glCreateProgram:Sb,
emscripten_glCreateShader:Tb,emscripten_glCullFace:Ub,emscripten_glDeleteBuffers:Vb,emscripten_glDeleteFramebuffers:Wb,emscripten_glDeleteProgram:Xb,emscripten_glDeleteQueries:Yb,emscripten_glDeleteQueriesEXT:Zb,emscripten_glDeleteRenderbuffers:$b,emscripten_glDeleteSamplers:ac,emscripten_glDeleteShader:bc,emscripten_glDeleteSync:cc,emscripten_glDeleteTextures:dc,emscripten_glDeleteVertexArrays:ec,emscripten_glDeleteVertexArraysOES:ec,emscripten_glDepthMask:fc,emscripten_glDisable:gc,emscripten_glDisableVertexAttribArray:hc,
emscripten_glDrawArrays:ic,emscripten_glDrawArraysInstanced:jc,emscripten_glDrawArraysInstancedBaseInstanceWEBGL:kc,emscripten_glDrawBuffers:lc,emscripten_glDrawElements:mc,emscripten_glDrawElementsInstanced:nc,emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL:oc,emscripten_glDrawRangeElements:pc,emscripten_glEnable:qc,emscripten_glEnableVertexAttribArray:rc,emscripten_glEndQuery:sc,emscripten_glEndQueryEXT:tc,emscripten_glFenceSync:uc,emscripten_glFinish:vc,emscripten_glFlush:wc,emscripten_glFramebufferRenderbuffer:xc,
emscripten_glFramebufferTexture2D:yc,emscripten_glFrontFace:zc,emscripten_glGenBuffers:Ac,emscripten_glGenFramebuffers:Bc,emscripten_glGenQueries:Cc,emscripten_glGenQueriesEXT:Dc,emscripten_glGenRenderbuffers:Ec,emscripten_glGenSamplers:Fc,emscripten_glGenTextures:Gc,emscripten_glGenVertexArrays:Hc,emscripten_glGenVertexArraysOES:Hc,emscripten_glGenerateMipmap:Ic,emscripten_glGetBufferParameteriv:Jc,emscripten_glGetError:Kc,emscripten_glGetFloatv:Lc,emscripten_glGetFramebufferAttachmentParameteriv:Mc,
emscripten_glGetIntegerv:Nc,emscripten_glGetProgramInfoLog:Oc,emscripten_glGetProgramiv:Pc,emscripten_glGetQueryObjecti64vEXT:Qc,emscripten_glGetQueryObjectui64vEXT:Qc,emscripten_glGetQueryObjectuiv:Rc,emscripten_glGetQueryObjectuivEXT:Sc,emscripten_glGetQueryiv:Tc,emscripten_glGetQueryivEXT:Uc,emscripten_glGetRenderbufferParameteriv:Vc,emscripten_glGetShaderInfoLog:Wc,emscripten_glGetShaderPrecisionFormat:Xc,emscripten_glGetShaderiv:Yc,emscripten_glGetString:Zc,emscripten_glGetStringi:$c,emscripten_glGetUniformLocation:ad,
emscripten_glInvalidateFramebuffer:bd,emscripten_glInvalidateSubFramebuffer:cd,emscripten_glIsSync:dd,emscripten_glIsTexture:ed,emscripten_glLineWidth:fd,emscripten_glLinkProgram:gd,emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL:hd,emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL:jd,emscripten_glPixelStorei:kd,emscripten_glQueryCounterEXT:ld,emscripten_glReadBuffer:md,emscripten_glReadPixels:nd,emscripten_glRenderbufferStorage:od,emscripten_glRenderbufferStorageMultisample:pd,
emscripten_glSamplerParameterf:qd,emscripten_glSamplerParameteri:rd,emscripten_glSamplerParameteriv:sd,emscripten_glScissor:td,emscripten_glShaderSource:ud,emscripten_glStencilFunc:vd,emscripten_glStencilFuncSeparate:wd,emscripten_glStencilMask:xd,emscripten_glStencilMaskSeparate:yd,emscripten_glStencilOp:zd,emscripten_glStencilOpSeparate:Ad,emscripten_glTexImage2D:Bd,emscripten_glTexParameterf:Cd,emscripten_glTexParameterfv:Dd,emscripten_glTexParameteri:Ed,emscripten_glTexParameteriv:Fd,emscripten_glTexStorage2D:Gd,
emscripten_glTexSubImage2D:Hd,emscripten_glUniform1f:Id,emscripten_glUniform1fv:Jd,emscripten_glUniform1i:Kd,emscripten_glUniform1iv:Ld,emscripten_glUniform2f:Md,emscripten_glUniform2fv:Nd,emscripten_glUniform2i:Od,emscripten_glUniform2iv:Pd,emscripten_glUniform3f:Qd,emscripten_glUniform3fv:Rd,emscripten_glUniform3i:Sd,emscripten_glUniform3iv:Td,emscripten_glUniform4f:Ud,emscripten_glUniform4fv:Vd,emscripten_glUniform4i:Wd,emscripten_glUniform4iv:Xd,emscripten_glUniformMatrix2fv:Yd,emscripten_glUniformMatrix3fv:Zd,
emscripten_glUniformMatrix4fv:$d,emscripten_glUseProgram:ae,emscripten_glVertexAttrib1f:be,emscripten_glVertexAttrib2fv:ce,emscripten_glVertexAttrib3fv:de,emscripten_glVertexAttrib4fv:ee,emscripten_glVertexAttribDivisor:fe,emscripten_glVertexAttribIPointer:ge,emscripten_glVertexAttribPointer:he,emscripten_glViewport:ie,emscripten_glWaitSync:je,emscripten_resize_heap:ke,emscripten_webgl_enable_extension:le,emscripten_webgl_get_current_context:me,emscripten_webgl_make_context_current:ne,environ_get:oe,
environ_sizes_get:pe,exit:qe,fd_close:re,fd_pread:se,fd_read:te,fd_seek:ue,fd_write:ve,glDeleteTextures:dc,glGetIntegerv:Nc,glGetString:Zc,glGetStringi:$c,invoke_ii:we,invoke_iii:xe,invoke_iiii:ye,invoke_iiiii:ze,invoke_iiiiiii:Ae,invoke_vi:Be,invoke_vii:Ce,invoke_viii:De,invoke_viiii:Ee,invoke_viiiiiii:Fe,memory:e,proc_exit:Ge,skwasm_captureImageBitmap:He,skwasm_connectThread:Ie,skwasm_createGlTextureFromTextureSource:Je,skwasm_createOffscreenCanvas:Ke,skwasm_dispatchDisposeSurface:Le,skwasm_dispatchRasterizeImage:Me,
skwasm_dispatchRenderPictures:Ne,skwasm_disposeAssociatedObjectOnThread:Oe,skwasm_getAssociatedObject:Pe,skwasm_postRasterizeResult:Qe,skwasm_resizeCanvas:Re,skwasm_resolveAndPostImages:Se,skwasm_setAssociatedObjectOnThread:Te};return{env:Ua,wasi_snapshot_preview1:Ua}}function Ue(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}
var Ve=a=>{a.terminate();a.onmessage=()=>{}},Ze=a=>{0==A.length&&(We(),Xe(A[0]));var b=A.pop();if(!b)return 6;Ye.push(b);B[a.l]=b;b.l=a.l;var c={g:"run",la:a.ka,J:a.J,l:a.l};c.B=a.B;c.L=a.L;b.postMessage(c,a.U);return 0},D=0,af=a=>$e(a);v.stackAlloc=af;var H=(a,b,...c)=>{for(var d=c.length,f=E(),g=$e(8*d),l=g>>3,m=0;m<c.length;m++){var p=c[m];fa()[l+m]=p}a=bf(a,0,d,g,b);G(f);return a};
function Ge(a){if(w)return H(0,1,a);ta=a;if(!(cf||0<D)){for(var b of Ye)Ve(b);for(b of A)Ve(b);A=[];Ye=[];B=[];sa=!0}throw new Ue(a);}var df=a=>{if(!(a instanceof Ue||"unwind"==a))throw a;};function ef(a){if(w)return H(1,0,a);qe(a)}var qe=a=>{ta=a;if(w)throw ef(a),"unwind";Ge(a)},A=[],Ye=[],ff=[],B={};function gf(){for(var a=1;a--;)We();Ia.unshift(()=>{z++;hf(()=>Na())})}var kf=a=>{var b=a.l;delete B[b];A.push(a);Ye.splice(Ye.indexOf(a),1);a.l=0;jf(b)};
function Ca(a){"undefined"!=typeof lf&&(Object.assign(mf,a.L),!v.canvas&&a.B&&mf[a.B]&&(v.canvas=mf[a.B].T,v.canvas.id=a.B))}function Da(){ff.forEach(a=>a())}
var Xe=a=>new Promise(b=>{a.onmessage=g=>{g=g.data;var l=g.g;if(g.I&&g.I!=ya()){var m=B[g.I];m?m.postMessage(g,g.U):y(`Internal error! Worker sent a message "${l}" to target pthread ${g.I}, but that thread no longer exists!`)}else if("checkMailbox"===l)Ga();else if("spawnThread"===l)Ze(g);else if("cleanupThread"===l)kf(B[g.ma]);else if("loaded"===l)a.loaded=!0,b(a);else if("alert"===l)alert(`Thread ${g.na}: ${g.text}`);else if("setimmediate"===g.target)a.postMessage(g);else if("callHandler"===l)v[g.ba](...g.X);
else l&&y(`worker sent an unknown command ${l}`)};a.onerror=g=>{y(`${"worker sent an error!"} ${g.filename}:${g.lineno}: ${g.message}`);throw g;};var c=[],d=[],f;for(f of d)v.propertyIsEnumerable(f)&&c.push(f);a.postMessage({g:"load",ca:c,pa:e,qa:ra})});function hf(a){w?a():Promise.all(A.map(Xe)).then(a)}function We(){var a=_scriptName;v.mainScriptUrlOrBlob&&(a=v.mainScriptUrlOrBlob,"string"!=typeof a&&(a=URL.createObjectURL(a)));a=new Worker(a,{type:"module",name:"em-pthread"});A.push(a)}
var nf=a=>{a.forEach(b=>b(v))},Aa=a=>{k();var b=t()[a+52>>2];a=t()[a+56>>2];of(b,b-a);G(b)},I,Fa=(a,b)=>{cf=D=0;a=I.get(a)(b);cf||0<D?ta=a:pf(a)},cf=v.noExitRuntime||!0;class qf{constructor(a){this.A=a-24}}var rf=0,sf=0,Va=(a,b,c)=>{var d=new qf(a);t()[d.A+16>>2]=0;t()[d.A+4>>2]=b;t()[d.A+8>>2]=c;rf=a;sf++;throw rf;};function tf(a,b,c,d){return w?H(2,1,a,b,c,d):Wa(a,b,c,d)}
var uf="undefined"!=typeof TextDecoder?new TextDecoder:void 0,vf=(a,b=0,c=NaN)=>{var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16<c-b&&a.buffer&&uf)return uf.decode(a.slice(b,c));for(d="";b<c;){var f=a[b++];if(f&128){var g=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|g);else{var l=a[b++]&63;f=224==(f&240)?(f&15)<<12|g<<6|l:(f&7)<<18|g<<12|l<<6|a[b++]&63;65536>f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d},wf=
(a,b)=>a?vf(n(),a,b):"",Wa=(a,b,c,d)=>{if("undefined"==typeof SharedArrayBuffer)return 6;var f=[],g=0,l=b?t()[b+40>>2]:0;l=(l=4294967295==l?"#canvas":wf(l).trim())?l.split(","):[];var m={},p=v.canvas?.id||"";for(r of l){var r=r.trim();try{if("#canvas"==r){if(!v.canvas){y(`pthread_create: could not find canvas with ID "${r}" to transfer to thread!`);g=28;break}r=v.canvas.id}if(mf[r]){var F=mf[r];mf[r]=null;v.canvas instanceof OffscreenCanvas&&r===v.canvas.id&&(v.canvas=null)}else if(!w){var C=v.canvas&&
v.canvas.id===r?v.canvas:document.querySelector(r);if(!C){y(`pthread_create: could not find canvas with ID "${r}" to transfer to thread!`);g=28;break}if(C.Y){y(`pthread_create: cannot transfer canvas with ID "${r}" to thread, since the current thread does not have control over it!`);g=63;break}if(C.transferControlToOffscreen)C.u||(C.u=xf(12),q()[C.u>>2]=C.width,q()[C.u+4>>2]=C.height,t()[C.u+8>>2]=0),F={T:C.transferControlToOffscreen(),u:C.u,id:C.id},C.Y=!0;else return y(`pthread_create: cannot transfer control of canvas "${r}" to pthread, because current browser does not support OffscreenCanvas!`),
y("pthread_create: Build with -sOFFSCREEN_FRAMEBUFFER to enable fallback proxying of GL commands from pthread to main thread."),52}F&&(f.push(F.T),m[F.id]=F)}catch(rg){return y(`pthread_create: failed to transfer control of canvas "${r}" to OffscreenCanvas! Error: ${rg}`),28}}if(w&&(0===f.length||g))return tf(a,b,c,d);if(g)return g;for(C of Object.values(m))t()[C.u+8>>2]=a;a={ka:c,l:a,J:d,B:p,L:m,U:f};return w?(a.g="spawnThread",postMessage(a,f),0):Ze(a)};
function Xa(a,b,c){return w?H(3,1,a,b,c):0}function Ya(a,b){if(w)return H(4,1,a,b)}function Za(a,b,c){return w?H(5,1,a,b,c):0}function $a(a,b,c,d){if(w)return H(6,1,a,b,c,d)}
var ab=()=>{Oa("")},bb=()=>1,cb=a=>{Ba(a,!ma,1,!la,65536,!1);Da()},yf=a=>{if(!sa)try{if(a(),!(cf||0<D))try{w?pf(ta):qe(ta)}catch(b){df(b)}}catch(b){df(b)}},Ea=a=>{"function"===typeof Atomics.oa&&(Atomics.oa(q(),a>>2,a).value.then(Ga),a+=128,Atomics.store(q(),a>>2,1))},Ga=()=>{var a=ya();a&&(Ea(a),yf(zf))},db=(a,b)=>{a==b?setTimeout(Ga):w?postMessage({I:a,g:"checkMailbox"}):(a=B[a])&&a.postMessage({g:"checkMailbox"})},Af=[],eb=(a,b,c,d,f)=>{Af.length=d;b=f>>3;for(c=0;c<d;c++)Af[c]=fa()[b+c];return(0,Bf[a])(...Af)},
fb=()=>{cf=!1;D=0},gb=a=>{w?postMessage({g:"cleanupThread",ma:a}):kf(B[a])},hb=()=>{},ib=()=>{throw Infinity;};function jb(a,b,c,d,f,g,l,m){return w?H(7,1,a,b,c,d,f,g,l,m):-52}function kb(a,b,c,d,f,g,l){if(w)return H(8,1,a,b,c,d,f,g,l)}var Cf={},pb=()=>performance.timeOrigin+performance.now();
function lb(a,b){if(w)return H(9,1,a,b);Cf[a]&&(clearTimeout(Cf[a].id),delete Cf[a]);if(!b)return 0;var c=setTimeout(()=>{delete Cf[a];yf(()=>Df(a,performance.timeOrigin+performance.now()))},b);Cf[a]={id:c,ua:b};return 0}
var J=(a,b,c)=>{var d=n();if(0<c){var f=b;c=b+c-1;for(var g=0;g<a.length;++g){var l=a.charCodeAt(g);if(55296<=l&&57343>=l){var m=a.charCodeAt(++g);l=65536+((l&1023)<<10)|m&1023}if(127>=l){if(b>=c)break;d[b++]=l}else{if(2047>=l){if(b+1>=c)break;d[b++]=192|l>>6}else{if(65535>=l){if(b+2>=c)break;d[b++]=224|l>>12}else{if(b+3>=c)break;d[b++]=240|l>>18;d[b++]=128|l>>12&63}d[b++]=128|l>>6&63}d[b++]=128|l&63}}d[b]=0;a=b-f}else a=0;return a},mb=(a,b,c,d)=>{var f=(new Date).getFullYear(),g=(new Date(f,0,1)).getTimezoneOffset();
f=(new Date(f,6,1)).getTimezoneOffset();var l=Math.max(g,f);t()[a>>2]=60*l;q()[b>>2]=Number(g!=f);b=m=>{var p=Math.abs(m);return`UTC${0<=m?"-":"+"}${String(Math.floor(p/60)).padStart(2,"0")}${String(p%60).padStart(2,"0")}`};a=b(g);b=b(f);f<g?(J(a,c,17),J(b,d,17)):(J(a,d,17),J(b,c,17))},nb=()=>{},ob=()=>{D+=1;throw"unwind";},K,Ef=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,d)=>b.vertexAttribDivisorANGLE(c,d),a.drawArraysInstanced=(c,d,f,g)=>b.drawArraysInstancedANGLE(c,
d,f,g),a.drawElementsInstanced=(c,d,f,g,l)=>b.drawElementsInstancedANGLE(c,d,f,g,l))},Ff=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},Gf=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,d)=>b.drawBuffersWEBGL(c,d))},Hf=a=>{a.O=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},
If=a=>{a.S=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},Jf=a=>{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},Kf=1,Lf=[],L=[],Mf=[],Nf=[],M=[],N=[],Of=[],Pf={},mf={},O=[],P=[],Q=[],Qf={},Rf={},Sf=4,Tf=0,Uf=a=>{for(var b=Kf++,c=a.length;c<b;c++)a[c]=null;return b},S=(a,b,c,d)=>{for(var f=0;f<a;f++){var g=K[c](),l=g&&Uf(d);g?(g.name=l,d[l]=g):R||=1282;q()[b+4*f>>2]=l}},Wf=a=>{var b={R:2,alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,P:!0};a.A||
(a.A=a.getContext,a.getContext=function(d,f){f=a.A(d,f);return"webgl"==d==f instanceof WebGLRenderingContext?f:null});var c=1<b.R?a.getContext("webgl2",b):a.getContext("webgl",b);return c?Vf(c,b):0},Vf=(a,b)=>{var c=xf(8);t()[c+4>>2]=ya();var d={handle:c,attributes:b,version:b.R,D:a};a.canvas&&(a.canvas.sa=d);Pf[c]=d;("undefined"==typeof b.P||b.P)&&Xf(d);return c},Xf=a=>{a||=T;if(!a.ea){a.ea=!0;var b=a.D;b.fa=b.getExtension("WEBGL_multi_draw");b.aa=b.getExtension("EXT_polygon_offset_clamp");b.$=b.getExtension("EXT_clip_control");
b.ra=b.getExtension("WEBGL_polygon_mode");Ef(b);Ff(b);Gf(b);Hf(b);If(b);2<=a.version&&(b.h=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.h)b.h=b.getExtension("EXT_disjoint_timer_query");Jf(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},lf={},R,T,qb=a=>K.activeTexture(a),rb=(a,b)=>{K.attachShader(L[a],N[b])},sb=(a,b)=>{K.beginQuery(a,O[b])},tb=(a,b)=>{K.h.beginQueryEXT(a,O[b])},ub=(a,b,c)=>{K.bindAttribLocation(L[a],b,wf(c))},vb=(a,b)=>
{35051==a?K.K=b:35052==a&&(K.v=b);K.bindBuffer(a,Lf[b])},wb=(a,b)=>{K.bindFramebuffer(a,Mf[b])},xb=(a,b)=>{K.bindRenderbuffer(a,Nf[b])},yb=(a,b)=>{K.bindSampler(a,P[b])},zb=(a,b)=>{K.bindTexture(a,M[b])},Ab=a=>{K.bindVertexArray(Of[a])},Bb=(a,b,c,d)=>K.blendColor(a,b,c,d),Cb=a=>K.blendEquation(a),Db=(a,b)=>K.blendFunc(a,b),Eb=(a,b,c,d,f,g,l,m,p,r)=>K.blitFramebuffer(a,b,c,d,f,g,l,m,p,r),Fb=(a,b,c,d)=>{2<=T.version?c&&b?K.bufferData(a,n(),d,c,b):K.bufferData(a,b,d):K.bufferData(a,c?n().subarray(c,
c+b):b,d)},Gb=(a,b,c,d)=>{2<=T.version?c&&K.bufferSubData(a,b,n(),d,c):K.bufferSubData(a,b,n().subarray(d,d+c))},Hb=a=>K.checkFramebufferStatus(a),Ib=a=>K.clear(a),Jb=(a,b,c,d)=>K.clearColor(a,b,c,d),Kb=a=>K.clearStencil(a),Lb=(a,b,c,d)=>K.clientWaitSync(Q[a],b,(c>>>0)+4294967296*d),Mb=(a,b,c,d)=>{K.colorMask(!!a,!!b,!!c,!!d)},Nb=a=>{K.compileShader(N[a])},Ob=(a,b,c,d,f,g,l,m)=>{2<=T.version?K.v||!l?K.compressedTexImage2D(a,b,c,d,f,g,l,m):K.compressedTexImage2D(a,b,c,d,f,g,n(),m,l):K.compressedTexImage2D(a,
b,c,d,f,g,n().subarray(m,m+l))},Pb=(a,b,c,d,f,g,l,m,p)=>{2<=T.version?K.v||!m?K.compressedTexSubImage2D(a,b,c,d,f,g,l,m,p):K.compressedTexSubImage2D(a,b,c,d,f,g,l,n(),p,m):K.compressedTexSubImage2D(a,b,c,d,f,g,l,n().subarray(p,p+m))},Qb=(a,b,c,d,f)=>K.copyBufferSubData(a,b,c,d,f),Rb=(a,b,c,d,f,g,l,m)=>K.copyTexSubImage2D(a,b,c,d,f,g,l,m),Sb=()=>{var a=Uf(L),b=K.createProgram();b.name=a;b.H=b.F=b.G=0;b.N=1;L[a]=b;return a},Tb=a=>{var b=Uf(N);N[b]=K.createShader(a);return b},Ub=a=>K.cullFace(a),Vb=
(a,b)=>{for(var c=0;c<a;c++){var d=q()[b+4*c>>2],f=Lf[d];f&&(K.deleteBuffer(f),f.name=0,Lf[d]=null,d==K.K&&(K.K=0),d==K.v&&(K.v=0))}},Wb=(a,b)=>{for(var c=0;c<a;++c){var d=q()[b+4*c>>2],f=Mf[d];f&&(K.deleteFramebuffer(f),f.name=0,Mf[d]=null)}},Xb=a=>{if(a){var b=L[a];b?(K.deleteProgram(b),b.name=0,L[a]=null):R||=1281}},Yb=(a,b)=>{for(var c=0;c<a;c++){var d=q()[b+4*c>>2],f=O[d];f&&(K.deleteQuery(f),O[d]=null)}},Zb=(a,b)=>{for(var c=0;c<a;c++){var d=q()[b+4*c>>2],f=O[d];f&&(K.h.deleteQueryEXT(f),O[d]=
null)}},$b=(a,b)=>{for(var c=0;c<a;c++){var d=q()[b+4*c>>2],f=Nf[d];f&&(K.deleteRenderbuffer(f),f.name=0,Nf[d]=null)}},ac=(a,b)=>{for(var c=0;c<a;c++){var d=q()[b+4*c>>2],f=P[d];f&&(K.deleteSampler(f),f.name=0,P[d]=null)}},bc=a=>{if(a){var b=N[a];b?(K.deleteShader(b),N[a]=null):R||=1281}},cc=a=>{if(a){var b=Q[a];b?(K.deleteSync(b),b.name=0,Q[a]=null):R||=1281}},dc=(a,b)=>{for(var c=0;c<a;c++){var d=q()[b+4*c>>2],f=M[d];f&&(K.deleteTexture(f),f.name=0,M[d]=null)}},ec=(a,b)=>{for(var c=0;c<a;c++){var d=
q()[b+4*c>>2];K.deleteVertexArray(Of[d]);Of[d]=null}},fc=a=>{K.depthMask(!!a)},gc=a=>K.disable(a),hc=a=>{K.disableVertexAttribArray(a)},ic=(a,b,c)=>{K.drawArrays(a,b,c)},jc=(a,b,c,d)=>{K.drawArraysInstanced(a,b,c,d)},kc=(a,b,c,d,f)=>{K.O.drawArraysInstancedBaseInstanceWEBGL(a,b,c,d,f)},Yf=[],lc=(a,b)=>{for(var c=Yf[a],d=0;d<a;d++)c[d]=q()[b+4*d>>2];K.drawBuffers(c)},mc=(a,b,c,d)=>{K.drawElements(a,b,c,d)},nc=(a,b,c,d,f)=>{K.drawElementsInstanced(a,b,c,d,f)},oc=(a,b,c,d,f,g,l)=>{K.O.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,
b,c,d,f,g,l)},pc=(a,b,c,d,f,g)=>{K.drawElements(a,d,f,g)},qc=a=>K.enable(a),rc=a=>{K.enableVertexAttribArray(a)},sc=a=>K.endQuery(a),tc=a=>{K.h.endQueryEXT(a)},uc=(a,b)=>(a=K.fenceSync(a,b))?(b=Uf(Q),a.name=b,Q[b]=a,b):0,vc=()=>K.finish(),wc=()=>K.flush(),xc=(a,b,c,d)=>{K.framebufferRenderbuffer(a,b,c,Nf[d])},yc=(a,b,c,d,f)=>{K.framebufferTexture2D(a,b,c,M[d],f)},zc=a=>K.frontFace(a),Ac=(a,b)=>{S(a,b,"createBuffer",Lf)},Bc=(a,b)=>{S(a,b,"createFramebuffer",Mf)},Cc=(a,b)=>{S(a,b,"createQuery",O)},
Dc=(a,b)=>{for(var c=0;c<a;c++){var d=K.h.createQueryEXT();if(!d){for(R||=1282;c<a;)q()[b+4*c++>>2]=0;break}var f=Uf(O);d.name=f;O[f]=d;q()[b+4*c>>2]=f}},Ec=(a,b)=>{S(a,b,"createRenderbuffer",Nf)},Fc=(a,b)=>{S(a,b,"createSampler",P)},Gc=(a,b)=>{S(a,b,"createTexture",M)},Hc=(a,b)=>{S(a,b,"createVertexArray",Of)},Ic=a=>K.generateMipmap(a),Jc=(a,b,c)=>{c?q()[c>>2]=K.getBufferParameter(a,b):R||=1281},Kc=()=>{var a=K.getError()||R;R=0;return a},Zf=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/
4294967296};function $f(){var a=Jf(K);return a=a.concat(a.map(b=>"GL_"+b))}
var ag=(a,b,c)=>{if(b){var d=void 0;switch(a){case 36346:d=1;break;case 36344:0!=c&&1!=c&&(R||=1280);return;case 34814:case 36345:d=0;break;case 34466:var f=K.getParameter(34467);d=f?f.length:0;break;case 33309:if(2>T.version){R||=1282;return}d=$f().length;break;case 33307:case 33308:if(2>T.version){R||=1280;return}d=33307==a?3:0}if(void 0===d)switch(f=K.getParameter(a),typeof f){case "number":d=f;break;case "boolean":d=f?1:0;break;case "string":R||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:d=
0;break;default:R||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:q()[b+4*a>>2]=f[a];break;case 2:u()[b+4*a>>2]=f[a];break;case 4:aa()[b+a]=f[a]?1:0}return}try{d=f.name|0}catch(g){R||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${g})`);return}}break;default:R||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
return}switch(c){case 1:Zf(b,d);break;case 0:q()[b>>2]=d;break;case 2:u()[b>>2]=d;break;case 4:aa()[b]=d?1:0}}else R||=1281},Lc=(a,b)=>ag(a,b,2),Mc=(a,b,c,d)=>{a=K.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;q()[d>>2]=a},Nc=(a,b)=>ag(a,b,0),Oc=(a,b,c,d)=>{a=K.getProgramInfoLog(L[a]);null===a&&(a="(unknown error)");b=0<b&&d?J(a,d,b):0;c&&(q()[c>>2]=b)},Pc=(a,b,c)=>{if(c)if(a>=Kf)R||=1281;else if(a=L[a],35716==b)a=K.getProgramInfoLog(a),
null===a&&(a="(unknown error)"),q()[c>>2]=a.length+1;else if(35719==b){if(!a.H){var d=K.getProgramParameter(a,35718);for(b=0;b<d;++b)a.H=Math.max(a.H,K.getActiveUniform(a,b).name.length+1)}q()[c>>2]=a.H}else if(35722==b){if(!a.F)for(d=K.getProgramParameter(a,35721),b=0;b<d;++b)a.F=Math.max(a.F,K.getActiveAttrib(a,b).name.length+1);q()[c>>2]=a.F}else if(35381==b){if(!a.G)for(d=K.getProgramParameter(a,35382),b=0;b<d;++b)a.G=Math.max(a.G,K.getActiveUniformBlockName(a,b).length+1);q()[c>>2]=a.G}else q()[c>>
2]=K.getProgramParameter(a,b);else R||=1281},Qc=(a,b,c)=>{if(c){a=O[a];b=2>T.version?K.h.getQueryObjectEXT(a,b):K.getQueryParameter(a,b);var d;"boolean"==typeof b?d=b?1:0:d=b;Zf(c,d)}else R||=1281},Rc=(a,b,c)=>{if(c){a=K.getQueryParameter(O[a],b);var d;"boolean"==typeof a?d=a?1:0:d=a;q()[c>>2]=d}else R||=1281},Sc=(a,b,c)=>{if(c){a=K.h.getQueryObjectEXT(O[a],b);var d;"boolean"==typeof a?d=a?1:0:d=a;q()[c>>2]=d}else R||=1281},Tc=(a,b,c)=>{c?q()[c>>2]=K.getQuery(a,b):R||=1281},Uc=(a,b,c)=>{c?q()[c>>
2]=K.h.getQueryEXT(a,b):R||=1281},Vc=(a,b,c)=>{c?q()[c>>2]=K.getRenderbufferParameter(a,b):R||=1281},Wc=(a,b,c,d)=>{a=K.getShaderInfoLog(N[a]);null===a&&(a="(unknown error)");b=0<b&&d?J(a,d,b):0;c&&(q()[c>>2]=b)},Xc=(a,b,c,d)=>{a=K.getShaderPrecisionFormat(a,b);q()[c>>2]=a.rangeMin;q()[c+4>>2]=a.rangeMax;q()[d>>2]=a.precision},Yc=(a,b,c)=>{c?35716==b?(a=K.getShaderInfoLog(N[a]),null===a&&(a="(unknown error)"),a=a?a.length+1:0,q()[c>>2]=a):35720==b?(a=(a=K.getShaderSource(N[a]))?a.length+1:0,q()[c>>
2]=a):q()[c>>2]=K.getShaderParameter(N[a],b):R||=1281},bg=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}b+=1;(c=xf(b))&&J(a,c,b);return c},Zc=a=>{var b=Qf[a];if(!b){switch(a){case 7939:b=bg($f().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=K.getParameter(a))||(R||=1280);b=b?bg(b):0;break;case 7938:b=K.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=T.version&&(c=`OpenGL ES 3.0 (${b})`);b=bg(c);break;case 35724:b=
K.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=bg(b);break;default:R||=1280}Qf[a]=b}return b},$c=(a,b)=>{if(2>T.version)return R||=1282,0;var c=Rf[a];if(c)return 0>b||b>=c.length?(R||=1281,0):c[b];switch(a){case 7939:return c=$f().map(bg),c=Rf[a]=c,0>b||b>=c.length?(R||=1281,0):c[b];default:return R||=1280,0}},cg=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),ad=(a,b)=>{b=wf(b);if(a=L[a]){var c=
a,d=c.C,f=c.W,g;if(!d){c.C=d={};c.V={};var l=K.getProgramParameter(c,35718);for(g=0;g<l;++g){var m=K.getActiveUniform(c,g);var p=m.name;m=m.size;var r=cg(p);r=0<r?p.slice(0,r):p;var F=c.N;c.N+=m;f[r]=[m,F];for(p=0;p<m;++p)d[F]=p,c.V[F++]=r}}c=a.C;d=0;f=b;g=cg(b);0<g&&(d=parseInt(b.slice(g+1))>>>0,f=b.slice(0,g));if((f=a.W[f])&&d<f[0]&&(d+=f[1],c[d]=c[d]||K.getUniformLocation(a,b)))return d}else R||=1281;return-1},bd=(a,b,c)=>{for(var d=Yf[b],f=0;f<b;f++)d[f]=q()[c+4*f>>2];K.invalidateFramebuffer(a,
d)},cd=(a,b,c,d,f,g,l)=>{for(var m=Yf[b],p=0;p<b;p++)m[p]=q()[c+4*p>>2];K.invalidateSubFramebuffer(a,m,d,f,g,l)},dd=a=>K.isSync(Q[a]),ed=a=>(a=M[a])?K.isTexture(a):0,fd=a=>K.lineWidth(a),gd=a=>{a=L[a];K.linkProgram(a);a.C=0;a.W={}},hd=(a,b,c,d,f,g)=>{K.S.multiDrawArraysInstancedBaseInstanceWEBGL(a,q(),b>>2,q(),c>>2,q(),d>>2,t(),f>>2,g)},jd=(a,b,c,d,f,g,l,m)=>{K.S.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,q(),b>>2,c,q(),d>>2,q(),f>>2,q(),g>>2,t(),l>>2,m)},kd=(a,b)=>{3317==a?Sf=b:3314==
a&&(Tf=b);K.pixelStorei(a,b)},ld=(a,b)=>{K.h.queryCounterEXT(O[a],b)},md=a=>K.readBuffer(a),dg=a=>{a-=5120;0==a?a=aa():1==a?a=n():2==a?(e.buffer!=h.buffer&&k(),a=ua):4==a?a=q():6==a?a=u():5==a||28922==a||28520==a||30779==a||30782==a?a=t():(e.buffer!=h.buffer&&k(),a=va);return a},eg=(a,b,c,d,f)=>{a=dg(a);b=d*((Tf||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+Sf-1&-Sf);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},
nd=(a,b,c,d,f,g,l)=>{if(2<=T.version)if(K.K)K.readPixels(a,b,c,d,f,g,l);else{var m=dg(g);l>>>=31-Math.clz32(m.BYTES_PER_ELEMENT);K.readPixels(a,b,c,d,f,g,m,l)}else(m=eg(g,f,c,d,l))?K.readPixels(a,b,c,d,f,g,m):R||=1280},od=(a,b,c,d)=>K.renderbufferStorage(a,b,c,d),pd=(a,b,c,d,f)=>K.renderbufferStorageMultisample(a,b,c,d,f),qd=(a,b,c)=>{K.samplerParameterf(P[a],b,c)},rd=(a,b,c)=>{K.samplerParameteri(P[a],b,c)},sd=(a,b,c)=>{c=q()[c>>2];K.samplerParameteri(P[a],b,c)},td=(a,b,c,d)=>K.scissor(a,b,c,d),
ud=(a,b,c,d)=>{for(var f="",g=0;g<b;++g){var l=d?t()[d+4*g>>2]:void 0;f+=wf(t()[c+4*g>>2],l)}K.shaderSource(N[a],f)},vd=(a,b,c)=>K.stencilFunc(a,b,c),wd=(a,b,c,d)=>K.stencilFuncSeparate(a,b,c,d),xd=a=>K.stencilMask(a),yd=(a,b)=>K.stencilMaskSeparate(a,b),zd=(a,b,c)=>K.stencilOp(a,b,c),Ad=(a,b,c,d)=>K.stencilOpSeparate(a,b,c,d),Bd=(a,b,c,d,f,g,l,m,p)=>{if(2<=T.version){if(K.v){K.texImage2D(a,b,c,d,f,g,l,m,p);return}if(p){var r=dg(m);p>>>=31-Math.clz32(r.BYTES_PER_ELEMENT);K.texImage2D(a,b,c,d,f,g,
l,m,r,p);return}}r=p?eg(m,l,d,f,p):null;K.texImage2D(a,b,c,d,f,g,l,m,r)},Cd=(a,b,c)=>K.texParameterf(a,b,c),Dd=(a,b,c)=>{c=u()[c>>2];K.texParameterf(a,b,c)},Ed=(a,b,c)=>K.texParameteri(a,b,c),Fd=(a,b,c)=>{c=q()[c>>2];K.texParameteri(a,b,c)},Gd=(a,b,c,d,f)=>K.texStorage2D(a,b,c,d,f),Hd=(a,b,c,d,f,g,l,m,p)=>{if(2<=T.version){if(K.v){K.texSubImage2D(a,b,c,d,f,g,l,m,p);return}if(p){var r=dg(m);K.texSubImage2D(a,b,c,d,f,g,l,m,r,p>>>31-Math.clz32(r.BYTES_PER_ELEMENT));return}}p=p?eg(m,l,f,g,p):null;K.texSubImage2D(a,
b,c,d,f,g,l,m,p)},U=a=>{var b=K.Z;if(b){var c=b.C[a];"number"==typeof c&&(b.C[a]=c=K.getUniformLocation(b,b.V[a]+(0<c?`[${c}]`:"")));return c}R||=1282},Id=(a,b)=>{K.uniform1f(U(a),b)},V=[],Jd=(a,b,c)=>{if(2<=T.version)b&&K.uniform1fv(U(a),u(),c>>2,b);else{if(288>=b)for(var d=V[b],f=0;f<b;++f)d[f]=u()[c+4*f>>2];else d=u().subarray(c>>2,c+4*b>>2);K.uniform1fv(U(a),d)}},Kd=(a,b)=>{K.uniform1i(U(a),b)},fg=[],Ld=(a,b,c)=>{if(2<=T.version)b&&K.uniform1iv(U(a),q(),c>>2,b);else{if(288>=b)for(var d=fg[b],
f=0;f<b;++f)d[f]=q()[c+4*f>>2];else d=q().subarray(c>>2,c+4*b>>2);K.uniform1iv(U(a),d)}},Md=(a,b,c)=>{K.uniform2f(U(a),b,c)},Nd=(a,b,c)=>{if(2<=T.version)b&&K.uniform2fv(U(a),u(),c>>2,2*b);else{if(144>=b){b*=2;for(var d=V[b],f=0;f<b;f+=2)d[f]=u()[c+4*f>>2],d[f+1]=u()[c+(4*f+4)>>2]}else d=u().subarray(c>>2,c+8*b>>2);K.uniform2fv(U(a),d)}},Od=(a,b,c)=>{K.uniform2i(U(a),b,c)},Pd=(a,b,c)=>{if(2<=T.version)b&&K.uniform2iv(U(a),q(),c>>2,2*b);else{if(144>=b){b*=2;for(var d=fg[b],f=0;f<b;f+=2)d[f]=q()[c+
4*f>>2],d[f+1]=q()[c+(4*f+4)>>2]}else d=q().subarray(c>>2,c+8*b>>2);K.uniform2iv(U(a),d)}},Qd=(a,b,c,d)=>{K.uniform3f(U(a),b,c,d)},Rd=(a,b,c)=>{if(2<=T.version)b&&K.uniform3fv(U(a),u(),c>>2,3*b);else{if(96>=b){b*=3;for(var d=V[b],f=0;f<b;f+=3)d[f]=u()[c+4*f>>2],d[f+1]=u()[c+(4*f+4)>>2],d[f+2]=u()[c+(4*f+8)>>2]}else d=u().subarray(c>>2,c+12*b>>2);K.uniform3fv(U(a),d)}},Sd=(a,b,c,d)=>{K.uniform3i(U(a),b,c,d)},Td=(a,b,c)=>{if(2<=T.version)b&&K.uniform3iv(U(a),q(),c>>2,3*b);else{if(96>=b){b*=3;for(var d=
fg[b],f=0;f<b;f+=3)d[f]=q()[c+4*f>>2],d[f+1]=q()[c+(4*f+4)>>2],d[f+2]=q()[c+(4*f+8)>>2]}else d=q().subarray(c>>2,c+12*b>>2);K.uniform3iv(U(a),d)}},Ud=(a,b,c,d,f)=>{K.uniform4f(U(a),b,c,d,f)},Vd=(a,b,c)=>{if(2<=T.version)b&&K.uniform4fv(U(a),u(),c>>2,4*b);else{if(72>=b){var d=V[4*b],f=u();c>>=2;b*=4;for(var g=0;g<b;g+=4){var l=c+g;d[g]=f[l];d[g+1]=f[l+1];d[g+2]=f[l+2];d[g+3]=f[l+3]}}else d=u().subarray(c>>2,c+16*b>>2);K.uniform4fv(U(a),d)}},Wd=(a,b,c,d,f)=>{K.uniform4i(U(a),b,c,d,f)},Xd=(a,b,c)=>{if(2<=
T.version)b&&K.uniform4iv(U(a),q(),c>>2,4*b);else{if(72>=b){b*=4;for(var d=fg[b],f=0;f<b;f+=4)d[f]=q()[c+4*f>>2],d[f+1]=q()[c+(4*f+4)>>2],d[f+2]=q()[c+(4*f+8)>>2],d[f+3]=q()[c+(4*f+12)>>2]}else d=q().subarray(c>>2,c+16*b>>2);K.uniform4iv(U(a),d)}},Yd=(a,b,c,d)=>{if(2<=T.version)b&&K.uniformMatrix2fv(U(a),!!c,u(),d>>2,4*b);else{if(72>=b){b*=4;for(var f=V[b],g=0;g<b;g+=4)f[g]=u()[d+4*g>>2],f[g+1]=u()[d+(4*g+4)>>2],f[g+2]=u()[d+(4*g+8)>>2],f[g+3]=u()[d+(4*g+12)>>2]}else f=u().subarray(d>>2,d+16*b>>2);
K.uniformMatrix2fv(U(a),!!c,f)}},Zd=(a,b,c,d)=>{if(2<=T.version)b&&K.uniformMatrix3fv(U(a),!!c,u(),d>>2,9*b);else{if(32>=b){b*=9;for(var f=V[b],g=0;g<b;g+=9)f[g]=u()[d+4*g>>2],f[g+1]=u()[d+(4*g+4)>>2],f[g+2]=u()[d+(4*g+8)>>2],f[g+3]=u()[d+(4*g+12)>>2],f[g+4]=u()[d+(4*g+16)>>2],f[g+5]=u()[d+(4*g+20)>>2],f[g+6]=u()[d+(4*g+24)>>2],f[g+7]=u()[d+(4*g+28)>>2],f[g+8]=u()[d+(4*g+32)>>2]}else f=u().subarray(d>>2,d+36*b>>2);K.uniformMatrix3fv(U(a),!!c,f)}},$d=(a,b,c,d)=>{if(2<=T.version)b&&K.uniformMatrix4fv(U(a),
!!c,u(),d>>2,16*b);else{if(18>=b){var f=V[16*b],g=u();d>>=2;b*=16;for(var l=0;l<b;l+=16){var m=d+l;f[l]=g[m];f[l+1]=g[m+1];f[l+2]=g[m+2];f[l+3]=g[m+3];f[l+4]=g[m+4];f[l+5]=g[m+5];f[l+6]=g[m+6];f[l+7]=g[m+7];f[l+8]=g[m+8];f[l+9]=g[m+9];f[l+10]=g[m+10];f[l+11]=g[m+11];f[l+12]=g[m+12];f[l+13]=g[m+13];f[l+14]=g[m+14];f[l+15]=g[m+15]}}else f=u().subarray(d>>2,d+64*b>>2);K.uniformMatrix4fv(U(a),!!c,f)}},ae=a=>{a=L[a];K.useProgram(a);K.Z=a},be=(a,b)=>K.vertexAttrib1f(a,b),ce=(a,b)=>{K.vertexAttrib2f(a,u()[b>>
2],u()[b+4>>2])},de=(a,b)=>{K.vertexAttrib3f(a,u()[b>>2],u()[b+4>>2],u()[b+8>>2])},ee=(a,b)=>{K.vertexAttrib4f(a,u()[b>>2],u()[b+4>>2],u()[b+8>>2],u()[b+12>>2])},fe=(a,b)=>{K.vertexAttribDivisor(a,b)},ge=(a,b,c,d,f)=>{K.vertexAttribIPointer(a,b,c,d,f)},he=(a,b,c,d,f,g)=>{K.vertexAttribPointer(a,b,c,!!d,f,g)},ie=(a,b,c,d)=>K.viewport(a,b,c,d),je=(a,b,c,d)=>{K.waitSync(Q[a],b,(c>>>0)+4294967296*d)},ke=a=>{var b=n().length;a>>>=0;if(a<=b||2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);
d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-e.buffer.byteLength+65535)/65536|0;try{e.grow(d);k();var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1};
function le(a,b){a=Pf[a];b=wf(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Ef(K);"OES_vertex_array_object"==b&&Ff(K);"WEBGL_draw_buffers"==b&&Gf(K);"WEBGL_draw_instanced_base_vertex_base_instance"==b&&Hf(K);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&If(K);"WEBGL_multi_draw"==b&&(K.fa=K.getExtension("WEBGL_multi_draw"));"EXT_polygon_offset_clamp"==b&&(K.aa=K.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(K.$=K.getExtension("EXT_clip_control"));
"WEBGL_polygon_mode"==b&&(K.ra=K.getExtension("WEBGL_polygon_mode"));return!!a.D.getExtension(b)}
var me=()=>T?T.handle:0,ne=a=>{T=Pf[a];v.ta=K=T?.D;return!a||K?0:-5},gg={},ig=()=>{if(!hg){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in gg)void 0===gg[b]?delete a[b]:a[b]=gg[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);hg=c}return hg},hg;
function oe(a,b){if(w)return H(10,1,a,b);var c=0;ig().forEach((d,f)=>{var g=b+c;f=t()[a+4*f>>2]=g;for(g=0;g<d.length;++g)aa()[f++]=d.charCodeAt(g);aa()[f]=0;c+=d.length+1});return 0}function pe(a,b){if(w)return H(11,1,a,b);var c=ig();t()[a>>2]=c.length;var d=0;c.forEach(f=>d+=f.length+1);t()[b>>2]=d;return 0}function re(a){return w?H(12,1,a):52}function se(a,b,c,d,f,g){return w?H(13,1,a,b,c,d,f,g):52}function te(a,b,c,d){return w?H(14,1,a,b,c,d):52}
function ue(a,b,c,d,f){return w?H(15,1,a,b,c,d,f):70}var jg=[null,[],[]];function ve(a,b,c,d){if(w)return H(16,1,a,b,c,d);for(var f=0,g=0;g<c;g++){var l=t()[b>>2],m=t()[b+4>>2];b+=8;for(var p=0;p<m;p++){var r=n()[l+p],F=jg[a];0===r||10===r?((1===a?qa:y)(vf(F)),F.length=0):F.push(r)}f+=m}t()[d>>2]=f;return 0}function kg(){}function lg(){}function W(){}function He(){}function Ie(){}function Je(){}function Ke(){}function Le(){}function Me(){}function Ne(){}function Oe(){}function Pe(){}
function Qe(){}function Re(){}function Se(){}function Te(){}var mg,ng=[];w||gf();for(var X=0;32>X;++X)Yf.push(Array(X));var og=new Float32Array(288);for(X=0;288>=X;++X)V[X]=og.subarray(0,X);var pg=new Int32Array(288);for(X=0;288>=X;++X)fg[X]=pg.subarray(0,X);
(function(){const a=new Map,b=new Map;Te=function(c,d,f){W({m:"setAssociatedObject",M:d,object:f},[f],c)};Pe=function(c){return b.get(c)};Ie=function(c){kg(c,function(d){var f=d.m;if(f)switch(f){case "renderPictures":qg(d.o,d.ha,d.ga,d.s,lg());break;case "onRenderComplete":sg(d.o,d.s,{imageBitmaps:d.da,rasterStartMilliseconds:d.ja,rasterEndMilliseconds:d.ia});break;case "setAssociatedObject":b.set(d.M,d.object);break;case "disposeAssociatedObject":d=d.M;f=b.get(d);f.close&&f.close();b.delete(d);break;
case "disposeSurface":tg(d.o);break;case "rasterizeImage":ug(d.o,d.image,d.format,d.s);break;case "onRasterizeComplete":vg(d.o,d.data,d.s);break;default:console.warn(`unrecognized skwasm message: ${f}`)}})};Ne=function(c,d,f,g,l){W({m:"renderPictures",o:d,ha:f,ga:g,s:l},[],c)};Ke=function(c,d){c=new OffscreenCanvas(c,d);d=Wf(c);a.set(d,c);return d};Re=function(c,d,f){c=a.get(c);c.width=d;c.height=f};He=function(c,d,f,g){g||=[];c=a.get(c);g.push(createImageBitmap(c,0,0,d,f));return g};Se=async function(c,
d,f,g){d=d?await Promise.all(d):[];W({m:"onRenderComplete",o:c,s:g,da:d,ja:f,ia:lg()},[...d])};Je=function(c,d,f){const g=T.D,l=g.createTexture();g.bindTexture(g.TEXTURE_2D,l);g.pixelStorei(g.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);g.texImage2D(g.TEXTURE_2D,0,g.RGBA,d,f,0,g.RGBA,g.UNSIGNED_BYTE,c);g.pixelStorei(g.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);g.bindTexture(g.TEXTURE_2D,null);c=Uf(M);M[c]=l;return c};Oe=function(c,d){W({m:"disposeAssociatedObject",M:d},[],c)};Le=function(c,d){W({m:"disposeSurface",
o:d},[],c)};Me=function(c,d,f,g,l){W({m:"rasterizeImage",o:d,image:f,format:g,s:l},[],c)};Qe=function(c,d,f){W({m:"onRasterizeComplete",o:c,data:d,s:f})}})();
(function(){let a=0;kg=function(b,c){function d({data:f}){const g=f.m;g&&("syncTimeOrigin"==g?a=performance.timeOrigin-f.timeOrigin:c(f))}b?(B[b].addEventListener("message",d),B[b].postMessage({m:"syncTimeOrigin",timeOrigin:performance.timeOrigin})):addEventListener("message",d)};lg=function(){return performance.now()+a};W=function(b,c,d){d?B[d].postMessage(b,c):postMessage(b,c)}})();
var Bf=[Ge,ef,tf,Xa,Ya,Za,$a,jb,kb,lb,oe,pe,re,se,te,ue,ve],Ua,Y=function(){function a(c,d){Y=c.exports;v.wasmExports=Y;ff.push(Y._emscripten_tls_init);I=Y.__indirect_function_table;Ja.unshift(Y.__wasm_call_ctors);ra=d;Na();return Y}var b=za();z++;if(v.instantiateWasm)try{return v.instantiateWasm(b,a)}catch(c){y(`Module.instantiateWasm callback failed with error: ${c}`),ja(c)}Qa??=Pa("skwasm.wasm")?"skwasm.wasm":x+"skwasm.wasm";Ta(b,function(c){a(c.instance,c.module)}).catch(ja);return{}}();
v._canvas_saveLayer=(a,b,c,d,f)=>(v._canvas_saveLayer=Y.canvas_saveLayer)(a,b,c,d,f);v._canvas_save=a=>(v._canvas_save=Y.canvas_save)(a);v._canvas_restore=a=>(v._canvas_restore=Y.canvas_restore)(a);v._canvas_restoreToCount=(a,b)=>(v._canvas_restoreToCount=Y.canvas_restoreToCount)(a,b);v._canvas_getSaveCount=a=>(v._canvas_getSaveCount=Y.canvas_getSaveCount)(a);v._canvas_translate=(a,b,c)=>(v._canvas_translate=Y.canvas_translate)(a,b,c);
v._canvas_scale=(a,b,c)=>(v._canvas_scale=Y.canvas_scale)(a,b,c);v._canvas_rotate=(a,b)=>(v._canvas_rotate=Y.canvas_rotate)(a,b);v._canvas_skew=(a,b,c)=>(v._canvas_skew=Y.canvas_skew)(a,b,c);v._canvas_transform=(a,b)=>(v._canvas_transform=Y.canvas_transform)(a,b);v._canvas_clipRect=(a,b,c,d)=>(v._canvas_clipRect=Y.canvas_clipRect)(a,b,c,d);v._canvas_clipRRect=(a,b,c)=>(v._canvas_clipRRect=Y.canvas_clipRRect)(a,b,c);v._canvas_clipPath=(a,b,c)=>(v._canvas_clipPath=Y.canvas_clipPath)(a,b,c);
v._canvas_drawColor=(a,b,c)=>(v._canvas_drawColor=Y.canvas_drawColor)(a,b,c);v._canvas_drawLine=(a,b,c,d,f,g)=>(v._canvas_drawLine=Y.canvas_drawLine)(a,b,c,d,f,g);v._canvas_drawPaint=(a,b)=>(v._canvas_drawPaint=Y.canvas_drawPaint)(a,b);v._canvas_drawRect=(a,b,c)=>(v._canvas_drawRect=Y.canvas_drawRect)(a,b,c);v._canvas_drawRRect=(a,b,c)=>(v._canvas_drawRRect=Y.canvas_drawRRect)(a,b,c);v._canvas_drawDRRect=(a,b,c,d)=>(v._canvas_drawDRRect=Y.canvas_drawDRRect)(a,b,c,d);
v._canvas_drawOval=(a,b,c)=>(v._canvas_drawOval=Y.canvas_drawOval)(a,b,c);v._canvas_drawCircle=(a,b,c,d,f)=>(v._canvas_drawCircle=Y.canvas_drawCircle)(a,b,c,d,f);v._canvas_drawArc=(a,b,c,d,f,g)=>(v._canvas_drawArc=Y.canvas_drawArc)(a,b,c,d,f,g);v._canvas_drawPath=(a,b,c)=>(v._canvas_drawPath=Y.canvas_drawPath)(a,b,c);v._canvas_drawShadow=(a,b,c,d,f,g)=>(v._canvas_drawShadow=Y.canvas_drawShadow)(a,b,c,d,f,g);
v._canvas_drawParagraph=(a,b,c,d)=>(v._canvas_drawParagraph=Y.canvas_drawParagraph)(a,b,c,d);v._canvas_drawPicture=(a,b)=>(v._canvas_drawPicture=Y.canvas_drawPicture)(a,b);v._canvas_drawImage=(a,b,c,d,f,g)=>(v._canvas_drawImage=Y.canvas_drawImage)(a,b,c,d,f,g);v._canvas_drawImageRect=(a,b,c,d,f,g)=>(v._canvas_drawImageRect=Y.canvas_drawImageRect)(a,b,c,d,f,g);v._canvas_drawImageNine=(a,b,c,d,f,g)=>(v._canvas_drawImageNine=Y.canvas_drawImageNine)(a,b,c,d,f,g);
v._canvas_drawVertices=(a,b,c,d)=>(v._canvas_drawVertices=Y.canvas_drawVertices)(a,b,c,d);v._canvas_drawPoints=(a,b,c,d,f)=>(v._canvas_drawPoints=Y.canvas_drawPoints)(a,b,c,d,f);v._canvas_drawAtlas=(a,b,c,d,f,g,l,m,p)=>(v._canvas_drawAtlas=Y.canvas_drawAtlas)(a,b,c,d,f,g,l,m,p);v._canvas_getTransform=(a,b)=>(v._canvas_getTransform=Y.canvas_getTransform)(a,b);v._canvas_getLocalClipBounds=(a,b)=>(v._canvas_getLocalClipBounds=Y.canvas_getLocalClipBounds)(a,b);
v._canvas_getDeviceClipBounds=(a,b)=>(v._canvas_getDeviceClipBounds=Y.canvas_getDeviceClipBounds)(a,b);v._contourMeasureIter_create=(a,b,c)=>(v._contourMeasureIter_create=Y.contourMeasureIter_create)(a,b,c);v._contourMeasureIter_next=a=>(v._contourMeasureIter_next=Y.contourMeasureIter_next)(a);v._contourMeasureIter_dispose=a=>(v._contourMeasureIter_dispose=Y.contourMeasureIter_dispose)(a);v._contourMeasure_dispose=a=>(v._contourMeasure_dispose=Y.contourMeasure_dispose)(a);
v._contourMeasure_length=a=>(v._contourMeasure_length=Y.contourMeasure_length)(a);v._contourMeasure_isClosed=a=>(v._contourMeasure_isClosed=Y.contourMeasure_isClosed)(a);v._contourMeasure_getPosTan=(a,b,c,d)=>(v._contourMeasure_getPosTan=Y.contourMeasure_getPosTan)(a,b,c,d);v._contourMeasure_getSegment=(a,b,c,d)=>(v._contourMeasure_getSegment=Y.contourMeasure_getSegment)(a,b,c,d);v._skData_create=a=>(v._skData_create=Y.skData_create)(a);v._skData_getPointer=a=>(v._skData_getPointer=Y.skData_getPointer)(a);
v._skData_getConstPointer=a=>(v._skData_getConstPointer=Y.skData_getConstPointer)(a);v._skData_getSize=a=>(v._skData_getSize=Y.skData_getSize)(a);v._skData_dispose=a=>(v._skData_dispose=Y.skData_dispose)(a);v._imageFilter_createBlur=(a,b,c)=>(v._imageFilter_createBlur=Y.imageFilter_createBlur)(a,b,c);v._imageFilter_createDilate=(a,b)=>(v._imageFilter_createDilate=Y.imageFilter_createDilate)(a,b);v._imageFilter_createErode=(a,b)=>(v._imageFilter_createErode=Y.imageFilter_createErode)(a,b);
v._imageFilter_createMatrix=(a,b)=>(v._imageFilter_createMatrix=Y.imageFilter_createMatrix)(a,b);v._imageFilter_createFromColorFilter=a=>(v._imageFilter_createFromColorFilter=Y.imageFilter_createFromColorFilter)(a);v._imageFilter_compose=(a,b)=>(v._imageFilter_compose=Y.imageFilter_compose)(a,b);v._imageFilter_dispose=a=>(v._imageFilter_dispose=Y.imageFilter_dispose)(a);v._imageFilter_getFilterBounds=(a,b)=>(v._imageFilter_getFilterBounds=Y.imageFilter_getFilterBounds)(a,b);
v._colorFilter_createMode=(a,b)=>(v._colorFilter_createMode=Y.colorFilter_createMode)(a,b);v._colorFilter_createMatrix=a=>(v._colorFilter_createMatrix=Y.colorFilter_createMatrix)(a);v._colorFilter_createSRGBToLinearGamma=()=>(v._colorFilter_createSRGBToLinearGamma=Y.colorFilter_createSRGBToLinearGamma)();v._colorFilter_createLinearToSRGBGamma=()=>(v._colorFilter_createLinearToSRGBGamma=Y.colorFilter_createLinearToSRGBGamma)();
v._colorFilter_compose=(a,b)=>(v._colorFilter_compose=Y.colorFilter_compose)(a,b);v._colorFilter_dispose=a=>(v._colorFilter_dispose=Y.colorFilter_dispose)(a);v._maskFilter_createBlur=(a,b)=>(v._maskFilter_createBlur=Y.maskFilter_createBlur)(a,b);v._maskFilter_dispose=a=>(v._maskFilter_dispose=Y.maskFilter_dispose)(a);v._fontCollection_create=()=>(v._fontCollection_create=Y.fontCollection_create)();v._fontCollection_dispose=a=>(v._fontCollection_dispose=Y.fontCollection_dispose)(a);
v._typeface_create=a=>(v._typeface_create=Y.typeface_create)(a);v._typeface_dispose=a=>(v._typeface_dispose=Y.typeface_dispose)(a);v._typefaces_filterCoveredCodePoints=(a,b,c,d)=>(v._typefaces_filterCoveredCodePoints=Y.typefaces_filterCoveredCodePoints)(a,b,c,d);v._fontCollection_registerTypeface=(a,b,c)=>(v._fontCollection_registerTypeface=Y.fontCollection_registerTypeface)(a,b,c);v._fontCollection_clearCaches=a=>(v._fontCollection_clearCaches=Y.fontCollection_clearCaches)(a);
v._image_createFromPicture=(a,b,c)=>(v._image_createFromPicture=Y.image_createFromPicture)(a,b,c);v._image_createFromPixels=(a,b,c,d,f)=>(v._image_createFromPixels=Y.image_createFromPixels)(a,b,c,d,f);v._image_createFromTextureSource=(a,b,c,d)=>(v._image_createFromTextureSource=Y.image_createFromTextureSource)(a,b,c,d);v._image_ref=a=>(v._image_ref=Y.image_ref)(a);v._image_dispose=a=>(v._image_dispose=Y.image_dispose)(a);v._image_getWidth=a=>(v._image_getWidth=Y.image_getWidth)(a);
v._image_getHeight=a=>(v._image_getHeight=Y.image_getHeight)(a);v._paint_create=(a,b,c,d,f,g,l,m)=>(v._paint_create=Y.paint_create)(a,b,c,d,f,g,l,m);v._paint_dispose=a=>(v._paint_dispose=Y.paint_dispose)(a);v._paint_setShader=(a,b)=>(v._paint_setShader=Y.paint_setShader)(a,b);v._paint_setImageFilter=(a,b)=>(v._paint_setImageFilter=Y.paint_setImageFilter)(a,b);v._paint_setColorFilter=(a,b)=>(v._paint_setColorFilter=Y.paint_setColorFilter)(a,b);
v._paint_setMaskFilter=(a,b)=>(v._paint_setMaskFilter=Y.paint_setMaskFilter)(a,b);v._path_create=()=>(v._path_create=Y.path_create)();v._path_dispose=a=>(v._path_dispose=Y.path_dispose)(a);v._path_copy=a=>(v._path_copy=Y.path_copy)(a);v._path_setFillType=(a,b)=>(v._path_setFillType=Y.path_setFillType)(a,b);v._path_getFillType=a=>(v._path_getFillType=Y.path_getFillType)(a);v._path_moveTo=(a,b,c)=>(v._path_moveTo=Y.path_moveTo)(a,b,c);
v._path_relativeMoveTo=(a,b,c)=>(v._path_relativeMoveTo=Y.path_relativeMoveTo)(a,b,c);v._path_lineTo=(a,b,c)=>(v._path_lineTo=Y.path_lineTo)(a,b,c);v._path_relativeLineTo=(a,b,c)=>(v._path_relativeLineTo=Y.path_relativeLineTo)(a,b,c);v._path_quadraticBezierTo=(a,b,c,d,f)=>(v._path_quadraticBezierTo=Y.path_quadraticBezierTo)(a,b,c,d,f);v._path_relativeQuadraticBezierTo=(a,b,c,d,f)=>(v._path_relativeQuadraticBezierTo=Y.path_relativeQuadraticBezierTo)(a,b,c,d,f);
v._path_cubicTo=(a,b,c,d,f,g,l)=>(v._path_cubicTo=Y.path_cubicTo)(a,b,c,d,f,g,l);v._path_relativeCubicTo=(a,b,c,d,f,g,l)=>(v._path_relativeCubicTo=Y.path_relativeCubicTo)(a,b,c,d,f,g,l);v._path_conicTo=(a,b,c,d,f,g)=>(v._path_conicTo=Y.path_conicTo)(a,b,c,d,f,g);v._path_relativeConicTo=(a,b,c,d,f,g)=>(v._path_relativeConicTo=Y.path_relativeConicTo)(a,b,c,d,f,g);v._path_arcToOval=(a,b,c,d,f)=>(v._path_arcToOval=Y.path_arcToOval)(a,b,c,d,f);
v._path_arcToRotated=(a,b,c,d,f,g,l,m)=>(v._path_arcToRotated=Y.path_arcToRotated)(a,b,c,d,f,g,l,m);v._path_relativeArcToRotated=(a,b,c,d,f,g,l,m)=>(v._path_relativeArcToRotated=Y.path_relativeArcToRotated)(a,b,c,d,f,g,l,m);v._path_addRect=(a,b)=>(v._path_addRect=Y.path_addRect)(a,b);v._path_addOval=(a,b)=>(v._path_addOval=Y.path_addOval)(a,b);v._path_addArc=(a,b,c,d)=>(v._path_addArc=Y.path_addArc)(a,b,c,d);v._path_addPolygon=(a,b,c,d)=>(v._path_addPolygon=Y.path_addPolygon)(a,b,c,d);
v._path_addRRect=(a,b)=>(v._path_addRRect=Y.path_addRRect)(a,b);v._path_addPath=(a,b,c,d)=>(v._path_addPath=Y.path_addPath)(a,b,c,d);v._path_close=a=>(v._path_close=Y.path_close)(a);v._path_reset=a=>(v._path_reset=Y.path_reset)(a);v._path_contains=(a,b,c)=>(v._path_contains=Y.path_contains)(a,b,c);v._path_transform=(a,b)=>(v._path_transform=Y.path_transform)(a,b);v._path_getBounds=(a,b)=>(v._path_getBounds=Y.path_getBounds)(a,b);v._path_combine=(a,b,c)=>(v._path_combine=Y.path_combine)(a,b,c);
v._path_getSvgString=a=>(v._path_getSvgString=Y.path_getSvgString)(a);v._pictureRecorder_create=()=>(v._pictureRecorder_create=Y.pictureRecorder_create)();v._pictureRecorder_dispose=a=>(v._pictureRecorder_dispose=Y.pictureRecorder_dispose)(a);v._pictureRecorder_beginRecording=(a,b)=>(v._pictureRecorder_beginRecording=Y.pictureRecorder_beginRecording)(a,b);v._pictureRecorder_endRecording=a=>(v._pictureRecorder_endRecording=Y.pictureRecorder_endRecording)(a);
v._picture_getCullRect=(a,b)=>(v._picture_getCullRect=Y.picture_getCullRect)(a,b);v._picture_dispose=a=>(v._picture_dispose=Y.picture_dispose)(a);v._picture_approximateBytesUsed=a=>(v._picture_approximateBytesUsed=Y.picture_approximateBytesUsed)(a);v._shader_createLinearGradient=(a,b,c,d,f,g)=>(v._shader_createLinearGradient=Y.shader_createLinearGradient)(a,b,c,d,f,g);v._shader_createRadialGradient=(a,b,c,d,f,g,l,m)=>(v._shader_createRadialGradient=Y.shader_createRadialGradient)(a,b,c,d,f,g,l,m);
v._shader_createConicalGradient=(a,b,c,d,f,g,l,m)=>(v._shader_createConicalGradient=Y.shader_createConicalGradient)(a,b,c,d,f,g,l,m);v._shader_createSweepGradient=(a,b,c,d,f,g,l,m,p)=>(v._shader_createSweepGradient=Y.shader_createSweepGradient)(a,b,c,d,f,g,l,m,p);v._shader_dispose=a=>(v._shader_dispose=Y.shader_dispose)(a);v._runtimeEffect_create=a=>(v._runtimeEffect_create=Y.runtimeEffect_create)(a);v._runtimeEffect_dispose=a=>(v._runtimeEffect_dispose=Y.runtimeEffect_dispose)(a);
v._runtimeEffect_getUniformSize=a=>(v._runtimeEffect_getUniformSize=Y.runtimeEffect_getUniformSize)(a);v._shader_createRuntimeEffectShader=(a,b,c,d)=>(v._shader_createRuntimeEffectShader=Y.shader_createRuntimeEffectShader)(a,b,c,d);v._shader_createFromImage=(a,b,c,d,f)=>(v._shader_createFromImage=Y.shader_createFromImage)(a,b,c,d,f);v._skString_allocate=a=>(v._skString_allocate=Y.skString_allocate)(a);v._skString_getData=a=>(v._skString_getData=Y.skString_getData)(a);
v._skString_getLength=a=>(v._skString_getLength=Y.skString_getLength)(a);v._skString_free=a=>(v._skString_free=Y.skString_free)(a);v._skString16_allocate=a=>(v._skString16_allocate=Y.skString16_allocate)(a);v._skString16_getData=a=>(v._skString16_getData=Y.skString16_getData)(a);v._skString16_free=a=>(v._skString16_free=Y.skString16_free)(a);v._surface_create=()=>(v._surface_create=Y.surface_create)();v._surface_getThreadId=a=>(v._surface_getThreadId=Y.surface_getThreadId)(a);
v._surface_setCallbackHandler=(a,b)=>(v._surface_setCallbackHandler=Y.surface_setCallbackHandler)(a,b);v._surface_destroy=a=>(v._surface_destroy=Y.surface_destroy)(a);var tg=v._surface_dispose=a=>(tg=v._surface_dispose=Y.surface_dispose)(a);v._surface_renderPictures=(a,b,c)=>(v._surface_renderPictures=Y.surface_renderPictures)(a,b,c);var qg=v._surface_renderPicturesOnWorker=(a,b,c,d,f)=>(qg=v._surface_renderPicturesOnWorker=Y.surface_renderPicturesOnWorker)(a,b,c,d,f);
v._surface_rasterizeImage=(a,b,c)=>(v._surface_rasterizeImage=Y.surface_rasterizeImage)(a,b,c);var ug=v._surface_rasterizeImageOnWorker=(a,b,c,d)=>(ug=v._surface_rasterizeImageOnWorker=Y.surface_rasterizeImageOnWorker)(a,b,c,d),sg=v._surface_onRenderComplete=(a,b,c)=>(sg=v._surface_onRenderComplete=Y.surface_onRenderComplete)(a,b,c),vg=v._surface_onRasterizeComplete=(a,b,c)=>(vg=v._surface_onRasterizeComplete=Y.surface_onRasterizeComplete)(a,b,c);
v._lineMetrics_create=(a,b,c,d,f,g,l,m,p)=>(v._lineMetrics_create=Y.lineMetrics_create)(a,b,c,d,f,g,l,m,p);v._lineMetrics_dispose=a=>(v._lineMetrics_dispose=Y.lineMetrics_dispose)(a);v._lineMetrics_getHardBreak=a=>(v._lineMetrics_getHardBreak=Y.lineMetrics_getHardBreak)(a);v._lineMetrics_getAscent=a=>(v._lineMetrics_getAscent=Y.lineMetrics_getAscent)(a);v._lineMetrics_getDescent=a=>(v._lineMetrics_getDescent=Y.lineMetrics_getDescent)(a);
v._lineMetrics_getUnscaledAscent=a=>(v._lineMetrics_getUnscaledAscent=Y.lineMetrics_getUnscaledAscent)(a);v._lineMetrics_getHeight=a=>(v._lineMetrics_getHeight=Y.lineMetrics_getHeight)(a);v._lineMetrics_getWidth=a=>(v._lineMetrics_getWidth=Y.lineMetrics_getWidth)(a);v._lineMetrics_getLeft=a=>(v._lineMetrics_getLeft=Y.lineMetrics_getLeft)(a);v._lineMetrics_getBaseline=a=>(v._lineMetrics_getBaseline=Y.lineMetrics_getBaseline)(a);v._lineMetrics_getLineNumber=a=>(v._lineMetrics_getLineNumber=Y.lineMetrics_getLineNumber)(a);
v._lineMetrics_getStartIndex=a=>(v._lineMetrics_getStartIndex=Y.lineMetrics_getStartIndex)(a);v._lineMetrics_getEndIndex=a=>(v._lineMetrics_getEndIndex=Y.lineMetrics_getEndIndex)(a);v._paragraph_dispose=a=>(v._paragraph_dispose=Y.paragraph_dispose)(a);v._paragraph_getWidth=a=>(v._paragraph_getWidth=Y.paragraph_getWidth)(a);v._paragraph_getHeight=a=>(v._paragraph_getHeight=Y.paragraph_getHeight)(a);v._paragraph_getLongestLine=a=>(v._paragraph_getLongestLine=Y.paragraph_getLongestLine)(a);
v._paragraph_getMinIntrinsicWidth=a=>(v._paragraph_getMinIntrinsicWidth=Y.paragraph_getMinIntrinsicWidth)(a);v._paragraph_getMaxIntrinsicWidth=a=>(v._paragraph_getMaxIntrinsicWidth=Y.paragraph_getMaxIntrinsicWidth)(a);v._paragraph_getAlphabeticBaseline=a=>(v._paragraph_getAlphabeticBaseline=Y.paragraph_getAlphabeticBaseline)(a);v._paragraph_getIdeographicBaseline=a=>(v._paragraph_getIdeographicBaseline=Y.paragraph_getIdeographicBaseline)(a);
v._paragraph_getDidExceedMaxLines=a=>(v._paragraph_getDidExceedMaxLines=Y.paragraph_getDidExceedMaxLines)(a);v._paragraph_layout=(a,b)=>(v._paragraph_layout=Y.paragraph_layout)(a,b);v._paragraph_getPositionForOffset=(a,b,c,d)=>(v._paragraph_getPositionForOffset=Y.paragraph_getPositionForOffset)(a,b,c,d);v._paragraph_getClosestGlyphInfoAtCoordinate=(a,b,c,d,f,g)=>(v._paragraph_getClosestGlyphInfoAtCoordinate=Y.paragraph_getClosestGlyphInfoAtCoordinate)(a,b,c,d,f,g);
v._paragraph_getGlyphInfoAt=(a,b,c,d,f)=>(v._paragraph_getGlyphInfoAt=Y.paragraph_getGlyphInfoAt)(a,b,c,d,f);v._paragraph_getWordBoundary=(a,b,c)=>(v._paragraph_getWordBoundary=Y.paragraph_getWordBoundary)(a,b,c);v._paragraph_getLineCount=a=>(v._paragraph_getLineCount=Y.paragraph_getLineCount)(a);v._paragraph_getLineNumberAt=(a,b)=>(v._paragraph_getLineNumberAt=Y.paragraph_getLineNumberAt)(a,b);
v._paragraph_getLineMetricsAtIndex=(a,b)=>(v._paragraph_getLineMetricsAtIndex=Y.paragraph_getLineMetricsAtIndex)(a,b);v._textBoxList_dispose=a=>(v._textBoxList_dispose=Y.textBoxList_dispose)(a);v._textBoxList_getLength=a=>(v._textBoxList_getLength=Y.textBoxList_getLength)(a);v._textBoxList_getBoxAtIndex=(a,b,c)=>(v._textBoxList_getBoxAtIndex=Y.textBoxList_getBoxAtIndex)(a,b,c);v._paragraph_getBoxesForRange=(a,b,c,d,f)=>(v._paragraph_getBoxesForRange=Y.paragraph_getBoxesForRange)(a,b,c,d,f);
v._paragraph_getBoxesForPlaceholders=a=>(v._paragraph_getBoxesForPlaceholders=Y.paragraph_getBoxesForPlaceholders)(a);v._paragraph_getUnresolvedCodePoints=(a,b,c)=>(v._paragraph_getUnresolvedCodePoints=Y.paragraph_getUnresolvedCodePoints)(a,b,c);v._paragraphBuilder_create=(a,b)=>(v._paragraphBuilder_create=Y.paragraphBuilder_create)(a,b);v._paragraphBuilder_dispose=a=>(v._paragraphBuilder_dispose=Y.paragraphBuilder_dispose)(a);
v._paragraphBuilder_addPlaceholder=(a,b,c,d,f,g)=>(v._paragraphBuilder_addPlaceholder=Y.paragraphBuilder_addPlaceholder)(a,b,c,d,f,g);v._paragraphBuilder_addText=(a,b)=>(v._paragraphBuilder_addText=Y.paragraphBuilder_addText)(a,b);v._paragraphBuilder_getUtf8Text=(a,b)=>(v._paragraphBuilder_getUtf8Text=Y.paragraphBuilder_getUtf8Text)(a,b);v._paragraphBuilder_pushStyle=(a,b)=>(v._paragraphBuilder_pushStyle=Y.paragraphBuilder_pushStyle)(a,b);v._paragraphBuilder_pop=a=>(v._paragraphBuilder_pop=Y.paragraphBuilder_pop)(a);
v._paragraphBuilder_build=a=>(v._paragraphBuilder_build=Y.paragraphBuilder_build)(a);v._unicodePositionBuffer_create=a=>(v._unicodePositionBuffer_create=Y.unicodePositionBuffer_create)(a);v._unicodePositionBuffer_getDataPointer=a=>(v._unicodePositionBuffer_getDataPointer=Y.unicodePositionBuffer_getDataPointer)(a);v._unicodePositionBuffer_free=a=>(v._unicodePositionBuffer_free=Y.unicodePositionBuffer_free)(a);v._lineBreakBuffer_create=a=>(v._lineBreakBuffer_create=Y.lineBreakBuffer_create)(a);
v._lineBreakBuffer_getDataPointer=a=>(v._lineBreakBuffer_getDataPointer=Y.lineBreakBuffer_getDataPointer)(a);v._lineBreakBuffer_free=a=>(v._lineBreakBuffer_free=Y.lineBreakBuffer_free)(a);v._paragraphBuilder_setGraphemeBreaksUtf16=(a,b)=>(v._paragraphBuilder_setGraphemeBreaksUtf16=Y.paragraphBuilder_setGraphemeBreaksUtf16)(a,b);v._paragraphBuilder_setWordBreaksUtf16=(a,b)=>(v._paragraphBuilder_setWordBreaksUtf16=Y.paragraphBuilder_setWordBreaksUtf16)(a,b);
v._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(v._paragraphBuilder_setLineBreaksUtf16=Y.paragraphBuilder_setLineBreaksUtf16)(a,b);v._paragraphStyle_create=()=>(v._paragraphStyle_create=Y.paragraphStyle_create)();v._paragraphStyle_dispose=a=>(v._paragraphStyle_dispose=Y.paragraphStyle_dispose)(a);v._paragraphStyle_setTextAlign=(a,b)=>(v._paragraphStyle_setTextAlign=Y.paragraphStyle_setTextAlign)(a,b);
v._paragraphStyle_setTextDirection=(a,b)=>(v._paragraphStyle_setTextDirection=Y.paragraphStyle_setTextDirection)(a,b);v._paragraphStyle_setMaxLines=(a,b)=>(v._paragraphStyle_setMaxLines=Y.paragraphStyle_setMaxLines)(a,b);v._paragraphStyle_setHeight=(a,b)=>(v._paragraphStyle_setHeight=Y.paragraphStyle_setHeight)(a,b);v._paragraphStyle_setTextHeightBehavior=(a,b,c)=>(v._paragraphStyle_setTextHeightBehavior=Y.paragraphStyle_setTextHeightBehavior)(a,b,c);
v._paragraphStyle_setEllipsis=(a,b)=>(v._paragraphStyle_setEllipsis=Y.paragraphStyle_setEllipsis)(a,b);v._paragraphStyle_setStrutStyle=(a,b)=>(v._paragraphStyle_setStrutStyle=Y.paragraphStyle_setStrutStyle)(a,b);v._paragraphStyle_setTextStyle=(a,b)=>(v._paragraphStyle_setTextStyle=Y.paragraphStyle_setTextStyle)(a,b);v._paragraphStyle_setApplyRoundingHack=(a,b)=>(v._paragraphStyle_setApplyRoundingHack=Y.paragraphStyle_setApplyRoundingHack)(a,b);v._strutStyle_create=()=>(v._strutStyle_create=Y.strutStyle_create)();
v._strutStyle_dispose=a=>(v._strutStyle_dispose=Y.strutStyle_dispose)(a);v._strutStyle_setFontFamilies=(a,b,c)=>(v._strutStyle_setFontFamilies=Y.strutStyle_setFontFamilies)(a,b,c);v._strutStyle_setFontSize=(a,b)=>(v._strutStyle_setFontSize=Y.strutStyle_setFontSize)(a,b);v._strutStyle_setHeight=(a,b)=>(v._strutStyle_setHeight=Y.strutStyle_setHeight)(a,b);v._strutStyle_setHalfLeading=(a,b)=>(v._strutStyle_setHalfLeading=Y.strutStyle_setHalfLeading)(a,b);
v._strutStyle_setLeading=(a,b)=>(v._strutStyle_setLeading=Y.strutStyle_setLeading)(a,b);v._strutStyle_setFontStyle=(a,b,c)=>(v._strutStyle_setFontStyle=Y.strutStyle_setFontStyle)(a,b,c);v._strutStyle_setForceStrutHeight=(a,b)=>(v._strutStyle_setForceStrutHeight=Y.strutStyle_setForceStrutHeight)(a,b);v._textStyle_create=()=>(v._textStyle_create=Y.textStyle_create)();v._textStyle_copy=a=>(v._textStyle_copy=Y.textStyle_copy)(a);v._textStyle_dispose=a=>(v._textStyle_dispose=Y.textStyle_dispose)(a);
v._textStyle_setColor=(a,b)=>(v._textStyle_setColor=Y.textStyle_setColor)(a,b);v._textStyle_setDecoration=(a,b)=>(v._textStyle_setDecoration=Y.textStyle_setDecoration)(a,b);v._textStyle_setDecorationColor=(a,b)=>(v._textStyle_setDecorationColor=Y.textStyle_setDecorationColor)(a,b);v._textStyle_setDecorationStyle=(a,b)=>(v._textStyle_setDecorationStyle=Y.textStyle_setDecorationStyle)(a,b);
v._textStyle_setDecorationThickness=(a,b)=>(v._textStyle_setDecorationThickness=Y.textStyle_setDecorationThickness)(a,b);v._textStyle_setFontStyle=(a,b,c)=>(v._textStyle_setFontStyle=Y.textStyle_setFontStyle)(a,b,c);v._textStyle_setTextBaseline=(a,b)=>(v._textStyle_setTextBaseline=Y.textStyle_setTextBaseline)(a,b);v._textStyle_clearFontFamilies=a=>(v._textStyle_clearFontFamilies=Y.textStyle_clearFontFamilies)(a);
v._textStyle_addFontFamilies=(a,b,c)=>(v._textStyle_addFontFamilies=Y.textStyle_addFontFamilies)(a,b,c);v._textStyle_setFontSize=(a,b)=>(v._textStyle_setFontSize=Y.textStyle_setFontSize)(a,b);v._textStyle_setLetterSpacing=(a,b)=>(v._textStyle_setLetterSpacing=Y.textStyle_setLetterSpacing)(a,b);v._textStyle_setWordSpacing=(a,b)=>(v._textStyle_setWordSpacing=Y.textStyle_setWordSpacing)(a,b);v._textStyle_setHeight=(a,b)=>(v._textStyle_setHeight=Y.textStyle_setHeight)(a,b);
v._textStyle_setHalfLeading=(a,b)=>(v._textStyle_setHalfLeading=Y.textStyle_setHalfLeading)(a,b);v._textStyle_setLocale=(a,b)=>(v._textStyle_setLocale=Y.textStyle_setLocale)(a,b);v._textStyle_setBackground=(a,b)=>(v._textStyle_setBackground=Y.textStyle_setBackground)(a,b);v._textStyle_setForeground=(a,b)=>(v._textStyle_setForeground=Y.textStyle_setForeground)(a,b);v._textStyle_addShadow=(a,b,c,d,f)=>(v._textStyle_addShadow=Y.textStyle_addShadow)(a,b,c,d,f);
v._textStyle_addFontFeature=(a,b,c)=>(v._textStyle_addFontFeature=Y.textStyle_addFontFeature)(a,b,c);v._textStyle_setFontVariations=(a,b,c,d)=>(v._textStyle_setFontVariations=Y.textStyle_setFontVariations)(a,b,c,d);v._vertices_create=(a,b,c,d,f,g,l)=>(v._vertices_create=Y.vertices_create)(a,b,c,d,f,g,l);v._vertices_dispose=a=>(v._vertices_dispose=Y.vertices_dispose)(a);v._skwasm_isMultiThreaded=()=>(v._skwasm_isMultiThreaded=Y.skwasm_isMultiThreaded)();
var ya=()=>(ya=Y.pthread_self)(),xf=a=>(xf=Y.malloc)(a),Ba=(a,b,c,d,f,g)=>(Ba=Y._emscripten_thread_init)(a,b,c,d,f,g),Ha=()=>(Ha=Y._emscripten_thread_crashed)(),bf=(a,b,c,d,f)=>(bf=Y._emscripten_run_on_main_thread_js)(a,b,c,d,f),jf=a=>(jf=Y._emscripten_thread_free_data)(a),pf=a=>(pf=Y._emscripten_thread_exit)(a),Df=(a,b)=>(Df=Y._emscripten_timeout)(a,b),zf=()=>(zf=Y._emscripten_check_mailbox)(),Z=(a,b)=>(Z=Y.setThrew)(a,b),of=(a,b)=>(of=Y.emscripten_stack_set_limits)(a,b),G=a=>(G=Y._emscripten_stack_restore)(a),
$e=a=>($e=Y._emscripten_stack_alloc)(a),E=()=>(E=Y.emscripten_stack_get_current)();function xe(a,b,c){var d=E();try{return I.get(a)(b,c)}catch(f){G(d);if(f!==f+0)throw f;Z(1,0)}}function Ce(a,b,c){var d=E();try{I.get(a)(b,c)}catch(f){G(d);if(f!==f+0)throw f;Z(1,0)}}function we(a,b){var c=E();try{return I.get(a)(b)}catch(d){G(c);if(d!==d+0)throw d;Z(1,0)}}function De(a,b,c,d){var f=E();try{I.get(a)(b,c,d)}catch(g){G(f);if(g!==g+0)throw g;Z(1,0)}}
function ye(a,b,c,d){var f=E();try{return I.get(a)(b,c,d)}catch(g){G(f);if(g!==g+0)throw g;Z(1,0)}}function Ee(a,b,c,d,f){var g=E();try{I.get(a)(b,c,d,f)}catch(l){G(g);if(l!==l+0)throw l;Z(1,0)}}function Fe(a,b,c,d,f,g,l,m){var p=E();try{I.get(a)(b,c,d,f,g,l,m)}catch(r){G(p);if(r!==r+0)throw r;Z(1,0)}}function Be(a,b){var c=E();try{I.get(a)(b)}catch(d){G(c);if(d!==d+0)throw d;Z(1,0)}}function Ae(a,b,c,d,f,g,l){var m=E();try{return I.get(a)(b,c,d,f,g,l)}catch(p){G(m);if(p!==p+0)throw p;Z(1,0)}}
function ze(a,b,c,d,f){var g=E();try{return I.get(a)(b,c,d,f)}catch(l){G(g);if(l!==l+0)throw l;Z(1,0)}}v.wasmMemory=e;v.wasmExports=Y;v.stackAlloc=af;
v.addFunction=(a,b)=>{if(!mg){mg=new WeakMap;var c=I.length;if(mg)for(var d=0;d<0+c;d++){var f=I.get(d);f&&mg.set(f,d)}}if(c=mg.get(a)||0)return c;if(ng.length)c=ng.pop();else{try{I.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}c=I.length-1}try{I.set(c,a)}catch(m){if(!(m instanceof TypeError))throw m;if("function"==typeof WebAssembly.Function){d=WebAssembly.Function;f={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};for(var g=
{parameters:[],results:"v"==b[0]?[]:[f[b[0]]]},l=1;l<b.length;++l)g.parameters.push(f[b[l]]);b=new d(g,a)}else{d=[1];f=b.slice(0,1);b=b.slice(1);g={i:127,p:127,j:126,f:125,d:124,e:111};d.push(96);l=b.length;128>l?d.push(l):d.push(l%128|128,l>>7);for(l=0;l<b.length;++l)d.push(g[b[l]]);"v"==f?d.push(0):d.push(1,g[f]);b=[0,97,115,109,1,0,0,0,1];f=d.length;128>f?b.push(f):b.push(f%128|128,f>>7);b.push(...d);b.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);b=new WebAssembly.Module(new Uint8Array(b));b=(new WebAssembly.Instance(b,
{e:{f:a}})).exports.f}I.set(c,b)}mg.set(a,c);return c};var wg,xg;Ma=function yg(){wg||zg();wg||(Ma=yg)};function zg(){if(!(0<z))if(w)ia(v),w||nf(Ja),startWorker(v);else{if(!xg&&(xg=1,nf(Ia),0<z))return;wg||(wg=1,v.calledRun=1,sa||(w||nf(Ja),ia(v),w||nf(Ka)))}}zg();moduleRtn=ka;
return moduleRtn;
}
);
})();
export default skwasm;
var isPthread = globalThis.self?.name?.startsWith('em-pthread');
// When running as a pthread, construct a new instance on startup
isPthread && skwasm();

File diff suppressed because one or more lines are too long

View File

@ -1,134 +0,0 @@
var skwasm_st = (() => {
var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
return (
function(moduleArg = {}) {
var moduleRtn;
function d(){g.buffer!=k.buffer&&n();return k}function q(){g.buffer!=k.buffer&&n();return aa}function r(){g.buffer!=k.buffer&&n();return ba}function t(){g.buffer!=k.buffer&&n();return ca}function u(){g.buffer!=k.buffer&&n();return da}var w=moduleArg,ea,fa,ha=new Promise((a,b)=>{ea=a;fa=b}),ia="object"==typeof window,ja="function"==typeof importScripts,ka=Object.assign({},w),x="",la,ma;
if(ia||ja)ja?x=self.location.href:"undefined"!=typeof document&&document.currentScript&&(x=document.currentScript.src),_scriptName&&(x=_scriptName),x.startsWith("blob:")?x="":x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1),ja&&(ma=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),la=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
var na=console.log.bind(console),y=console.error.bind(console);Object.assign(w,ka);ka=null;var g,oa=!1,pa,k,aa,qa,ra,ba,ca,da;function n(){var a=g.buffer;k=new Int8Array(a);qa=new Int16Array(a);aa=new Uint8Array(a);ra=new Uint16Array(a);ba=new Int32Array(a);ca=new Uint32Array(a);da=new Float32Array(a);new Float64Array(a)}var sa=[],ta=[],ua=[],z=0,va=null,A=null;
function wa(a){a="Aborted("+a+")";y(a);oa=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");fa(a);throw a;}var xa=a=>a.startsWith("data:application/octet-stream;base64,"),ya;function za(a){return la(a).then(b=>new Uint8Array(b),()=>{if(ma)var b=ma(a);else throw"both async and sync fetching of the wasm failed";return b})}function Aa(a,b,c){return za(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{y(`failed to asynchronously prepare wasm: ${e}`);wa(e)})}
function Ba(a,b){var c=ya;return"function"!=typeof WebAssembly.instantiateStreaming||xa(c)||"function"!=typeof fetch?Aa(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){y(`wasm streaming compile failed: ${f}`);y("falling back to ArrayBuffer instantiation");return Aa(c,a,b)}))}function Ca(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Da=a=>{a.forEach(b=>b(w))},Ea=w.noExitRuntime||!0;
class Fa{constructor(a){this.s=a-24}}
var Ga=0,Ha=0,Ia="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Ja=(a,b=0,c=NaN)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16<c-b&&a.buffer&&Ia)return Ia.decode(a.slice(b,c));for(e="";b<c;){var f=a[b++];if(f&128){var h=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|h);else{var l=a[b++]&63;f=224==(f&240)?(f&15)<<12|h<<6|l:(f&7)<<18|h<<12|l<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e},
Ka=(a,b)=>a?Ja(q(),a,b):"",B={},La=a=>{if(!(a instanceof Ca||"unwind"==a))throw a;},Ma=0,Na=a=>{pa=a;Ea||0<Ma||(oa=!0);throw new Ca(a);},Oa=a=>{if(!oa)try{if(a(),!(Ea||0<Ma))try{pa=a=pa,Na(a)}catch(b){La(b)}}catch(b){La(b)}},C=(a,b,c)=>{var e=q();if(0<c){var f=b;c=b+c-1;for(var h=0;h<a.length;++h){var l=a.charCodeAt(h);if(55296<=l&&57343>=l){var m=a.charCodeAt(++h);l=65536+((l&1023)<<10)|m&1023}if(127>=l){if(b>=c)break;e[b++]=l}else{if(2047>=l){if(b+1>=c)break;e[b++]=192|l>>6}else{if(65535>=l){if(b+
2>=c)break;e[b++]=224|l>>12}else{if(b+3>=c)break;e[b++]=240|l>>18;e[b++]=128|l>>12&63}e[b++]=128|l>>6&63}e[b++]=128|l&63}}e[b]=0;a=b-f}else a=0;return a},D,Pa=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,e)=>b.vertexAttribDivisorANGLE(c,e),a.drawArraysInstanced=(c,e,f,h)=>b.drawArraysInstancedANGLE(c,e,f,h),a.drawElementsInstanced=(c,e,f,h,l)=>b.drawElementsInstancedANGLE(c,e,f,h,l))},Qa=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=
()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},Ra=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},Sa=a=>{a.H=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},Ta=a=>{a.K=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},Ua=a=>{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},Va=1,Wa=[],E=[],Xa=[],F=[],G=[],H=[],Ya=[],Za=[],I=[],J=[],K=[],$a={},ab={},bb=4,cb=0,L=a=>{for(var b=Va++,c=a.length;c<b;c++)a[c]=null;return b},N=(a,b,c,e)=>{for(var f=0;f<a;f++){var h=D[c](),l=h&&L(e);h?(h.name=l,e[l]=h):M||=1282;r()[b+4*f>>2]=l}},eb=a=>{var b={J:2,alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,I:!0};a.s||(a.s=a.getContext,
a.getContext=function(e,f){f=a.s(e,f);return"webgl"==e==f instanceof WebGLRenderingContext?f:null});var c=1<b.J?a.getContext("webgl2",b):a.getContext("webgl",b);return c?db(c,b):0},db=(a,b)=>{var c=L(Za),e={handle:c,attributes:b,version:b.J,v:a};a.canvas&&(a.canvas.Z=e);Za[c]=e;("undefined"==typeof b.I||b.I)&&fb(e);return c},fb=a=>{a||=O;if(!a.S){a.S=!0;var b=a.v;b.T=b.getExtension("WEBGL_multi_draw");b.P=b.getExtension("EXT_polygon_offset_clamp");b.O=b.getExtension("EXT_clip_control");b.Y=b.getExtension("WEBGL_polygon_mode");
Pa(b);Qa(b);Ra(b);Sa(b);Ta(b);2<=a.version&&(b.g=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.g)b.g=b.getExtension("EXT_disjoint_timer_query");Ua(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},M,O,gb=a=>{D.bindVertexArray(Ya[a])},hb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=G[e];f&&(D.deleteTexture(f),f.name=0,G[e]=null)}},ib=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2];D.deleteVertexArray(Ya[e]);Ya[e]=null}},jb=[],kb=(a,
b)=>{N(a,b,"createVertexArray",Ya)},lb=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/4294967296};function mb(){var a=Ua(D);return a=a.concat(a.map(b=>"GL_"+b))}
var nb=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(M||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=D.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>O.version){M||=1282;return}e=mb().length;break;case 33307:case 33308:if(2>O.version){M||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=D.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":M||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=
0;break;default:M||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:r()[b+4*a>>2]=f[a];break;case 2:u()[b+4*a>>2]=f[a];break;case 4:d()[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(h){M||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:M||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
return}switch(c){case 1:lb(b,e);break;case 0:r()[b>>2]=e;break;case 2:u()[b>>2]=e;break;case 4:d()[b]=e?1:0}}else M||=1281},ob=(a,b)=>nb(a,b,0),pb=(a,b,c)=>{if(c){a=I[a];b=2>O.version?D.g.getQueryObjectEXT(a,b):D.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;lb(c,e)}else M||=1281},rb=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}b+=1;(c=qb(b))&&C(a,c,b);return c},sb=a=>{var b=$a[a];if(!b){switch(a){case 7939:b=rb(mb().join(" "));
break;case 7936:case 7937:case 37445:case 37446:(b=D.getParameter(a))||(M||=1280);b=b?rb(b):0;break;case 7938:b=D.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=O.version&&(c=`OpenGL ES 3.0 (${b})`);b=rb(c);break;case 35724:b=D.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=rb(b);break;default:M||=1280}$a[a]=b}return b},tb=(a,b)=>{if(2>O.version)return M||=1282,0;var c=ab[a];if(c)return 0>
b||b>=c.length?(M||=1281,0):c[b];switch(a){case 7939:return c=mb().map(rb),c=ab[a]=c,0>b||b>=c.length?(M||=1281,0):c[b];default:return M||=1280,0}},ub=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),vb=a=>{a-=5120;0==a?a=d():1==a?a=q():2==a?(g.buffer!=k.buffer&&n(),a=qa):4==a?a=r():6==a?a=u():5==a||28922==a||28520==a||30779==a||30782==a?a=t():(g.buffer!=k.buffer&&n(),a=ra);return a},wb=(a,b,c,e,f)=>{a=vb(a);b=e*((cb||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+
bb-1&-bb);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},P=a=>{var b=D.N;if(b){var c=b.u[a];"number"==typeof c&&(b.u[a]=c=D.getUniformLocation(b,b.L[a]+(0<c?`[${c}]`:"")));return c}M||=1282},Q=[],xb=[],yb={},Ab=()=>{if(!zb){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in yb)void 0===
yb[b]?delete a[b]:a[b]=yb[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);zb=c}return zb},zb,Bb=[null,[],[]];function Cb(){}function Db(){}function R(){}function Eb(){}function Fb(){}function Gb(){}function Hb(){}function Ib(){}function Jb(){}function Kb(){}function Lb(){}function Mb(){}function Nb(){}function Ob(){}function Pb(){}function Qb(){}var S,U,Rb=[],Tb=a=>Sb(a);w.stackAlloc=Tb;for(var V=0;32>V;++V)jb.push(Array(V));var Ub=new Float32Array(288);for(V=0;288>=V;++V)Q[V]=Ub.subarray(0,V);
var Vb=new Int32Array(288);for(V=0;288>=V;++V)xb[V]=Vb.subarray(0,V);
(function(){const a=new Map,b=new Map;Qb=function(c,e,f){R({m:"setAssociatedObject",F:e,object:f})};Mb=function(c){return b.get(c)};Fb=function(){Cb(function(c){var e=c.m;if(e)switch(e){case "renderPictures":Wb(c.h,c.V,c.U,c.l,Db());break;case "onRenderComplete":Xb(c.h,c.l,{imageBitmaps:c.R,rasterStartMilliseconds:c.X,rasterEndMilliseconds:c.W});break;case "setAssociatedObject":b.set(c.F,c.object);break;case "disposeAssociatedObject":c=c.F;e=b.get(c);e.close&&e.close();b.delete(c);break;case "disposeSurface":Yb(c.h);
break;case "rasterizeImage":Zb(c.h,c.image,c.format,c.l);break;case "onRasterizeComplete":$b(c.h,c.data,c.l);break;default:console.warn(`unrecognized skwasm message: ${e}`)}})};Kb=function(c,e,f,h,l){R({m:"renderPictures",h:e,V:f,U:h,l})};Hb=function(c,e){c=new OffscreenCanvas(c,e);e=eb(c);a.set(e,c);return e};Ob=function(c,e,f){c=a.get(c);c.width=e;c.height=f};Eb=function(c,e,f,h){h||=[];c=a.get(c);h.push(createImageBitmap(c,0,0,e,f));return h};Pb=async function(c,e,f,h){e=e?await Promise.all(e):
[];R({m:"onRenderComplete",h:c,l:h,R:e,X:f,W:Db()},[...e])};Gb=function(c,e,f){const h=O.v,l=h.createTexture();h.bindTexture(h.TEXTURE_2D,l);h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);h.texImage2D(h.TEXTURE_2D,0,h.RGBA,e,f,0,h.RGBA,h.UNSIGNED_BYTE,c);h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);h.bindTexture(h.TEXTURE_2D,null);c=L(G);G[c]=l;return c};Lb=function(c,e){R({m:"disposeAssociatedObject",F:e})};Ib=function(c,e){R({m:"disposeSurface",h:e})};Jb=function(c,e,f,h,l){R({m:"rasterizeImage",
h:e,image:f,format:h,l})};Nb=function(c,e,f){R({m:"onRasterizeComplete",h:c,data:e,l:f})}})();(function(){let a;Cb=function(b){a=b};Db=function(){return performance.now()};R=function(b){queueMicrotask(()=>{a(b)})}})();
var lc={__cxa_throw:(a,b,c)=>{var e=new Fa(a);t()[e.s+16>>2]=0;t()[e.s+4>>2]=b;t()[e.s+8>>2]=c;Ga=a;Ha++;throw Ga;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_openat:function(){},_abort_js:()=>{wa("")},_emscripten_get_now_is_monotonic:()=>1,_emscripten_runtime_keepalive_clear:()=>{Ea=!1;Ma=0},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:function(){return-52},_munmap_js:function(){},_setitimer_js:(a,b)=>{B[a]&&(clearTimeout(B[a].id),
delete B[a]);if(!b)return 0;var c=setTimeout(()=>{delete B[a];Oa(()=>ac(a,performance.now()))},b);B[a]={id:c,aa:b};return 0},_tzset_js:(a,b,c,e)=>{var f=(new Date).getFullYear(),h=(new Date(f,0,1)).getTimezoneOffset();f=(new Date(f,6,1)).getTimezoneOffset();var l=Math.max(h,f);t()[a>>2]=60*l;r()[b>>2]=Number(h!=f);b=m=>{var p=Math.abs(m);return`UTC${0<=m?"-":"+"}${String(Math.floor(p/60)).padStart(2,"0")}${String(p%60).padStart(2,"0")}`};a=b(h);b=b(f);f<h?(C(a,c,17),C(b,e,17)):(C(a,e,17),C(b,c,17))},
emscripten_get_now:()=>performance.now(),emscripten_glActiveTexture:a=>D.activeTexture(a),emscripten_glAttachShader:(a,b)=>{D.attachShader(E[a],H[b])},emscripten_glBeginQuery:(a,b)=>{D.beginQuery(a,I[b])},emscripten_glBeginQueryEXT:(a,b)=>{D.g.beginQueryEXT(a,I[b])},emscripten_glBindAttribLocation:(a,b,c)=>{D.bindAttribLocation(E[a],b,Ka(c))},emscripten_glBindBuffer:(a,b)=>{35051==a?D.D=b:35052==a&&(D.o=b);D.bindBuffer(a,Wa[b])},emscripten_glBindFramebuffer:(a,b)=>{D.bindFramebuffer(a,Xa[b])},emscripten_glBindRenderbuffer:(a,
b)=>{D.bindRenderbuffer(a,F[b])},emscripten_glBindSampler:(a,b)=>{D.bindSampler(a,J[b])},emscripten_glBindTexture:(a,b)=>{D.bindTexture(a,G[b])},emscripten_glBindVertexArray:gb,emscripten_glBindVertexArrayOES:gb,emscripten_glBlendColor:(a,b,c,e)=>D.blendColor(a,b,c,e),emscripten_glBlendEquation:a=>D.blendEquation(a),emscripten_glBlendFunc:(a,b)=>D.blendFunc(a,b),emscripten_glBlitFramebuffer:(a,b,c,e,f,h,l,m,p,v)=>D.blitFramebuffer(a,b,c,e,f,h,l,m,p,v),emscripten_glBufferData:(a,b,c,e)=>{2<=O.version?
c&&b?D.bufferData(a,q(),e,c,b):D.bufferData(a,b,e):D.bufferData(a,c?q().subarray(c,c+b):b,e)},emscripten_glBufferSubData:(a,b,c,e)=>{2<=O.version?c&&D.bufferSubData(a,b,q(),e,c):D.bufferSubData(a,b,q().subarray(e,e+c))},emscripten_glCheckFramebufferStatus:a=>D.checkFramebufferStatus(a),emscripten_glClear:a=>D.clear(a),emscripten_glClearColor:(a,b,c,e)=>D.clearColor(a,b,c,e),emscripten_glClearStencil:a=>D.clearStencil(a),emscripten_glClientWaitSync:(a,b,c,e)=>D.clientWaitSync(K[a],b,(c>>>0)+4294967296*
e),emscripten_glColorMask:(a,b,c,e)=>{D.colorMask(!!a,!!b,!!c,!!e)},emscripten_glCompileShader:a=>{D.compileShader(H[a])},emscripten_glCompressedTexImage2D:(a,b,c,e,f,h,l,m)=>{2<=O.version?D.o||!l?D.compressedTexImage2D(a,b,c,e,f,h,l,m):D.compressedTexImage2D(a,b,c,e,f,h,q(),m,l):D.compressedTexImage2D(a,b,c,e,f,h,q().subarray(m,m+l))},emscripten_glCompressedTexSubImage2D:(a,b,c,e,f,h,l,m,p)=>{2<=O.version?D.o||!m?D.compressedTexSubImage2D(a,b,c,e,f,h,l,m,p):D.compressedTexSubImage2D(a,b,c,e,f,h,
l,q(),p,m):D.compressedTexSubImage2D(a,b,c,e,f,h,l,q().subarray(p,p+m))},emscripten_glCopyBufferSubData:(a,b,c,e,f)=>D.copyBufferSubData(a,b,c,e,f),emscripten_glCopyTexSubImage2D:(a,b,c,e,f,h,l,m)=>D.copyTexSubImage2D(a,b,c,e,f,h,l,m),emscripten_glCreateProgram:()=>{var a=L(E),b=D.createProgram();b.name=a;b.C=b.A=b.B=0;b.G=1;E[a]=b;return a},emscripten_glCreateShader:a=>{var b=L(H);H[b]=D.createShader(a);return b},emscripten_glCullFace:a=>D.cullFace(a),emscripten_glDeleteBuffers:(a,b)=>{for(var c=
0;c<a;c++){var e=r()[b+4*c>>2],f=Wa[e];f&&(D.deleteBuffer(f),f.name=0,Wa[e]=null,e==D.D&&(D.D=0),e==D.o&&(D.o=0))}},emscripten_glDeleteFramebuffers:(a,b)=>{for(var c=0;c<a;++c){var e=r()[b+4*c>>2],f=Xa[e];f&&(D.deleteFramebuffer(f),f.name=0,Xa[e]=null)}},emscripten_glDeleteProgram:a=>{if(a){var b=E[a];b?(D.deleteProgram(b),b.name=0,E[a]=null):M||=1281}},emscripten_glDeleteQueries:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=I[e];f&&(D.deleteQuery(f),I[e]=null)}},emscripten_glDeleteQueriesEXT:(a,
b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=I[e];f&&(D.g.deleteQueryEXT(f),I[e]=null)}},emscripten_glDeleteRenderbuffers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=F[e];f&&(D.deleteRenderbuffer(f),f.name=0,F[e]=null)}},emscripten_glDeleteSamplers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=J[e];f&&(D.deleteSampler(f),f.name=0,J[e]=null)}},emscripten_glDeleteShader:a=>{if(a){var b=H[a];b?(D.deleteShader(b),H[a]=null):M||=1281}},emscripten_glDeleteSync:a=>{if(a){var b=K[a];b?(D.deleteSync(b),
b.name=0,K[a]=null):M||=1281}},emscripten_glDeleteTextures:hb,emscripten_glDeleteVertexArrays:ib,emscripten_glDeleteVertexArraysOES:ib,emscripten_glDepthMask:a=>{D.depthMask(!!a)},emscripten_glDisable:a=>D.disable(a),emscripten_glDisableVertexAttribArray:a=>{D.disableVertexAttribArray(a)},emscripten_glDrawArrays:(a,b,c)=>{D.drawArrays(a,b,c)},emscripten_glDrawArraysInstanced:(a,b,c,e)=>{D.drawArraysInstanced(a,b,c,e)},emscripten_glDrawArraysInstancedBaseInstanceWEBGL:(a,b,c,e,f)=>{D.H.drawArraysInstancedBaseInstanceWEBGL(a,
b,c,e,f)},emscripten_glDrawBuffers:(a,b)=>{for(var c=jb[a],e=0;e<a;e++)c[e]=r()[b+4*e>>2];D.drawBuffers(c)},emscripten_glDrawElements:(a,b,c,e)=>{D.drawElements(a,b,c,e)},emscripten_glDrawElementsInstanced:(a,b,c,e,f)=>{D.drawElementsInstanced(a,b,c,e,f)},emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a,b,c,e,f,h,l)=>{D.H.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,e,f,h,l)},emscripten_glDrawRangeElements:(a,b,c,e,f,h)=>{D.drawElements(a,e,f,h)},emscripten_glEnable:a=>D.enable(a),
emscripten_glEnableVertexAttribArray:a=>{D.enableVertexAttribArray(a)},emscripten_glEndQuery:a=>D.endQuery(a),emscripten_glEndQueryEXT:a=>{D.g.endQueryEXT(a)},emscripten_glFenceSync:(a,b)=>(a=D.fenceSync(a,b))?(b=L(K),a.name=b,K[b]=a,b):0,emscripten_glFinish:()=>D.finish(),emscripten_glFlush:()=>D.flush(),emscripten_glFramebufferRenderbuffer:(a,b,c,e)=>{D.framebufferRenderbuffer(a,b,c,F[e])},emscripten_glFramebufferTexture2D:(a,b,c,e,f)=>{D.framebufferTexture2D(a,b,c,G[e],f)},emscripten_glFrontFace:a=>
D.frontFace(a),emscripten_glGenBuffers:(a,b)=>{N(a,b,"createBuffer",Wa)},emscripten_glGenFramebuffers:(a,b)=>{N(a,b,"createFramebuffer",Xa)},emscripten_glGenQueries:(a,b)=>{N(a,b,"createQuery",I)},emscripten_glGenQueriesEXT:(a,b)=>{for(var c=0;c<a;c++){var e=D.g.createQueryEXT();if(!e){for(M||=1282;c<a;)r()[b+4*c++>>2]=0;break}var f=L(I);e.name=f;I[f]=e;r()[b+4*c>>2]=f}},emscripten_glGenRenderbuffers:(a,b)=>{N(a,b,"createRenderbuffer",F)},emscripten_glGenSamplers:(a,b)=>{N(a,b,"createSampler",J)},
emscripten_glGenTextures:(a,b)=>{N(a,b,"createTexture",G)},emscripten_glGenVertexArrays:kb,emscripten_glGenVertexArraysOES:kb,emscripten_glGenerateMipmap:a=>D.generateMipmap(a),emscripten_glGetBufferParameteriv:(a,b,c)=>{c?r()[c>>2]=D.getBufferParameter(a,b):M||=1281},emscripten_glGetError:()=>{var a=D.getError()||M;M=0;return a},emscripten_glGetFloatv:(a,b)=>nb(a,b,2),emscripten_glGetFramebufferAttachmentParameteriv:(a,b,c,e)=>{a=D.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||
a instanceof WebGLTexture)a=a.name|0;r()[e>>2]=a},emscripten_glGetIntegerv:ob,emscripten_glGetProgramInfoLog:(a,b,c,e)=>{a=D.getProgramInfoLog(E[a]);null===a&&(a="(unknown error)");b=0<b&&e?C(a,e,b):0;c&&(r()[c>>2]=b)},emscripten_glGetProgramiv:(a,b,c)=>{if(c)if(a>=Va)M||=1281;else if(a=E[a],35716==b)a=D.getProgramInfoLog(a),null===a&&(a="(unknown error)"),r()[c>>2]=a.length+1;else if(35719==b){if(!a.C){var e=D.getProgramParameter(a,35718);for(b=0;b<e;++b)a.C=Math.max(a.C,D.getActiveUniform(a,b).name.length+
1)}r()[c>>2]=a.C}else if(35722==b){if(!a.A)for(e=D.getProgramParameter(a,35721),b=0;b<e;++b)a.A=Math.max(a.A,D.getActiveAttrib(a,b).name.length+1);r()[c>>2]=a.A}else if(35381==b){if(!a.B)for(e=D.getProgramParameter(a,35382),b=0;b<e;++b)a.B=Math.max(a.B,D.getActiveUniformBlockName(a,b).length+1);r()[c>>2]=a.B}else r()[c>>2]=D.getProgramParameter(a,b);else M||=1281},emscripten_glGetQueryObjecti64vEXT:pb,emscripten_glGetQueryObjectui64vEXT:pb,emscripten_glGetQueryObjectuiv:(a,b,c)=>{if(c){a=D.getQueryParameter(I[a],
b);var e;"boolean"==typeof a?e=a?1:0:e=a;r()[c>>2]=e}else M||=1281},emscripten_glGetQueryObjectuivEXT:(a,b,c)=>{if(c){a=D.g.getQueryObjectEXT(I[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;r()[c>>2]=e}else M||=1281},emscripten_glGetQueryiv:(a,b,c)=>{c?r()[c>>2]=D.getQuery(a,b):M||=1281},emscripten_glGetQueryivEXT:(a,b,c)=>{c?r()[c>>2]=D.g.getQueryEXT(a,b):M||=1281},emscripten_glGetRenderbufferParameteriv:(a,b,c)=>{c?r()[c>>2]=D.getRenderbufferParameter(a,b):M||=1281},emscripten_glGetShaderInfoLog:(a,
b,c,e)=>{a=D.getShaderInfoLog(H[a]);null===a&&(a="(unknown error)");b=0<b&&e?C(a,e,b):0;c&&(r()[c>>2]=b)},emscripten_glGetShaderPrecisionFormat:(a,b,c,e)=>{a=D.getShaderPrecisionFormat(a,b);r()[c>>2]=a.rangeMin;r()[c+4>>2]=a.rangeMax;r()[e>>2]=a.precision},emscripten_glGetShaderiv:(a,b,c)=>{c?35716==b?(a=D.getShaderInfoLog(H[a]),null===a&&(a="(unknown error)"),a=a?a.length+1:0,r()[c>>2]=a):35720==b?(a=(a=D.getShaderSource(H[a]))?a.length+1:0,r()[c>>2]=a):r()[c>>2]=D.getShaderParameter(H[a],b):M||=
1281},emscripten_glGetString:sb,emscripten_glGetStringi:tb,emscripten_glGetUniformLocation:(a,b)=>{b=Ka(b);if(a=E[a]){var c=a,e=c.u,f=c.M,h;if(!e){c.u=e={};c.L={};var l=D.getProgramParameter(c,35718);for(h=0;h<l;++h){var m=D.getActiveUniform(c,h);var p=m.name;m=m.size;var v=ub(p);v=0<v?p.slice(0,v):p;var T=c.G;c.G+=m;f[v]=[m,T];for(p=0;p<m;++p)e[T]=p,c.L[T++]=v}}c=a.u;e=0;f=b;h=ub(b);0<h&&(e=parseInt(b.slice(h+1))>>>0,f=b.slice(0,h));if((f=a.M[f])&&e<f[0]&&(e+=f[1],c[e]=c[e]||D.getUniformLocation(a,
b)))return e}else M||=1281;return-1},emscripten_glInvalidateFramebuffer:(a,b,c)=>{for(var e=jb[b],f=0;f<b;f++)e[f]=r()[c+4*f>>2];D.invalidateFramebuffer(a,e)},emscripten_glInvalidateSubFramebuffer:(a,b,c,e,f,h,l)=>{for(var m=jb[b],p=0;p<b;p++)m[p]=r()[c+4*p>>2];D.invalidateSubFramebuffer(a,m,e,f,h,l)},emscripten_glIsSync:a=>D.isSync(K[a]),emscripten_glIsTexture:a=>(a=G[a])?D.isTexture(a):0,emscripten_glLineWidth:a=>D.lineWidth(a),emscripten_glLinkProgram:a=>{a=E[a];D.linkProgram(a);a.u=0;a.M={}},
emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL:(a,b,c,e,f,h)=>{D.K.multiDrawArraysInstancedBaseInstanceWEBGL(a,r(),b>>2,r(),c>>2,r(),e>>2,t(),f>>2,h)},emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a,b,c,e,f,h,l,m)=>{D.K.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,r(),b>>2,c,r(),e>>2,r(),f>>2,r(),h>>2,t(),l>>2,m)},emscripten_glPixelStorei:(a,b)=>{3317==a?bb=b:3314==a&&(cb=b);D.pixelStorei(a,b)},emscripten_glQueryCounterEXT:(a,b)=>{D.g.queryCounterEXT(I[a],
b)},emscripten_glReadBuffer:a=>D.readBuffer(a),emscripten_glReadPixels:(a,b,c,e,f,h,l)=>{if(2<=O.version)if(D.D)D.readPixels(a,b,c,e,f,h,l);else{var m=vb(h);l>>>=31-Math.clz32(m.BYTES_PER_ELEMENT);D.readPixels(a,b,c,e,f,h,m,l)}else(m=wb(h,f,c,e,l))?D.readPixels(a,b,c,e,f,h,m):M||=1280},emscripten_glRenderbufferStorage:(a,b,c,e)=>D.renderbufferStorage(a,b,c,e),emscripten_glRenderbufferStorageMultisample:(a,b,c,e,f)=>D.renderbufferStorageMultisample(a,b,c,e,f),emscripten_glSamplerParameterf:(a,b,c)=>
{D.samplerParameterf(J[a],b,c)},emscripten_glSamplerParameteri:(a,b,c)=>{D.samplerParameteri(J[a],b,c)},emscripten_glSamplerParameteriv:(a,b,c)=>{c=r()[c>>2];D.samplerParameteri(J[a],b,c)},emscripten_glScissor:(a,b,c,e)=>D.scissor(a,b,c,e),emscripten_glShaderSource:(a,b,c,e)=>{for(var f="",h=0;h<b;++h){var l=e?t()[e+4*h>>2]:void 0;f+=Ka(t()[c+4*h>>2],l)}D.shaderSource(H[a],f)},emscripten_glStencilFunc:(a,b,c)=>D.stencilFunc(a,b,c),emscripten_glStencilFuncSeparate:(a,b,c,e)=>D.stencilFuncSeparate(a,
b,c,e),emscripten_glStencilMask:a=>D.stencilMask(a),emscripten_glStencilMaskSeparate:(a,b)=>D.stencilMaskSeparate(a,b),emscripten_glStencilOp:(a,b,c)=>D.stencilOp(a,b,c),emscripten_glStencilOpSeparate:(a,b,c,e)=>D.stencilOpSeparate(a,b,c,e),emscripten_glTexImage2D:(a,b,c,e,f,h,l,m,p)=>{if(2<=O.version){if(D.o){D.texImage2D(a,b,c,e,f,h,l,m,p);return}if(p){var v=vb(m);p>>>=31-Math.clz32(v.BYTES_PER_ELEMENT);D.texImage2D(a,b,c,e,f,h,l,m,v,p);return}}v=p?wb(m,l,e,f,p):null;D.texImage2D(a,b,c,e,f,h,l,
m,v)},emscripten_glTexParameterf:(a,b,c)=>D.texParameterf(a,b,c),emscripten_glTexParameterfv:(a,b,c)=>{c=u()[c>>2];D.texParameterf(a,b,c)},emscripten_glTexParameteri:(a,b,c)=>D.texParameteri(a,b,c),emscripten_glTexParameteriv:(a,b,c)=>{c=r()[c>>2];D.texParameteri(a,b,c)},emscripten_glTexStorage2D:(a,b,c,e,f)=>D.texStorage2D(a,b,c,e,f),emscripten_glTexSubImage2D:(a,b,c,e,f,h,l,m,p)=>{if(2<=O.version){if(D.o){D.texSubImage2D(a,b,c,e,f,h,l,m,p);return}if(p){var v=vb(m);D.texSubImage2D(a,b,c,e,f,h,l,
m,v,p>>>31-Math.clz32(v.BYTES_PER_ELEMENT));return}}p=p?wb(m,l,f,h,p):null;D.texSubImage2D(a,b,c,e,f,h,l,m,p)},emscripten_glUniform1f:(a,b)=>{D.uniform1f(P(a),b)},emscripten_glUniform1fv:(a,b,c)=>{if(2<=O.version)b&&D.uniform1fv(P(a),u(),c>>2,b);else{if(288>=b)for(var e=Q[b],f=0;f<b;++f)e[f]=u()[c+4*f>>2];else e=u().subarray(c>>2,c+4*b>>2);D.uniform1fv(P(a),e)}},emscripten_glUniform1i:(a,b)=>{D.uniform1i(P(a),b)},emscripten_glUniform1iv:(a,b,c)=>{if(2<=O.version)b&&D.uniform1iv(P(a),r(),c>>2,b);else{if(288>=
b)for(var e=xb[b],f=0;f<b;++f)e[f]=r()[c+4*f>>2];else e=r().subarray(c>>2,c+4*b>>2);D.uniform1iv(P(a),e)}},emscripten_glUniform2f:(a,b,c)=>{D.uniform2f(P(a),b,c)},emscripten_glUniform2fv:(a,b,c)=>{if(2<=O.version)b&&D.uniform2fv(P(a),u(),c>>2,2*b);else{if(144>=b){b*=2;for(var e=Q[b],f=0;f<b;f+=2)e[f]=u()[c+4*f>>2],e[f+1]=u()[c+(4*f+4)>>2]}else e=u().subarray(c>>2,c+8*b>>2);D.uniform2fv(P(a),e)}},emscripten_glUniform2i:(a,b,c)=>{D.uniform2i(P(a),b,c)},emscripten_glUniform2iv:(a,b,c)=>{if(2<=O.version)b&&
D.uniform2iv(P(a),r(),c>>2,2*b);else{if(144>=b){b*=2;for(var e=xb[b],f=0;f<b;f+=2)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>2]}else e=r().subarray(c>>2,c+8*b>>2);D.uniform2iv(P(a),e)}},emscripten_glUniform3f:(a,b,c,e)=>{D.uniform3f(P(a),b,c,e)},emscripten_glUniform3fv:(a,b,c)=>{if(2<=O.version)b&&D.uniform3fv(P(a),u(),c>>2,3*b);else{if(96>=b){b*=3;for(var e=Q[b],f=0;f<b;f+=3)e[f]=u()[c+4*f>>2],e[f+1]=u()[c+(4*f+4)>>2],e[f+2]=u()[c+(4*f+8)>>2]}else e=u().subarray(c>>2,c+12*b>>2);D.uniform3fv(P(a),e)}},
emscripten_glUniform3i:(a,b,c,e)=>{D.uniform3i(P(a),b,c,e)},emscripten_glUniform3iv:(a,b,c)=>{if(2<=O.version)b&&D.uniform3iv(P(a),r(),c>>2,3*b);else{if(96>=b){b*=3;for(var e=xb[b],f=0;f<b;f+=3)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>2],e[f+2]=r()[c+(4*f+8)>>2]}else e=r().subarray(c>>2,c+12*b>>2);D.uniform3iv(P(a),e)}},emscripten_glUniform4f:(a,b,c,e,f)=>{D.uniform4f(P(a),b,c,e,f)},emscripten_glUniform4fv:(a,b,c)=>{if(2<=O.version)b&&D.uniform4fv(P(a),u(),c>>2,4*b);else{if(72>=b){var e=Q[4*b],f=
u();c>>=2;b*=4;for(var h=0;h<b;h+=4){var l=c+h;e[h]=f[l];e[h+1]=f[l+1];e[h+2]=f[l+2];e[h+3]=f[l+3]}}else e=u().subarray(c>>2,c+16*b>>2);D.uniform4fv(P(a),e)}},emscripten_glUniform4i:(a,b,c,e,f)=>{D.uniform4i(P(a),b,c,e,f)},emscripten_glUniform4iv:(a,b,c)=>{if(2<=O.version)b&&D.uniform4iv(P(a),r(),c>>2,4*b);else{if(72>=b){b*=4;for(var e=xb[b],f=0;f<b;f+=4)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>2],e[f+2]=r()[c+(4*f+8)>>2],e[f+3]=r()[c+(4*f+12)>>2]}else e=r().subarray(c>>2,c+16*b>>2);D.uniform4iv(P(a),
e)}},emscripten_glUniformMatrix2fv:(a,b,c,e)=>{if(2<=O.version)b&&D.uniformMatrix2fv(P(a),!!c,u(),e>>2,4*b);else{if(72>=b){b*=4;for(var f=Q[b],h=0;h<b;h+=4)f[h]=u()[e+4*h>>2],f[h+1]=u()[e+(4*h+4)>>2],f[h+2]=u()[e+(4*h+8)>>2],f[h+3]=u()[e+(4*h+12)>>2]}else f=u().subarray(e>>2,e+16*b>>2);D.uniformMatrix2fv(P(a),!!c,f)}},emscripten_glUniformMatrix3fv:(a,b,c,e)=>{if(2<=O.version)b&&D.uniformMatrix3fv(P(a),!!c,u(),e>>2,9*b);else{if(32>=b){b*=9;for(var f=Q[b],h=0;h<b;h+=9)f[h]=u()[e+4*h>>2],f[h+1]=u()[e+
(4*h+4)>>2],f[h+2]=u()[e+(4*h+8)>>2],f[h+3]=u()[e+(4*h+12)>>2],f[h+4]=u()[e+(4*h+16)>>2],f[h+5]=u()[e+(4*h+20)>>2],f[h+6]=u()[e+(4*h+24)>>2],f[h+7]=u()[e+(4*h+28)>>2],f[h+8]=u()[e+(4*h+32)>>2]}else f=u().subarray(e>>2,e+36*b>>2);D.uniformMatrix3fv(P(a),!!c,f)}},emscripten_glUniformMatrix4fv:(a,b,c,e)=>{if(2<=O.version)b&&D.uniformMatrix4fv(P(a),!!c,u(),e>>2,16*b);else{if(18>=b){var f=Q[16*b],h=u();e>>=2;b*=16;for(var l=0;l<b;l+=16){var m=e+l;f[l]=h[m];f[l+1]=h[m+1];f[l+2]=h[m+2];f[l+3]=h[m+3];f[l+
4]=h[m+4];f[l+5]=h[m+5];f[l+6]=h[m+6];f[l+7]=h[m+7];f[l+8]=h[m+8];f[l+9]=h[m+9];f[l+10]=h[m+10];f[l+11]=h[m+11];f[l+12]=h[m+12];f[l+13]=h[m+13];f[l+14]=h[m+14];f[l+15]=h[m+15]}}else f=u().subarray(e>>2,e+64*b>>2);D.uniformMatrix4fv(P(a),!!c,f)}},emscripten_glUseProgram:a=>{a=E[a];D.useProgram(a);D.N=a},emscripten_glVertexAttrib1f:(a,b)=>D.vertexAttrib1f(a,b),emscripten_glVertexAttrib2fv:(a,b)=>{D.vertexAttrib2f(a,u()[b>>2],u()[b+4>>2])},emscripten_glVertexAttrib3fv:(a,b)=>{D.vertexAttrib3f(a,u()[b>>
2],u()[b+4>>2],u()[b+8>>2])},emscripten_glVertexAttrib4fv:(a,b)=>{D.vertexAttrib4f(a,u()[b>>2],u()[b+4>>2],u()[b+8>>2],u()[b+12>>2])},emscripten_glVertexAttribDivisor:(a,b)=>{D.vertexAttribDivisor(a,b)},emscripten_glVertexAttribIPointer:(a,b,c,e,f)=>{D.vertexAttribIPointer(a,b,c,e,f)},emscripten_glVertexAttribPointer:(a,b,c,e,f,h)=>{D.vertexAttribPointer(a,b,c,!!e,f,h)},emscripten_glViewport:(a,b,c,e)=>D.viewport(a,b,c,e),emscripten_glWaitSync:(a,b,c,e)=>{D.waitSync(K[a],b,(c>>>0)+4294967296*e)},
emscripten_resize_heap:a=>{var b=q().length;a>>>=0;if(a<=b||2147483648<a)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+.2/c);e=Math.min(e,a+100663296);a:{e=(Math.min(2147483648,65536*Math.ceil(Math.max(a,e)/65536))-g.buffer.byteLength+65535)/65536|0;try{g.grow(e);n();var f=1;break a}catch(h){}f=void 0}if(f)return!0}return!1},emscripten_webgl_enable_extension:function(a,b){a=Za[a];b=Ka(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Pa(D);"OES_vertex_array_object"==b&&Qa(D);"WEBGL_draw_buffers"==
b&&Ra(D);"WEBGL_draw_instanced_base_vertex_base_instance"==b&&Sa(D);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&Ta(D);"WEBGL_multi_draw"==b&&(D.T=D.getExtension("WEBGL_multi_draw"));"EXT_polygon_offset_clamp"==b&&(D.P=D.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(D.O=D.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==b&&(D.Y=D.getExtension("WEBGL_polygon_mode"));return!!a.v.getExtension(b)},emscripten_webgl_get_current_context:()=>O?O.handle:0,emscripten_webgl_make_context_current:a=>
{O=Za[a];w.$=D=O?.v;return!a||D?0:-5},environ_get:(a,b)=>{var c=0;Ab().forEach((e,f)=>{var h=b+c;f=t()[a+4*f>>2]=h;for(h=0;h<e.length;++h)d()[f++]=e.charCodeAt(h);d()[f]=0;c+=e.length+1});return 0},environ_sizes_get:(a,b)=>{var c=Ab();t()[a>>2]=c.length;var e=0;c.forEach(f=>e+=f.length+1);t()[b>>2]=e;return 0},fd_close:()=>52,fd_pread:function(){return 52},fd_read:()=>52,fd_seek:function(){return 70},fd_write:(a,b,c,e)=>{for(var f=0,h=0;h<c;h++){var l=t()[b>>2],m=t()[b+4>>2];b+=8;for(var p=0;p<m;p++){var v=
q()[l+p],T=Bb[a];0===v||10===v?((1===a?na:y)(Ja(T)),T.length=0):T.push(v)}f+=m}t()[e>>2]=f;return 0},glDeleteTextures:hb,glGetIntegerv:ob,glGetString:sb,glGetStringi:tb,invoke_ii:bc,invoke_iii:cc,invoke_iiii:dc,invoke_iiiii:ec,invoke_iiiiiii:fc,invoke_vi:gc,invoke_vii:hc,invoke_viii:ic,invoke_viiii:jc,invoke_viiiiiii:kc,proc_exit:Na,skwasm_captureImageBitmap:Eb,skwasm_connectThread:Fb,skwasm_createGlTextureFromTextureSource:Gb,skwasm_createOffscreenCanvas:Hb,skwasm_dispatchDisposeSurface:Ib,skwasm_dispatchRasterizeImage:Jb,
skwasm_dispatchRenderPictures:Kb,skwasm_disposeAssociatedObjectOnThread:Lb,skwasm_getAssociatedObject:Mb,skwasm_postRasterizeResult:Nb,skwasm_resizeCanvas:Ob,skwasm_resolveAndPostImages:Pb,skwasm_setAssociatedObjectOnThread:Qb},W=function(){function a(c){W=c.exports;w.wasmExports=W;g=W.memory;w.wasmMemory=g;n();S=W.__indirect_function_table;ta.unshift(W.__wasm_call_ctors);z--;0==z&&(null!==va&&(clearInterval(va),va=null),A&&(c=A,A=null,c()));return W}var b={env:lc,wasi_snapshot_preview1:lc};z++;if(w.instantiateWasm)try{return w.instantiateWasm(b,
a)}catch(c){y(`Module.instantiateWasm callback failed with error: ${c}`),fa(c)}ya??=xa("skwasm_st.wasm")?"skwasm_st.wasm":x+"skwasm_st.wasm";Ba(b,function(c){a(c.instance,c.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,c,e,f)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,c,e,f);w._canvas_save=a=>(w._canvas_save=W.canvas_save)(a);w._canvas_restore=a=>(w._canvas_restore=W.canvas_restore)(a);w._canvas_restoreToCount=(a,b)=>(w._canvas_restoreToCount=W.canvas_restoreToCount)(a,b);
w._canvas_getSaveCount=a=>(w._canvas_getSaveCount=W.canvas_getSaveCount)(a);w._canvas_translate=(a,b,c)=>(w._canvas_translate=W.canvas_translate)(a,b,c);w._canvas_scale=(a,b,c)=>(w._canvas_scale=W.canvas_scale)(a,b,c);w._canvas_rotate=(a,b)=>(w._canvas_rotate=W.canvas_rotate)(a,b);w._canvas_skew=(a,b,c)=>(w._canvas_skew=W.canvas_skew)(a,b,c);w._canvas_transform=(a,b)=>(w._canvas_transform=W.canvas_transform)(a,b);w._canvas_clipRect=(a,b,c,e)=>(w._canvas_clipRect=W.canvas_clipRect)(a,b,c,e);
w._canvas_clipRRect=(a,b,c)=>(w._canvas_clipRRect=W.canvas_clipRRect)(a,b,c);w._canvas_clipPath=(a,b,c)=>(w._canvas_clipPath=W.canvas_clipPath)(a,b,c);w._canvas_drawColor=(a,b,c)=>(w._canvas_drawColor=W.canvas_drawColor)(a,b,c);w._canvas_drawLine=(a,b,c,e,f,h)=>(w._canvas_drawLine=W.canvas_drawLine)(a,b,c,e,f,h);w._canvas_drawPaint=(a,b)=>(w._canvas_drawPaint=W.canvas_drawPaint)(a,b);w._canvas_drawRect=(a,b,c)=>(w._canvas_drawRect=W.canvas_drawRect)(a,b,c);
w._canvas_drawRRect=(a,b,c)=>(w._canvas_drawRRect=W.canvas_drawRRect)(a,b,c);w._canvas_drawDRRect=(a,b,c,e)=>(w._canvas_drawDRRect=W.canvas_drawDRRect)(a,b,c,e);w._canvas_drawOval=(a,b,c)=>(w._canvas_drawOval=W.canvas_drawOval)(a,b,c);w._canvas_drawCircle=(a,b,c,e,f)=>(w._canvas_drawCircle=W.canvas_drawCircle)(a,b,c,e,f);w._canvas_drawArc=(a,b,c,e,f,h)=>(w._canvas_drawArc=W.canvas_drawArc)(a,b,c,e,f,h);w._canvas_drawPath=(a,b,c)=>(w._canvas_drawPath=W.canvas_drawPath)(a,b,c);
w._canvas_drawShadow=(a,b,c,e,f,h)=>(w._canvas_drawShadow=W.canvas_drawShadow)(a,b,c,e,f,h);w._canvas_drawParagraph=(a,b,c,e)=>(w._canvas_drawParagraph=W.canvas_drawParagraph)(a,b,c,e);w._canvas_drawPicture=(a,b)=>(w._canvas_drawPicture=W.canvas_drawPicture)(a,b);w._canvas_drawImage=(a,b,c,e,f,h)=>(w._canvas_drawImage=W.canvas_drawImage)(a,b,c,e,f,h);w._canvas_drawImageRect=(a,b,c,e,f,h)=>(w._canvas_drawImageRect=W.canvas_drawImageRect)(a,b,c,e,f,h);
w._canvas_drawImageNine=(a,b,c,e,f,h)=>(w._canvas_drawImageNine=W.canvas_drawImageNine)(a,b,c,e,f,h);w._canvas_drawVertices=(a,b,c,e)=>(w._canvas_drawVertices=W.canvas_drawVertices)(a,b,c,e);w._canvas_drawPoints=(a,b,c,e,f)=>(w._canvas_drawPoints=W.canvas_drawPoints)(a,b,c,e,f);w._canvas_drawAtlas=(a,b,c,e,f,h,l,m,p)=>(w._canvas_drawAtlas=W.canvas_drawAtlas)(a,b,c,e,f,h,l,m,p);w._canvas_getTransform=(a,b)=>(w._canvas_getTransform=W.canvas_getTransform)(a,b);
w._canvas_getLocalClipBounds=(a,b)=>(w._canvas_getLocalClipBounds=W.canvas_getLocalClipBounds)(a,b);w._canvas_getDeviceClipBounds=(a,b)=>(w._canvas_getDeviceClipBounds=W.canvas_getDeviceClipBounds)(a,b);w._contourMeasureIter_create=(a,b,c)=>(w._contourMeasureIter_create=W.contourMeasureIter_create)(a,b,c);w._contourMeasureIter_next=a=>(w._contourMeasureIter_next=W.contourMeasureIter_next)(a);w._contourMeasureIter_dispose=a=>(w._contourMeasureIter_dispose=W.contourMeasureIter_dispose)(a);
w._contourMeasure_dispose=a=>(w._contourMeasure_dispose=W.contourMeasure_dispose)(a);w._contourMeasure_length=a=>(w._contourMeasure_length=W.contourMeasure_length)(a);w._contourMeasure_isClosed=a=>(w._contourMeasure_isClosed=W.contourMeasure_isClosed)(a);w._contourMeasure_getPosTan=(a,b,c,e)=>(w._contourMeasure_getPosTan=W.contourMeasure_getPosTan)(a,b,c,e);w._contourMeasure_getSegment=(a,b,c,e)=>(w._contourMeasure_getSegment=W.contourMeasure_getSegment)(a,b,c,e);
w._skData_create=a=>(w._skData_create=W.skData_create)(a);w._skData_getPointer=a=>(w._skData_getPointer=W.skData_getPointer)(a);w._skData_getConstPointer=a=>(w._skData_getConstPointer=W.skData_getConstPointer)(a);w._skData_getSize=a=>(w._skData_getSize=W.skData_getSize)(a);w._skData_dispose=a=>(w._skData_dispose=W.skData_dispose)(a);w._imageFilter_createBlur=(a,b,c)=>(w._imageFilter_createBlur=W.imageFilter_createBlur)(a,b,c);
w._imageFilter_createDilate=(a,b)=>(w._imageFilter_createDilate=W.imageFilter_createDilate)(a,b);w._imageFilter_createErode=(a,b)=>(w._imageFilter_createErode=W.imageFilter_createErode)(a,b);w._imageFilter_createMatrix=(a,b)=>(w._imageFilter_createMatrix=W.imageFilter_createMatrix)(a,b);w._imageFilter_createFromColorFilter=a=>(w._imageFilter_createFromColorFilter=W.imageFilter_createFromColorFilter)(a);w._imageFilter_compose=(a,b)=>(w._imageFilter_compose=W.imageFilter_compose)(a,b);
w._imageFilter_dispose=a=>(w._imageFilter_dispose=W.imageFilter_dispose)(a);w._imageFilter_getFilterBounds=(a,b)=>(w._imageFilter_getFilterBounds=W.imageFilter_getFilterBounds)(a,b);w._colorFilter_createMode=(a,b)=>(w._colorFilter_createMode=W.colorFilter_createMode)(a,b);w._colorFilter_createMatrix=a=>(w._colorFilter_createMatrix=W.colorFilter_createMatrix)(a);w._colorFilter_createSRGBToLinearGamma=()=>(w._colorFilter_createSRGBToLinearGamma=W.colorFilter_createSRGBToLinearGamma)();
w._colorFilter_createLinearToSRGBGamma=()=>(w._colorFilter_createLinearToSRGBGamma=W.colorFilter_createLinearToSRGBGamma)();w._colorFilter_compose=(a,b)=>(w._colorFilter_compose=W.colorFilter_compose)(a,b);w._colorFilter_dispose=a=>(w._colorFilter_dispose=W.colorFilter_dispose)(a);w._maskFilter_createBlur=(a,b)=>(w._maskFilter_createBlur=W.maskFilter_createBlur)(a,b);w._maskFilter_dispose=a=>(w._maskFilter_dispose=W.maskFilter_dispose)(a);w._fontCollection_create=()=>(w._fontCollection_create=W.fontCollection_create)();
w._fontCollection_dispose=a=>(w._fontCollection_dispose=W.fontCollection_dispose)(a);w._typeface_create=a=>(w._typeface_create=W.typeface_create)(a);w._typeface_dispose=a=>(w._typeface_dispose=W.typeface_dispose)(a);w._typefaces_filterCoveredCodePoints=(a,b,c,e)=>(w._typefaces_filterCoveredCodePoints=W.typefaces_filterCoveredCodePoints)(a,b,c,e);w._fontCollection_registerTypeface=(a,b,c)=>(w._fontCollection_registerTypeface=W.fontCollection_registerTypeface)(a,b,c);
w._fontCollection_clearCaches=a=>(w._fontCollection_clearCaches=W.fontCollection_clearCaches)(a);w._image_createFromPicture=(a,b,c)=>(w._image_createFromPicture=W.image_createFromPicture)(a,b,c);w._image_createFromPixels=(a,b,c,e,f)=>(w._image_createFromPixels=W.image_createFromPixels)(a,b,c,e,f);w._image_createFromTextureSource=(a,b,c,e)=>(w._image_createFromTextureSource=W.image_createFromTextureSource)(a,b,c,e);w._image_ref=a=>(w._image_ref=W.image_ref)(a);
w._image_dispose=a=>(w._image_dispose=W.image_dispose)(a);w._image_getWidth=a=>(w._image_getWidth=W.image_getWidth)(a);w._image_getHeight=a=>(w._image_getHeight=W.image_getHeight)(a);w._paint_create=(a,b,c,e,f,h,l,m)=>(w._paint_create=W.paint_create)(a,b,c,e,f,h,l,m);w._paint_dispose=a=>(w._paint_dispose=W.paint_dispose)(a);w._paint_setShader=(a,b)=>(w._paint_setShader=W.paint_setShader)(a,b);w._paint_setImageFilter=(a,b)=>(w._paint_setImageFilter=W.paint_setImageFilter)(a,b);
w._paint_setColorFilter=(a,b)=>(w._paint_setColorFilter=W.paint_setColorFilter)(a,b);w._paint_setMaskFilter=(a,b)=>(w._paint_setMaskFilter=W.paint_setMaskFilter)(a,b);w._path_create=()=>(w._path_create=W.path_create)();w._path_dispose=a=>(w._path_dispose=W.path_dispose)(a);w._path_copy=a=>(w._path_copy=W.path_copy)(a);w._path_setFillType=(a,b)=>(w._path_setFillType=W.path_setFillType)(a,b);w._path_getFillType=a=>(w._path_getFillType=W.path_getFillType)(a);
w._path_moveTo=(a,b,c)=>(w._path_moveTo=W.path_moveTo)(a,b,c);w._path_relativeMoveTo=(a,b,c)=>(w._path_relativeMoveTo=W.path_relativeMoveTo)(a,b,c);w._path_lineTo=(a,b,c)=>(w._path_lineTo=W.path_lineTo)(a,b,c);w._path_relativeLineTo=(a,b,c)=>(w._path_relativeLineTo=W.path_relativeLineTo)(a,b,c);w._path_quadraticBezierTo=(a,b,c,e,f)=>(w._path_quadraticBezierTo=W.path_quadraticBezierTo)(a,b,c,e,f);
w._path_relativeQuadraticBezierTo=(a,b,c,e,f)=>(w._path_relativeQuadraticBezierTo=W.path_relativeQuadraticBezierTo)(a,b,c,e,f);w._path_cubicTo=(a,b,c,e,f,h,l)=>(w._path_cubicTo=W.path_cubicTo)(a,b,c,e,f,h,l);w._path_relativeCubicTo=(a,b,c,e,f,h,l)=>(w._path_relativeCubicTo=W.path_relativeCubicTo)(a,b,c,e,f,h,l);w._path_conicTo=(a,b,c,e,f,h)=>(w._path_conicTo=W.path_conicTo)(a,b,c,e,f,h);w._path_relativeConicTo=(a,b,c,e,f,h)=>(w._path_relativeConicTo=W.path_relativeConicTo)(a,b,c,e,f,h);
w._path_arcToOval=(a,b,c,e,f)=>(w._path_arcToOval=W.path_arcToOval)(a,b,c,e,f);w._path_arcToRotated=(a,b,c,e,f,h,l,m)=>(w._path_arcToRotated=W.path_arcToRotated)(a,b,c,e,f,h,l,m);w._path_relativeArcToRotated=(a,b,c,e,f,h,l,m)=>(w._path_relativeArcToRotated=W.path_relativeArcToRotated)(a,b,c,e,f,h,l,m);w._path_addRect=(a,b)=>(w._path_addRect=W.path_addRect)(a,b);w._path_addOval=(a,b)=>(w._path_addOval=W.path_addOval)(a,b);w._path_addArc=(a,b,c,e)=>(w._path_addArc=W.path_addArc)(a,b,c,e);
w._path_addPolygon=(a,b,c,e)=>(w._path_addPolygon=W.path_addPolygon)(a,b,c,e);w._path_addRRect=(a,b)=>(w._path_addRRect=W.path_addRRect)(a,b);w._path_addPath=(a,b,c,e)=>(w._path_addPath=W.path_addPath)(a,b,c,e);w._path_close=a=>(w._path_close=W.path_close)(a);w._path_reset=a=>(w._path_reset=W.path_reset)(a);w._path_contains=(a,b,c)=>(w._path_contains=W.path_contains)(a,b,c);w._path_transform=(a,b)=>(w._path_transform=W.path_transform)(a,b);
w._path_getBounds=(a,b)=>(w._path_getBounds=W.path_getBounds)(a,b);w._path_combine=(a,b,c)=>(w._path_combine=W.path_combine)(a,b,c);w._path_getSvgString=a=>(w._path_getSvgString=W.path_getSvgString)(a);w._pictureRecorder_create=()=>(w._pictureRecorder_create=W.pictureRecorder_create)();w._pictureRecorder_dispose=a=>(w._pictureRecorder_dispose=W.pictureRecorder_dispose)(a);w._pictureRecorder_beginRecording=(a,b)=>(w._pictureRecorder_beginRecording=W.pictureRecorder_beginRecording)(a,b);
w._pictureRecorder_endRecording=a=>(w._pictureRecorder_endRecording=W.pictureRecorder_endRecording)(a);w._picture_getCullRect=(a,b)=>(w._picture_getCullRect=W.picture_getCullRect)(a,b);w._picture_dispose=a=>(w._picture_dispose=W.picture_dispose)(a);w._picture_approximateBytesUsed=a=>(w._picture_approximateBytesUsed=W.picture_approximateBytesUsed)(a);w._shader_createLinearGradient=(a,b,c,e,f,h)=>(w._shader_createLinearGradient=W.shader_createLinearGradient)(a,b,c,e,f,h);
w._shader_createRadialGradient=(a,b,c,e,f,h,l,m)=>(w._shader_createRadialGradient=W.shader_createRadialGradient)(a,b,c,e,f,h,l,m);w._shader_createConicalGradient=(a,b,c,e,f,h,l,m)=>(w._shader_createConicalGradient=W.shader_createConicalGradient)(a,b,c,e,f,h,l,m);w._shader_createSweepGradient=(a,b,c,e,f,h,l,m,p)=>(w._shader_createSweepGradient=W.shader_createSweepGradient)(a,b,c,e,f,h,l,m,p);w._shader_dispose=a=>(w._shader_dispose=W.shader_dispose)(a);
w._runtimeEffect_create=a=>(w._runtimeEffect_create=W.runtimeEffect_create)(a);w._runtimeEffect_dispose=a=>(w._runtimeEffect_dispose=W.runtimeEffect_dispose)(a);w._runtimeEffect_getUniformSize=a=>(w._runtimeEffect_getUniformSize=W.runtimeEffect_getUniformSize)(a);w._shader_createRuntimeEffectShader=(a,b,c,e)=>(w._shader_createRuntimeEffectShader=W.shader_createRuntimeEffectShader)(a,b,c,e);w._shader_createFromImage=(a,b,c,e,f)=>(w._shader_createFromImage=W.shader_createFromImage)(a,b,c,e,f);
w._skString_allocate=a=>(w._skString_allocate=W.skString_allocate)(a);w._skString_getData=a=>(w._skString_getData=W.skString_getData)(a);w._skString_getLength=a=>(w._skString_getLength=W.skString_getLength)(a);w._skString_free=a=>(w._skString_free=W.skString_free)(a);w._skString16_allocate=a=>(w._skString16_allocate=W.skString16_allocate)(a);w._skString16_getData=a=>(w._skString16_getData=W.skString16_getData)(a);w._skString16_free=a=>(w._skString16_free=W.skString16_free)(a);
w._surface_create=()=>(w._surface_create=W.surface_create)();w._surface_getThreadId=a=>(w._surface_getThreadId=W.surface_getThreadId)(a);w._surface_setCallbackHandler=(a,b)=>(w._surface_setCallbackHandler=W.surface_setCallbackHandler)(a,b);w._surface_destroy=a=>(w._surface_destroy=W.surface_destroy)(a);var Yb=w._surface_dispose=a=>(Yb=w._surface_dispose=W.surface_dispose)(a);w._surface_renderPictures=(a,b,c)=>(w._surface_renderPictures=W.surface_renderPictures)(a,b,c);
var Wb=w._surface_renderPicturesOnWorker=(a,b,c,e,f)=>(Wb=w._surface_renderPicturesOnWorker=W.surface_renderPicturesOnWorker)(a,b,c,e,f);w._surface_rasterizeImage=(a,b,c)=>(w._surface_rasterizeImage=W.surface_rasterizeImage)(a,b,c);
var Zb=w._surface_rasterizeImageOnWorker=(a,b,c,e)=>(Zb=w._surface_rasterizeImageOnWorker=W.surface_rasterizeImageOnWorker)(a,b,c,e),Xb=w._surface_onRenderComplete=(a,b,c)=>(Xb=w._surface_onRenderComplete=W.surface_onRenderComplete)(a,b,c),$b=w._surface_onRasterizeComplete=(a,b,c)=>($b=w._surface_onRasterizeComplete=W.surface_onRasterizeComplete)(a,b,c);w._lineMetrics_create=(a,b,c,e,f,h,l,m,p)=>(w._lineMetrics_create=W.lineMetrics_create)(a,b,c,e,f,h,l,m,p);
w._lineMetrics_dispose=a=>(w._lineMetrics_dispose=W.lineMetrics_dispose)(a);w._lineMetrics_getHardBreak=a=>(w._lineMetrics_getHardBreak=W.lineMetrics_getHardBreak)(a);w._lineMetrics_getAscent=a=>(w._lineMetrics_getAscent=W.lineMetrics_getAscent)(a);w._lineMetrics_getDescent=a=>(w._lineMetrics_getDescent=W.lineMetrics_getDescent)(a);w._lineMetrics_getUnscaledAscent=a=>(w._lineMetrics_getUnscaledAscent=W.lineMetrics_getUnscaledAscent)(a);w._lineMetrics_getHeight=a=>(w._lineMetrics_getHeight=W.lineMetrics_getHeight)(a);
w._lineMetrics_getWidth=a=>(w._lineMetrics_getWidth=W.lineMetrics_getWidth)(a);w._lineMetrics_getLeft=a=>(w._lineMetrics_getLeft=W.lineMetrics_getLeft)(a);w._lineMetrics_getBaseline=a=>(w._lineMetrics_getBaseline=W.lineMetrics_getBaseline)(a);w._lineMetrics_getLineNumber=a=>(w._lineMetrics_getLineNumber=W.lineMetrics_getLineNumber)(a);w._lineMetrics_getStartIndex=a=>(w._lineMetrics_getStartIndex=W.lineMetrics_getStartIndex)(a);w._lineMetrics_getEndIndex=a=>(w._lineMetrics_getEndIndex=W.lineMetrics_getEndIndex)(a);
w._paragraph_dispose=a=>(w._paragraph_dispose=W.paragraph_dispose)(a);w._paragraph_getWidth=a=>(w._paragraph_getWidth=W.paragraph_getWidth)(a);w._paragraph_getHeight=a=>(w._paragraph_getHeight=W.paragraph_getHeight)(a);w._paragraph_getLongestLine=a=>(w._paragraph_getLongestLine=W.paragraph_getLongestLine)(a);w._paragraph_getMinIntrinsicWidth=a=>(w._paragraph_getMinIntrinsicWidth=W.paragraph_getMinIntrinsicWidth)(a);w._paragraph_getMaxIntrinsicWidth=a=>(w._paragraph_getMaxIntrinsicWidth=W.paragraph_getMaxIntrinsicWidth)(a);
w._paragraph_getAlphabeticBaseline=a=>(w._paragraph_getAlphabeticBaseline=W.paragraph_getAlphabeticBaseline)(a);w._paragraph_getIdeographicBaseline=a=>(w._paragraph_getIdeographicBaseline=W.paragraph_getIdeographicBaseline)(a);w._paragraph_getDidExceedMaxLines=a=>(w._paragraph_getDidExceedMaxLines=W.paragraph_getDidExceedMaxLines)(a);w._paragraph_layout=(a,b)=>(w._paragraph_layout=W.paragraph_layout)(a,b);
w._paragraph_getPositionForOffset=(a,b,c,e)=>(w._paragraph_getPositionForOffset=W.paragraph_getPositionForOffset)(a,b,c,e);w._paragraph_getClosestGlyphInfoAtCoordinate=(a,b,c,e,f,h)=>(w._paragraph_getClosestGlyphInfoAtCoordinate=W.paragraph_getClosestGlyphInfoAtCoordinate)(a,b,c,e,f,h);w._paragraph_getGlyphInfoAt=(a,b,c,e,f)=>(w._paragraph_getGlyphInfoAt=W.paragraph_getGlyphInfoAt)(a,b,c,e,f);w._paragraph_getWordBoundary=(a,b,c)=>(w._paragraph_getWordBoundary=W.paragraph_getWordBoundary)(a,b,c);
w._paragraph_getLineCount=a=>(w._paragraph_getLineCount=W.paragraph_getLineCount)(a);w._paragraph_getLineNumberAt=(a,b)=>(w._paragraph_getLineNumberAt=W.paragraph_getLineNumberAt)(a,b);w._paragraph_getLineMetricsAtIndex=(a,b)=>(w._paragraph_getLineMetricsAtIndex=W.paragraph_getLineMetricsAtIndex)(a,b);w._textBoxList_dispose=a=>(w._textBoxList_dispose=W.textBoxList_dispose)(a);w._textBoxList_getLength=a=>(w._textBoxList_getLength=W.textBoxList_getLength)(a);
w._textBoxList_getBoxAtIndex=(a,b,c)=>(w._textBoxList_getBoxAtIndex=W.textBoxList_getBoxAtIndex)(a,b,c);w._paragraph_getBoxesForRange=(a,b,c,e,f)=>(w._paragraph_getBoxesForRange=W.paragraph_getBoxesForRange)(a,b,c,e,f);w._paragraph_getBoxesForPlaceholders=a=>(w._paragraph_getBoxesForPlaceholders=W.paragraph_getBoxesForPlaceholders)(a);w._paragraph_getUnresolvedCodePoints=(a,b,c)=>(w._paragraph_getUnresolvedCodePoints=W.paragraph_getUnresolvedCodePoints)(a,b,c);
w._paragraphBuilder_create=(a,b)=>(w._paragraphBuilder_create=W.paragraphBuilder_create)(a,b);w._paragraphBuilder_dispose=a=>(w._paragraphBuilder_dispose=W.paragraphBuilder_dispose)(a);w._paragraphBuilder_addPlaceholder=(a,b,c,e,f,h)=>(w._paragraphBuilder_addPlaceholder=W.paragraphBuilder_addPlaceholder)(a,b,c,e,f,h);w._paragraphBuilder_addText=(a,b)=>(w._paragraphBuilder_addText=W.paragraphBuilder_addText)(a,b);
w._paragraphBuilder_getUtf8Text=(a,b)=>(w._paragraphBuilder_getUtf8Text=W.paragraphBuilder_getUtf8Text)(a,b);w._paragraphBuilder_pushStyle=(a,b)=>(w._paragraphBuilder_pushStyle=W.paragraphBuilder_pushStyle)(a,b);w._paragraphBuilder_pop=a=>(w._paragraphBuilder_pop=W.paragraphBuilder_pop)(a);w._paragraphBuilder_build=a=>(w._paragraphBuilder_build=W.paragraphBuilder_build)(a);w._unicodePositionBuffer_create=a=>(w._unicodePositionBuffer_create=W.unicodePositionBuffer_create)(a);
w._unicodePositionBuffer_getDataPointer=a=>(w._unicodePositionBuffer_getDataPointer=W.unicodePositionBuffer_getDataPointer)(a);w._unicodePositionBuffer_free=a=>(w._unicodePositionBuffer_free=W.unicodePositionBuffer_free)(a);w._lineBreakBuffer_create=a=>(w._lineBreakBuffer_create=W.lineBreakBuffer_create)(a);w._lineBreakBuffer_getDataPointer=a=>(w._lineBreakBuffer_getDataPointer=W.lineBreakBuffer_getDataPointer)(a);w._lineBreakBuffer_free=a=>(w._lineBreakBuffer_free=W.lineBreakBuffer_free)(a);
w._paragraphBuilder_setGraphemeBreaksUtf16=(a,b)=>(w._paragraphBuilder_setGraphemeBreaksUtf16=W.paragraphBuilder_setGraphemeBreaksUtf16)(a,b);w._paragraphBuilder_setWordBreaksUtf16=(a,b)=>(w._paragraphBuilder_setWordBreaksUtf16=W.paragraphBuilder_setWordBreaksUtf16)(a,b);w._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(w._paragraphBuilder_setLineBreaksUtf16=W.paragraphBuilder_setLineBreaksUtf16)(a,b);w._paragraphStyle_create=()=>(w._paragraphStyle_create=W.paragraphStyle_create)();
w._paragraphStyle_dispose=a=>(w._paragraphStyle_dispose=W.paragraphStyle_dispose)(a);w._paragraphStyle_setTextAlign=(a,b)=>(w._paragraphStyle_setTextAlign=W.paragraphStyle_setTextAlign)(a,b);w._paragraphStyle_setTextDirection=(a,b)=>(w._paragraphStyle_setTextDirection=W.paragraphStyle_setTextDirection)(a,b);w._paragraphStyle_setMaxLines=(a,b)=>(w._paragraphStyle_setMaxLines=W.paragraphStyle_setMaxLines)(a,b);
w._paragraphStyle_setHeight=(a,b)=>(w._paragraphStyle_setHeight=W.paragraphStyle_setHeight)(a,b);w._paragraphStyle_setTextHeightBehavior=(a,b,c)=>(w._paragraphStyle_setTextHeightBehavior=W.paragraphStyle_setTextHeightBehavior)(a,b,c);w._paragraphStyle_setEllipsis=(a,b)=>(w._paragraphStyle_setEllipsis=W.paragraphStyle_setEllipsis)(a,b);w._paragraphStyle_setStrutStyle=(a,b)=>(w._paragraphStyle_setStrutStyle=W.paragraphStyle_setStrutStyle)(a,b);
w._paragraphStyle_setTextStyle=(a,b)=>(w._paragraphStyle_setTextStyle=W.paragraphStyle_setTextStyle)(a,b);w._paragraphStyle_setApplyRoundingHack=(a,b)=>(w._paragraphStyle_setApplyRoundingHack=W.paragraphStyle_setApplyRoundingHack)(a,b);w._strutStyle_create=()=>(w._strutStyle_create=W.strutStyle_create)();w._strutStyle_dispose=a=>(w._strutStyle_dispose=W.strutStyle_dispose)(a);w._strutStyle_setFontFamilies=(a,b,c)=>(w._strutStyle_setFontFamilies=W.strutStyle_setFontFamilies)(a,b,c);
w._strutStyle_setFontSize=(a,b)=>(w._strutStyle_setFontSize=W.strutStyle_setFontSize)(a,b);w._strutStyle_setHeight=(a,b)=>(w._strutStyle_setHeight=W.strutStyle_setHeight)(a,b);w._strutStyle_setHalfLeading=(a,b)=>(w._strutStyle_setHalfLeading=W.strutStyle_setHalfLeading)(a,b);w._strutStyle_setLeading=(a,b)=>(w._strutStyle_setLeading=W.strutStyle_setLeading)(a,b);w._strutStyle_setFontStyle=(a,b,c)=>(w._strutStyle_setFontStyle=W.strutStyle_setFontStyle)(a,b,c);
w._strutStyle_setForceStrutHeight=(a,b)=>(w._strutStyle_setForceStrutHeight=W.strutStyle_setForceStrutHeight)(a,b);w._textStyle_create=()=>(w._textStyle_create=W.textStyle_create)();w._textStyle_copy=a=>(w._textStyle_copy=W.textStyle_copy)(a);w._textStyle_dispose=a=>(w._textStyle_dispose=W.textStyle_dispose)(a);w._textStyle_setColor=(a,b)=>(w._textStyle_setColor=W.textStyle_setColor)(a,b);w._textStyle_setDecoration=(a,b)=>(w._textStyle_setDecoration=W.textStyle_setDecoration)(a,b);
w._textStyle_setDecorationColor=(a,b)=>(w._textStyle_setDecorationColor=W.textStyle_setDecorationColor)(a,b);w._textStyle_setDecorationStyle=(a,b)=>(w._textStyle_setDecorationStyle=W.textStyle_setDecorationStyle)(a,b);w._textStyle_setDecorationThickness=(a,b)=>(w._textStyle_setDecorationThickness=W.textStyle_setDecorationThickness)(a,b);w._textStyle_setFontStyle=(a,b,c)=>(w._textStyle_setFontStyle=W.textStyle_setFontStyle)(a,b,c);
w._textStyle_setTextBaseline=(a,b)=>(w._textStyle_setTextBaseline=W.textStyle_setTextBaseline)(a,b);w._textStyle_clearFontFamilies=a=>(w._textStyle_clearFontFamilies=W.textStyle_clearFontFamilies)(a);w._textStyle_addFontFamilies=(a,b,c)=>(w._textStyle_addFontFamilies=W.textStyle_addFontFamilies)(a,b,c);w._textStyle_setFontSize=(a,b)=>(w._textStyle_setFontSize=W.textStyle_setFontSize)(a,b);w._textStyle_setLetterSpacing=(a,b)=>(w._textStyle_setLetterSpacing=W.textStyle_setLetterSpacing)(a,b);
w._textStyle_setWordSpacing=(a,b)=>(w._textStyle_setWordSpacing=W.textStyle_setWordSpacing)(a,b);w._textStyle_setHeight=(a,b)=>(w._textStyle_setHeight=W.textStyle_setHeight)(a,b);w._textStyle_setHalfLeading=(a,b)=>(w._textStyle_setHalfLeading=W.textStyle_setHalfLeading)(a,b);w._textStyle_setLocale=(a,b)=>(w._textStyle_setLocale=W.textStyle_setLocale)(a,b);w._textStyle_setBackground=(a,b)=>(w._textStyle_setBackground=W.textStyle_setBackground)(a,b);
w._textStyle_setForeground=(a,b)=>(w._textStyle_setForeground=W.textStyle_setForeground)(a,b);w._textStyle_addShadow=(a,b,c,e,f)=>(w._textStyle_addShadow=W.textStyle_addShadow)(a,b,c,e,f);w._textStyle_addFontFeature=(a,b,c)=>(w._textStyle_addFontFeature=W.textStyle_addFontFeature)(a,b,c);w._textStyle_setFontVariations=(a,b,c,e)=>(w._textStyle_setFontVariations=W.textStyle_setFontVariations)(a,b,c,e);w._vertices_create=(a,b,c,e,f,h,l)=>(w._vertices_create=W.vertices_create)(a,b,c,e,f,h,l);
w._vertices_dispose=a=>(w._vertices_dispose=W.vertices_dispose)(a);w._skwasm_isMultiThreaded=()=>(w._skwasm_isMultiThreaded=W.skwasm_isMultiThreaded)();var qb=a=>(qb=W.malloc)(a),ac=(a,b)=>(ac=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),Sb=a=>(Sb=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)();function cc(a,b,c){var e=Z();try{return S.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}
function hc(a,b,c){var e=Z();try{S.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function bc(a,b){var c=Z();try{return S.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function ic(a,b,c,e){var f=Z();try{S.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function dc(a,b,c,e){var f=Z();try{return S.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function jc(a,b,c,e,f){var h=Z();try{S.get(a)(b,c,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}
function kc(a,b,c,e,f,h,l,m){var p=Z();try{S.get(a)(b,c,e,f,h,l,m)}catch(v){Y(p);if(v!==v+0)throw v;X(1,0)}}function gc(a,b){var c=Z();try{S.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function fc(a,b,c,e,f,h,l){var m=Z();try{return S.get(a)(b,c,e,f,h,l)}catch(p){Y(m);if(p!==p+0)throw p;X(1,0)}}function ec(a,b,c,e,f){var h=Z();try{return S.get(a)(b,c,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=Tb;
w.addFunction=(a,b)=>{if(!U){U=new WeakMap;var c=S.length;if(U)for(var e=0;e<0+c;e++){var f=S.get(e);f&&U.set(f,e)}}if(c=U.get(a)||0)return c;if(Rb.length)c=Rb.pop();else{try{S.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}c=S.length-1}try{S.set(c,a)}catch(m){if(!(m instanceof TypeError))throw m;if("function"==typeof WebAssembly.Function){e=WebAssembly.Function;f={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};for(var h={parameters:[],
results:"v"==b[0]?[]:[f[b[0]]]},l=1;l<b.length;++l)h.parameters.push(f[b[l]]);b=new e(h,a)}else{e=[1];f=b.slice(0,1);b=b.slice(1);h={i:127,p:127,j:126,f:125,d:124,e:111};e.push(96);l=b.length;128>l?e.push(l):e.push(l%128|128,l>>7);for(l=0;l<b.length;++l)e.push(h[b[l]]);"v"==f?e.push(0):e.push(1,h[f]);b=[0,97,115,109,1,0,0,0,1];f=e.length;128>f?b.push(f):b.push(f%128|128,f>>7);b.push(...e);b.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);b=new WebAssembly.Module(new Uint8Array(b));b=(new WebAssembly.Instance(b,
{e:{f:a}})).exports.f}S.set(c,b)}U.set(a,c);return c};var mc,nc;A=function oc(){mc||pc();mc||(A=oc)};function pc(){if(!(0<z)){if(!nc&&(nc=1,Da(sa),0<z))return;mc||(mc=1,w.calledRun=1,oa||(Da(ta),ea(w),Da(ua)))}}pc();moduleRtn=ha;
return moduleRtn;
}
);
})();
export default skwasm_st;

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 917 B

File diff suppressed because one or more lines are too long

View File

@ -1,26 +0,0 @@
{{ '{{flutter_js}}' }}
{{ '{{flutter_build_config}}' }}
var flutterConfig = {
multiViewEnabled: flet.multiView,
assetBase: flet.assetBase
};
if (flet.webRenderer != "auto") {
flutterConfig.renderer = flet.webRenderer;
}
if (flet.noCdn) {
flutterConfig.canvasKitBaseUrl = flet.canvasKitBaseUrl;
flutterConfig.fontFallbackBaseUrl = flet.fontFallbackBaseUrl;
}
_flutter.loader.load({
config: flutterConfig,
serviceWorkerSettings: {
serviceWorkerVersion: {{ '{{flutter_service_worker_version}}' }},
},
onEntrypointLoaded: async function (engineInitializer) {
const engine = await engineInitializer.initializeEngine(flutterConfig);
flet.flutterApp = await engine.runApp();
flet.flutterAppResolve(flet.flutterApp);
}
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -2,52 +2,76 @@
<html> <html>
<head> <head>
<!--
If you are serving your web app in a path other than the root, change the
href value below to reflect the base path you are serving from.
The path provided below has to start and end with a slash "/" in order for
it to work correctly.
For more details:
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
This is a placeholder for base href that will be replaced by the value of
the `--base-href` argument provided to `flutter build`.
-->
<base href="{{ cookiecutter.base_url }}"> <base href="{{ cookiecutter.base_url }}">
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="{{ cookiecutter.project_description }}"> <meta name="description" content="{{ cookiecutter.project_description }}">
<!-- iOS meta tags & icons --> <!-- iOS meta tags & icons -->
<meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="{{ cookiecutter.product_name }}"> <meta name="apple-mobile-web-app-title" content="{{ cookiecutter.product_name }}">
<link rel="apple-touch-icon" href="icons/apple-touch-icon-192.png"> <link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon --> <!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png" /> <link rel="icon" type="image/png" href="favicon.png" />
<!-- Flet specific -->
<meta name="flet-route-url-strategy" content="{{ cookiecutter.route_url_strategy }}">
<meta name="flet-web-pyodide" content="true">
<title>{{ cookiecutter.product_name }}</title> <title>{{ cookiecutter.product_name }}</title>
<link rel="manifest" href="manifest.json"> <link rel="manifest" href="manifest.json">
<script> <script>
var flet = { var webRenderer = "{{ cookiecutter.web_renderer }}";
pyodide: true, var useColorEmoji = "{{ cookiecutter.use_color_emoji }}" == "true";
multiView: false, var pythonModuleName = "{{ cookiecutter.python_module_name }}";
noCdn: "{{ cookiecutter.no_cdn }}".toLowerCase() == "true",
webSocketEndpoint: "/ws",
assetBase: "/",
routeUrlStrategy: "{{ cookiecutter.route_url_strategy }}",
canvasKitBaseUrl: "/canvaskit/",
pyodideUrl: "/pyodide/pyodide.js",
pythonModuleName: "{{ cookiecutter.python_module_name }}",
webRenderer: "{{ cookiecutter.web_renderer }}",
fontFallbackBaseUrl: "assets/fonts/", // for Noto Emoji, use Google CDN
appPackageUrl: "assets/app/app.zip"
}
flet.flutterAppLoaded = new Promise((resolve) => {
flet.flutterAppResolve = resolve;
});
flet.flutterAppLoaded.then((flutterApp) => {
console.log("Flutter app loaded");
});
</script> </script>
<script src="python.js"></script> <script src="python.js"></script>
<script>
// The value below is injected by flutter build, do not touch.
const serviceWorkerVersion = null;
</script>
<!-- This script adds the flutter initialization JS code -->
<script src="flutter.js" defer></script>
</head> </head>
<body> <body>
<script src="flutter_bootstrap.js" async></script> <script>
window.addEventListener('load', function (ev) {
// Download main.dart.js
_flutter.loader.loadEntrypoint({
serviceWorker: {
serviceWorkerVersion: serviceWorkerVersion,
},
onEntrypointLoaded: function (engineInitializer) {
engineInitializer.initializeEngine({
renderer: webRenderer,
useColorEmoji: useColorEmoji,
}).then(function (appRunner) {
appRunner.runApp();
});
}
});
});
</script>
</body> </body>
</html> </html>

View File

@ -3,8 +3,8 @@
"short_name": "{{ cookiecutter.project_name }}", "short_name": "{{ cookiecutter.project_name }}",
"start_url": ".", "start_url": ".",
"display": "standalone", "display": "standalone",
"background_color": "{{ cookiecutter.pwa_background_color }}", "background_color": "#0175C2",
"theme_color": "{{ cookiecutter.pwa_theme_color }}", "theme_color": "#0175C2",
"description": "{{ cookiecutter.project_description }}", "description": "{{ cookiecutter.project_description }}",
"orientation": "portrait-primary", "orientation": "portrait-primary",
"prefer_related_applications": false, "prefer_related_applications": false,

File diff suppressed because it is too large Load Diff

View File

@ -1,137 +0,0 @@
{
"name": "pyodide",
"version": "0.27.5",
"description": "The Pyodide JavaScript package",
"keywords": [
"python",
"webassembly"
],
"homepage": "https://github.com/pyodide/pyodide",
"repository": {
"type": "git",
"url": "https://github.com/pyodide/pyodide"
},
"bugs": {
"url": "https://github.com/pyodide/pyodide/issues"
},
"license": "Apache-2.0",
"devDependencies": {
"@types/assert": "^1.5.6",
"@types/expect": "^24.3.0",
"@types/mocha": "^9.1.0",
"@types/node": "^20.8.4",
"@types/ws": "^8.5.3",
"chai": "^4.3.6",
"chai-as-promised": "^7.1.1",
"cross-env": "^7.0.3",
"dts-bundle-generator": "^8.1.1",
"esbuild": "^0.17.12",
"express": "^4.17.3",
"mocha": "^9.0.2",
"npm-run-all": "^4.1.5",
"nyc": "^15.1.0",
"prettier": "^2.2.1",
"sinon": "^18.0.0",
"ts-mocha": "^9.0.2",
"tsd": "^0.24.1",
"typedoc": "^0.27.6",
"typescript": "5.7",
"wabt": "^1.0.32"
},
"main": "pyodide.js",
"exports": {
".": {
"types": "./pyodide.d.ts",
"require": "./pyodide.js",
"import": "./pyodide.mjs"
},
"./ffi": {
"types": "./ffi.d.ts"
},
"./pyodide.asm.wasm": "./pyodide.asm.wasm",
"./pyodide.asm.js": "./pyodide.asm.js",
"./python_stdlib.zip": "./python_stdlib.zip",
"./pyodide.mjs": "./pyodide.mjs",
"./pyodide.js": "./pyodide.js",
"./package.json": "./package.json",
"./pyodide-lock.json": "./pyodide-lock.json"
},
"files": [
"pyodide.asm.js",
"pyodide.asm.wasm",
"python_stdlib.zip",
"pyodide.mjs",
"pyodide.js.map",
"pyodide.mjs.map",
"pyodide.d.ts",
"ffi.d.ts",
"pyodide-lock.json",
"console.html"
],
"browser": {
"child_process": false,
"crypto": false,
"fs": false,
"fs/promises": false,
"path": false,
"url": false,
"vm": false,
"ws": false
},
"scripts": {
"build-inner": "node esbuild.config.inner.mjs",
"build": "tsc --noEmit && node esbuild.config.outer.mjs",
"test": "npm-run-all test:*",
"test:unit": "cross-env TEST_NODE=1 ts-mocha --node-option=experimental-loader=./test/loader.mjs --node-option=experimental-wasm-stack-switching -p tsconfig.test.json \"test/unit/**\"",
"test:node": "cross-env TEST_NODE=1 mocha test/integration/**/*.test.js",
"test:browser": "mocha test/integration/**/*.test.js",
"tsc": "tsc --noEmit",
"coverage": "cross-env TEST_NODE=1 npm-run-all coverage:*",
"coverage:build": "nyc npm run test:node"
},
"mocha": {
"bail": false,
"timeout": 30000,
"full-trace": true,
"inline-diffs": true,
"check-leaks": false,
"global": [
"pyodide",
"page",
"chai"
]
},
"nyc": {
"reporter": [
"html",
"text-summary"
],
"include": [
"*.ts"
],
"all": true,
"clean": true,
"cache": false,
"instrument": false,
"checkCoverage": true,
"statements": 95,
"functions": 95,
"branches": 80,
"lines": 95
},
"tsd": {
"compilerOptions": {
"lib": [
"ES2017",
"DOM"
]
}
},
"dependencies": {
"ws": "^8.5.0"
},
"types": "./pyodide.d.ts",
"engines": {
"node": ">=18.0.0"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,98 +1,41 @@
self.pyodideUrl = null; importScripts("https://cdn.jsdelivr.net/pyodide/v0.24.1/full/pyodide.js");
self.appPackageUrl = null;
self.micropipIncludePre = false;
self.pythonModuleName = null; self.pythonModuleName = null;
self.documentUrl = null;
self.initialized = false; self.initialized = false;
self.flet_js = {}; // namespace for Python global functions self.flet_js = {}; // namespace for Python global functions
self.initPyodide = async function () { self.initPyodide = async function () {
try { self.pyodide = await loadPyodide();
importScripts(self.pyodideUrl); self.pyodide.registerJsModule("flet_js", flet_js);
self.pyodide = await loadPyodide(); flet_js.documentUrl = documentUrl;
self.pyodide.registerJsModule("flet_js", flet_js); await self.pyodide.runPythonAsync(`
self.pyodide.globals.set("app_package_url", self.appPackageUrl); import sys, runpy, traceback
self.pyodide.globals.set("python_module_name", self.pythonModuleName); from pyodide.http import pyfetch
self.pyodide.globals.set("micropip_include_pre", self.micropipIncludePre); response = await pyfetch("assets/app/app.zip")
flet_js.documentUrl = documentUrl; await response.unpack_archive()
await self.pyodide.loadPackage("micropip"); sys.path.append("__pypackages__")
await self.pyodide.runPythonAsync(` try:
import flet_js, micropip, os, runpy, sys, traceback runpy.run_module("${self.pythonModuleName}", run_name="__main__")
from pyodide.http import pyfetch except Exception as e:
traceback.print_exception(e)
py_args = flet_js.args.to_py() if flet_js.args else None `);
await self.flet_js.start_connection(self.receiveCallback);
if "app_package_url" in py_args: self.postMessage("initialized");
app_package_url = py_args["app_package_url"]
if app_package_url is None:
app_package_url = "assets/app/app.zip"
if "python_module_name" in py_args:
python_module_name = py_args["python_module_name"]
if python_module_name is None:
python_module_name = "main"
if "micropip_include_pre" in py_args:
micropip_include_pre = py_args["micropip_include_pre"]
if micropip_include_pre is None:
micropip_include_pre = False
print("python_module_name:", python_module_name)
print("micropip_include_pre:", micropip_include_pre)
if "script" not in py_args:
print("Downloading app archive")
response = await pyfetch(app_package_url)
await response.unpack_archive()
else:
print("Saving script to a file")
with open(f"{python_module_name}.py", "w") as f:
f.write(py_args["script"]);
pkgs_path = "__pypackages__"
if os.path.exists(pkgs_path):
print(f"Adding {pkgs_path} to sys.path")
sys.path.insert(0, pkgs_path)
if os.path.exists("requirements.txt"):
with open("requirements.txt", "r") as f:
deps = [line.rstrip() for line in f]
print("Loading requirements.txt:", deps)
await micropip.install(deps, pre=micropip_include_pre)
if "dependencies" in py_args:
await micropip.install(py_args["dependencies"], pre=micropip_include_pre)
# Execute app
runpy.run_module(python_module_name, run_name="__main__")
`);
await self.flet_js.start_connection(self.receiveCallback);
self.postMessage("initialized");
} catch (error) {
self.postMessage(error.toString());
}
}; };
self.receiveCallback = (message) => { self.receiveCallback = (message) => {
self.postMessage(message.toJs()); self.postMessage(message);
} }
self.onmessage = async (event) => { self.onmessage = async (event) => {
// run only once // run only once
if (!self.initialized) { if (!self.initialized) {
self.initialized = true; self.initialized = true;
self.pyodideUrl = event.data.pyodideUrl;
self.flet_js.args = event.data.args;
self.documentUrl = event.data.documentUrl; self.documentUrl = event.data.documentUrl;
self.appPackageUrl = event.data.appPackageUrl;
self.micropipIncludePre = event.data.micropipIncludePre;
self.pythonModuleName = event.data.pythonModuleName; self.pythonModuleName = event.data.pythonModuleName;
await self.initPyodide(); await self.initPyodide();
} else { } else {
// message // message
flet_js.send(event.data); flet_js.send(event.data);
} }
}; };

View File

@ -1,70 +1,28 @@
const defaultPyodideUrl = "https://cdn.jsdelivr.net/pyodide/v0.27.7/full/pyodide.js"; const pythonWorker = new Worker("python-worker.js");
let _apps = {}; let _onPythonInitialized = null;
let _documentUrl = document.URL; let pythonInitialized = new Promise((onSuccess) => _onPythonInitialized = onSuccess);
let _onReceivedCallback = null;
// This method is called from Dart on backend.connect() pythonWorker.onmessage = (event) => {
// dartOnMessage is called on backend.onMessage if (event.data == "initialized") {
// it accepts "data" of type JSUint8Array _onPythonInitialized();
globalThis.jsConnect = async function(appId, args, dartOnMessage) {
let app = {
"dartOnMessage": dartOnMessage
};
console.log(`Starting up Python worker: ${appId}, args: ${args}`);
_apps[appId] = app;
app.worker = new Worker("python-worker.js");
var error;
app.worker.onmessage = (event) => {
if (typeof event.data === "string") {
if (event.data != "initialized") {
error = event.data;
}
app.onPythonInitialized();
} else {
app.dartOnMessage(event.data);
}
};
let pythonInitialized = new Promise((resolveCallback) => app.onPythonInitialized = resolveCallback);
// initialize worker
app.worker.postMessage({
pyodideUrl: flet.noCdn ? flet.pyodideUrl : defaultPyodideUrl,
args: args,
documentUrl: _documentUrl,
appPackageUrl: flet.appPackageUrl,
micropipIncludePre: flet.micropipIncludePre,
pythonModuleName: flet.pythonModuleName
});
await pythonInitialized;
if (error) {
console.log("Python worker init error:", error);
throw error;
} else { } else {
console.log(`Python worker initialized: ${appId}`); _onReceivedCallback(event.data);
} }
};
documentUrl = document.URL;
// initialize worker
pythonWorker.postMessage({ documentUrl, pythonModuleName });
async function jsConnect(receiveCallback) {
_onReceivedCallback = receiveCallback;
await pythonInitialized;
console.log("Python engine initialized!");
} }
// Called from Dart on backend.send async function jsSend(data) {
// data is a message serialized to JSUint8Array pythonWorker.postMessage(data);
globalThis.jsSend = async function(appId, data) { }
if (appId in _apps) {
const app = _apps[appId];
app.worker.postMessage(data);
}
}
// Called from Dart on channel.disconnect
globalThis.jsDisconnect = async function(appId) {
if (appId in _apps) {
console.log(`Terminating Python worker: ${appId}`);
const app = _apps[appId];
delete _apps[appId];
app.worker.terminate();
app.worker.onmessage = null;
app.worker.onerror = null;
}
}

View File

@ -6,18 +6,18 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <record_windows/record_windows_plugin_c_api.h> #include <audioplayers_windows/audioplayers_windows_plugin.h>
#include <screen_retriever_windows/screen_retriever_windows_plugin_c_api.h> #include <screen_retriever/screen_retriever_plugin.h>
#include <serious_python_windows/serious_python_windows_plugin_c_api.h> #include <serious_python_windows/serious_python_windows_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h> #include <url_launcher_windows/url_launcher_windows.h>
#include <window_manager/window_manager_plugin.h> #include <window_manager/window_manager_plugin.h>
#include <window_to_front/window_to_front_plugin.h> #include <window_to_front/window_to_front_plugin.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
RecordWindowsPluginCApiRegisterWithRegistrar( AudioplayersWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("RecordWindowsPluginCApi")); registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin"));
ScreenRetrieverWindowsPluginCApiRegisterWithRegistrar( ScreenRetrieverPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ScreenRetrieverWindowsPluginCApi")); registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
SeriousPythonWindowsPluginCApiRegisterWithRegistrar( SeriousPythonWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SeriousPythonWindowsPluginCApi")); registry->GetRegistrarForPlugin("SeriousPythonWindowsPluginCApi"));
UrlLauncherWindowsRegisterWithRegistrar( UrlLauncherWindowsRegisterWithRegistrar(

View File

@ -3,8 +3,8 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
record_windows audioplayers_windows
screen_retriever_windows screen_retriever
serious_python_windows serious_python_windows
url_launcher_windows url_launcher_windows
window_manager window_manager