Compare commits

...
10 Commits
53 changed files with 137244 additions and 126802 deletions
+19
View File
@@ -0,0 +1,19 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Flutter Web (Chrome, Port 5000)",
"request": "launch",
"type": "dart",
"deviceId": "chrome",
"toolArgs": [
"--web-port",
"5000",
"--web-browser-flag",
"--disable-web-security",
"--web-browser-flag",
"--user-data-dir=C:/tmp/chrome_dev_test"
]
}
]
}
+15
View File
@@ -0,0 +1,15 @@
class AppVersion {
const AppVersion._();
static const String version = String.fromEnvironment(
'APP_VERSION',
defaultValue: '1.1.0',
);
static const String buildNumber = String.fromEnvironment(
'APP_BUILD_NUMBER',
defaultValue: '2',
);
static const String display = 'Version $version (Build $buildNumber)';
}
+6
View File
@@ -0,0 +1,6 @@
class EnvDirectus {
static const String directusPublicEndpoint = 'https://directus.joshihomeserver.ipv64.net';
static const String directusApiTokenBearer = '6mqGYbOCQAg7UAhIubb87wXcJVHTAsv9';
static const String directusTankUsersRest = 'TankUsers';
static const String directusTankStopRest = 'TankStopGuru01';
}
+7 -8
View File
@@ -1,21 +1,20 @@
import 'package:get/get.dart';
import '../models/tank_model.dart';
import '../models/tank_guru_directus_model.dart';
import '../pages/edit_view.dart';
import '../services/appwrite_service.dart';
import '../services/directus_service.dart';
class DetailController extends GetxController {
late TankModel tank;
final appwriteService = AppwriteService();
late TankGuruDirectusModel tank;
final directusService = DirectusService();
@override
void onInit() {
tank = Get.arguments as TankModel;
tank = Get.arguments as TankGuruDirectusModel;
super.onInit();
}
void deleteEntry() {
appwriteService
.deleteDocumentFromCollection(tank.szDocumentId)
void deleteEntry() async {
await directusService.deleteDocumentFromTable(tank.iD!)
.then((_) {
Get.back(
result: 'deleted',
+28 -24
View File
@@ -1,14 +1,17 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../helper/helper.dart' as helper;
import '../models/locationiq_model.dart';
import '../models/tank_model.dart';
import '../services/appwrite_service.dart';
//import '../models/tank_model.dart';
//import '../services/appwrite_service.dart';
import '../models/tank_guru_directus_model.dart';
import '../services/directus_service.dart';
import '../services/geolocation_service.dart';
import '../services/location_iq_service.dart';
import '../pages/home_view.dart';
class EditController extends GetxController {
final AppwriteService appwriteService = AppwriteService();
final DirectusService directusService = DirectusService();
// Form controllers
final dateController = TextEditingController();
@@ -23,8 +26,9 @@ class EditController extends GetxController {
final calculatedTotal = '0.00'.obs;
final isLoadingLocation = false.obs;
TankModel? editingTankModel;
TankGuruDirectusModel? editingTankModel;
LocationIQ? currentLocationIQ;
String currentUserIdentId = helper.kCurrentUserIdentId; // Use the current user identId from helper
@override
void onInit() {
@@ -32,7 +36,7 @@ class EditController extends GetxController {
// Check if we're editing or creating new
if (Get.arguments != null) {
editingTankModel = Get.arguments as TankModel;
editingTankModel = Get.arguments as TankGuruDirectusModel;
isNewEntry.value = false;
_loadExistingData();
} else {
@@ -47,12 +51,12 @@ class EditController extends GetxController {
}
void _loadExistingData() {
dateController.text = editingTankModel!.szDate;
odometerController.text = editingTankModel!.szOdometer;
litersController.text = editingTankModel!.szLiters;
pricePerLiterController.text = editingTankModel!.szPricePerLiter;
locationController.text = editingTankModel!.szLocation;
calculatedTotal.value = editingTankModel!.szPriceTotal;
dateController.text = editingTankModel!.tankDate!;
odometerController.text = editingTankModel!.odometer!;
litersController.text = editingTankModel!.liter!;
pricePerLiterController.text = editingTankModel!.pricePerLiter!;
locationController.text = editingTankModel!.standort!;
calculatedTotal.value = editingTankModel!.szPriceTotal!;
}
void _setDefaultDate() {
@@ -147,26 +151,26 @@ class EditController extends GetxController {
isLoading.value = true;
try {
final userId = await appwriteService.getCurrentUserId();
if (userId == null) {
final userId = currentUserIdentId;
if (userId == '') {
throw Exception('Benutzer nicht eingeloggt');
}
final data = {
'userId': userId,
'date': dateController.text,
'odometer': odometerController.text,
'liters': litersController.text.replaceAll(',', '.'),
'pricePerLiter': pricePerLiterController.text.replaceAll(',', '.'),
'location': locationController.text,
'UserIdentId': userId,
'TankDate': dateController.text,
'Odometer': odometerController.text,
'Liter': litersController.text.replaceAll(',', '.'),
'PricePerLiter': pricePerLiterController.text.replaceAll(',', '.'),
'Standort': locationController.text,
};
bool success;
if (isNewEntry.value) {
success = await appwriteService.createDocumentInCollection(data);
success = await directusService.createDocumentInTable(data);
} else {
success = await appwriteService.updateDocumentInCollection(
editingTankModel!.szDocumentId,
success = await directusService.updateDocumentInTable(
editingTankModel!.iD,
data,
);
}
@@ -181,7 +185,7 @@ class EditController extends GetxController {
backgroundColor: Colors.green[100],
colorText: Colors.green[900],
);
Get.offAllNamed(HomePage.namedRoute);
Get.offAllNamed(HomePage.namedRoute, arguments: {'userIdentId': userId});
} else {
throw Exception('Speichern fehlgeschlagen');
}
@@ -216,6 +220,6 @@ class EditController extends GetxController {
}
void gotToList() {
Get.offAllNamed(HomePage.namedRoute);
Get.offAllNamed(HomePage.namedRoute, arguments: {'userIdentId': currentUserIdentId});
}
}
+80 -14
View File
@@ -1,3 +1,4 @@
import 'dart:async';
import 'package:get/get.dart';
import '../models/econtrol_model.dart';
import '../services/geolocation_service.dart';
@@ -6,7 +7,10 @@ import '../services/econtrol_service.dart';
class GasstationsController extends GetxController {
final isLoading = false.obs;
final isLoadingLocation = false.obs;
final errorMessage = ''.obs;
final eControlData = <EControlModel>[].obs;
double? currentLatitude;
double? currentLongitude;
@override
void onInit() {
@@ -22,21 +26,83 @@ class GasstationsController extends GetxController {
Future<void> _loadStationInfosList() async {
isLoading.value = true;
var gelocationService = GeolocationService();
var eControlService = EControlService();
// check if location is available
await gelocationService.getCurrentLocation();
if (gelocationService.hasLocation) {
var listResult = await eControlService.getEControlData(
gelocationService.latitude,
gelocationService.longitude,
'DIE',
errorMessage.value = '';
try {
var geolocationService = GeolocationService();
var eControlService = EControlService();
// Standort-Abfrage mit Timeout versehen (z. B. 8 Sekunden),
// falls der Browser/User bei der Rechtefreigabe blockiert oder hängt
await geolocationService.getCurrentLocation().timeout(
const Duration(seconds: 8),
onTimeout: () {
throw TimeoutException('Standortabfrage hat zu lange gedauert.');
},
);
eControlData.value = listResult
.map((json) => EControlModel.fromJson(json))
.toList();
if (geolocationService.hasLocation) {
currentLatitude = geolocationService.latitude;
currentLongitude = geolocationService.longitude;
// for test only später wieder deaktivieren statische koordinaten
// currentLatitude = 47.938783246743355;
// currentLongitude = 13.762770926423814;
// ende Test only
final fuelData = await eControlService.getBothFuelData(
currentLatitude!,
currentLongitude!,
);
List<EControlModel> dieselStations = (fuelData['DIE'] as List)
.map((json) => EControlModel.fromJson(json))
.toList();
List<EControlModel> supStations = (fuelData['SUP'] as List)
.map((json) => EControlModel.fromJson(json))
.toList();
Map<int, EControlModel> combinedMap = {};
for (var station in dieselStations) {
if (station.id != null) {
combinedMap[station.id!] = station;
}
}
for (var supStation in supStations) {
if (supStation.id != null) {
if (combinedMap.containsKey(supStation.id)) {
final existingPrices = combinedMap[supStation.id!]!.prices ?? [];
final supPrices = supStation.prices ?? [];
combinedMap[supStation.id!]!.prices = [
...existingPrices,
...supPrices,
];
} else {
combinedMap[supStation.id!] = supStation;
}
}
}
eControlData.value = combinedMap.values.toList();
} else {
errorMessage.value =
'Standort konnte nicht ermittelt werden. Bitte prüfen Sie Ihre Browser-Freigabe.';
}
} on TimeoutException {
errorMessage.value =
'Standortabfrage zeitlich überschritten. Bitte erlauben Sie den Standortzugriff im Browser.';
} catch (e) {
errorMessage.value = 'Fehler beim Laden der Daten: ${e.toString()}';
} finally {
// Stellt sicher, dass das Lade-Icon auf jeden Fall verschwindet
isLoading.value = false;
update();
}
isLoading.value = false;
update();
}
void retry() {
_loadStationInfosList();
}
}
+11 -10
View File
@@ -1,8 +1,9 @@
import 'package:get/get.dart';
import '../models/tank_model.dart';
//import '../models/tank_model.dart';
import '../models/tank_guru_directus_model.dart';
class GraphController extends GetxController {
final listTankModel = <TankModel>[].obs;
final listTankModel = <TankGuruDirectusModel>[].obs;
final sumYearKm = 0.0.obs;
final sumYearLiters = 0.0.obs;
final sumYearPrice = 0.0.obs;
@@ -12,7 +13,7 @@ class GraphController extends GetxController {
@override
void onInit() {
if (Get.arguments != null) {
var args = Get.arguments as List<TankModel>;
var args = Get.arguments as List<TankGuruDirectusModel>;
listTankModel.addAll(args);
_calcSumms();
}
@@ -36,23 +37,23 @@ class GraphController extends GetxController {
// Sort by date to calculate km correctly
listTankModel.sort((a, b) {
var dateA = DateTime.tryParse(a.szDate)!;
var dateB = DateTime.tryParse(b.szDate)!;
var dateA = DateTime.tryParse(a.tankDate!)!;
var dateB = DateTime.tryParse(b.tankDate!)!;
return dateA.compareTo(dateB);
});
var firstOdometer = double.tryParse(listTankModel.first.szOdometer) ?? 0.0;
var lastOdometer = double.tryParse(listTankModel.last.szOdometer) ?? 0.0;
var firstOdometer = double.tryParse(listTankModel.first.odometer!) ?? 0.0;
var lastOdometer = double.tryParse(listTankModel.last.odometer!) ?? 0.0;
sumYearKm.value = lastOdometer - firstOdometer;
szTachostand.value = listTankModel.last.szOdometer;
szTachostand.value = listTankModel.last.odometer!;
double totalLiters = 0.0;
double totalPrice = 0.0;
for (var tank in listTankModel) {
totalLiters += double.tryParse(tank.szLiters) ?? 0.0;
totalPrice += double.tryParse(tank.szPriceTotal) ?? 0.0;
totalLiters += double.tryParse(tank.liter!) ?? 0.0;
totalPrice += double.tryParse(tank.szPriceTotal!) ?? 0.0;
}
sumYearLiters.value = totalLiters;
+33 -38
View File
@@ -1,21 +1,24 @@
import 'package:flutter_tank_web_app/pages/gasstations_view.dart';
import 'package:get/get.dart';
import '../models/tank_model.dart';
import '../models/tank_guru_directus_model.dart';
import '../pages/detail_view.dart';
import '../pages/edit_view.dart';
import '../services/appwrite_service.dart';
import '../pages/graph_view.dart';
import '../pages/gasstations_view.dart';
import '../services/directus_service.dart';
class HomeController extends GetxController {
final isLoading = false.obs;
final listTankModel = <TankModel>[].obs;
final appwriteService = AppwriteService();
//final listTankModel = <TankModel>[].obs;
final listTankModel = <TankGuruDirectusModel>[].obs;
//final appwriteService = AppwriteService();
final directusService = DirectusService();
final currentYear = DateTime.now().year.obs;
final argumentMap = Get.arguments as Map<String, dynamic>?;
@override
void onInit() {
_loadListDocument();
_loadListDirectus();
super.onInit();
}
@@ -27,45 +30,46 @@ class HomeController extends GetxController {
void changeYear(int year) {
currentYear.value = year;
_loadListDocument();
_loadListDirectus();
update();
}
Future<void> _loadListDocument() async {
Future<void> _loadListDirectus() async {
isLoading.value = true;
if (listTankModel.isNotEmpty) {
listTankModel.clear();
}
var userId = await appwriteService.getCurrentUserId();
var userId = argumentMap?['userIdentId'] as String?;
if (userId == null) {
//User nicht eingeloggt, evtl. zur Login-Seite navigieren
update();
return;
}
var resultList = await appwriteService.getDocumentsFromCollection(userId);
var resultList = await directusService.getTankGuruDataFromTable(userId);
if (resultList.isEmpty) {
//Dokumente erfolgreich geladen, hier können Sie die Liste verarbeiten
print('Dokumente wurden nicht geladen: ${resultList.length}');
} else {
for (var doc in resultList) {
var tankModel = TankModel.fromMap(doc.data);
listTankModel.add(tankModel);
}
listTankModel(
resultList
.map((tankStopJson) => TankGuruDirectusModel.fromJson(tankStopJson))
.toList(),
);
if (listTankModel.isNotEmpty) {
var sortList = listTankModel.where((tank) {
var year = (DateTime.tryParse(tank.szDate)!).year;
var year = (DateTime.tryParse(tank.tankDate!)!).year;
return year == currentYear.value;
}).toList();
listTankModel.clear();
listTankModel.addAll(sortList);
listTankModel.sort((a, b) {
var dateA = DateTime.tryParse(a.szDate)!;
var dateB = DateTime.tryParse(b.szDate)!;
return dateB.compareTo(dateA);
});
// listTankModel.sort((a, b) {
// var dateA = DateTime.tryParse(a.tankDate!)!;
// var dateB = DateTime.tryParse(b.tankDate!)!;
// return dateB.compareTo(dateA);
// });
for (var tank in listTankModel) {
print(
'SortTankModel: ${tank.szDate} - ${tank.szLiters}L - ${tank.szPricePerLiter}€/L - Total: ${tank.szPriceTotal}€',
'SortTankModel: ${tank.tankDate!} - ${tank.liter}L - ${tank.pricePerLiter}€/L - Total: ${tank.szPriceTotal}€',
);
}
}
@@ -75,27 +79,18 @@ class HomeController extends GetxController {
}
Future<void> logout() async {
var logoutSuccess = await appwriteService.logout();
if (logoutSuccess) {
Get.snackbar(
'Logout erfolgreich',
'Sie wurden abgemeldet.',
snackPosition: SnackPosition.BOTTOM,
);
Get.offAllNamed('/login-page');
} else {
Get.snackbar(
'Logout fehlgeschlagen',
'Bitte versuchen Sie es erneut.',
snackPosition: SnackPosition.BOTTOM,
);
}
Get.snackbar(
'Logout erfolgreich',
'Sie wurden abgemeldet.',
snackPosition: SnackPosition.BOTTOM,
);
Get.offAllNamed('/login-page');
}
Future<void> viewTankDetails(TankModel tank) async {
Future<void> viewTankDetails(TankGuruDirectusModel tank) async {
var result = await Get.toNamed(DetailPage.namedRoute, arguments: tank);
if (result == 'deleted') {
_loadListDocument();
_loadListDirectus();
}
}
+41 -10
View File
@@ -1,13 +1,16 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../helper/helper.dart' as helper;
import '../models/tank_user_model.dart';
import '../pages/home_view.dart';
import '../pages/signin_view.dart';
import '../services/appwrite_service.dart';
import '../services/directus_service.dart';
import '../helper/password_helper.dart';
class LoginController extends GetxController {
final emailController = TextEditingController();
final passwordController = TextEditingController();
final appwriteService = AppwriteService();
final directusService = DirectusService();
@override
void onReady() {}
@@ -18,29 +21,57 @@ class LoginController extends GetxController {
passwordController.dispose();
}
void login() async {
void newLoginDirectus() async {
var email = emailController.text;
var password = passwordController.text;
// Hier können Sie die Login-Logik implementieren
print('Login mit E-Mail: $email, Passwort: $password');
var loginSuccess = await appwriteService.login(email, password);
if (loginSuccess) {
var result = await directusService.getTankUserList();
if(result.isEmpty) {
Get.snackbar(
'Login fehlgeschlagen',
'Fehler beim Abrufen der Benutzerdaten. Bitte versuchen Sie es später erneut.',
snackPosition: SnackPosition.BOTTOM,
);
return;
}
var tankUserList = result.map((userJson) => TankUser.fromJson(userJson)).toList();
var identId = tankUserList.firstWhereOrNull((user) => user.email == email)?.userIdentId ?? '';
if(identId.isEmpty) {
Get.snackbar(
'Login fehlgeschlagen',
'Benutzer mit dieser E-Mail-Adresse wurde nicht gefunden.',
snackPosition: SnackPosition.BOTTOM,
);
return;
}
var storedHash = tankUserList.firstWhereOrNull((user) => user.email == email)?.passwordHash ?? '';
if(storedHash.isEmpty) {
Get.snackbar(
'Login fehlgeschlagen',
'Kein gespeicherter Passwort-Hash für diesen Benutzer gefunden.',
snackPosition: SnackPosition.BOTTOM,
);
return;
}
var isPassCorrect = await PasswordHelper.verifyPassword(password, storedHash);
if(isPassCorrect && identId.isNotEmpty) {
Get.snackbar(
'Login erfolgreich',
'Willkommen zurück!',
snackPosition: SnackPosition.BOTTOM,
);
Get.offAndToNamed(HomePage.namedRoute);
print('Login erfolgreich für Benutzer mit IdentId: $identId');
helper.kCurrentUserIdentId = identId; // Set the current user identId
Get.offAndToNamed(HomePage.namedRoute, arguments: {'userIdentId': identId});
} else {
Get.snackbar(
'Login fehlgeschlagen',
'Bitte überprüfen Sie Ihre E-Mail und Ihr Passwort und versuchen Sie es erneut.',
'Bitte überprüfen Sie Ihre E-Mail und Ihr Passwort und versuchen Sie es erneut\noder registrieren Sie sich, wenn Sie noch kein Konto haben.',
snackPosition: SnackPosition.BOTTOM,
);
}
}
void goToSignInPage() {
Get.offAndToNamed(SigninPage.namedRoute);
Get.offAndToNamed(SigninPage.namedRoute, arguments: {'userIdentId': ''});
}
}
+17 -10
View File
@@ -1,14 +1,19 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../pages/home_view.dart';
import '../pages/login_view.dart';
import '../services/appwrite_service.dart';
import '../services/directus_service.dart';
class SigninController extends GetxController {
final userNameController = TextEditingController();
final emailController = TextEditingController();
final passwordController = TextEditingController();
final appwriteService = AppwriteService();
final cityController = TextEditingController();
final countryController = TextEditingController();
final directusService = DirectusService();
late String userIdentId = Get.arguments['userIdentId'] ?? '';
@override
void onReady() {}
@@ -18,6 +23,8 @@ class SigninController extends GetxController {
userNameController.dispose();
emailController.dispose();
passwordController.dispose();
cityController.dispose();
countryController.dispose();
}
void register() async {
@@ -27,16 +34,15 @@ class SigninController extends GetxController {
var userName = userNameController.text;
var email = emailController.text;
var password = passwordController.text;
var city = cityController.text; // Hier können Sie die Stadt aus den Eingaben abrufen, falls erforderlich
var country = countryController.text; // Hier können Sie das Land aus den Eingaben abrufen, falls erforderlich
// Testausgabe
print(
'Registrieren mit Benutzername: $userName, E-Mail: $email, Passwort: $password',
);
//appwrite Registrierung und login Logik hier einfügen
var registrationSuccess = await appwriteService.register(
userName,
email,
password,
'Registrieren mit Benutzername: $userName, E-Mail: $email, Passwort: $password, Stadt: $city, Land: $country',
);
//directus Registrierung und login Logik hier einfügen
bool registrationSuccess = await directusService.register(userName, email, password, city, country);
//Nach erfolgreicher Registrierung Meldung und zur Startseite navigieren
if (registrationSuccess) {
Get.snackbar(
@@ -44,7 +50,8 @@ class SigninController extends GetxController {
'Willkommen, $userName!',
snackPosition: SnackPosition.BOTTOM,
);
Get.offAndToNamed(HomePage.namedRoute);
userIdentId = base64Encode(utf8.encode('$email:$password'));
Get.offAndToNamed(HomePage.namedRoute, arguments: {'userIdentId': userIdentId});
} else {
Get.snackbar(
'Registrierung fehlgeschlagen',
+2
View File
@@ -12,3 +12,5 @@ String getCurrentDate(DateTime date) {
var kListDropDownYear = <int>[
for (var year = DateTime.now().year; year >= 2020; year--) year
];
var kCurrentUserIdentId = '';
+120
View File
@@ -0,0 +1,120 @@
import 'dart:convert';
import 'dart:math';
import 'package:cryptography/cryptography.dart';
class PasswordHelper {
static const int _saltLength = 16;
static const int _hashLength = 32;
// 19 MiB, laut aktueller cryptography-Doku ein sinnvoller Startwert.
static const int _memory = 19 * 1024;
static const int _iterations = 2;
static const int _parallelism = 1;
static final Argon2id _algorithm = Argon2id(
memory: _memory,
iterations: _iterations,
parallelism: _parallelism,
hashLength: _hashLength,
);
/// Erstellt einen neuen Passwort-Hash inklusive zufälligem Salt.
///
/// Rückgabeformat:
/// argon2id$memory$iterations$parallelism$saltBase64$hashBase64
static Future<String> hashPassword(String password) async {
final salt = _generateSalt(_saltLength);
final secretKey = await _algorithm.deriveKeyFromPassword(
password: password,
nonce: salt,
);
final hashBytes = await secretKey.extractBytes();
final saltBase64 = base64UrlEncode(salt);
final hashBase64 = base64UrlEncode(hashBytes);
return 'argon2id'
'\$$_memory'
'\$$_iterations'
'\$$_parallelism'
'\$$saltBase64'
'\$$hashBase64';
}
/// Prüft ein Klartext-Passwort gegen den gespeicherten Hash.
static Future<bool> verifyPassword(
String password,
String storedHash,
) async {
try {
final parts = storedHash.split('\$');
if (parts.length != 6) {
return false;
}
if (parts[0] != 'argon2id') {
return false;
}
final memory = int.parse(parts[1]);
final iterations = int.parse(parts[2]);
final parallelism = int.parse(parts[3]);
final salt = base64Url.decode(parts[4]);
final expectedHash = base64Url.decode(parts[5]);
final algorithm = Argon2id(
memory: memory,
iterations: iterations,
parallelism: parallelism,
hashLength: expectedHash.length,
);
final secretKey = await algorithm.deriveKeyFromPassword(
password: password,
nonce: salt,
);
final calculatedHash = await secretKey.extractBytes();
return _constantTimeEquals(
calculatedHash,
expectedHash,
);
} catch (_) {
return false;
}
}
/// Erzeugt kryptographisch zufälligen Salt.
static List<int> _generateSalt(int length) {
final random = Random.secure();
return List<int>.generate(
length,
(_) => random.nextInt(256),
);
}
/// Vergleich ohne vorzeitigen Abbruch.
static bool _constantTimeEquals(
List<int> a,
List<int> b,
) {
if (a.length != b.length) {
return false;
}
var difference = 0;
for (var i = 0; i < a.length; i++) {
difference |= a[i] ^ b[i];
}
return difference == 0;
}
}
+2 -2
View File
@@ -22,9 +22,9 @@ class ChartData {
for (int i = 0; i < tankList.length; i++) {
final tank = tankList[i];
final liters = double.tryParse(tank.szLiters) ?? 0.0;
final liters = double.tryParse(tank.liter) ?? 0.0;
final priceTotal = double.tryParse(tank.szPriceTotal) ?? 0.0;
final pricePerLiter = double.tryParse(tank.szPricePerLiter) ?? 0.0;
final pricePerLiter = double.tryParse(tank.pricePerLiter) ?? 0.0;
points.add(
ChartDataPoint(
+57
View File
@@ -0,0 +1,57 @@
class TankGuruDirectusModel {
int? iD;
String? userIdentId;
String? tankDate;
String? odometer;
String? liter;
String? pricePerLiter;
String? standort;
String? createdAt;
String? szPriceTotal;
TankGuruDirectusModel(
{this.iD,
this.userIdentId,
this.tankDate,
this.odometer,
this.liter,
this.pricePerLiter,
this.standort,
this.createdAt,
this.szPriceTotal});
TankGuruDirectusModel.fromJson(Map<String, dynamic> json) {
iD = json['ID'];
userIdentId = json['UserIdentId'];
tankDate = json['TankDate'];
odometer = json['Odometer'];
liter = json['Liter'];
pricePerLiter = json['PricePerLiter'];
standort = json['Standort'];
createdAt = json['CreatedAt'];
// Berechnung des Gesamtpreises
if (liter != null && pricePerLiter != null) {
double literValue = double.tryParse(liter!) ?? 0.0;
double pricePerLiterValue = double.tryParse(pricePerLiter!) ?? 0.0;
szPriceTotal = (literValue * pricePerLiterValue).toStringAsFixed(2);
} else {
szPriceTotal = '0.00';
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['ID'] = iD;
data['UserIdentId'] = userIdentId;
data['TankDate'] = tankDate;
data['Odometer'] = odometer;
data['Liter'] = liter;
data['PricePerLiter'] = pricePerLiter;
data['Standort'] = standort;
data['CreatedAt'] = createdAt;
data['SzPriceTotal'] = szPriceTotal;
return data;
}
}
+44
View File
@@ -0,0 +1,44 @@
class TankUser {
int? iD;
String? userIdentId;
String? userName;
String? city;
String? country;
String? email;
String? passwordHash;
String? createdAt;
TankUser(
{this.iD,
this.userIdentId,
this.userName,
this.city,
this.country,
this.email,
this.passwordHash,
this.createdAt});
TankUser.fromJson(Map<String, dynamic> json) {
iD = json['ID'];
userIdentId = json['UserIdentId'];
userName = json['UserName'];
city = json['City'];
country = json['Country'];
email = json['Email'];
passwordHash = json['PasswordHash'];
createdAt = json['CreatedAt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['ID'] = iD;
data['UserIdentId'] = userIdentId;
data['UserName'] = userName;
data['City'] = city;
data['Country'] = country;
data['Email'] = email;
data['PasswordHash'] = passwordHash;
data['CreatedAt'] = createdAt;
return data;
}
}
+9 -7
View File
@@ -54,8 +54,8 @@ class DetailPage extends GetView<DetailController> {
DetailStatWidget(
icon: Icons.location_on,
label: 'Standort',
value: detailCtrl.tank.szLocation.isNotEmpty
? detailCtrl.tank.szLocation
value: detailCtrl.tank.standort!.isNotEmpty
? detailCtrl.tank.standort!
: 'Nicht angegeben',
iconColor: Colors.red,
),
@@ -63,7 +63,9 @@ class DetailPage extends GetView<DetailController> {
DetailStatWidget(
icon: Icons.calendar_today,
label: 'Datum',
value: detailCtrl.tank.szDate,
value: detailCtrl.tank.tankDate!.isNotEmpty
? detailCtrl.tank.tankDate!
: 'Nicht angegeben',
iconColor: Colors.blueGrey,
),
],
@@ -78,7 +80,7 @@ class DetailPage extends GetView<DetailController> {
DetailStatWidget(
icon: Icons.local_gas_station,
label: 'Liter getankt',
value: '${detailCtrl.tank.szLiters} L',
value: '${detailCtrl.tank.liter!} L',
iconColor: Colors.orange,
valueSize: 24,
valueWeight: FontWeight.bold,
@@ -90,7 +92,7 @@ class DetailPage extends GetView<DetailController> {
child: DetailStatWidget(
icon: Icons.euro,
label: 'Preis pro Liter',
value: '${detailCtrl.tank.szPricePerLiter}€',
value: '${detailCtrl.tank.pricePerLiter!}€',
iconColor: Colors.green,
),
),
@@ -99,7 +101,7 @@ class DetailPage extends GetView<DetailController> {
child: DetailStatWidget(
icon: Icons.receipt,
label: 'Gesamtpreis',
value: '${detailCtrl.tank.szPriceTotal}€',
value: '${detailCtrl.tank.szPriceTotal!}€',
iconColor: Colors.green[700]!,
valueWeight: FontWeight.bold,
),
@@ -118,7 +120,7 @@ class DetailPage extends GetView<DetailController> {
DetailStatWidget(
icon: Icons.speed,
label: 'Kilometerstand',
value: '${detailCtrl.tank.szOdometer} km',
value: '${detailCtrl.tank.odometer!} km',
iconColor: Colors.blue,
valueSize: 24,
valueWeight: FontWeight.bold,
+60 -2
View File
@@ -51,7 +51,7 @@ class GasstationsPage extends GetView<GasstationsController> {
strokeWidth: 3,
),
const SizedBox(height: 20),
Text(
const Text(
'Lade Tankstellen...',
style: TextStyle(
color: Colors.white,
@@ -62,7 +62,63 @@ class GasstationsPage extends GetView<GasstationsController> {
],
),
);
} else if (staCtrl.eControlData.isEmpty) {
}
// Anzeige bei Fehler/Unerreichbarkeit des E-Control Services
else if (staCtrl.errorMessage.isNotEmpty) {
return Center(
child: Container(
margin: const EdgeInsets.all(24),
padding: const EdgeInsets.all(32),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(10),
blurRadius: 10,
offset: const Offset(0, 5),
),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.cloud_off, size: 64, color: Colors.red[400]),
const SizedBox(height: 16),
Text(
'Service nicht erreichbar',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.blueGrey[800],
),
),
const SizedBox(height: 8),
Text(
staCtrl.errorMessage.value,
style: TextStyle(fontSize: 14, color: Colors.grey[600]),
textAlign: TextAlign.center,
),
const SizedBox(height: 20),
ElevatedButton.icon(
onPressed: () => staCtrl.retry(),
icon: const Icon(Icons.refresh),
label: const Text('Erneut versuchen'),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blueGrey[800],
foregroundColor: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
],
),
),
);
}
// Anzeige, wenn keine Tankstellen gefunden wurden
else if (staCtrl.eControlData.isEmpty) {
return Center(
child: Container(
margin: const EdgeInsets.all(24),
@@ -160,6 +216,8 @@ class GasstationsPage extends GetView<GasstationsController> {
return GasStationCard(
station: staCtrl.eControlData[index],
index: index,
originLatitude: staCtrl.currentLatitude!,
originLongitude: staCtrl.currentLongitude!,
);
},
),
+4 -4
View File
@@ -144,7 +144,7 @@ class HomePage extends GetView<HomeController> {
CrossAxisAlignment.start,
children: [
Text(
tank.szDate,
tank.tankDate!,
style: const TextStyle(
fontSize: 16,
fontWeight:
@@ -153,7 +153,7 @@ class HomePage extends GetView<HomeController> {
),
const SizedBox(height: 2),
Text(
'${tank.szLiters} Liter',
'${tank.liter!} Liter',
style: TextStyle(
fontSize: 14,
color: Colors.grey[600],
@@ -198,12 +198,12 @@ class HomePage extends GetView<HomeController> {
_buildInfoChip(
icon: Icons.euro,
label: 'Preis/L',
value: '${tank.szPricePerLiter}€',
value: '${tank.pricePerLiter!}€',
),
_buildInfoChip(
icon: Icons.speed,
label: 'Km-Stand',
value: '${tank.szOdometer} km',
value: '${tank.odometer!} km',
),
],
),
+19 -1
View File
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../config/app_version.dart';
import '../controller/login_controller.dart';
import '../widgets/my_login_widget.dart';
@@ -14,6 +15,23 @@ class LoginPage extends GetView<LoginController> {
var displayHeight = MediaQuery.of(context).size.height;
return SafeArea(
child: Scaffold(
bottomNavigationBar: Container(
alignment: Alignment.center,
color: Colors.blue.shade100,
height: 36,
child: Tooltip(
message: 'SemVer: ${AppVersion.version}+${AppVersion.buildNumber}',
child: Text(
AppVersion.display,
style: TextStyle(
color: Colors.blueGrey.shade700,
fontSize: 13,
fontWeight: FontWeight.w600,
letterSpacing: 0.3,
),
),
),
),
body: Container(
height: displayHeight,
width: displayWidth,
@@ -24,7 +42,7 @@ class LoginPage extends GetView<LoginController> {
color: Colors.blue.shade100,
child: SingleChildScrollView(
child: MyLoginWidget(
onButtonPressed: () => logCtrl.login(),
onButtonPressed: () => logCtrl.newLoginDirectus(),
signInOnTab: () => logCtrl.goToSignInPage(),
logCtrl: logCtrl,
),
+133
View File
@@ -0,0 +1,133 @@
import 'dart:convert';
import 'package:http/http.dart' as http;
import '../config/env_directus.dart';
import '../helper/password_helper.dart';
class DirectusService {
static final String endpoint = EnvDirectus.directusPublicEndpoint;
static final String apiTokenBearer = EnvDirectus.directusApiTokenBearer;
static final String tankUsersRest = EnvDirectus.directusTankUsersRest;
static final String tankStopRest = EnvDirectus.directusTankStopRest;
static Map<String, String> get headers => {
'Authorization': 'Bearer $apiTokenBearer',
'Content-Type': 'application/json',
};
Future<List<dynamic>> getTankUserList() async {
var client = http.Client();
String apiUrl = '$endpoint/items/$tankUsersRest';
var response = await client.get(Uri.parse(apiUrl), headers: headers);
if(response.statusCode != 200) {
print('Fehler beim Abrufen der TankUser-Liste: ${response.statusCode}');
client.close();
return [];
}
final json = jsonDecode(
utf8.decode(response.bodyBytes),
) as Map<String, dynamic>;
//print('$json}');
client.close();
return json['data'] as List<dynamic>;
}
Future<List<dynamic>> getTankGuruDataFromTable(String userIdentId) async {
var client = http.Client();
//String apiUrl = '$endpoint/items/$tankStopRest?filter[UserIdentId][_eq]=$userIdentId';
String apiUrl = '$endpoint/items/$tankStopRest?filter[UserIdentId][_eq]=$userIdentId&sort=-TankDate';
var response = await client.get(Uri.parse(apiUrl), headers: headers);
if(response.statusCode != 200) {
print('Fehler beim Abrufen der Dokumente aus der Collection: ${response.statusCode}');
client.close();
return [];
}
final json = jsonDecode(
utf8.decode(response.bodyBytes),
) as Map<String, dynamic>;
//print('$json}');
client.close();
return json['data'] as List<dynamic>;
}
Future<void> deleteDocumentFromTable(int iD) async {
var client = http.Client();
String apiUrl = '$endpoint/items/$tankStopRest/$iD';
var response = await client.delete(Uri.parse(apiUrl), headers: headers);
if(response.statusCode < 200 || response.statusCode >= 300) {
print('Fehler beim Löschen des Dokuments aus der Collection: ${response.statusCode}');
client.close();
throw Exception('Fehler beim Löschen des Dokuments aus der Collection: ${response.statusCode}');
}
client.close();
}
Future<bool> createDocumentInTable(Map<String, String> data) async {
return await http.post(
Uri.parse('$endpoint/items/$tankStopRest'),
headers: headers,
body: jsonEncode(data),
).then((response) {
if (response.statusCode == 200 || response.statusCode == 201) {
print('Dokument erfolgreich erstellt: ${response.body}');
return true;
} else {
print('Fehler beim Erstellen des Dokuments: ${response.statusCode} - ${response.body}');
return false;
}
}).catchError((error) {
print('Fehler beim Erstellen des Dokuments: $error');
return false;
});
}
Future<bool> updateDocumentInTable(int? iD, Map<String, String> data) async {
return iD != null
? http.patch(
Uri.parse('$endpoint/items/$tankStopRest/$iD'),
headers: headers,
body: jsonEncode(data),
).then((response) {
if (response.statusCode == 200) {
print('Dokument erfolgreich aktualisiert: ${response.body}');
return true;
} else {
print('Fehler beim Aktualisieren des Dokuments: ${response.statusCode} - ${response.body}');
return false;
}
}).catchError((error) {
print('Fehler beim Aktualisieren des Dokuments: $error');
return false;
})
: Future.value(false);
}
Future<bool> register(String userName, String email, String password, String city, String country) async {
var client = http.Client();
String apiUrl = '$endpoint/items/$tankUsersRest';
Map<String, String> data = {
'UserIdentId': base64Encode(utf8.encode('$email:$password')),
'UserName': userName,
'City': city,
'Country': country,
'Email': email,
'PasswordHash': await PasswordHelper.hashPassword(password),
};
var response = await client.post(
Uri.parse(apiUrl),
headers: headers,
body: jsonEncode(data),
);
if (response.statusCode == 200 || response.statusCode == 201) {
print('Benutzer erfolgreich registriert: ${response.body}');
client.close();
return true;
} else {
print('Fehler bei der Registrierung des Benutzers: ${response.statusCode} - ${response.body}');
client.close();
return false;
}
}
}
+24 -5
View File
@@ -7,11 +7,30 @@ class EControlService {
double longitude,
String fuelType,
) async {
// REST Service... URL
String apiUrl =
'https://api.e-control.at/sprit/1.0/search/gas-stations/by-address?latitude=$latitude&longitude=$longitude&fuelType=$fuelType&includeClosed=false';
// For Test purposes only - later deactivate
// latitude = 47.938783246743355;
// longitude = 13.762770926423814;
String apiUrl = 'https://api.e-control.at/sprit/1.0/search/gas-stations/by-address?latitude=$latitude&longitude=$longitude&fuelType=$fuelType&includeClosed=false';
var response = await http.get(Uri.parse(apiUrl));
print('${response.statusCode}');
return jsonDecode(response.body);
if (response.statusCode == 200) {
return jsonDecode(response.body);
}
return [];
}
/// Holt parallel Diesel ('DIE') und Super ('SUP') Daten
Future<Map<String, List<dynamic>>> getBothFuelData(
double latitude,
double longitude,
) async {
// For Test purposes only - later deactivate
// latitude = 47.938783246743355;
// longitude = 13.762770926423814;
final results = await Future.wait([
getEControlData(latitude, longitude, 'DIE'),
getEControlData(latitude, longitude, 'SUP'),
]);
return {'DIE': results[0], 'SUP': results[1]};
}
}
+4 -3
View File
@@ -1,8 +1,9 @@
import 'package:flutter/material.dart';
import '../models/tank_model.dart';
//import '../models/tank_model.dart';
import '../models/tank_guru_directus_model.dart';
class DetailHeaderWidget extends StatelessWidget {
final TankModel tank;
final TankGuruDirectusModel tank;
const DetailHeaderWidget({super.key, required this.tank});
@@ -37,7 +38,7 @@ class DetailHeaderWidget extends StatelessWidget {
),
const SizedBox(height: 4),
Text(
tank.szDate,
tank.tankDate!,
style: const TextStyle(
color: Colors.white,
fontSize: 20,
+268 -181
View File
@@ -1,11 +1,21 @@
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
import '../models/econtrol_model.dart';
class GasStationCard extends StatelessWidget {
final EControlModel station;
final int index;
final double originLatitude;
final double originLongitude;
const GasStationCard({super.key, required this.station, required this.index});
const GasStationCard({
super.key,
required this.station,
required this.index,
required this.originLatitude,
required this.originLongitude,
});
Color _getPriceColor(double? price) {
if (price == null) return Colors.grey;
@@ -23,210 +33,287 @@ class GasStationCard extends StatelessWidget {
}
}
Future<void> _openInGoogleMaps(BuildContext context) async {
final location = station.location;
final destination =
location?.latitude != null && location?.longitude != null
? '${location!.latitude},${location.longitude}'
: [
station.name,
location?.address,
location?.postalCode,
location?.city,
]
.whereType<String>()
.where((value) => value.trim().isNotEmpty)
.join(', ');
if (destination.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Für diese Tankstelle ist kein Standort verfügbar.'),
),
);
return;
}
final origin = '$originLatitude,$originLongitude';
final mapsUri = Uri.https('www.google.com', '/maps/dir/', {
'api': '1',
'origin': origin,
'destination': destination,
'travelmode': 'driving',
});
final didLaunch = await launchUrl(
mapsUri,
mode: LaunchMode.platformDefault,
webOnlyWindowName: '_blank',
);
if (!didLaunch && context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Google Maps konnte nicht geöffnet werden.'),
),
);
}
}
// Hilfsmethode zur Erstellung eines einzelnen Preis-Badges
Widget _buildPriceBadge(Prices? priceInfo) {
if (priceInfo == null || priceInfo.amount == null) {
return const SizedBox.shrink();
}
final double price = priceInfo.amount!;
final String label = priceInfo.label ?? priceInfo.fuelType ?? '';
final Color badgeColor = _getPriceColor(price);
return Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: BoxDecoration(
color: badgeColor.withAlpha(35),
borderRadius: BorderRadius.circular(12),
border: Border.all(color: badgeColor, width: 1.5),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.local_gas_station, color: badgeColor, size: 22),
const SizedBox(width: 6),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
'€ ${price.toStringAsFixed(3)}',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: badgeColor,
),
),
if (label.isNotEmpty)
Text(
label,
style: TextStyle(
fontSize: 10,
color: Colors.grey[700],
fontWeight: FontWeight.w500,
),
),
],
),
],
),
);
}
@override
Widget build(BuildContext context) {
final price = station.prices?.isNotEmpty == true
? station.prices!.first.amount
: null;
final priceLabel = station.prices?.isNotEmpty == true
? station.prices!.first.label
: '';
// Suchen nach Diesel und Super/Benzin im Prices-Array
final dieselPrice = station.prices?.firstWhere(
(p) =>
p.fuelType == 'DIE' ||
(p.label?.toLowerCase().contains('diesel') ?? false),
orElse: () =>
station.prices?.isNotEmpty == true ? station.prices!.first : Prices(),
);
final supPrice = station.prices?.firstWhere(
(p) =>
p.fuelType == 'SUP' ||
(p.label?.toLowerCase().contains('benzin') ?? false) ||
(p.label?.toLowerCase().contains('super') ?? false),
orElse: () => Prices(),
);
return Card(
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
elevation: 4,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Colors.white, Colors.grey[50]!],
clipBehavior: Clip.antiAlias,
child: InkWell(
onTap: () => _openInGoogleMaps(context),
child: Ink(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Colors.white, Colors.grey[50]!],
),
),
),
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Header Row with Position and Status
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 6,
),
decoration: BoxDecoration(
color: Colors.blueGrey[700],
borderRadius: BorderRadius.circular(20),
),
child: Text(
'#${index + 1}',
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 12,
),
),
),
Container(
padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 6,
),
decoration: BoxDecoration(
color: station.open == true
? Colors.green[400]
: Colors.red[400],
borderRadius: BorderRadius.circular(20),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
station.open == true
? Icons.check_circle
: Icons.cancel,
color: Colors.white,
size: 16,
),
const SizedBox(width: 4),
Text(
station.open == true ? 'Geöffnet' : 'Geschlossen',
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 12,
),
),
],
),
),
],
),
const SizedBox(height: 12),
// Station Name
Text(
station.name ?? 'Unbekannte Tankstelle',
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.black87,
),
),
const SizedBox(height: 8),
// Address
Row(
children: [
Icon(
Icons.location_on,
size: 16,
color: Colors.blueGrey[600],
),
const SizedBox(width: 4),
Expanded(
child: Text(
'${station.location?.address ?? ''}, '
'${station.location?.postalCode ?? ''} '
'${station.location?.city ?? ''}',
style: TextStyle(fontSize: 14, color: Colors.grey[700]),
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
],
),
const SizedBox(height: 12),
// Price and Distance Row
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// Price
if (price != null)
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Header Row
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 10,
horizontal: 12,
vertical: 6,
),
decoration: BoxDecoration(
color: _getPriceColor(price).withAlpha(50),
borderRadius: BorderRadius.circular(12),
border: Border.all(
color: _getPriceColor(price),
width: 2,
color: Colors.blueGrey[700],
borderRadius: BorderRadius.circular(20),
),
child: Text(
'#${index + 1}',
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 12,
),
),
),
Container(
padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 6,
),
decoration: BoxDecoration(
color: station.open == true
? Colors.green[400]
: Colors.red[400],
borderRadius: BorderRadius.circular(20),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.local_gas_station,
color: _getPriceColor(price),
size: 24,
station.open == true
? Icons.check_circle
: Icons.cancel,
color: Colors.white,
size: 16,
),
const SizedBox(width: 8),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'€ ${price.toStringAsFixed(3)}',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
color: _getPriceColor(price),
),
),
if (priceLabel?.isNotEmpty == true)
Text(
priceLabel!,
style: TextStyle(
fontSize: 10,
color: Colors.grey[600],
),
),
],
const SizedBox(width: 4),
Text(
station.open == true ? 'Geöffnet' : 'Geschlossen',
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 12,
),
),
],
),
),
],
),
const SizedBox(height: 12),
// Distance
Container(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.blue[50],
borderRadius: BorderRadius.circular(12),
),
child: Row(
children: [
Icon(
Icons.navigation,
color: Colors.blue[700],
size: 20,
),
const SizedBox(width: 8),
Text(
_formatDistance(station.distance),
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: Colors.blue[700],
),
),
],
),
// Station Name
Text(
station.name ?? 'Unbekannte Tankstelle',
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.black87,
),
],
),
],
),
const SizedBox(height: 8),
// Address
Row(
children: [
Icon(
Icons.location_on,
size: 16,
color: Colors.blueGrey[600],
),
const SizedBox(width: 4),
Expanded(
child: Text(
'${station.location?.address ?? ''}, '
'${station.location?.postalCode ?? ''} '
'${station.location?.city ?? ''}',
style: TextStyle(fontSize: 13, color: Colors.grey[700]),
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
],
),
const SizedBox(height: 12),
// Prices & Distance Row
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// Diesel & Benzin Preise nebeneinander
Expanded(
child: Wrap(
spacing: 8,
runSpacing: 8,
children: [
if (dieselPrice?.amount != null)
_buildPriceBadge(dieselPrice),
if (supPrice?.amount != null)
_buildPriceBadge(supPrice),
],
),
),
// Distance Badge
Container(
padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 8,
),
decoration: BoxDecoration(
color: Colors.blue[50],
borderRadius: BorderRadius.circular(12),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.navigation,
color: Colors.blue[700],
size: 18,
),
const SizedBox(width: 6),
Text(
_formatDistance(station.distance),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
color: Colors.blue[700],
),
),
],
),
),
],
),
],
),
),
),
),
+24
View File
@@ -100,6 +100,30 @@ class MySigninWidget extends StatelessWidget {
),
),
),
SizedBox(height: 20),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 50.0),
child: TextField(
controller: signCtrl.cityController,
keyboardType: TextInputType.emailAddress,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'City',
),
),
),
SizedBox(height: 20),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 50.0),
child: TextField(
controller: signCtrl.countryController,
keyboardType: TextInputType.emailAddress,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Country',
),
),
),
SizedBox(height: 30),
ElevatedButton(
style: ButtonStyle(
+25 -105
View File
@@ -1,14 +1,6 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
appwrite:
dependency: "direct main"
description:
name: appwrite
sha256: "3e1f618c8f75bafa49ef7b1b445f64c53cf4620a195443f4d119bbc95a666d0a"
url: "https://pub.dev"
source: hosted
version: "14.0.0"
args:
dependency: transitive
description:
@@ -65,14 +57,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.19.1"
cookie_jar:
dependency: transitive
description:
name: cookie_jar
sha256: a6ac027d3ed6ed756bfce8f3ff60cb479e266f3b0fdabd6242b804b6765e52de
url: "https://pub.dev"
source: hosted
version: "4.0.8"
crypto:
dependency: transitive
description:
@@ -81,6 +65,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.0.7"
cryptography:
dependency: "direct main"
description:
name: cryptography
sha256: "3eda3029d34ec9095a27a198ac9785630fe525c0eb6a49f3d575272f8e792ef0"
url: "https://pub.dev"
source: hosted
version: "2.9.0"
cupertino_icons:
dependency: "direct main"
description:
@@ -97,22 +89,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.11"
device_info_plus:
dependency: transitive
description:
name: device_info_plus
sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074
url: "https://pub.dev"
source: hosted
version: "10.1.2"
device_info_plus_platform_interface:
dependency: transitive
description:
name: device_info_plus_platform_interface
sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f
url: "https://pub.dev"
source: hosted
version: "7.0.3"
fake_async:
dependency: transitive
description:
@@ -163,22 +139,6 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_web_auth_2:
dependency: transitive
description:
name: flutter_web_auth_2
sha256: "4d3d2fd3d26bf1a26b3beafd4b4b899c0ffe10dc99af25abc58ffe24e991133c"
url: "https://pub.dev"
source: hosted
version: "3.1.2"
flutter_web_auth_2_platform_interface:
dependency: transitive
description:
name: flutter_web_auth_2_platform_interface
sha256: e8669e262005a8354389ba2971f0fc1c36188481234ff50d013aaf993f30f739
url: "https://pub.dev"
source: hosted
version: "3.1.0"
flutter_web_plugins:
dependency: transitive
description: flutter
@@ -557,54 +517,46 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.4.0"
universal_io:
dependency: transitive
description:
name: universal_io
sha256: f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2
url: "https://pub.dev"
source: hosted
version: "2.3.1"
url_launcher:
dependency: transitive
dependency: "direct main"
description:
name: url_launcher
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
sha256: e8cc955c97e06df9879140a1fe301f3d493f01b7c62dec7f46834be31d7e9fda
url: "https://pub.dev"
source: hosted
version: "6.3.2"
version: "6.3.3"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611"
sha256: "611e87fb320b70d1dd721dc46af89c98aceccea9b31fde49e084591414e0c610"
url: "https://pub.dev"
source: hosted
version: "6.3.28"
version: "6.3.33"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad
sha256: "8faa1aab294f1ab4040b43660c887b0418d5fa4f0cffef76a484e6aa1092eb4a"
url: "https://pub.dev"
source: hosted
version: "6.3.6"
version: "6.4.2"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a
sha256: "10f86fef4c2c43563fa6c211ff9cf757adf4d3ab762c56bd430664a947d70cd0"
url: "https://pub.dev"
source: hosted
version: "3.2.2"
version: "3.2.3"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18"
sha256: "5e835a3b869c2d70325349c81c5a45c28e20791265b67b2669da6b08c5cd5201"
url: "https://pub.dev"
source: hosted
version: "3.2.5"
version: "3.2.6"
url_launcher_platform_interface:
dependency: transitive
description:
@@ -617,18 +569,18 @@ packages:
dependency: transitive
description:
name: url_launcher_web
sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f
sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34"
url: "https://pub.dev"
source: hosted
version: "2.4.2"
version: "2.4.3"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f"
sha256: "6c5ad3f22cd4c38e089b81963b3cd7bb83b111b2df5dce008bb066162f42e429"
url: "https://pub.dev"
source: hosted
version: "3.1.5"
version: "3.1.6"
uuid:
dependency: transitive
description:
@@ -661,22 +613,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.1"
web_socket:
dependency: transitive
description:
name: web_socket
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
url: "https://pub.dev"
source: hosted
version: "3.0.3"
win32:
dependency: transitive
description:
@@ -685,22 +621,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.15.0"
win32_registry:
dependency: transitive
description:
name: win32_registry
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
url: "https://pub.dev"
source: hosted
version: "1.1.5"
window_to_front:
dependency: transitive
description:
name: window_to_front
sha256: "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee"
url: "https://pub.dev"
source: hosted
version: "0.0.3"
xdg_directories:
dependency: transitive
description:
@@ -726,5 +646,5 @@ packages:
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.11.0-0 <4.0.0"
flutter: ">=3.38.4"
dart: ">=3.12.0 <4.0.0"
flutter: ">=3.44.0"
+3 -2
View File
@@ -3,13 +3,13 @@ description: "A new Flutter project."
publish_to: "none"
version: 1.0.0+1
version: 1.1.0+2
environment:
sdk: ^3.10.7
dependencies:
appwrite: ^14.0.0
cryptography: ^2.9.0
cupertino_icons: ^1.0.8
flutter:
sdk: flutter
@@ -18,6 +18,7 @@ dependencies:
google_fonts: ^7.1.0
http: ^1.6.0
intl: ^0.20.2
url_launcher: ^6.3.2
dev_dependencies:
flutter_lints: ^6.0.0
+28 -4
View File
@@ -13,12 +13,33 @@ SERVER_PATH="/root/webserver"
echo "🚀 Starting Flutter Web App Update..."
echo "================================================"
# Step 1: Build Flutter Web
echo "📦 Building Flutter web release..."
flutter build web --release --no-wasm-dry-run
# Step 1: Buildnummer nach Flutter-/SemVer-Konvention erhoehen
# Die SemVer-Version (MAJOR.MINOR.PATCH) wird bei fachlichen Releases manuell
# in pubspec.yaml gepflegt. Jeder Deployment-Build erhaelt eine neue BUILD-Nr.
CURRENT_APP_VERSION=$(sed -n 's/^version:[[:space:]]*//p' pubspec.yaml | head -n 1)
if [ $? -ne 0 ]; then
if [[ ! "$CURRENT_APP_VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)\+([0-9]+)$ ]]; then
echo "❌ Invalid version in pubspec.yaml: $CURRENT_APP_VERSION"
echo " Expected format: MAJOR.MINOR.PATCH+BUILD (for example 1.1.0+2)"
exit 1
fi
SEMVER="${CURRENT_APP_VERSION%%+*}"
CURRENT_BUILD_NUMBER="${CURRENT_APP_VERSION##*+}"
NEXT_BUILD_NUMBER=$((10#$CURRENT_BUILD_NUMBER + 1))
NEXT_APP_VERSION="$SEMVER+$NEXT_BUILD_NUMBER"
sed -i "s/^version:.*/version: $NEXT_APP_VERSION/" pubspec.yaml
echo "🏷️ Version: $CURRENT_APP_VERSION -> $NEXT_APP_VERSION"
echo "📦 Building Flutter web release..."
if ! flutter build web --release --no-wasm-dry-run \
--dart-define="APP_VERSION=$SEMVER" \
--dart-define="APP_BUILD_NUMBER=$NEXT_BUILD_NUMBER"; then
sed -i "s/^version:.*/version: $CURRENT_APP_VERSION/" pubspec.yaml
echo "❌ Build failed!"
echo " Version restored to $CURRENT_APP_VERSION"
exit 1
fi
@@ -61,4 +82,7 @@ echo "✅ Update complete!"
echo "================================================"
echo "Your app should now be updated at:"
echo " http://tank.joshihomeserver.ipv64.net"
echo "Deployed version: $NEXT_APP_VERSION"
echo "The login page must show: Version $SEMVER (Build $NEXT_BUILD_NUMBER)"
echo "If another version is shown, refresh the browser with Ctrl+F5."
echo "================================================"
+1300 -1793
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -147,7 +147,7 @@ Rb(a,gc(a,l,null,f,k),b-1);return[]})},C:(a,b,c,e,f)=>{b=K(b);-1===f&&(f=4294967
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)},r:(a,b,c,e,f)=>{a=
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)},s:(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)}))},z:(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},k: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,
@@ -176,7 +176,7 @@ 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
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,m:Hd,y:Id,l:Jd,I:Kd,
ca:Ld,P:Md,O:Nd,t:Od,v:Pd,u:Qd,s: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}`),da(c)}Ra??=r.locateFile?Qa("canvaskit.wasm")?"canvaskit.wasm":ta+"canvaskit.wasm":(new URL("canvaskit.wasm",import.meta.url)).href;
ca:Ld,P:Md,O:Nd,t:Od,v:Pd,u:Qd,r: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}`),da(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(da);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_vij=(a,b,c,e)=>(r.dynCall_vij=Z.Id)(a,b,c,e);
r.dynCall_iiiji=(a,b,c,e,f,k)=>(r.dynCall_iiiji=Z.Jd)(a,b,c,e,f,k);r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=Z.Kd)(a,b,c);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);
File diff suppressed because one or more lines are too long
Binary file not shown.
+2 -2
View File
@@ -147,7 +147,7 @@ Rb(a,gc(a,l,null,f,k),b-1);return[]})},C:(a,b,c,e,f)=>{b=K(b);-1===f&&(f=4294967
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)},r:(a,b,c,e,f)=>{a=
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)},s:(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)}))},z:(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},k: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,
@@ -176,7 +176,7 @@ 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
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,m:Hd,y:Id,l:Jd,I:Kd,
ba:Ld,O:Md,N:Nd,t:Od,v:Pd,u:Qd,s: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}`),da(c)}Ra??=r.locateFile?Qa("canvaskit.wasm")?"canvaskit.wasm":ta+"canvaskit.wasm":(new URL("canvaskit.wasm",import.meta.url)).href;Ua(b,
ba:Ld,O:Md,N:Nd,t:Od,v:Pd,u:Qd,r: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}`),da(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(da);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_vij=(a,b,c,e)=>(r.dynCall_vij=Z.Hd)(a,b,c,e);
r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=Z.Id)(a,b,c);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)}}
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1,171 @@
var CanvasKitInit = (() => {
var _scriptName = import.meta.url;
return (
function(moduleArg = {}) {
var moduleRtn;
var q=moduleArg,aa,ba,ca=new Promise((a,b)=>{aa=a;ba=b}),da="object"==typeof window,ea="function"==typeof importScripts;
(function(a){a.Jd=a.Jd||[];a.Jd.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,d="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||d||(c=document.getElementById(b),c)))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.ge=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var d={width:b,height:c,colorType:a.ColorType.RGBA_8888,
alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},f=b*c*4,h=a._malloc(f);if(d=a.Surface._makeRasterDirect(d,h,4*b))d.ge=null,d.Ge=b,d.De=c,d.Ee=f,d.ne=h,d.getCanvas().clear(a.TRANSPARENT);return d};a.MakeRasterDirectSurface=function(b,c,d){return a.Surface._makeRasterDirect(b,c.byteOffset,d)};a.Surface.prototype.flush=function(b){a.Gd(this.Fd);this._flush();if(this.ge){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.ne,this.Ee);c=new ImageData(c,this.Ge,this.De);b?this.ge.getContext("2d").putImageData(c,
0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.ge.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=function(){this.ne&&a._free(this.ne);this.delete()};a.Gd=a.Gd||function(){};a.he=a.he||function(){return null}})})(q);
(function(a){a.Jd=a.Jd||[];a.Jd.push(function(){function b(k,p,t){return k&&k.hasOwnProperty(p)?k[p]:t}function c(k){var p=ha(ia);ia[p]=k;return p}function d(k){return k.naturalHeight||k.videoHeight||k.displayHeight||k.height}function f(k){return k.naturalWidth||k.videoWidth||k.displayWidth||k.width}function h(k,p,t,v){k.bindTexture(k.TEXTURE_2D,p);v||t.alphaType!==a.AlphaType.Premul||k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);return p}function n(k,p,t){t||p.alphaType!==a.AlphaType.Premul||
k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);k.bindTexture(k.TEXTURE_2D,null)}a.GetWebGLContext=function(k,p){if(!k)throw"null canvas passed into makeWebGLContext";var t={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)};t.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(t.explicitSwapControl)throw"explicitSwapControl is not supported";k=ja(k,t);if(!k)return 0;ka(k);x.Sd.getExtension("WEBGL_debug_renderer_info");return k};a.deleteContext=function(k){x===la[k]&&(x=null);"object"==typeof JSEvents&&
JSEvents.ef(la[k].Sd.canvas);la[k]&&la[k].Sd.canvas&&(la[k].Sd.canvas.Be=void 0);la[k]=null};a._setTextureCleanup({deleteTexture:function(k,p){var t=ia[p];t&&la[k].Sd.deleteTexture(t);ia[p]=null}});a.MakeWebGLContext=function(k){if(!this.Gd(k))return null;var p=this._MakeGrContext();if(!p)return null;p.Fd=k;var t=p.delete.bind(p);p["delete"]=function(){a.Gd(this.Fd);t()}.bind(p);return x.pe=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.Gd(this.Fd);
this._getResourceCacheLimitBytes()};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.Gd(this.Fd);this._getResourceCacheUsageBytes()};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.Gd(this.Fd);this._releaseResourcesAndAbandonContext()};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(k){a.Gd(this.Fd);this._setResourceCacheLimitBytes(k)};a.MakeOnScreenGLSurface=function(k,p,t,v,z,A){if(!this.Gd(k.Fd))return null;p=void 0===z||void 0===A?
this._MakeOnScreenGLSurface(k,p,t,v):this._MakeOnScreenGLSurface(k,p,t,v,z,A);if(!p)return null;p.Fd=k.Fd;return p};a.MakeRenderTarget=function(){var k=arguments[0];if(!this.Gd(k.Fd))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(k,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(k,arguments[1]),!p)return null}else return null;p.Fd=k.Fd;return p};a.MakeWebGLCanvasSurface=function(k,p,t){p=p||null;var v=k,z="undefined"!==
typeof OffscreenCanvas&&v instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&v instanceof HTMLCanvasElement||z||(v=document.getElementById(k),v)))throw"Canvas with id "+k+" was not found";k=this.GetWebGLContext(v,t);if(!k||0>k)throw"failed to create webgl context: err "+k;k=this.MakeWebGLContext(k);p=this.MakeOnScreenGLSurface(k,v.width,v.height,p);return p?p:(p=v.cloneNode(!0),v.parentNode.replaceChild(p,v),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface=
a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(k,p){a.Gd(this.Fd);k=c(k);if(p=this._makeImageFromTexture(this.Fd,k,p))p.ae=k;return p};a.Surface.prototype.makeImageFromTextureSource=function(k,p,t){p||={height:d(k),width:f(k),colorType:a.ColorType.RGBA_8888,alphaType:t?a.AlphaType.Premul:a.AlphaType.Unpremul};p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.Gd(this.Fd);var v=x.Sd;t=h(v,v.createTexture(),p,t);2===x.version?v.texImage2D(v.TEXTURE_2D,0,v.RGBA,p.width,p.height,
0,v.RGBA,v.UNSIGNED_BYTE,k):v.texImage2D(v.TEXTURE_2D,0,v.RGBA,v.RGBA,v.UNSIGNED_BYTE,k);n(v,p);this._resetContext();return this.makeImageFromTexture(t,p)};a.Surface.prototype.updateTextureFromSource=function(k,p,t){if(k.ae){a.Gd(this.Fd);var v=k.getImageInfo(),z=x.Sd,A=h(z,ia[k.ae],v,t);2===x.version?z.texImage2D(z.TEXTURE_2D,0,z.RGBA,f(p),d(p),0,z.RGBA,z.UNSIGNED_BYTE,p):z.texImage2D(z.TEXTURE_2D,0,z.RGBA,z.RGBA,z.UNSIGNED_BYTE,p);n(z,v,t);this._resetContext();ia[k.ae]=null;k.ae=c(A);v.colorSpace=
k.getColorSpace();p=this._makeImageFromTexture(this.Fd,k.ae,v);t=k.Ed.Hd;z=k.Ed.Ld;k.Ed.Hd=p.Ed.Hd;k.Ed.Ld=p.Ed.Ld;p.Ed.Hd=t;p.Ed.Ld=z;p.delete();v.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(k,p,t){p||={height:d(k),width:f(k),colorType:a.ColorType.RGBA_8888,alphaType:t?a.AlphaType.Premul:a.AlphaType.Unpremul};p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var v={makeTexture:function(){var z=x,A=z.Sd,E=h(A,A.createTexture(),p,t);2===z.version?A.texImage2D(A.TEXTURE_2D,0,A.RGBA,
p.width,p.height,0,A.RGBA,A.UNSIGNED_BYTE,k):A.texImage2D(A.TEXTURE_2D,0,A.RGBA,A.RGBA,A.UNSIGNED_BYTE,k);n(A,p,t);return c(E)},freeSrc:function(){}};"VideoFrame"===k.constructor.name&&(v.freeSrc=function(){k.close()});return a.Image._makeFromGenerator(p,v)};a.Gd=function(k){return k?ka(k):!1};a.he=function(){return x&&x.pe&&!x.pe.isDeleted()?x.pe:null}})})(q);
(function(a){function b(l){return(f(255*l[3])<<24|f(255*l[0])<<16|f(255*l[1])<<8|f(255*l[2])<<0)>>>0}function c(l){if(l&&l._ck)return l;if(l instanceof Float32Array){for(var e=Math.floor(l.length/4),g=new Uint32Array(e),m=0;m<e;m++)g[m]=b(l.slice(4*m,4*(m+1)));return g}if(l instanceof Uint32Array)return l;if(l instanceof Array&&l[0]instanceof Float32Array)return l.map(b)}function d(l){if(void 0===l)return 1;var e=parseFloat(l);return l&&-1!==l.indexOf("%")?e/100:e}function f(l){return Math.round(Math.max(0,
Math.min(l||0,255)))}function h(l,e){e&&e._ck||a._free(l)}function n(l,e,g){if(!l||!l.length)return 0;if(l&&l._ck)return l.byteOffset;var m=a[e].BYTES_PER_ELEMENT;g||=a._malloc(l.length*m);a[e].set(l,g/m);return g}function k(l){var e={Qd:0,count:l.length,colorType:a.ColorType.RGBA_F32};if(l instanceof Float32Array)e.Qd=n(l,"HEAPF32"),e.count=l.length/4;else if(l instanceof Uint32Array)e.Qd=n(l,"HEAPU32"),e.colorType=a.ColorType.RGBA_8888;else if(l instanceof Array){if(l&&l.length){for(var g=a._malloc(16*
l.length),m=0,r=g/4,u=0;u<l.length;u++)for(var w=0;4>w;w++)a.HEAPF32[r+m]=l[u][w],m++;l=g}else l=0;e.Qd=l}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof l;return e}function p(l){if(!l)return 0;var e=V.toTypedArray();if(l.length){if(6===l.length||9===l.length)return n(l,"HEAPF32",L),6===l.length&&a.HEAPF32.set(Oc,6+L/4),L;if(16===l.length)return e[0]=l[0],e[1]=l[1],e[2]=l[3],e[3]=l[4],e[4]=l[5],e[5]=l[7],e[6]=l[12],e[7]=l[13],e[8]=l[15],L;throw"invalid matrix size";
}if(void 0===l.m11)throw"invalid matrix argument";e[0]=l.m11;e[1]=l.m21;e[2]=l.m41;e[3]=l.m12;e[4]=l.m22;e[5]=l.m42;e[6]=l.m14;e[7]=l.m24;e[8]=l.m44;return L}function t(l){if(!l)return 0;var e=S.toTypedArray();if(l.length){if(16!==l.length&&6!==l.length&&9!==l.length)throw"invalid matrix size";if(16===l.length)return n(l,"HEAPF32",fa);e.fill(0);e[0]=l[0];e[1]=l[1];e[3]=l[2];e[4]=l[3];e[5]=l[4];e[7]=l[5];e[10]=1;e[12]=l[6];e[13]=l[7];e[15]=l[8];6===l.length&&(e[12]=0,e[13]=0,e[15]=1);return fa}if(void 0===
l.m11)throw"invalid matrix argument";e[0]=l.m11;e[1]=l.m21;e[2]=l.m31;e[3]=l.m41;e[4]=l.m12;e[5]=l.m22;e[6]=l.m32;e[7]=l.m42;e[8]=l.m13;e[9]=l.m23;e[10]=l.m33;e[11]=l.m43;e[12]=l.m14;e[13]=l.m24;e[14]=l.m34;e[15]=l.m44;return fa}function v(l,e){return n(l,"HEAPF32",e||Y)}function z(l,e,g,m){var r=ya.toTypedArray();r[0]=l;r[1]=e;r[2]=g;r[3]=m;return Y}function A(l){for(var e=new Float32Array(4),g=0;4>g;g++)e[g]=a.HEAPF32[l/4+g];return e}function E(l,e){return n(l,"HEAPF32",e||P)}function M(l,e){return n(l,
"HEAPF32",e||ob)}a.Color=function(l,e,g,m){void 0===m&&(m=1);return a.Color4f(f(l)/255,f(e)/255,f(g)/255,m)};a.ColorAsInt=function(l,e,g,m){void 0===m&&(m=255);return(f(m)<<24|f(l)<<16|f(e)<<8|f(g)<<0&268435455)>>>0};a.Color4f=function(l,e,g,m){void 0===m&&(m=1);return Float32Array.of(l,e,g,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(l){return[Math.floor(255*
l[0]),Math.floor(255*l[1]),Math.floor(255*l[2]),l[3]]};a.parseColorString=function(l,e){l=l.toLowerCase();if(l.startsWith("#")){e=255;switch(l.length){case 9:e=parseInt(l.slice(7,9),16);case 7:var g=parseInt(l.slice(1,3),16);var m=parseInt(l.slice(3,5),16);var r=parseInt(l.slice(5,7),16);break;case 5:e=17*parseInt(l.slice(4,5),16);case 4:g=17*parseInt(l.slice(1,2),16),m=17*parseInt(l.slice(2,3),16),r=17*parseInt(l.slice(3,4),16)}return a.Color(g,m,r,e/255)}return l.startsWith("rgba")?(l=l.slice(5,
-1),l=l.split(","),a.Color(+l[0],+l[1],+l[2],d(l[3]))):l.startsWith("rgb")?(l=l.slice(4,-1),l=l.split(","),a.Color(+l[0],+l[1],+l[2],d(l[3]))):l.startsWith("gray(")||l.startsWith("hsl")||!e||(l=e[l],void 0===l)?a.BLACK:l};a.multiplyByAlpha=function(l,e){l=l.slice();l[3]=Math.max(0,Math.min(l[3]*e,1));return l};a.Malloc=function(l,e){var g=a._malloc(e*l.BYTES_PER_ELEMENT);return{_ck:!0,length:e,byteOffset:g,Xd:null,subarray:function(m,r){m=this.toTypedArray().subarray(m,r);m._ck=!0;return m},toTypedArray:function(){if(this.Xd&&
this.Xd.length)return this.Xd;this.Xd=new l(a.HEAPU8.buffer,g,e);this.Xd._ck=!0;return this.Xd}}};a.Free=function(l){a._free(l.byteOffset);l.byteOffset=0;l.toTypedArray=null;l.Xd=null};var L=0,V,fa=0,S,Y=0,ya,W,P=0,Nb,ra=0,Ob,pb=0,Pb,qb=0,Va,Ga=0,Qb,ob=0,Rb,Sb=0,Oc=Float32Array.of(0,0,1);a.onRuntimeInitialized=function(){function l(e,g,m,r,u,w,B){w||(w=4*r.width,r.colorType===a.ColorType.RGBA_F16?w*=2:r.colorType===a.ColorType.RGBA_F32&&(w*=4));var J=w*r.height;var F=u?u.byteOffset:a._malloc(J);if(B?
!e._readPixels(r,F,w,g,m,B):!e._readPixels(r,F,w,g,m))return u||a._free(F),null;if(u)return u.toTypedArray();switch(r.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:e=(new Uint8Array(a.HEAPU8.buffer,F,J)).slice();break;case a.ColorType.RGBA_F32:e=(new Float32Array(a.HEAPU8.buffer,F,J)).slice();break;default:return null}a._free(F);return e}ya=a.Malloc(Float32Array,4);Y=ya.byteOffset;S=a.Malloc(Float32Array,16);fa=S.byteOffset;V=a.Malloc(Float32Array,9);L=V.byteOffset;Qb=a.Malloc(Float32Array,
12);ob=Qb.byteOffset;Rb=a.Malloc(Float32Array,12);Sb=Rb.byteOffset;W=a.Malloc(Float32Array,4);P=W.byteOffset;Nb=a.Malloc(Float32Array,4);ra=Nb.byteOffset;Ob=a.Malloc(Float32Array,3);pb=Ob.byteOffset;Pb=a.Malloc(Float32Array,3);qb=Pb.byteOffset;Va=a.Malloc(Int32Array,4);Ga=Va.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(e){var g=n(e,"HEAPF32"),m=a.Path._MakeFromCmds(g,e.length);h(g,e);return m};a.Path.MakeFromVerbsPointsWeights=function(e,g,m){var r=n(e,"HEAPU8"),u=n(g,"HEAPF32"),w=n(m,"HEAPF32"),B=a.Path._MakeFromVerbsPointsWeights(r,e.length,u,g.length/2,w,m&&m.length||0);h(r,e);h(u,g);h(w,m);return B};a.PathBuilder.prototype.addArc=function(e,g,m){e=E(e);this._addArc(e,g,m);return this};a.PathBuilder.prototype.addCircle=function(e,g,m,r){this._addCircle(e,g,m,!!r);return this};a.PathBuilder.prototype.addOval=
function(e,g,m){void 0===m&&(m=1);e=E(e);this._addOval(e,!!g,m);return this};a.PathBuilder.prototype.addPath=function(){var e=Array.prototype.slice.call(arguments),g=e[0],m=!1;"boolean"===typeof e[e.length-1]&&(m=e.pop());if(1===e.length)this._addPath(g,1,0,0,0,1,0,0,0,1,m);else if(2===e.length)e=e[1],this._addPath(g,e[0],e[1],e[2],e[3],e[4],e[5],e[6]||0,e[7]||0,e[8]||1,m);else if(7===e.length||10===e.length)this._addPath(g,e[1],e[2],e[3],e[4],e[5],e[6],e[7]||0,e[8]||0,e[9]||1,m);else return null;
return this};a.PathBuilder.prototype.addPolygon=function(e,g){var m=n(e,"HEAPF32");this._addPolygon(m,e.length/2,g);h(m,e);return this};a.PathBuilder.prototype.addRect=function(e,g){e=E(e);this._addRect(e,!!g);return this};a.PathBuilder.prototype.addRRect=function(e,g){e=M(e);this._addRRect(e,!!g);return this};a.PathBuilder.prototype.addVerbsPointsWeights=function(e,g,m){var r=n(e,"HEAPU8"),u=n(g,"HEAPF32"),w=n(m,"HEAPF32");this._addVerbsPointsWeights(r,e.length,u,g.length/2,w,m&&m.length||0);h(r,
e);h(u,g);h(w,m);return this};a.PathBuilder.prototype.arc=function(e,g,m,r,u,w){e=a.LTRBRect(e-m,g-m,e+m,g+m);u=(u-r)/Math.PI*180-360*!!w;r=(new a.PathBuilder).addArc(e,r/Math.PI*180,u).detachAndDelete();this.addPath(r,!0);r.delete();return this};a.PathBuilder.prototype.arcToOval=function(e,g,m,r){e=E(e);this._arcToOval(e,g,m,r);return this};a.PathBuilder.prototype.arcToRotated=function(e,g,m,r,u,w,B){this._arcToRotated(e,g,m,!!r,!!u,w,B);return this};a.PathBuilder.prototype.arcToTangent=function(e,
g,m,r,u){this._arcToTangent(e,g,m,r,u);return this};a.PathBuilder.prototype.close=function(){this._close();return this};a.PathBuilder.prototype.conicTo=function(e,g,m,r,u){this._conicTo(e,g,m,r,u);return this};a.Path.prototype.computeTightBounds=function(e){this._computeTightBounds(P);var g=W.toTypedArray();return e?(e.set(g),e):g.slice()};a.PathBuilder.prototype.cubicTo=function(e,g,m,r,u,w){this._cubicTo(e,g,m,r,u,w);return this};a.PathBuilder.prototype.detachAndDelete=function(){var e=this.detach();
this.delete();return e};a.Path.prototype.getBounds=function(e){this._getBounds(P);var g=W.toTypedArray();return e?(e.set(g),e):g.slice()};a.PathBuilder.prototype.getBounds=function(e){this._getBounds(P);var g=W.toTypedArray();return e?(e.set(g),e):g.slice()};a.PathBuilder.prototype.lineTo=function(e,g){this._lineTo(e,g);return this};a.PathBuilder.prototype.moveTo=function(e,g){this._moveTo(e,g);return this};a.PathBuilder.prototype.offset=function(e,g){this._transform(1,0,e,0,1,g,0,0,1);return this};
a.PathBuilder.prototype.quadTo=function(e,g,m,r){this._quadTo(e,g,m,r);return this};a.PathBuilder.prototype.rArcTo=function(e,g,m,r,u,w,B){this._rArcTo(e,g,m,r,u,w,B);return this};a.PathBuilder.prototype.rConicTo=function(e,g,m,r,u){this._rConicTo(e,g,m,r,u);return this};a.PathBuilder.prototype.rCubicTo=function(e,g,m,r,u,w){this._rCubicTo(e,g,m,r,u,w);return this};a.PathBuilder.prototype.rLineTo=function(e,g){this._rLineTo(e,g);return this};a.PathBuilder.prototype.rMoveTo=function(e,g){this._rMoveTo(e,
g);return this};a.PathBuilder.prototype.rQuadTo=function(e,g,m,r){this._rQuadTo(e,g,m,r);return this};a.Path.prototype.makeStroked=function(e){e=e||{};e.width=e.width||1;e.miter_limit=e.miter_limit||4;e.cap=e.cap||a.StrokeCap.Butt;e.join=e.join||a.StrokeJoin.Miter;e.precision=e.precision||1;return this._makeStroked(e)};a.PathBuilder.prototype.transform=function(){if(1===arguments.length){var e=arguments[0];this._transform(e[0],e[1],e[2],e[3],e[4],e[5],e[6]||0,e[7]||0,e[8]||1)}else if(6===arguments.length||
9===arguments.length)e=arguments,this._transform(e[0],e[1],e[2],e[3],e[4],e[5],e[6]||0,e[7]||0,e[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.makeTrimmed=function(e,g,m){return this._makeTrimmed(e,g,!!m)};a.Image.prototype.encodeToBytes=function(e,g){var m=a.he();e=e||a.ImageFormat.PNG;g=g||100;return m?this._encodeToBytes(e,g,m):this._encodeToBytes(e,g)};a.Image.prototype.makeShaderCubic=function(e,g,m,r,u){u=p(u);return this._makeShaderCubic(e,
g,m,r,u)};a.Image.prototype.makeShaderOptions=function(e,g,m,r,u){u=p(u);return this._makeShaderOptions(e,g,m,r,u)};a.Image.prototype.readPixels=function(e,g,m,r,u){var w=a.he();return l(this,e,g,m,r,u,w)};a.Canvas.prototype.clear=function(e){a.Gd(this.Fd);e=v(e);this._clear(e)};a.Canvas.prototype.clipRRect=function(e,g,m){a.Gd(this.Fd);e=M(e);this._clipRRect(e,g,m)};a.Canvas.prototype.clipRect=function(e,g,m){a.Gd(this.Fd);e=E(e);this._clipRect(e,g,m)};a.Canvas.prototype.concat=function(e){a.Gd(this.Fd);
e=t(e);this._concat(e)};a.Canvas.prototype.drawArc=function(e,g,m,r,u){a.Gd(this.Fd);e=E(e);this._drawArc(e,g,m,r,u)};a.Canvas.prototype.drawAtlas=function(e,g,m,r,u,w,B){if(e&&r&&g&&m&&g.length===m.length){a.Gd(this.Fd);u||(u=a.BlendMode.SrcOver);var J=n(g,"HEAPF32"),F=n(m,"HEAPF32"),R=m.length/4,T=n(c(w),"HEAPU32");if(B&&"B"in B&&"C"in B)this._drawAtlasCubic(e,F,J,T,R,u,B.B,B.C,r);else{let sa=a.FilterMode.Linear,Ha=a.MipmapMode.None;B&&(sa=B.filter,"mipmap"in B&&(Ha=B.mipmap));this._drawAtlasOptions(e,
F,J,T,R,u,sa,Ha,r)}h(J,g);h(F,m);h(T,w)}};a.Canvas.prototype.drawCircle=function(e,g,m,r){a.Gd(this.Fd);this._drawCircle(e,g,m,r)};a.Canvas.prototype.drawColor=function(e,g){a.Gd(this.Fd);e=v(e);void 0!==g?this._drawColor(e,g):this._drawColor(e)};a.Canvas.prototype.drawColorInt=function(e,g){a.Gd(this.Fd);this._drawColorInt(e,g||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents=function(e,g,m,r,u){a.Gd(this.Fd);e=z(e,g,m,r);void 0!==u?this._drawColor(e,u):this._drawColor(e)};a.Canvas.prototype.drawDRRect=
function(e,g,m){a.Gd(this.Fd);e=M(e,ob);g=M(g,Sb);this._drawDRRect(e,g,m)};a.Canvas.prototype.drawImage=function(e,g,m,r){a.Gd(this.Fd);this._drawImage(e,g,m,r||null)};a.Canvas.prototype.drawImageCubic=function(e,g,m,r,u,w){a.Gd(this.Fd);this._drawImageCubic(e,g,m,r,u,w||null)};a.Canvas.prototype.drawImageOptions=function(e,g,m,r,u,w){a.Gd(this.Fd);this._drawImageOptions(e,g,m,r,u,w||null)};a.Canvas.prototype.drawImageNine=function(e,g,m,r,u){a.Gd(this.Fd);g=n(g,"HEAP32",Ga);m=E(m);this._drawImageNine(e,
g,m,r,u||null)};a.Canvas.prototype.drawImageRect=function(e,g,m,r,u){a.Gd(this.Fd);E(g,P);E(m,ra);this._drawImageRect(e,P,ra,r,!!u)};a.Canvas.prototype.drawImageRectCubic=function(e,g,m,r,u,w){a.Gd(this.Fd);E(g,P);E(m,ra);this._drawImageRectCubic(e,P,ra,r,u,w||null)};a.Canvas.prototype.drawImageRectOptions=function(e,g,m,r,u,w){a.Gd(this.Fd);E(g,P);E(m,ra);this._drawImageRectOptions(e,P,ra,r,u,w||null)};a.Canvas.prototype.drawLine=function(e,g,m,r,u){a.Gd(this.Fd);this._drawLine(e,g,m,r,u)};a.Canvas.prototype.drawOval=
function(e,g){a.Gd(this.Fd);e=E(e);this._drawOval(e,g)};a.Canvas.prototype.drawPaint=function(e){a.Gd(this.Fd);this._drawPaint(e)};a.Canvas.prototype.drawParagraph=function(e,g,m){a.Gd(this.Fd);this._drawParagraph(e,g,m)};a.Canvas.prototype.drawPatch=function(e,g,m,r,u){if(24>e.length)throw"Need 12 cubic points";if(g&&4>g.length)throw"Need 4 colors";if(m&&8>m.length)throw"Need 4 shader coordinates";a.Gd(this.Fd);const w=n(e,"HEAPF32"),B=g?n(c(g),"HEAPU32"):0,J=m?n(m,"HEAPF32"):0;r||(r=a.BlendMode.Modulate);
this._drawPatch(w,B,J,r,u);h(J,m);h(B,g);h(w,e)};a.Canvas.prototype.drawPath=function(e,g){a.Gd(this.Fd);this._drawPath(e,g)};a.Canvas.prototype.drawPicture=function(e){a.Gd(this.Fd);this._drawPicture(e)};a.Canvas.prototype.drawPoints=function(e,g,m){a.Gd(this.Fd);var r=n(g,"HEAPF32");this._drawPoints(e,r,g.length/2,m);h(r,g)};a.Canvas.prototype.drawRRect=function(e,g){a.Gd(this.Fd);e=M(e);this._drawRRect(e,g)};a.Canvas.prototype.drawRect=function(e,g){a.Gd(this.Fd);e=E(e);this._drawRect(e,g)};a.Canvas.prototype.drawRect4f=
function(e,g,m,r,u){a.Gd(this.Fd);this._drawRect4f(e,g,m,r,u)};a.Canvas.prototype.drawShadow=function(e,g,m,r,u,w,B){a.Gd(this.Fd);var J=n(u,"HEAPF32"),F=n(w,"HEAPF32");g=n(g,"HEAPF32",pb);m=n(m,"HEAPF32",qb);this._drawShadow(e,g,m,r,J,F,B);h(J,u);h(F,w)};a.getShadowLocalBounds=function(e,g,m,r,u,w,B){e=p(e);m=n(m,"HEAPF32",pb);r=n(r,"HEAPF32",qb);if(!this._getShadowLocalBounds(e,g,m,r,u,w,P))return null;g=W.toTypedArray();return B?(B.set(g),B):g.slice()};a.Canvas.prototype.drawTextBlob=function(e,
g,m,r){a.Gd(this.Fd);this._drawTextBlob(e,g,m,r)};a.Canvas.prototype.drawVertices=function(e,g,m){a.Gd(this.Fd);this._drawVertices(e,g,m)};a.Canvas.prototype.getDeviceClipBounds=function(e){this._getDeviceClipBounds(Ga);var g=Va.toTypedArray();e?e.set(g):e=g.slice();return e};a.Canvas.prototype.quickReject=function(e){e=E(e);return this._quickReject(e)};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(fa);for(var e=fa,g=Array(16),m=0;16>m;m++)g[m]=a.HEAPF32[e/4+m];return g};a.Canvas.prototype.getTotalMatrix=
function(){this._getTotalMatrix(L);for(var e=Array(9),g=0;9>g;g++)e[g]=a.HEAPF32[L/4+g];return e};a.Canvas.prototype.makeSurface=function(e){e=this._makeSurface(e);e.Fd=this.Fd;return e};a.Canvas.prototype.readPixels=function(e,g,m,r,u){a.Gd(this.Fd);return l(this,e,g,m,r,u)};a.Canvas.prototype.saveLayer=function(e,g,m,r,u){g=E(g);return this._saveLayer(e||null,g,m||null,r||0,u||a.TileMode.Clamp)};a.Canvas.prototype.writePixels=function(e,g,m,r,u,w,B,J){if(e.byteLength%(g*m))throw"pixels length must be a multiple of the srcWidth * srcHeight";
a.Gd(this.Fd);var F=e.byteLength/(g*m);w=w||a.AlphaType.Unpremul;B=B||a.ColorType.RGBA_8888;J=J||a.ColorSpace.SRGB;var R=F*g;F=n(e,"HEAPU8");g=this._writePixels({width:g,height:m,colorType:B,alphaType:w,colorSpace:J},F,R,r,u);h(F,e);return g};a.ColorFilter.MakeBlend=function(e,g,m){e=v(e);m=m||a.ColorSpace.SRGB;return a.ColorFilter._MakeBlend(e,g,m)};a.ColorFilter.MakeMatrix=function(e){if(!e||20!==e.length)throw"invalid color matrix";var g=n(e,"HEAPF32"),m=a.ColorFilter._makeMatrix(g);h(g,e);return m};
a.ContourMeasure.prototype.getPosTan=function(e,g){this._getPosTan(e,P);e=W.toTypedArray();return g?(g.set(e),g):e.slice()};a.ImageFilter.prototype.getOutputBounds=function(e,g,m){e=E(e,P);g=p(g);this._getOutputBounds(e,g,Ga);g=Va.toTypedArray();return m?(m.set(g),m):g.slice()};a.ImageFilter.MakeDropShadow=function(e,g,m,r,u,w){u=v(u,Y);return a.ImageFilter._MakeDropShadow(e,g,m,r,u,w)};a.ImageFilter.MakeDropShadowOnly=function(e,g,m,r,u,w){u=v(u,Y);return a.ImageFilter._MakeDropShadowOnly(e,g,m,
r,u,w)};a.ImageFilter.MakeImage=function(e,g,m,r){m=E(m,P);r=E(r,ra);if("B"in g&&"C"in g)return a.ImageFilter._MakeImageCubic(e,g.B,g.C,m,r);const u=g.filter;let w=a.MipmapMode.None;"mipmap"in g&&(w=g.mipmap);return a.ImageFilter._MakeImageOptions(e,u,w,m,r)};a.ImageFilter.MakeMatrixTransform=function(e,g,m){e=p(e);if("B"in g&&"C"in g)return a.ImageFilter._MakeMatrixTransformCubic(e,g.B,g.C,m);const r=g.filter;let u=a.MipmapMode.None;"mipmap"in g&&(u=g.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(e,
r,u,m)};a.Paint.prototype.getColor=function(){this._getColor(Y);return A(Y)};a.Paint.prototype.setColor=function(e,g){g=g||null;e=v(e);this._setColor(e,g)};a.Paint.prototype.setColorComponents=function(e,g,m,r,u){u=u||null;e=z(e,g,m,r);this._setColor(e,u)};a.Path.prototype.getPoint=function(e,g){this._getPoint(e,P);e=W.toTypedArray();return g?(g[0]=e[0],g[1]=e[1],g):e.slice(0,2)};a.Picture.prototype.makeShader=function(e,g,m,r,u){r=p(r);u=E(u);return this._makeShader(e,g,m,r,u)};a.Picture.prototype.cullRect=
function(e){this._cullRect(P);var g=W.toTypedArray();return e?(e.set(g),e):g.slice()};a.PictureRecorder.prototype.beginRecording=function(e,g){e=E(e);return this._beginRecording(e,!!g)};a.Surface.prototype.getCanvas=function(){var e=this._getCanvas();e.Fd=this.Fd;return e};a.Surface.prototype.makeImageSnapshot=function(e){a.Gd(this.Fd);e=n(e,"HEAP32",Ga);return this._makeImageSnapshot(e)};a.Surface.prototype.makeSurface=function(e){a.Gd(this.Fd);e=this._makeSurface(e);e.Fd=this.Fd;return e};a.Surface.prototype.Fe=
function(e,g){this.$d||(this.$d=this.getCanvas());return requestAnimationFrame(function(){a.Gd(this.Fd);e(this.$d);this.flush(g)}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Fe);a.Surface.prototype.Ce=function(e,g){this.$d||(this.$d=this.getCanvas());requestAnimationFrame(function(){a.Gd(this.Fd);e(this.$d);this.flush(g);this.dispose()}.bind(this))};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Ce);
a.PathEffect.MakeDash=function(e,g){g||=0;if(!e.length||1===e.length%2)throw"Intervals array must have even length";var m=n(e,"HEAPF32");g=a.PathEffect._MakeDash(m,e.length,g);h(m,e);return g};a.PathEffect.MakeLine2D=function(e,g){g=p(g);return a.PathEffect._MakeLine2D(e,g)};a.PathEffect.MakePath2D=function(e,g){e=p(e);return a.PathEffect._MakePath2D(e,g)};a.Shader.MakeColor=function(e,g){g=g||null;e=v(e);return a.Shader._MakeColor(e,g)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;
a.Shader.MakeLinearGradient=function(e,g,m,r,u,w,B,J){J=J||null;var F=k(m),R=n(r,"HEAPF32");B=B||0;w=p(w);var T=W.toTypedArray();T.set(e);T.set(g,2);e=a.Shader._MakeLinearGradient(P,F.Qd,F.colorType,R,F.count,u,B,w,J);h(F.Qd,m);r&&h(R,r);return e};a.Shader.MakeRadialGradient=function(e,g,m,r,u,w,B,J){J=J||null;var F=k(m),R=n(r,"HEAPF32");B=B||0;w=p(w);e=a.Shader._MakeRadialGradient(e[0],e[1],g,F.Qd,F.colorType,R,F.count,u,B,w,J);h(F.Qd,m);r&&h(R,r);return e};a.Shader.MakeSweepGradient=function(e,
g,m,r,u,w,B,J,F,R){R=R||null;var T=k(m),sa=n(r,"HEAPF32");B=B||0;J=J||0;F=F||360;w=p(w);e=a.Shader._MakeSweepGradient(e,g,T.Qd,T.colorType,sa,T.count,u,J,F,B,w,R);h(T.Qd,m);r&&h(sa,r);return e};a.Shader.MakeTwoPointConicalGradient=function(e,g,m,r,u,w,B,J,F,R){R=R||null;var T=k(u),sa=n(w,"HEAPF32");F=F||0;J=p(J);var Ha=W.toTypedArray();Ha.set(e);Ha.set(m,2);e=a.Shader._MakeTwoPointConicalGradient(P,g,r,T.Qd,T.colorType,sa,T.count,B,F,J,R);h(T.Qd,u);w&&h(sa,w);return e};a.Vertices.prototype.bounds=
function(e){this._bounds(P);var g=W.toTypedArray();return e?(e.set(g),e):g.slice()};a.Jd&&a.Jd.forEach(function(e){e()})};a.computeTonalColors=function(l){var e=n(l.ambient,"HEAPF32"),g=n(l.spot,"HEAPF32");this._computeTonalColors(e,g);var m={ambient:A(e),spot:A(g)};h(e,l.ambient);h(g,l.spot);return m};a.LTRBRect=function(l,e,g,m){return Float32Array.of(l,e,g,m)};a.XYWHRect=function(l,e,g,m){return Float32Array.of(l,e,l+g,e+m)};a.LTRBiRect=function(l,e,g,m){return Int32Array.of(l,e,g,m)};a.XYWHiRect=
function(l,e,g,m){return Int32Array.of(l,e,l+g,e+m)};a.RRectXY=function(l,e,g){return Float32Array.of(l[0],l[1],l[2],l[3],e,g,e,g,e,g,e,g)};a.MakeAnimatedImageFromEncoded=function(l){l=new Uint8Array(l);var e=a._malloc(l.byteLength);a.HEAPU8.set(l,e);return(l=a._decodeAnimatedImage(e,l.byteLength))?l:null};a.MakeImageFromEncoded=function(l){l=new Uint8Array(l);var e=a._malloc(l.byteLength);a.HEAPU8.set(l,e);return(l=a._decodeImage(e,l.byteLength))?l:null};var Wa=null;a.MakeImageFromCanvasImageSource=
function(l){var e=l.width,g=l.height;Wa||=document.createElement("canvas");Wa.width=e;Wa.height=g;var m=Wa.getContext("2d",{willReadFrequently:!0});m.drawImage(l,0,0);l=m.getImageData(0,0,e,g);return a.MakeImage({width:e,height:g,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},l.data,4*e)};a.MakeImage=function(l,e,g){var m=a._malloc(e.length);a.HEAPU8.set(e,m);return a._MakeImage(l,m,e.length,g)};a.MakeVertices=function(l,e,g,m,r,u){var w=r&&r.length||
0,B=0;g&&g.length&&(B|=1);m&&m.length&&(B|=2);void 0===u||u||(B|=4);l=new a._VerticesBuilder(l,e.length/2,w,B);n(e,"HEAPF32",l.positions());l.texCoords()&&n(g,"HEAPF32",l.texCoords());l.colors()&&n(c(m),"HEAPU32",l.colors());l.indices()&&n(r,"HEAPU16",l.indices());return l.detach()};(function(l){l.Jd=l.Jd||[];l.Jd.push(function(){l.Bidi.getBidiRegions=function(e,g){if((e=l.Bidi._getBidiRegions(e,g===l.TextDirection.LTR?1:0))&&e.length){g=[];for(let m=0;m<e.length;m+=3)g.push({start:e[m],end:e[m+1],
level:e[m+2]});e=g}else e=[];return e};l.Bidi.reorderVisual=function(e){var g=n(e,"HEAPU8"),m=l.Bidi._reorderVisual(g,e&&e.length||0);h(g,e);if(m&&m.length){e=[];for(g=0;g<m.length;g+=1)e.push({index:m[g]});m=e}else m=[];return m};l.CodeUnits.compute=function(e){if((e=l.CodeUnits._compute(e))&&e.length){var g=[];for(let m=0;m<e.length;m+=1)g.push({flags:e[m]});e=g}else e=[];return e};l.TextDirection||(l.TextDirection={LTR:{value:1},RTL:{value:0}})})})(q);a.Jd=a.Jd||[];a.Jd.push(function(){});a.Jd=
a.Jd||[];a.Jd.push(function(){a.MakePicture=function(l){l=new Uint8Array(l);var e=a._malloc(l.byteLength);a.HEAPU8.set(l,e);return(l=a._MakePicture(e,l.byteLength))?l:null}});a.Jd=a.Jd||[];a.Jd.push(function(){a.RuntimeEffect.Make=function(l,e){return a.RuntimeEffect._Make(l,{onError:e||function(g){console.log("RuntimeEffect error",g)}})};a.RuntimeEffect.MakeForBlender=function(l,e){return a.RuntimeEffect._MakeForBlender(l,{onError:e||function(g){console.log("RuntimeEffect error",g)}})};a.RuntimeEffect.prototype.makeShader=
function(l,e){var g=!l._ck,m=n(l,"HEAPF32");e=p(e);return this._makeShader(m,4*l.length,g,e)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(l,e,g){var m=!l._ck,r=n(l,"HEAPF32");g=p(g);for(var u=[],w=0;w<e.length;w++)u.push(e[w].Ed.Hd);e=n(u,"HEAPU32");return this._makeShaderWithChildren(r,4*l.length,m,e,u.length,g)};a.RuntimeEffect.prototype.makeBlender=function(l){var e=!l._ck,g=n(l,"HEAPF32");return this._makeBlender(g,4*l.length,e)}})})(q);var ma=Object.assign({},q),na="",oa,pa;
if(da||ea)ea?na=self.location.href:"undefined"!=typeof document&&document.currentScript&&(na=document.currentScript.src),_scriptName&&(na=_scriptName),na.startsWith("blob:")?na="":na=na.substr(0,na.replace(/[?#].*/,"").lastIndexOf("/")+1),ea&&(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),ta=console.error.bind(console);Object.assign(q,ma);ma=null;var ua,va=!1,wa,y,xa,za,C,D,G,Aa;function Ba(){var a=ua.buffer;q.HEAP8=wa=new Int8Array(a);q.HEAP16=xa=new Int16Array(a);q.HEAPU8=y=new Uint8Array(a);q.HEAPU16=za=new Uint16Array(a);q.HEAP32=C=new Int32Array(a);q.HEAPU32=D=new Uint32Array(a);q.HEAPF32=G=new Float32Array(a);q.HEAPF64=Aa=new Float64Array(a)}var Ca=[],Da=[],Ea=[],Fa=0,Ia=null,Ja=null;
function Ka(a){a="Aborted("+a+")";ta(a);va=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ba(a);throw a;}var La=a=>a.startsWith("data:application/octet-stream;base64,"),Ma;function Na(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 Oa(a,b,c){return Na(a).then(d=>WebAssembly.instantiate(d,b)).then(c,d=>{ta(`failed to asynchronously prepare wasm: ${d}`);Ka(d)})}
function Pa(a,b){var c=Ma;return"function"!=typeof WebAssembly.instantiateStreaming||La(c)||"function"!=typeof fetch?Oa(c,a,b):fetch(c,{credentials:"same-origin"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(f){ta(`wasm streaming compile failed: ${f}`);ta("falling back to ArrayBuffer instantiation");return Oa(c,a,b)}))}function Qa(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Ra=a=>{a.forEach(b=>b(q))},Sa=q.noExitRuntime||!0;
class Ta{constructor(a){this.Hd=a-24}}var Ua=0,Xa=0,Ya={},Za=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function $a(a){return this.fromWireType(D[a>>2])}
var ab={},bb={},cb={},db,fb=(a,b,c)=>{function d(k){k=c(k);if(k.length!==a.length)throw new db("Mismatched type converter count");for(var p=0;p<a.length;++p)eb(a[p],k[p])}a.forEach(k=>cb[k]=b);var f=Array(b.length),h=[],n=0;b.forEach((k,p)=>{bb.hasOwnProperty(k)?f[p]=bb[k]:(h.push(k),ab.hasOwnProperty(k)||(ab[k]=[]),ab[k].push(()=>{f[p]=bb[k];++n;n===h.length&&d(f)}))});0===h.length&&d(f)},gb,H=a=>{for(var b="";y[a];)b+=gb[y[a++]];return b},I;
function hb(a,b,c={}){var d=b.name;if(!a)throw new I(`type "${d}" must have a positive integer typeid pointer`);if(bb.hasOwnProperty(a)){if(c.Re)return;throw new I(`Cannot register type '${d}' twice`);}bb[a]=b;delete cb[a];ab.hasOwnProperty(a)&&(b=ab[a],delete ab[a],b.forEach(f=>f()))}function eb(a,b,c={}){return hb(a,b,c)}
var ib=a=>{throw new I(a.Ed.Kd.Id.name+" instance already deleted");},jb=!1,kb=()=>{},lb=(a,b,c)=>{if(b===c)return a;if(void 0===c.Nd)return null;a=lb(a,b,c.Nd);return null===a?null:c.Je(a)},mb={},nb={},rb=(a,b)=>{if(void 0===b)throw new I("ptr should not be undefined");for(;a.Nd;)b=a.ee(b),a=a.Nd;return nb[b]},tb=(a,b)=>{if(!b.Kd||!b.Hd)throw new db("makeClassHandle requires ptr and ptrType");if(!!b.Od!==!!b.Ld)throw new db("Both smartPtrType and smartPtr must be specified");b.count={value:1};return sb(Object.create(a,
{Ed:{value:b,writable:!0}}))},sb=a=>{if("undefined"===typeof FinalizationRegistry)return sb=b=>b,a;jb=new FinalizationRegistry(b=>{b=b.Ed;--b.count.value;0===b.count.value&&(b.Ld?b.Od.Ud(b.Ld):b.Kd.Id.Ud(b.Hd))});sb=b=>{var c=b.Ed;c.Ld&&jb.register(b,{Ed:c},b);return b};kb=b=>{jb.unregister(b)};return sb(a)},ub=[];function vb(){}
var wb=(a,b)=>Object.defineProperty(b,"name",{value:a}),xb=(a,b,c)=>{if(void 0===a[b].Md){var d=a[b];a[b]=function(...f){if(!a[b].Md.hasOwnProperty(f.length))throw new I(`Function '${c}' called with an invalid number of arguments (${f.length}) - expects one of (${a[b].Md})!`);return a[b].Md[f.length].apply(this,f)};a[b].Md=[];a[b].Md[d.Vd]=d}},yb=(a,b,c)=>{if(q.hasOwnProperty(a)){if(void 0===c||void 0!==q[a].Md&&void 0!==q[a].Md[c])throw new I(`Cannot register public name '${a}' twice`);xb(q,a,a);
if(q[a].Md.hasOwnProperty(c))throw new I(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);q[a].Md[c]=b}else q[a]=b,q[a].Vd=c},zb=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function Ab(a,b,c,d,f,h,n,k){this.name=a;this.constructor=b;this.Zd=c;this.Ud=d;this.Nd=f;this.Me=h;this.ee=n;this.Je=k;this.Ue=[]}
var Bb=(a,b,c)=>{for(;b!==c;){if(!b.ee)throw new I(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.ee(a);b=b.Nd}return a};function Cb(a,b){if(null===b){if(this.qe)throw new I(`null is not a valid ${this.name}`);return 0}if(!b.Ed)throw new I(`Cannot pass "${Db(b)}" as a ${this.name}`);if(!b.Ed.Hd)throw new I(`Cannot pass deleted object as a pointer of type ${this.name}`);return Bb(b.Ed.Hd,b.Ed.Kd.Id,this.Id)}
function Eb(a,b){if(null===b){if(this.qe)throw new I(`null is not a valid ${this.name}`);if(this.je){var c=this.re();null!==a&&a.push(this.Ud,c);return c}return 0}if(!b||!b.Ed)throw new I(`Cannot pass "${Db(b)}" as a ${this.name}`);if(!b.Ed.Hd)throw new I(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.ie&&b.Ed.Kd.ie)throw new I(`Cannot convert argument of type ${b.Ed.Od?b.Ed.Od.name:b.Ed.Kd.name} to parameter type ${this.name}`);c=Bb(b.Ed.Hd,b.Ed.Kd.Id,this.Id);if(this.je){if(void 0===
b.Ed.Ld)throw new I("Passing raw pointer to smart pointer is illegal");switch(this.Ze){case 0:if(b.Ed.Od===this)c=b.Ed.Ld;else throw new I(`Cannot convert argument of type ${b.Ed.Od?b.Ed.Od.name:b.Ed.Kd.name} to parameter type ${this.name}`);break;case 1:c=b.Ed.Ld;break;case 2:if(b.Ed.Od===this)c=b.Ed.Ld;else{var d=b.clone();c=this.Ve(c,Fb(()=>d["delete"]()));null!==a&&a.push(this.Ud,c)}break;default:throw new I("Unsupporting sharing policy");}}return c}
function Gb(a,b){if(null===b){if(this.qe)throw new I(`null is not a valid ${this.name}`);return 0}if(!b.Ed)throw new I(`Cannot pass "${Db(b)}" as a ${this.name}`);if(!b.Ed.Hd)throw new I(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.Ed.Kd.ie)throw new I(`Cannot convert argument of type ${b.Ed.Kd.name} to parameter type ${this.name}`);return Bb(b.Ed.Hd,b.Ed.Kd.Id,this.Id)}
function Hb(a,b,c,d,f,h,n,k,p,t,v){this.name=a;this.Id=b;this.qe=c;this.ie=d;this.je=f;this.Te=h;this.Ze=n;this.ye=k;this.re=p;this.Ve=t;this.Ud=v;f||void 0!==b.Nd?this.toWireType=Eb:(this.toWireType=d?Cb:Gb,this.Rd=null)}
var Ib=(a,b,c)=>{if(!q.hasOwnProperty(a))throw new db("Replacing nonexistent public symbol");void 0!==q[a].Md&&void 0!==c?q[a].Md[c]=b:(q[a]=b,q[a].Vd=c)},K,Jb=(a,b,c=[])=>{a.includes("j")?(a=a.replace(/p/g,"i"),b=(0,q["dynCall_"+a])(b,...c)):b=K.get(b)(...c);return b},Kb=(a,b)=>(...c)=>Jb(a,b,c),N=(a,b)=>{a=H(a);var c=a.includes("j")?Kb(a,b):K.get(b);if("function"!=typeof c)throw new I(`unknown function pointer with signature ${a}: ${b}`);return c},Lb,Ub=a=>{a=Mb(a);var b=H(a);Tb(a);return b},Vb=
(a,b)=>{function c(h){f[h]||bb[h]||(cb[h]?cb[h].forEach(c):(d.push(h),f[h]=!0))}var d=[],f={};b.forEach(c);throw new Lb(`${a}: `+d.map(Ub).join([", "]));};function Wb(a){for(var b=1;b<a.length;++b)if(null!==a[b]&&void 0===a[b].Rd)return!0;return!1}
function Xb(a,b,c,d,f){var h=b.length;if(2>h)throw new I("argTypes array size mismatch! Must at least get return value and 'this' types!");var n=null!==b[1]&&null!==c,k=Wb(b),p="void"!==b[0].name,t=h-2,v=Array(t),z=[],A=[];return wb(a,function(...E){A.length=0;z.length=n?2:1;z[0]=f;if(n){var M=b[1].toWireType(A,this);z[1]=M}for(var L=0;L<t;++L)v[L]=b[L+2].toWireType(A,E[L]),z.push(v[L]);E=d(...z);if(k)Za(A);else for(L=n?1:2;L<b.length;L++){var V=1===L?M:v[L-2];null!==b[L].Rd&&b[L].Rd(V)}M=p?b[0].fromWireType(E):
void 0;return M})}
var Yb=(a,b)=>{for(var c=[],d=0;d<a;d++)c.push(D[b+4*d>>2]);return c},Zb=a=>{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},$b=[],ac=[],bc=a=>{9<a&&0===--ac[a+1]&&(ac[a]=void 0,$b.push(a))},cc=a=>{if(!a)throw new I("Cannot use deleted val. handle = "+a);return ac[a]},Fb=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=$b.pop()||ac.length;ac[b]=a;ac[b+1]=1;return b}},dc={name:"emscripten::val",fromWireType:a=>{var b=cc(a);bc(a);
return b},toWireType:(a,b)=>Fb(b),Pd:8,readValueFromPointer:$a,Rd:null},ec=(a,b,c)=>{switch(b){case 1:return c?function(d){return this.fromWireType(wa[d])}:function(d){return this.fromWireType(y[d])};case 2:return c?function(d){return this.fromWireType(xa[d>>1])}:function(d){return this.fromWireType(za[d>>1])};case 4:return c?function(d){return this.fromWireType(C[d>>2])}:function(d){return this.fromWireType(D[d>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},fc=(a,b)=>
{var c=bb[a];if(void 0===c)throw a=`${b} has unknown type ${Ub(a)}`,new I(a);return c},Db=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},gc=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(G[c>>2])};case 8:return function(c){return this.fromWireType(Aa[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},hc=(a,b,c)=>{switch(b){case 1:return c?d=>wa[d]:d=>y[d];case 2:return c?d=>xa[d>>1]:d=>za[d>>
1];case 4:return c?d=>C[d>>2]:d=>D[d>>2];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},ic=(a,b,c)=>{var d=y;if(!(0<c))return 0;var f=b;c=b+c-1;for(var h=0;h<a.length;++h){var n=a.charCodeAt(h);if(55296<=n&&57343>=n){var k=a.charCodeAt(++h);n=65536+((n&1023)<<10)|k&1023}if(127>=n){if(b>=c)break;d[b++]=n}else{if(2047>=n){if(b+1>=c)break;d[b++]=192|n>>6}else{if(65535>=n){if(b+2>=c)break;d[b++]=224|n>>12}else{if(b+3>=c)break;d[b++]=240|n>>18;d[b++]=128|n>>12&63}d[b++]=128|n>>6&
63}d[b++]=128|n&63}}d[b]=0;return b-f},jc=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}return b},kc="undefined"!=typeof TextDecoder?new TextDecoder:void 0,lc=(a,b=0,c=NaN)=>{var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16<c-b&&a.buffer&&kc)return kc.decode(a.subarray(b,c));for(d="";b<c;){var f=a[b++];if(f&128){var h=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|h);else{var n=a[b++]&63;f=224==(f&240)?(f&15)<<12|h<<6|n:
(f&7)<<18|h<<12|n<<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},mc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,nc=(a,b)=>{var c=a>>1;for(var d=c+b/2;!(c>=d)&&za[c];)++c;c<<=1;if(32<c-a&&mc)return mc.decode(y.subarray(a,c));c="";for(d=0;!(d>=b/2);++d){var f=xa[a+2*d>>1];if(0==f)break;c+=String.fromCharCode(f)}return c},oc=(a,b,c)=>{c??=2147483647;if(2>c)return 0;c-=2;var d=
b;c=c<2*a.length?c/2:a.length;for(var f=0;f<c;++f)xa[b>>1]=a.charCodeAt(f),b+=2;xa[b>>1]=0;return b-d},pc=a=>2*a.length,qc=(a,b)=>{for(var c=0,d="";!(c>=b/4);){var f=C[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023)):d+=String.fromCharCode(f)}return d},rc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f<a.length;++f){var h=a.charCodeAt(f);if(55296<=h&&57343>=h){var n=a.charCodeAt(++f);h=65536+((h&1023)<<10)|n&1023}C[b>>2]=h;b+=
4;if(b+4>c)break}C[b>>2]=0;return b-d},sc=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4}return b},tc=(a,b,c)=>{var d=[];a=a.toWireType(d,c);d.length&&(D[b>>2]=Fb(d));return a},uc=[],vc={},wc=a=>{var b=vc[a];return void 0===b?H(a):b},xc=()=>{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.");},yc=a=>{var b=uc.length;uc.push(a);return b},zc=(a,b)=>{for(var c=Array(a),d=0;d<a;++d)c[d]=fc(D[b+4*d>>2],"parameter "+d);return c},Ac=Reflect.construct,O,Bc=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,d)=>b.vertexAttribDivisorANGLE(c,
d),a.drawArraysInstanced=(c,d,f,h)=>b.drawArraysInstancedANGLE(c,d,f,h),a.drawElementsInstanced=(c,d,f,h,n)=>b.drawElementsInstancedANGLE(c,d,f,h,n))},Cc=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))},Dc=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,d)=>b.drawBuffersWEBGL(c,d))},Ec=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))},Fc=1,Gc=[],Hc=[],Ic=[],Jc=[],ia=[],Kc=[],Lc=[],la=[],Q=[],Mc=[],Nc=[],Pc={},Qc={},Rc=4,Sc=0,ha=a=>{for(var b=Fc++,c=a.length;c<b;c++)a[c]=null;return b},Tc=(a,b,c,d)=>{for(var f=0;f<a;f++){var h=O[c](),n=h&&ha(d);h?(h.name=n,d[n]=h):U||=1282;C[b+4*f>>2]=n}},ja=(a,b)=>{a.te||(a.te=a.getContext,a.getContext=function(d,f){f=a.te(d,f);return"webgl"==d==f instanceof WebGLRenderingContext?f:null});var c=1<b.majorVersion?a.getContext("webgl2",
b):a.getContext("webgl",b);return c?Uc(c,b):0},Uc=(a,b)=>{var c=ha(la),d={handle:c,attributes:b,version:b.majorVersion,Sd:a};a.canvas&&(a.canvas.Be=d);la[c]=d;("undefined"==typeof b.Ke||b.Ke)&&Vc(d);return c},ka=a=>{x=la[a];q.$e=O=x?.Sd;return!(a&&!O)},Vc=a=>{a||=x;if(!a.Se){a.Se=!0;var b=a.Sd;b.df=b.getExtension("WEBGL_multi_draw");b.bf=b.getExtension("EXT_polygon_offset_clamp");b.af=b.getExtension("EXT_clip_control");b.ff=b.getExtension("WEBGL_polygon_mode");Bc(b);Cc(b);Dc(b);b.ve=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");
b.xe=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.Td=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.Td)b.Td=b.getExtension("EXT_disjoint_timer_query");Ec(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},x,U,Wc=(a,b)=>{O.bindFramebuffer(a,Ic[b])},Xc=a=>{O.bindVertexArray(Lc[a])},Yc=a=>O.clear(a),Zc=(a,b,c,d)=>O.clearColor(a,b,c,d),$c=a=>O.clearStencil(a),ad=(a,b)=>{for(var c=0;c<a;c++){var d=C[b+
4*c>>2];O.deleteVertexArray(Lc[d]);Lc[d]=null}},bd=[],cd=(a,b)=>{Tc(a,b,"createVertexArray",Lc)};function dd(){var a=Ec(O);return a=a.concat(a.map(b=>"GL_"+b))}
var ed=(a,b,c)=>{if(b){var d=void 0;switch(a){case 36346:d=1;break;case 36344:0!=c&&1!=c&&(U||=1280);return;case 34814:case 36345:d=0;break;case 34466:var f=O.getParameter(34467);d=f?f.length:0;break;case 33309:if(2>x.version){U||=1282;return}d=dd().length;break;case 33307:case 33308:if(2>x.version){U||=1280;return}d=33307==a?3:0}if(void 0===d)switch(f=O.getParameter(a),typeof f){case "number":d=f;break;case "boolean":d=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:d=
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:C[b+4*a>>2]=f[a];break;case 2:G[b+4*a>>2]=f[a];break;case 4:wa[b+a]=f[a]?1:0}return}try{d=f.name|0}catch(h){U||=1280;ta(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:U||=1280;ta(`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=d;D[b>>2]=c;D[b+4>>2]=(c-D[b>>2])/4294967296;break;case 0:C[b>>2]=d;break;case 2:G[b>>2]=d;break;case 4:wa[b]=d?1:0}}else U||=1281},fd=(a,b)=>ed(a,b,0),gd=(a,b,c)=>{if(c){a=Q[a];b=2>x.version?O.Td.getQueryObjectEXT(a,b):O.getQueryParameter(a,b);var d;"boolean"==typeof b?d=b?1:0:d=b;D[c>>2]=d;D[c+4>>2]=(d-D[c>>2])/4294967296}else U||=1281},jd=a=>{var b=jc(a)+1,c=hd(b);c&&ic(a,c,b);return c},kd=a=>{var b=Pc[a];if(!b){switch(a){case 7939:b=jd(dd().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=
O.getParameter(a))||(U||=1280);b=b?jd(b):0;break;case 7938:b=O.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=x.version&&(c=`OpenGL ES 3.0 (${b})`);b=jd(c);break;case 35724:b=O.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=jd(b);break;default:U||=1280}Pc[a]=b}return b},ld=(a,b)=>{if(2>x.version)return U||=1282,0;var c=Qc[a];if(c)return 0>b||b>=c.length?(U||=1281,0):c[b];switch(a){case 7939:return c=
dd().map(jd),c=Qc[a]=c,0>b||b>=c.length?(U||=1281,0):c[b];default:return U||=1280,0}},md=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),nd=a=>{a-=5120;return 0==a?wa:1==a?y:2==a?xa:4==a?C:6==a?G:5==a||28922==a||28520==a||30779==a||30782==a?D:za},od=(a,b,c,d,f)=>{a=nd(a);b=d*((Sc||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+Rc-1&-Rc);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},X=a=>{var b=O.Ie;if(b){var c=
b.de[a];"number"==typeof c&&(b.de[a]=c=O.getUniformLocation(b,b.ze[a]+(0<c?`[${c}]`:"")));return c}U||=1282},pd=[],qd=[],rd={},td=()=>{if(!sd){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 rd)void 0===rd[b]?delete a[b]:a[b]=rd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);sd=c}return sd},sd,ud=[null,[],[]];
db=q.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};for(var vd=Array(256),wd=0;256>wd;++wd)vd[wd]=String.fromCharCode(wd);gb=vd;I=q.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};
Object.assign(vb.prototype,{isAliasOf:function(a){if(!(this instanceof vb&&a instanceof vb))return!1;var b=this.Ed.Kd.Id,c=this.Ed.Hd;a.Ed=a.Ed;var d=a.Ed.Kd.Id;for(a=a.Ed.Hd;b.Nd;)c=b.ee(c),b=b.Nd;for(;d.Nd;)a=d.ee(a),d=d.Nd;return b===d&&c===a},clone:function(){this.Ed.Hd||ib(this);if(this.Ed.ce)return this.Ed.count.value+=1,this;var a=sb,b=Object,c=b.create,d=Object.getPrototypeOf(this),f=this.Ed;a=a(c.call(b,d,{Ed:{value:{count:f.count,be:f.be,ce:f.ce,Hd:f.Hd,Kd:f.Kd,Ld:f.Ld,Od:f.Od}}}));a.Ed.count.value+=
1;a.Ed.be=!1;return a},["delete"](){this.Ed.Hd||ib(this);if(this.Ed.be&&!this.Ed.ce)throw new I("Object already scheduled for deletion");kb(this);var a=this.Ed;--a.count.value;0===a.count.value&&(a.Ld?a.Od.Ud(a.Ld):a.Kd.Id.Ud(a.Hd));this.Ed.ce||(this.Ed.Ld=void 0,this.Ed.Hd=void 0)},isDeleted:function(){return!this.Ed.Hd},deleteLater:function(){this.Ed.Hd||ib(this);if(this.Ed.be&&!this.Ed.ce)throw new I("Object already scheduled for deletion");ub.push(this);this.Ed.be=!0;return this}});
Object.assign(Hb.prototype,{Ne(a){this.ye&&(a=this.ye(a));return a},ue(a){this.Ud?.(a)},Pd:8,readValueFromPointer:$a,fromWireType:function(a){function b(){return this.je?tb(this.Id.Zd,{Kd:this.Te,Hd:c,Od:this,Ld:a}):tb(this.Id.Zd,{Kd:this,Hd:a})}var c=this.Ne(a);if(!c)return this.ue(a),null;var d=rb(this.Id,c);if(void 0!==d){if(0===d.Ed.count.value)return d.Ed.Hd=c,d.Ed.Ld=a,d.clone();d=d.clone();this.ue(a);return d}d=this.Id.Me(c);d=mb[d];if(!d)return b.call(this);d=this.ie?d.He:d.pointerType;var f=
lb(c,this.Id,d.Id);return null===f?b.call(this):this.je?tb(d.Id.Zd,{Kd:d,Hd:f,Od:this,Ld:a}):tb(d.Id.Zd,{Kd:d,Hd:f})}});Lb=q.UnboundTypeError=((a,b)=>{var c=wb(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.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");
ac.push(0,1,void 0,1,null,1,!0,1,!1,1);q.count_emval_handles=()=>ac.length/2-5-$b.length;for(var xd=0;32>xd;++xd)bd.push(Array(xd));var yd=new Float32Array(288);for(xd=0;288>=xd;++xd)pd[xd]=yd.subarray(0,xd);var zd=new Int32Array(288);for(xd=0;288>=xd;++xd)qd[xd]=zd.subarray(0,xd);
var Md={z:(a,b,c)=>{var d=new Ta(a);D[d.Hd+16>>2]=0;D[d.Hd+4>>2]=b;D[d.Hd+8>>2]=c;Ua=a;Xa++;throw Ua;},dd:()=>{Ka("")},C:a=>{var b=Ya[a];delete Ya[a];var c=b.re,d=b.Ud,f=b.we,h=f.map(n=>n.Qe).concat(f.map(n=>n.Xe));fb([a],h,n=>{var k={};f.forEach((p,t)=>{var v=n[t],z=p.Oe,A=p.Pe,E=n[t+f.length],M=p.We,L=p.Ye;k[p.Le]={read:V=>v.fromWireType(z(A,V)),write:(V,fa)=>{var S=[];M(L,V,E.toWireType(S,fa));Za(S)}}});return[{name:b.name,fromWireType:p=>{var t={},v;for(v in k)t[v]=k[v].read(p);d(p);return t},
toWireType:(p,t)=>{for(var v in k)if(!(v in t))throw new TypeError(`Missing field: "${v}"`);var z=c();for(v in k)k[v].write(z,t[v]);null!==p&&p.push(d,z);return z},Pd:8,readValueFromPointer:$a,Rd:d}]})},N:()=>{},cd:(a,b,c,d)=>{b=H(b);eb(a,{name:b,fromWireType:function(f){return!!f},toWireType:function(f,h){return h?c:d},Pd:8,readValueFromPointer:function(f){return this.fromWireType(y[f])},Rd:null})},d:(a,b,c,d,f,h,n,k,p,t,v,z,A)=>{v=H(v);h=N(f,h);k&&=N(n,k);t&&=N(p,t);A=N(z,A);var E=zb(v);yb(E,function(){Vb(`Cannot construct ${v} due to unbound types`,
[d])});fb([a,b,c],d?[d]:[],M=>{M=M[0];if(d){var L=M.Id;var V=L.Zd}else V=vb.prototype;M=wb(v,function(...ya){if(Object.getPrototypeOf(this)!==fa)throw new I("Use 'new' to construct "+v);if(void 0===S.Wd)throw new I(v+" has no accessible constructor");var W=S.Wd[ya.length];if(void 0===W)throw new I(`Tried to invoke ctor of ${v} with invalid number of parameters (${ya.length}) - expected (${Object.keys(S.Wd).toString()}) parameters instead!`);return W.apply(this,ya)});var fa=Object.create(V,{constructor:{value:M}});
M.prototype=fa;var S=new Ab(v,M,fa,A,L,h,k,t);if(S.Nd){var Y;(Y=S.Nd).fe??(Y.fe=[]);S.Nd.fe.push(S)}L=new Hb(v,S,!0,!1,!1);Y=new Hb(v+"*",S,!1,!1,!1);V=new Hb(v+" const*",S,!1,!0,!1);mb[a]={pointerType:Y,He:V};Ib(E,M);return[L,Y,V]})},c:(a,b,c,d,f,h,n)=>{var k=Yb(c,d);b=H(b);b=Zb(b);h=N(f,h);fb([],[a],p=>{function t(){Vb(`Cannot call ${v} due to unbound types`,k)}p=p[0];var v=`${p.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var z=p.Id.constructor;void 0===z[b]?(t.Vd=c-1,z[b]=t):(xb(z,
b,v),z[b].Md[c-1]=t);fb([],k,A=>{A=[A[0],null].concat(A.slice(1));A=Xb(v,A,null,h,n);void 0===z[b].Md?(A.Vd=c-1,z[b]=A):z[b].Md[c-1]=A;if(p.Id.fe)for(const E of p.Id.fe)E.constructor.hasOwnProperty(b)||(E.constructor[b]=A);return[]});return[]})},x:(a,b,c,d,f,h)=>{var n=Yb(b,c);f=N(d,f);fb([],[a],k=>{k=k[0];var p=`constructor ${k.name}`;void 0===k.Id.Wd&&(k.Id.Wd=[]);if(void 0!==k.Id.Wd[b-1])throw new I(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${k.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);
k.Id.Wd[b-1]=()=>{Vb(`Cannot construct ${k.name} due to unbound types`,n)};fb([],n,t=>{t.splice(1,0,null);k.Id.Wd[b-1]=Xb(p,t,null,f,h);return[]});return[]})},a:(a,b,c,d,f,h,n,k)=>{var p=Yb(c,d);b=H(b);b=Zb(b);h=N(f,h);fb([],[a],t=>{function v(){Vb(`Cannot call ${z} due to unbound types`,p)}t=t[0];var z=`${t.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);k&&t.Id.Ue.push(b);var A=t.Id.Zd,E=A[b];void 0===E||void 0===E.Md&&E.className!==t.name&&E.Vd===c-2?(v.Vd=c-2,v.className=t.name,A[b]=
v):(xb(A,b,z),A[b].Md[c-2]=v);fb([],p,M=>{M=Xb(z,M,t,h,n);void 0===A[b].Md?(M.Vd=c-2,A[b]=M):A[b].Md[c-2]=M;return[]});return[]})},q:(a,b,c)=>{a=H(a);fb([],[b],d=>{d=d[0];q[a]=d.fromWireType(c);return[]})},bd:a=>eb(a,dc),h:(a,b,c,d)=>{function f(){}b=H(b);f.values={};eb(a,{name:b,constructor:f,fromWireType:function(h){return this.constructor.values[h]},toWireType:(h,n)=>n.value,Pd:8,readValueFromPointer:ec(b,c,d),Rd:null});yb(b,f)},b:(a,b,c)=>{var d=fc(a,"enum");b=H(b);a=d.constructor;d=Object.create(d.constructor.prototype,
{value:{value:c},constructor:{value:wb(`${d.name}_${b}`,function(){})}});a.values[c]=d;a[b]=d},L:(a,b,c)=>{b=H(b);eb(a,{name:b,fromWireType:d=>d,toWireType:(d,f)=>f,Pd:8,readValueFromPointer:gc(b,c),Rd:null})},o:(a,b,c,d,f,h)=>{var n=Yb(b,c);a=H(a);a=Zb(a);f=N(d,f);yb(a,function(){Vb(`Cannot call ${a} due to unbound types`,n)},b-1);fb([],n,k=>{k=[k[0],null].concat(k.slice(1));Ib(a,Xb(a,k,null,f,h),b-1);return[]})},w:(a,b,c,d,f)=>{b=H(b);-1===f&&(f=4294967295);f=k=>k;if(0===d){var h=32-8*c;f=k=>k<<
h>>>h}var n=b.includes("unsigned")?function(k,p){return p>>>0}:function(k,p){return p};eb(a,{name:b,fromWireType:f,toWireType:n,Pd:8,readValueFromPointer:hc(b,c,0!==d),Rd:null})},i:(a,b,c)=>{function d(h){return new f(wa.buffer,D[h+4>>2],D[h>>2])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=H(c);eb(a,{name:c,fromWireType:d,Pd:8,readValueFromPointer:d},{Re:!0})},m:(a,b,c,d,f,h,n,k,p,t,v,z)=>{c=H(c);h=N(f,h);k=N(n,k);t=N(p,t);z=N(v,z);fb([a],
[b],A=>{A=A[0];return[new Hb(c,A.Id,!1,!1,!0,A,d,h,k,t,z)]})},K:(a,b)=>{b=H(b);var c="std::string"===b;eb(a,{name:b,fromWireType:function(d){var f=D[d>>2],h=d+4;if(c)for(var n=h,k=0;k<=f;++k){var p=h+k;if(k==f||0==y[p]){n=n?lc(y,n,p-n):"";if(void 0===t)var t=n;else t+=String.fromCharCode(0),t+=n;n=p+1}}else{t=Array(f);for(k=0;k<f;++k)t[k]=String.fromCharCode(y[h+k]);t=t.join("")}Tb(d);return t},toWireType:function(d,f){f instanceof ArrayBuffer&&(f=new Uint8Array(f));var h="string"==typeof f;if(!(h||
f instanceof Uint8Array||f instanceof Uint8ClampedArray||f instanceof Int8Array))throw new I("Cannot pass non-string to std::string");var n=c&&h?jc(f):f.length;var k=hd(4+n+1),p=k+4;D[k>>2]=n;if(c&&h)ic(f,p,n+1);else if(h)for(h=0;h<n;++h){var t=f.charCodeAt(h);if(255<t)throw Tb(p),new I("String has UTF-16 code units that do not fit in 8 bits");y[p+h]=t}else for(h=0;h<n;++h)y[p+h]=f[h];null!==d&&d.push(Tb,k);return k},Pd:8,readValueFromPointer:$a,Rd(d){Tb(d)}})},G:(a,b,c)=>{c=H(c);if(2===b){var d=
nc;var f=oc;var h=pc;var n=k=>za[k>>1]}else 4===b&&(d=qc,f=rc,h=sc,n=k=>D[k>>2]);eb(a,{name:c,fromWireType:k=>{for(var p=D[k>>2],t,v=k+4,z=0;z<=p;++z){var A=k+4+z*b;if(z==p||0==n(A))v=d(v,A-v),void 0===t?t=v:(t+=String.fromCharCode(0),t+=v),v=A+b}Tb(k);return t},toWireType:(k,p)=>{if("string"!=typeof p)throw new I(`Cannot pass non-string to C++ string type ${c}`);var t=h(p),v=hd(4+t+b);D[v>>2]=t/b;f(p,v+4,t+b);null!==k&&k.push(Tb,v);return v},Pd:8,readValueFromPointer:$a,Rd(k){Tb(k)}})},B:(a,b,c,
d,f,h)=>{Ya[a]={name:H(b),re:N(c,d),Ud:N(f,h),we:[]}},l:(a,b,c,d,f,h,n,k,p,t)=>{Ya[a].we.push({Le:H(b),Qe:c,Oe:N(d,f),Pe:h,Xe:n,We:N(k,p),Ye:t})},ad:(a,b)=>{b=H(b);eb(a,{cf:!0,name:b,Pd:0,fromWireType:()=>{},toWireType:()=>{}})},$c:()=>1,_c:()=>{throw Infinity;},Zc:(a,b,c)=>{a=cc(a);b=fc(b,"emval::as");return tc(b,c,a)},Yc:(a,b,c,d)=>{a=uc[a];b=cc(b);return a(null,b,c,d)},r:(a,b,c,d,f)=>{a=uc[a];b=cc(b);c=wc(c);return a(b,b[c],d,f)},g:bc,Xc:a=>{if(0===a)return Fb(xc());a=wc(a);return Fb(xc()[a])},
p:(a,b,c)=>{var d=zc(a,b),f=d.shift();a--;var h=Array(a);b=`methodCaller<(${d.map(n=>n.name).join(", ")}) => ${f.name}>`;return yc(wb(b,(n,k,p,t)=>{for(var v=0,z=0;z<a;++z)h[z]=d[z].readValueFromPointer(t+v),v+=d[z].Pd;n=1===c?Ac(k,h):k.apply(n,h);return tc(f,p,n)}))},F:a=>{9<a&&(ac[a+1]+=1)},E:()=>Fb([]),y:a=>Fb(wc(a)),Wc:()=>Fb({}),n:a=>{var b=cc(a);Za(b);bc(a)},A:(a,b,c)=>{a=cc(a);b=cc(b);c=cc(c);a[b]=c},k:(a,b)=>{a=fc(a,"_emval_take_value");a=a.readValueFromPointer(b);return Fb(a)},Vc:(a,b,c,
d)=>{var f=(new Date).getFullYear(),h=(new Date(f,0,1)).getTimezoneOffset();f=(new Date(f,6,1)).getTimezoneOffset();D[a>>2]=60*Math.max(h,f);C[b>>2]=Number(h!=f);b=n=>{var k=Math.abs(n);return`UTC${0<=n?"-":"+"}${String(Math.floor(k/60)).padStart(2,"0")}${String(k%60).padStart(2,"0")}`};a=b(h);b=b(f);f<h?(ic(a,c,17),ic(b,d,17)):(ic(a,d,17),ic(b,c,17))},Uc:()=>performance.now(),Tc:a=>O.activeTexture(a),Sc:(a,b)=>{O.attachShader(Hc[a],Kc[b])},Rc:(a,b)=>{O.beginQuery(a,Q[b])},Qc:(a,b)=>{O.Td.beginQueryEXT(a,
Q[b])},Pc:(a,b,c)=>{O.bindAttribLocation(Hc[a],b,c?lc(y,c):"")},Oc:(a,b)=>{35051==a?O.oe=b:35052==a&&(O.Yd=b);O.bindBuffer(a,Gc[b])},Nc:Wc,Mc:(a,b)=>{O.bindRenderbuffer(a,Jc[b])},Lc:(a,b)=>{O.bindSampler(a,Mc[b])},Kc:(a,b)=>{O.bindTexture(a,ia[b])},Jc:Xc,Ic:Xc,Hc:(a,b,c,d)=>O.blendColor(a,b,c,d),Gc:a=>O.blendEquation(a),Fc:(a,b)=>O.blendFunc(a,b),Ec:(a,b,c,d,f,h,n,k,p,t)=>O.blitFramebuffer(a,b,c,d,f,h,n,k,p,t),Dc:(a,b,c,d)=>{2<=x.version?c&&b?O.bufferData(a,y,d,c,b):O.bufferData(a,b,d):O.bufferData(a,
c?y.subarray(c,c+b):b,d)},Cc:(a,b,c,d)=>{2<=x.version?c&&O.bufferSubData(a,b,y,d,c):O.bufferSubData(a,b,y.subarray(d,d+c))},Bc:a=>O.checkFramebufferStatus(a),Ac:Yc,zc:Zc,yc:$c,xc:(a,b,c,d)=>O.clientWaitSync(Nc[a],b,(c>>>0)+4294967296*d),wc:(a,b,c,d)=>{O.colorMask(!!a,!!b,!!c,!!d)},vc:a=>{O.compileShader(Kc[a])},uc:(a,b,c,d,f,h,n,k)=>{2<=x.version?O.Yd||!n?O.compressedTexImage2D(a,b,c,d,f,h,n,k):O.compressedTexImage2D(a,b,c,d,f,h,y,k,n):O.compressedTexImage2D(a,b,c,d,f,h,y.subarray(k,k+n))},tc:(a,
b,c,d,f,h,n,k,p)=>{2<=x.version?O.Yd||!k?O.compressedTexSubImage2D(a,b,c,d,f,h,n,k,p):O.compressedTexSubImage2D(a,b,c,d,f,h,n,y,p,k):O.compressedTexSubImage2D(a,b,c,d,f,h,n,y.subarray(p,p+k))},sc:(a,b,c,d,f)=>O.copyBufferSubData(a,b,c,d,f),rc:(a,b,c,d,f,h,n,k)=>O.copyTexSubImage2D(a,b,c,d,f,h,n,k),qc:()=>{var a=ha(Hc),b=O.createProgram();b.name=a;b.me=b.ke=b.le=0;b.se=1;Hc[a]=b;return a},pc:a=>{var b=ha(Kc);Kc[b]=O.createShader(a);return b},oc:a=>O.cullFace(a),nc:(a,b)=>{for(var c=0;c<a;c++){var d=
C[b+4*c>>2],f=Gc[d];f&&(O.deleteBuffer(f),f.name=0,Gc[d]=null,d==O.oe&&(O.oe=0),d==O.Yd&&(O.Yd=0))}},mc:(a,b)=>{for(var c=0;c<a;++c){var d=C[b+4*c>>2],f=Ic[d];f&&(O.deleteFramebuffer(f),f.name=0,Ic[d]=null)}},lc:a=>{if(a){var b=Hc[a];b?(O.deleteProgram(b),b.name=0,Hc[a]=null):U||=1281}},kc:(a,b)=>{for(var c=0;c<a;c++){var d=C[b+4*c>>2],f=Q[d];f&&(O.deleteQuery(f),Q[d]=null)}},jc:(a,b)=>{for(var c=0;c<a;c++){var d=C[b+4*c>>2],f=Q[d];f&&(O.Td.deleteQueryEXT(f),Q[d]=null)}},ic:(a,b)=>{for(var c=0;c<
a;c++){var d=C[b+4*c>>2],f=Jc[d];f&&(O.deleteRenderbuffer(f),f.name=0,Jc[d]=null)}},hc:(a,b)=>{for(var c=0;c<a;c++){var d=C[b+4*c>>2],f=Mc[d];f&&(O.deleteSampler(f),f.name=0,Mc[d]=null)}},gc:a=>{if(a){var b=Kc[a];b?(O.deleteShader(b),Kc[a]=null):U||=1281}},fc:a=>{if(a){var b=Nc[a];b?(O.deleteSync(b),b.name=0,Nc[a]=null):U||=1281}},ec:(a,b)=>{for(var c=0;c<a;c++){var d=C[b+4*c>>2],f=ia[d];f&&(O.deleteTexture(f),f.name=0,ia[d]=null)}},dc:ad,cc:ad,bc:a=>{O.depthMask(!!a)},ac:a=>O.disable(a),$b:a=>{O.disableVertexAttribArray(a)},
_b:(a,b,c)=>{O.drawArrays(a,b,c)},Zb:(a,b,c,d)=>{O.drawArraysInstanced(a,b,c,d)},Yb:(a,b,c,d,f)=>{O.ve.drawArraysInstancedBaseInstanceWEBGL(a,b,c,d,f)},Xb:(a,b)=>{for(var c=bd[a],d=0;d<a;d++)c[d]=C[b+4*d>>2];O.drawBuffers(c)},Wb:(a,b,c,d)=>{O.drawElements(a,b,c,d)},Vb:(a,b,c,d,f)=>{O.drawElementsInstanced(a,b,c,d,f)},Ub:(a,b,c,d,f,h,n)=>{O.ve.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,d,f,h,n)},Tb:(a,b,c,d,f,h)=>{O.drawElements(a,d,f,h)},Sb:a=>O.enable(a),Rb:a=>{O.enableVertexAttribArray(a)},
Qb:a=>O.endQuery(a),Pb:a=>{O.Td.endQueryEXT(a)},Ob:(a,b)=>(a=O.fenceSync(a,b))?(b=ha(Nc),a.name=b,Nc[b]=a,b):0,Nb:()=>O.finish(),Mb:()=>O.flush(),Lb:(a,b,c,d)=>{O.framebufferRenderbuffer(a,b,c,Jc[d])},Kb:(a,b,c,d,f)=>{O.framebufferTexture2D(a,b,c,ia[d],f)},Jb:a=>O.frontFace(a),Ib:(a,b)=>{Tc(a,b,"createBuffer",Gc)},Hb:(a,b)=>{Tc(a,b,"createFramebuffer",Ic)},Gb:(a,b)=>{Tc(a,b,"createQuery",Q)},Fb:(a,b)=>{for(var c=0;c<a;c++){var d=O.Td.createQueryEXT();if(!d){for(U||=1282;c<a;)C[b+4*c++>>2]=0;break}var f=
ha(Q);d.name=f;Q[f]=d;C[b+4*c>>2]=f}},Eb:(a,b)=>{Tc(a,b,"createRenderbuffer",Jc)},Db:(a,b)=>{Tc(a,b,"createSampler",Mc)},Cb:(a,b)=>{Tc(a,b,"createTexture",ia)},Bb:cd,Ab:cd,zb:a=>O.generateMipmap(a),yb:(a,b,c)=>{c?C[c>>2]=O.getBufferParameter(a,b):U||=1281},xb:()=>{var a=O.getError()||U;U=0;return a},wb:(a,b)=>ed(a,b,2),vb:(a,b,c,d)=>{a=O.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;C[d>>2]=a},ub:fd,tb:(a,b,c,d)=>{a=O.getProgramInfoLog(Hc[a]);
null===a&&(a="(unknown error)");b=0<b&&d?ic(a,d,b):0;c&&(C[c>>2]=b)},sb:(a,b,c)=>{if(c)if(a>=Fc)U||=1281;else if(a=Hc[a],35716==b)a=O.getProgramInfoLog(a),null===a&&(a="(unknown error)"),C[c>>2]=a.length+1;else if(35719==b){if(!a.me){var d=O.getProgramParameter(a,35718);for(b=0;b<d;++b)a.me=Math.max(a.me,O.getActiveUniform(a,b).name.length+1)}C[c>>2]=a.me}else if(35722==b){if(!a.ke)for(d=O.getProgramParameter(a,35721),b=0;b<d;++b)a.ke=Math.max(a.ke,O.getActiveAttrib(a,b).name.length+1);C[c>>2]=a.ke}else if(35381==
b){if(!a.le)for(d=O.getProgramParameter(a,35382),b=0;b<d;++b)a.le=Math.max(a.le,O.getActiveUniformBlockName(a,b).length+1);C[c>>2]=a.le}else C[c>>2]=O.getProgramParameter(a,b);else U||=1281},rb:gd,qb:gd,pb:(a,b,c)=>{if(c){a=O.getQueryParameter(Q[a],b);var d;"boolean"==typeof a?d=a?1:0:d=a;C[c>>2]=d}else U||=1281},ob:(a,b,c)=>{if(c){a=O.Td.getQueryObjectEXT(Q[a],b);var d;"boolean"==typeof a?d=a?1:0:d=a;C[c>>2]=d}else U||=1281},nb:(a,b,c)=>{c?C[c>>2]=O.getQuery(a,b):U||=1281},mb:(a,b,c)=>{c?C[c>>2]=
O.Td.getQueryEXT(a,b):U||=1281},lb:(a,b,c)=>{c?C[c>>2]=O.getRenderbufferParameter(a,b):U||=1281},kb:(a,b,c,d)=>{a=O.getShaderInfoLog(Kc[a]);null===a&&(a="(unknown error)");b=0<b&&d?ic(a,d,b):0;c&&(C[c>>2]=b)},jb:(a,b,c,d)=>{a=O.getShaderPrecisionFormat(a,b);C[c>>2]=a.rangeMin;C[c+4>>2]=a.rangeMax;C[d>>2]=a.precision},ib:(a,b,c)=>{c?35716==b?(a=O.getShaderInfoLog(Kc[a]),null===a&&(a="(unknown error)"),C[c>>2]=a?a.length+1:0):35720==b?(a=O.getShaderSource(Kc[a]),C[c>>2]=a?a.length+1:0):C[c>>2]=O.getShaderParameter(Kc[a],
b):U||=1281},hb:kd,gb:ld,fb:(a,b)=>{b=b?lc(y,b):"";if(a=Hc[a]){var c=a,d=c.de,f=c.Ae,h;if(!d){c.de=d={};c.ze={};var n=O.getProgramParameter(c,35718);for(h=0;h<n;++h){var k=O.getActiveUniform(c,h);var p=k.name;k=k.size;var t=md(p);t=0<t?p.slice(0,t):p;var v=c.se;c.se+=k;f[t]=[k,v];for(p=0;p<k;++p)d[v]=p,c.ze[v++]=t}}c=a.de;d=0;f=b;h=md(b);0<h&&(d=parseInt(b.slice(h+1))>>>0,f=b.slice(0,h));if((f=a.Ae[f])&&d<f[0]&&(d+=f[1],c[d]=c[d]||O.getUniformLocation(a,b)))return d}else U||=1281;return-1},eb:(a,
b,c)=>{for(var d=bd[b],f=0;f<b;f++)d[f]=C[c+4*f>>2];O.invalidateFramebuffer(a,d)},db:(a,b,c,d,f,h,n)=>{for(var k=bd[b],p=0;p<b;p++)k[p]=C[c+4*p>>2];O.invalidateSubFramebuffer(a,k,d,f,h,n)},cb:a=>O.isSync(Nc[a]),bb:a=>(a=ia[a])?O.isTexture(a):0,ab:a=>O.lineWidth(a),$a:a=>{a=Hc[a];O.linkProgram(a);a.de=0;a.Ae={}},_a:(a,b,c,d,f,h)=>{O.xe.multiDrawArraysInstancedBaseInstanceWEBGL(a,C,b>>2,C,c>>2,C,d>>2,D,f>>2,h)},Za:(a,b,c,d,f,h,n,k)=>{O.xe.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,C,b>>
2,c,C,d>>2,C,f>>2,C,h>>2,D,n>>2,k)},Ya:(a,b)=>{3317==a?Rc=b:3314==a&&(Sc=b);O.pixelStorei(a,b)},Xa:(a,b)=>{O.Td.queryCounterEXT(Q[a],b)},Wa:a=>O.readBuffer(a),Va:(a,b,c,d,f,h,n)=>{if(2<=x.version)if(O.oe)O.readPixels(a,b,c,d,f,h,n);else{var k=nd(h);n>>>=31-Math.clz32(k.BYTES_PER_ELEMENT);O.readPixels(a,b,c,d,f,h,k,n)}else(k=od(h,f,c,d,n))?O.readPixels(a,b,c,d,f,h,k):U||=1280},Ua:(a,b,c,d)=>O.renderbufferStorage(a,b,c,d),Ta:(a,b,c,d,f)=>O.renderbufferStorageMultisample(a,b,c,d,f),Sa:(a,b,c)=>{O.samplerParameterf(Mc[a],
b,c)},Ra:(a,b,c)=>{O.samplerParameteri(Mc[a],b,c)},Qa:(a,b,c)=>{O.samplerParameteri(Mc[a],b,C[c>>2])},Pa:(a,b,c,d)=>O.scissor(a,b,c,d),Oa:(a,b,c,d)=>{for(var f="",h=0;h<b;++h){var n=(n=D[c+4*h>>2])?lc(y,n,d?D[d+4*h>>2]:void 0):"";f+=n}O.shaderSource(Kc[a],f)},Na:(a,b,c)=>O.stencilFunc(a,b,c),Ma:(a,b,c,d)=>O.stencilFuncSeparate(a,b,c,d),La:a=>O.stencilMask(a),Ka:(a,b)=>O.stencilMaskSeparate(a,b),Ja:(a,b,c)=>O.stencilOp(a,b,c),Ia:(a,b,c,d)=>O.stencilOpSeparate(a,b,c,d),Ha:(a,b,c,d,f,h,n,k,p)=>{if(2<=
x.version){if(O.Yd){O.texImage2D(a,b,c,d,f,h,n,k,p);return}if(p){var t=nd(k);p>>>=31-Math.clz32(t.BYTES_PER_ELEMENT);O.texImage2D(a,b,c,d,f,h,n,k,t,p);return}}t=p?od(k,n,d,f,p):null;O.texImage2D(a,b,c,d,f,h,n,k,t)},Ga:(a,b,c)=>O.texParameterf(a,b,c),Fa:(a,b,c)=>{O.texParameterf(a,b,G[c>>2])},Ea:(a,b,c)=>O.texParameteri(a,b,c),Da:(a,b,c)=>{O.texParameteri(a,b,C[c>>2])},Ca:(a,b,c,d,f)=>O.texStorage2D(a,b,c,d,f),Ba:(a,b,c,d,f,h,n,k,p)=>{if(2<=x.version){if(O.Yd){O.texSubImage2D(a,b,c,d,f,h,n,k,p);return}if(p){var t=
nd(k);O.texSubImage2D(a,b,c,d,f,h,n,k,t,p>>>31-Math.clz32(t.BYTES_PER_ELEMENT));return}}p=p?od(k,n,f,h,p):null;O.texSubImage2D(a,b,c,d,f,h,n,k,p)},Aa:(a,b)=>{O.uniform1f(X(a),b)},za:(a,b,c)=>{if(2<=x.version)b&&O.uniform1fv(X(a),G,c>>2,b);else{if(288>=b)for(var d=pd[b],f=0;f<b;++f)d[f]=G[c+4*f>>2];else d=G.subarray(c>>2,c+4*b>>2);O.uniform1fv(X(a),d)}},ya:(a,b)=>{O.uniform1i(X(a),b)},xa:(a,b,c)=>{if(2<=x.version)b&&O.uniform1iv(X(a),C,c>>2,b);else{if(288>=b)for(var d=qd[b],f=0;f<b;++f)d[f]=C[c+4*
f>>2];else d=C.subarray(c>>2,c+4*b>>2);O.uniform1iv(X(a),d)}},wa:(a,b,c)=>{O.uniform2f(X(a),b,c)},va:(a,b,c)=>{if(2<=x.version)b&&O.uniform2fv(X(a),G,c>>2,2*b);else{if(144>=b){b*=2;for(var d=pd[b],f=0;f<b;f+=2)d[f]=G[c+4*f>>2],d[f+1]=G[c+(4*f+4)>>2]}else d=G.subarray(c>>2,c+8*b>>2);O.uniform2fv(X(a),d)}},ua:(a,b,c)=>{O.uniform2i(X(a),b,c)},ta:(a,b,c)=>{if(2<=x.version)b&&O.uniform2iv(X(a),C,c>>2,2*b);else{if(144>=b){b*=2;for(var d=qd[b],f=0;f<b;f+=2)d[f]=C[c+4*f>>2],d[f+1]=C[c+(4*f+4)>>2]}else d=
C.subarray(c>>2,c+8*b>>2);O.uniform2iv(X(a),d)}},sa:(a,b,c,d)=>{O.uniform3f(X(a),b,c,d)},ra:(a,b,c)=>{if(2<=x.version)b&&O.uniform3fv(X(a),G,c>>2,3*b);else{if(96>=b){b*=3;for(var d=pd[b],f=0;f<b;f+=3)d[f]=G[c+4*f>>2],d[f+1]=G[c+(4*f+4)>>2],d[f+2]=G[c+(4*f+8)>>2]}else d=G.subarray(c>>2,c+12*b>>2);O.uniform3fv(X(a),d)}},qa:(a,b,c,d)=>{O.uniform3i(X(a),b,c,d)},pa:(a,b,c)=>{if(2<=x.version)b&&O.uniform3iv(X(a),C,c>>2,3*b);else{if(96>=b){b*=3;for(var d=qd[b],f=0;f<b;f+=3)d[f]=C[c+4*f>>2],d[f+1]=C[c+(4*
f+4)>>2],d[f+2]=C[c+(4*f+8)>>2]}else d=C.subarray(c>>2,c+12*b>>2);O.uniform3iv(X(a),d)}},oa:(a,b,c,d,f)=>{O.uniform4f(X(a),b,c,d,f)},na:(a,b,c)=>{if(2<=x.version)b&&O.uniform4fv(X(a),G,c>>2,4*b);else{if(72>=b){var d=pd[4*b],f=G;c>>=2;b*=4;for(var h=0;h<b;h+=4){var n=c+h;d[h]=f[n];d[h+1]=f[n+1];d[h+2]=f[n+2];d[h+3]=f[n+3]}}else d=G.subarray(c>>2,c+16*b>>2);O.uniform4fv(X(a),d)}},ma:(a,b,c,d,f)=>{O.uniform4i(X(a),b,c,d,f)},la:(a,b,c)=>{if(2<=x.version)b&&O.uniform4iv(X(a),C,c>>2,4*b);else{if(72>=b){b*=
4;for(var d=qd[b],f=0;f<b;f+=4)d[f]=C[c+4*f>>2],d[f+1]=C[c+(4*f+4)>>2],d[f+2]=C[c+(4*f+8)>>2],d[f+3]=C[c+(4*f+12)>>2]}else d=C.subarray(c>>2,c+16*b>>2);O.uniform4iv(X(a),d)}},ka:(a,b,c,d)=>{if(2<=x.version)b&&O.uniformMatrix2fv(X(a),!!c,G,d>>2,4*b);else{if(72>=b){b*=4;for(var f=pd[b],h=0;h<b;h+=4)f[h]=G[d+4*h>>2],f[h+1]=G[d+(4*h+4)>>2],f[h+2]=G[d+(4*h+8)>>2],f[h+3]=G[d+(4*h+12)>>2]}else f=G.subarray(d>>2,d+16*b>>2);O.uniformMatrix2fv(X(a),!!c,f)}},ja:(a,b,c,d)=>{if(2<=x.version)b&&O.uniformMatrix3fv(X(a),
!!c,G,d>>2,9*b);else{if(32>=b){b*=9;for(var f=pd[b],h=0;h<b;h+=9)f[h]=G[d+4*h>>2],f[h+1]=G[d+(4*h+4)>>2],f[h+2]=G[d+(4*h+8)>>2],f[h+3]=G[d+(4*h+12)>>2],f[h+4]=G[d+(4*h+16)>>2],f[h+5]=G[d+(4*h+20)>>2],f[h+6]=G[d+(4*h+24)>>2],f[h+7]=G[d+(4*h+28)>>2],f[h+8]=G[d+(4*h+32)>>2]}else f=G.subarray(d>>2,d+36*b>>2);O.uniformMatrix3fv(X(a),!!c,f)}},ia:(a,b,c,d)=>{if(2<=x.version)b&&O.uniformMatrix4fv(X(a),!!c,G,d>>2,16*b);else{if(18>=b){var f=pd[16*b],h=G;d>>=2;b*=16;for(var n=0;n<b;n+=16){var k=d+n;f[n]=h[k];
f[n+1]=h[k+1];f[n+2]=h[k+2];f[n+3]=h[k+3];f[n+4]=h[k+4];f[n+5]=h[k+5];f[n+6]=h[k+6];f[n+7]=h[k+7];f[n+8]=h[k+8];f[n+9]=h[k+9];f[n+10]=h[k+10];f[n+11]=h[k+11];f[n+12]=h[k+12];f[n+13]=h[k+13];f[n+14]=h[k+14];f[n+15]=h[k+15]}}else f=G.subarray(d>>2,d+64*b>>2);O.uniformMatrix4fv(X(a),!!c,f)}},ha:a=>{a=Hc[a];O.useProgram(a);O.Ie=a},ga:(a,b)=>O.vertexAttrib1f(a,b),fa:(a,b)=>{O.vertexAttrib2f(a,G[b>>2],G[b+4>>2])},ea:(a,b)=>{O.vertexAttrib3f(a,G[b>>2],G[b+4>>2],G[b+8>>2])},da:(a,b)=>{O.vertexAttrib4f(a,
G[b>>2],G[b+4>>2],G[b+8>>2],G[b+12>>2])},ca:(a,b)=>{O.vertexAttribDivisor(a,b)},ba:(a,b,c,d,f)=>{O.vertexAttribIPointer(a,b,c,d,f)},aa:(a,b,c,d,f,h)=>{O.vertexAttribPointer(a,b,c,!!d,f,h)},$:(a,b,c,d)=>O.viewport(a,b,c,d),_:(a,b,c,d)=>{O.waitSync(Nc[a],b,(c>>>0)+4294967296*d)},Z:a=>{var b=y.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+1/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-ua.buffer.byteLength+65535)/65536|0;try{ua.grow(d);
Ba();var f=1;break a}catch(h){}f=void 0}if(f)return!0}return!1},Y:()=>x?x.handle:0,gd:(a,b)=>{var c=0;td().forEach((d,f)=>{var h=b+c;f=D[a+4*f>>2]=h;for(h=0;h<d.length;++h)wa[f++]=d.charCodeAt(h);wa[f]=0;c+=d.length+1});return 0},fd:(a,b)=>{var c=td();D[a>>2]=c.length;var d=0;c.forEach(f=>d+=f.length+1);D[b>>2]=d;return 0},X:a=>{Sa||(va=!0);throw new Qa(a);},ed:()=>52,O:function(){return 70},M:(a,b,c,d)=>{for(var f=0,h=0;h<c;h++){var n=D[b>>2],k=D[b+4>>2];b+=8;for(var p=0;p<k;p++){var t=y[n+p],v=
ud[a];0===t||10===t?((1===a?qa:ta)(lc(v)),v.length=0):v.push(t)}f+=k}D[d>>2]=f;return 0},W:Wc,V:Yc,U:Zc,T:$c,D:fd,J:kd,S:ld,f:Ad,v:Bd,e:Cd,I:Dd,H:Ed,t:Fd,u:Gd,s:Hd,j:Id,R:Jd,Q:Kd,P:Ld},Z=function(){function a(c){Z=c.exports;ua=Z.hd;Ba();K=Z.kd;Da.unshift(Z.id);Fa--;0==Fa&&(null!==Ia&&(clearInterval(Ia),Ia=null),Ja&&(c=Ja,Ja=null,c()));return Z}var b={a:Md};Fa++;if(q.instantiateWasm)try{return q.instantiateWasm(b,a)}catch(c){ta(`Module.instantiateWasm callback failed with error: ${c}`),ba(c)}Ma??=
q.locateFile?La("canvaskit.wasm")?"canvaskit.wasm":na+"canvaskit.wasm":(new URL("canvaskit.wasm",import.meta.url)).href;Pa(b,function(c){a(c.instance)}).catch(ba);return{}}(),Mb=a=>(Mb=Z.jd)(a),hd=q._malloc=a=>(hd=q._malloc=Z.ld)(a),Tb=q._free=a=>(Tb=q._free=Z.md)(a),Nd=(a,b)=>(Nd=Z.nd)(a,b),Od=a=>(Od=Z.od)(a),Pd=()=>(Pd=Z.pd)();q.dynCall_viji=(a,b,c,d,f)=>(q.dynCall_viji=Z.qd)(a,b,c,d,f);q.dynCall_vijiii=(a,b,c,d,f,h,n)=>(q.dynCall_vijiii=Z.rd)(a,b,c,d,f,h,n);
q.dynCall_viiiiij=(a,b,c,d,f,h,n,k)=>(q.dynCall_viiiiij=Z.sd)(a,b,c,d,f,h,n,k);q.dynCall_vij=(a,b,c,d)=>(q.dynCall_vij=Z.td)(a,b,c,d);q.dynCall_jii=(a,b,c)=>(q.dynCall_jii=Z.ud)(a,b,c);q.dynCall_jiiiiii=(a,b,c,d,f,h,n)=>(q.dynCall_jiiiiii=Z.vd)(a,b,c,d,f,h,n);q.dynCall_jiiiiji=(a,b,c,d,f,h,n,k)=>(q.dynCall_jiiiiji=Z.wd)(a,b,c,d,f,h,n,k);q.dynCall_ji=(a,b)=>(q.dynCall_ji=Z.xd)(a,b);q.dynCall_iijj=(a,b,c,d,f,h)=>(q.dynCall_iijj=Z.yd)(a,b,c,d,f,h);
q.dynCall_jiji=(a,b,c,d,f)=>(q.dynCall_jiji=Z.zd)(a,b,c,d,f);q.dynCall_viijii=(a,b,c,d,f,h,n)=>(q.dynCall_viijii=Z.Ad)(a,b,c,d,f,h,n);q.dynCall_iiiiij=(a,b,c,d,f,h,n)=>(q.dynCall_iiiiij=Z.Bd)(a,b,c,d,f,h,n);q.dynCall_iiiiijj=(a,b,c,d,f,h,n,k,p)=>(q.dynCall_iiiiijj=Z.Cd)(a,b,c,d,f,h,n,k,p);q.dynCall_iiiiiijj=(a,b,c,d,f,h,n,k,p,t)=>(q.dynCall_iiiiiijj=Z.Dd)(a,b,c,d,f,h,n,k,p,t);function Cd(a,b,c,d){var f=Pd();try{return K.get(a)(b,c,d)}catch(h){Od(f);if(h!==h+0)throw h;Nd(1,0)}}
function Ad(a,b){var c=Pd();try{return K.get(a)(b)}catch(d){Od(c);if(d!==d+0)throw d;Nd(1,0)}}function Ld(a,b,c,d,f,h,n,k,p,t){var v=Pd();try{K.get(a)(b,c,d,f,h,n,k,p,t)}catch(z){Od(v);if(z!==z+0)throw z;Nd(1,0)}}function Hd(a,b,c,d){var f=Pd();try{K.get(a)(b,c,d)}catch(h){Od(f);if(h!==h+0)throw h;Nd(1,0)}}function Gd(a,b,c){var d=Pd();try{K.get(a)(b,c)}catch(f){Od(d);if(f!==f+0)throw f;Nd(1,0)}}function Fd(a,b){var c=Pd();try{K.get(a)(b)}catch(d){Od(c);if(d!==d+0)throw d;Nd(1,0)}}
function Id(a,b,c,d,f){var h=Pd();try{K.get(a)(b,c,d,f)}catch(n){Od(h);if(n!==n+0)throw n;Nd(1,0)}}function Bd(a,b,c){var d=Pd();try{return K.get(a)(b,c)}catch(f){Od(d);if(f!==f+0)throw f;Nd(1,0)}}function Kd(a,b,c,d,f,h,n){var k=Pd();try{K.get(a)(b,c,d,f,h,n)}catch(p){Od(k);if(p!==p+0)throw p;Nd(1,0)}}function Ed(a,b,c,d,f,h,n,k){var p=Pd();try{return K.get(a)(b,c,d,f,h,n,k)}catch(t){Od(p);if(t!==t+0)throw t;Nd(1,0)}}
function Jd(a,b,c,d,f,h){var n=Pd();try{K.get(a)(b,c,d,f,h)}catch(k){Od(n);if(k!==k+0)throw k;Nd(1,0)}}function Dd(a,b,c,d,f){var h=Pd();try{return K.get(a)(b,c,d,f)}catch(n){Od(h);if(n!==n+0)throw n;Nd(1,0)}}var Qd,Rd;Ja=function Sd(){Qd||Td();Qd||(Ja=Sd)};function Td(){if(!(0<Fa)){if(!Rd&&(Rd=1,Ra(Ca),0<Fa))return;Qd||(Qd=1,q.calledRun=1,va||(Ra(Da),aa(q),q.onRuntimeInitialized?.(),Ra(Ea)))}}Td();moduleRtn=ca;
return moduleRtn;
}
);
})();
export default CanvasKitInit;
File diff suppressed because it is too large Load Diff
+14 -14
View File
@@ -17,10 +17,10 @@ var Sa=0,Ta=0,Ua="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Va=(a,b=
Wa=(a,b)=>a?Va(q(),a,b):"",C={},Xa=1,Ya={},D=(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},E,Za=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))},$a=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))},ab=a=>{var b=a.getExtension("WEBGL_draw_buffers");
b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},bb=a=>{a.H=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},cb=a=>{a.K=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},db=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))},eb=1,fb=[],F=[],gb=[],hb=[],G=[],H=[],ib=[],I=[],J=[],K=[],L=[],jb={},kb={},lb=4,mb=0,M=a=>{for(var b=eb++,c=a.length;c<b;c++)a[c]=null;return b},O=(a,b,c,e)=>{for(var f=0;f<a;f++){var h=E[c](),l=h&&M(e);h?(h.name=l,e[l]=h):N||=1282;r()[b+4*f>>2]=l}},ob=a=>{var b={J:2,alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,I:!0};a.u||(a.u=a.getContext,
a.getContext=function(e,f){f=a.u(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?nb(c,b):0},nb=(a,b)=>{var c=M(I),e={handle:c,attributes:b,version:b.J,o:a};a.canvas&&(a.canvas.N=e);I[c]=e;("undefined"==typeof b.I||b.I)&&pb(e);return c},pb=a=>{a||=P;if(!a.T){a.T=!0;var b=a.o;b.U=b.getExtension("WEBGL_multi_draw");b.R=b.getExtension("EXT_polygon_offset_clamp");b.P=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");
Za(b);$a(b);ab(b);bb(b);cb(b);2<=a.version&&(b.m=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.m)b.m=b.getExtension("EXT_disjoint_timer_query");db(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},N,P,qb=a=>{E.bindVertexArray(ib[a])},rb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=G[e];f&&(E.deleteTexture(f),f.name=0,G[e]=null)}},sb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2];E.deleteVertexArray(ib[e]);ib[e]=null}},tb=[],ub=(a,
b)=>{O(a,b,"createVertexArray",ib)},vb=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/4294967296};function wb(){var a=db(E);return a=a.concat(a.map(b=>"GL_"+b))}
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},eb=1,fb=[],F=[],gb=[],hb=[],G=[],H=[],ib=[],I=[],J=[],K=[],L=[],jb={},kb={},lb=4,mb=0,M=a=>{for(var b=eb++,c=a.length;c<b;c++)a[c]=null;return b},O=(a,b,c,e)=>{for(var f=0;f<a;f++){var h=E[c](),l=h&&M(e);h?(h.name=l,e[l]=h):N||=1282;r()[b+4*f>>2]=l}},ob=(a,b)=>{a.u||(a.u=a.getContext,a.getContext=function(e,f){f=a.u(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?nb(c,b):0},nb=(a,b)=>{var c=M(I),e={handle:c,attributes:b,version:b.J,o:a};a.canvas&&(a.canvas.N=e);I[c]=e;("undefined"==typeof b.I||b.I)&&pb(e);return c},pb=a=>{a||=P;if(!a.T){a.T=!0;var b=a.o;b.U=b.getExtension("WEBGL_multi_draw");b.R=b.getExtension("EXT_polygon_offset_clamp");b.P=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");Za(b);$a(b);ab(b);bb(b);cb(b);2<=a.version&&(b.m=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.m)b.m=b.getExtension("EXT_disjoint_timer_query");
db(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},N,P,qb=a=>{E.bindVertexArray(ib[a])},rb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=G[e];f&&(E.deleteTexture(f),f.name=0,G[e]=null)}},sb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2];E.deleteVertexArray(ib[e]);ib[e]=null}},tb=[],ub=(a,b)=>{O(a,b,"createVertexArray",ib)},vb=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/4294967296};
function wb(){var a=db(E);return a=a.concat(a.map(b=>"GL_"+b))}
var xb=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(N||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=E.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>P.version){N||=1282;return}e=wb().length;break;case 33307:case 33308:if(2>P.version){N||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=E.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":N||=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:N||=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){N||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:N||=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:vb(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 N||=1281},yb=(a,b)=>xb(a,b,0),zb=(a,b,c)=>{if(c){a=J[a];b=2>P.version?E.m.getQueryObjectEXT(a,b):E.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;vb(c,e)}else N||=1281},Bb=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=Ab(b))&&D(a,c,b);return c},Cb=a=>{var b=jb[a];if(!b){switch(a){case 7939:b=Bb(wb().join(" "));
@@ -34,9 +34,9 @@ e};S=function(f,h,l){l?C[l].postMessage(f,{transfer:h}):postMessage(f,{transfer:
f.W,f.V,f.h,Ob());break;case "onRenderComplete":xc(f.g,f.h,{imageBitmaps:f.S,rasterStartMilliseconds:f.Y,rasterEndMilliseconds:f.X});break;case "setAssociatedObject":c.set(f.F,f.object);break;case "disposeAssociatedObject":f=f.F;h=c.get(f);h.close&&h.close();c.delete(f);break;case "disposeSurface":yc(f.g);break;case "rasterizeImage":zc(f.g,f.image,f.format,f.h);break;case "onRasterizeComplete":Ac(f.g,f.data,f.h);break;default:console.warn(`unrecognized skwasm message: ${h}`)}})};ic=function(e,f,h){S({l:"setAssociatedObject",
F:f,object:h},[h],e)};Zb=function(e){return c.get(e)};Yb=function(e,f){S({l:"disposeAssociatedObject",F:f},[],e)};Sb=function(e,f){S({l:"disposeSurface",g:f},[],e)};Wb=function(e,f,h,l){S({l:"transferCanvas",g:f,canvas:h,h:l},[h],e)};ec=function(e,f,h){S({l:"onInitialized",g:e,$:f,h},[])};Vb=function(e,f,h,l,m){S({l:"resizeSurface",g:f,width:h,height:l,h:m},[],e)};fc=function(e,f){S({l:"onResizeComplete",g:e,h:f},[])};gc=function(e,f,h){e=b.get(e);e.width=f;e.height=h};Ub=function(e,f,h,l,m){S({l:"renderPictures",
g:f,W:h,V:l,h:m},[],e)};hc=async function(e,f,h,l){f||=[];S({l:"onRenderComplete",g:e,h:l,S:f,Y:h,X:Ob()},[...f])};Mb=function(e,f){f||=[];e=b.get(e);f.push(e.transferToImageBitmap());return f};Tb=function(e,f,h,l,m){S({l:"rasterizeImage",g:f,image:h,format:l,h:m},[],e)};bc=function(e,f,h){S({l:"onRasterizeComplete",g:e,data:f,h})};Xb=function(e,f,h){S({l:"triggerContextLoss",g:f,h},[],e)};cc=function(e,f){S({l:"onContextLossTriggered",g:e,h:f},[])};dc=function(e,f){S({l:"reportContextLost",g:e,h:f},
[])};jc=function(){P.o.getExtension("WEBGL_lose_context").loseContext()};$b=function(e,f){const h=ob(e);b.set(h,e);var l=function(m){m.preventDefault();Bc(f);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(h,l);return h};Rb=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",h);P===I[e]&&(P=null);"object"==typeof JSEvents&&JSEvents.ba(I[e].o.canvas);I[e]&&I[e].o.canvas&&(I[e].o.canvas.N=void 0);I[e]=null;b.delete(e);a.delete(e)};
Qb=function(e,f,h){const l=P.o,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=M(G);G[e]=m;return e}})();
var Mc={__cxa_throw:(a,b,c)=>{var e=new Ra(a);t()[e.u+16>>2]=0;t()[e.u+4>>2]=b;t()[e.u+8>>2]=c;Sa=a;Ta++;throw Sa;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_openat:function(){},_abort_js:()=>{Ga("")},_emscripten_create_wasm_worker:(a,b)=>{let c=C[Xa]=new Worker(ma("skwasm.ww.js"));c.postMessage({$ww:Xa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,wasmMemory:g,sb:a,sz:b});c.onmessage=Da;return Xa++},_emscripten_get_now_is_monotonic:()=>
[])};jc=function(){P.o.getExtension("WEBGL_lose_context").loseContext()};$b=function(e,f,h){f=ob(e,{J:2,alpha:!0,depth:!0,stencil:!0,antialias:f,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,I:!0});b.set(f,e);var l=function(m){m.preventDefault();Bc(h);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(f,l);return f};Rb=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",
h);P===I[e]&&(P=null);"object"==typeof JSEvents&&JSEvents.ba(I[e].o.canvas);I[e]&&I[e].o.canvas&&(I[e].o.canvas.N=void 0);I[e]=null;b.delete(e);a.delete(e)};Qb=function(e,f,h){const l=P.o,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=M(G);G[e]=m;return e}})();
var Lc={__cxa_throw:(a,b,c)=>{var e=new Ra(a);t()[e.u+16>>2]=0;t()[e.u+4>>2]=b;t()[e.u+8>>2]=c;Sa=a;Ta++;throw Sa;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_openat:function(){},_abort_js:()=>{Ga("")},_emscripten_create_wasm_worker:(a,b)=>{let c=C[Xa]=new Worker(ma("skwasm.ww.js"));c.postMessage({$ww:Xa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,wasmMemory:g,sb:a,sz:b});c.onmessage=Da;return Xa++},_emscripten_get_now_is_monotonic:()=>
1,_emscripten_runtime_keepalive_clear:()=>{za=!1;Oa=0},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:function(){return-52},_munmap_js:function(){},_setitimer_js:(a,b)=>{Ya[a]&&(clearTimeout(Ya[a].id),delete Ya[a]);if(!b)return 0;var c=setTimeout(()=>{delete Ya[a];Qa(()=>Cc(a,performance.now()))},b);Ya[a]={id:c,ca: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?(D(a,c,17),D(b,e,17)):(D(a,e,17),D(b,c,17))},emscripten_console_warn:a=>{console.warn(Wa(a))},emscripten_get_now:()=>performance.now(),emscripten_glActiveTexture:a=>E.activeTexture(a),emscripten_glAttachShader:(a,b)=>{E.attachShader(F[a],H[b])},emscripten_glBeginQuery:(a,b)=>{E.beginQuery(a,J[b])},emscripten_glBeginQueryEXT:(a,
b)=>{E.m.beginQueryEXT(a,J[b])},emscripten_glBindAttribLocation:(a,b,c)=>{E.bindAttribLocation(F[a],b,Wa(c))},emscripten_glBindBuffer:(a,b)=>{35051==a?E.D=b:35052==a&&(E.s=b);E.bindBuffer(a,fb[b])},emscripten_glBindFramebuffer:(a,b)=>{E.bindFramebuffer(a,gb[b])},emscripten_glBindRenderbuffer:(a,b)=>{E.bindRenderbuffer(a,hb[b])},emscripten_glBindSampler:(a,b)=>{E.bindSampler(a,K[b])},emscripten_glBindTexture:(a,b)=>{E.bindTexture(a,G[b])},emscripten_glBindVertexArray:qb,emscripten_glBindVertexArrayOES:qb,
@@ -74,9 +74,9 @@ b,c,e,f)},emscripten_glVertexAttribPointer:(a,b,c,e,f,h)=>{E.vertexAttribPointer
void 0}if(f)return!0}return!1},emscripten_wasm_worker_post_function_v:(a,b)=>{C[a].postMessage({_wsc:b,x:[]})},emscripten_webgl_enable_extension:function(a,b){a=I[a];b=Wa(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Za(E);"OES_vertex_array_object"==b&&$a(E);"WEBGL_draw_buffers"==b&&ab(E);"WEBGL_draw_instanced_base_vertex_base_instance"==b&&bb(E);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&cb(E);"WEBGL_multi_draw"==b&&(E.U=E.getExtension("WEBGL_multi_draw"));
"EXT_polygon_offset_clamp"==b&&(E.R=E.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(E.P=E.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==b&&(E.Z=E.getExtension("WEBGL_polygon_mode"));return!!a.o.getExtension(b)},emscripten_webgl_get_current_context:()=>P?P.handle:0,emscripten_webgl_make_context_current:a=>{P=I[a];w.aa=E=P?.o;return!a||E?0:-5},environ_get:(a,b)=>{var c=0;Kb().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=Kb();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],U=Lb[a];0===v||10===v?((1===a?pa:y)(Va(U)),U.length=0):U.push(v)}f+=m}t()[e>>2]=f;return 0},glDeleteTextures:rb,glGetIntegerv:yb,glGetString:Cb,glGetStringi:Db,
invoke_ii:Dc,invoke_iii:Ec,invoke_iiii:Fc,invoke_iiiii:Gc,invoke_iiiiiii:Hc,invoke_vi:Ic,invoke_vii:Jc,invoke_viii:Kc,invoke_viiiiiii:Lc,memory:g,proc_exit:Pa,skwasm_captureImageBitmap:Mb,skwasm_connectThread:Pb,skwasm_createGlTextureFromTextureSource:Qb,skwasm_destroyContext:Rb,skwasm_dispatchDisposeSurface:Sb,skwasm_dispatchRasterizeImage:Tb,skwasm_dispatchRenderPictures:Ub,skwasm_dispatchResizeSurface:Vb,skwasm_dispatchTransferCanvas:Wb,skwasm_dispatchTriggerContextLoss:Xb,skwasm_disposeAssociatedObjectOnThread:Yb,
invoke_ii:Dc,invoke_iii:Ec,invoke_iiiii:Fc,invoke_iiiiiii:Gc,invoke_vi:Hc,invoke_vii:Ic,invoke_viii:Jc,invoke_viiiiiii:Kc,memory:g,proc_exit:Pa,skwasm_captureImageBitmap:Mb,skwasm_connectThread:Pb,skwasm_createGlTextureFromTextureSource:Qb,skwasm_destroyContext:Rb,skwasm_dispatchDisposeSurface:Sb,skwasm_dispatchRasterizeImage:Tb,skwasm_dispatchRenderPictures:Ub,skwasm_dispatchResizeSurface:Vb,skwasm_dispatchTransferCanvas:Wb,skwasm_dispatchTriggerContextLoss:Xb,skwasm_disposeAssociatedObjectOnThread:Yb,
skwasm_getAssociatedObject:Zb,skwasm_getGlContextForCanvas:$b,skwasm_isSingleThreaded:ac,skwasm_postRasterizeResult:bc,skwasm_reportContextLossTriggered:cc,skwasm_reportContextLost:dc,skwasm_reportInitialized:ec,skwasm_reportResizeComplete:fc,skwasm_resizeCanvas:gc,skwasm_resolveAndPostImages:hc,skwasm_setAssociatedObjectOnThread:ic,skwasm_triggerContextLossOnCanvas:jc},W=function(){function a(c,e){W=c.exports;w.wasmExports=W;B=W.__indirect_function_table;wa.unshift(W.__wasm_call_ctors);qa=e;z--;
0==z&&(null!==Fa&&(clearInterval(Fa),Fa=null),A&&(c=A,A=null,c()));return W}var b={env:Mc,wasi_snapshot_preview1:Mc};z++;if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){y(`Module.instantiateWasm callback failed with error: ${c}`),fa(c)}Ia??=Ha("skwasm.wasm")?"skwasm.wasm":ma("skwasm.wasm");La(b,function(c){a(c.instance,c.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,c,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,c,e);w._canvas_save=a=>(w._canvas_save=W.canvas_save)(a);
0==z&&(null!==Fa&&(clearInterval(Fa),Fa=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)}Ia??=Ha("skwasm.wasm")?"skwasm.wasm":ma("skwasm.wasm");La(b,function(c){a(c.instance,c.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,c,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,c,e);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_clear=(a,b)=>(w._canvas_clear=W.canvas_clear)(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);
@@ -102,7 +102,7 @@ w._picture_getCullRect=(a,b)=>(w._picture_getCullRect=W.picture_getCullRect)(a,b
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._uniformData_create=a=>(w._uniformData_create=W.uniformData_create)(a);w._uniformData_dispose=a=>(w._uniformData_dispose=W.uniformData_dispose)(a);w._uniformData_getPointer=a=>(w._uniformData_getPointer=W.uniformData_getPointer)(a);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_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);
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._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();w._surface_create=()=>(w._surface_create=W.surface_create)();w._surface_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);
var pc=w._surface_receiveCanvasOnWorker=(a,b,c)=>(pc=w._surface_receiveCanvasOnWorker=W.surface_receiveCanvasOnWorker)(a,b,c),qc=w._surface_onInitialized=(a,b)=>(qc=w._surface_onInitialized=W.surface_onInitialized)(a,b);w._surface_setSize=(a,b,c)=>(w._surface_setSize=W.surface_setSize)(a,b,c);
var rc=w._surface_resizeOnWorker=(a,b,c,e)=>(rc=w._surface_resizeOnWorker=W.surface_resizeOnWorker)(a,b,c,e),sc=w._surface_onResizeComplete=(a,b)=>(sc=w._surface_onResizeComplete=W.surface_onResizeComplete)(a,b);w._surface_getThreadId=a=>(w._surface_getThreadId=W.surface_getThreadId)(a);w._surface_getGlContext=a=>(w._surface_getGlContext=W.surface_getGlContext)(a);w._surface_triggerContextLoss=a=>(w._surface_triggerContextLoss=W.surface_triggerContextLoss)(a);
var tc=w._surface_triggerContextLossOnWorker=(a,b)=>(tc=w._surface_triggerContextLossOnWorker=W.surface_triggerContextLossOnWorker)(a,b),uc=w._surface_onContextLossTriggered=(a,b)=>(uc=w._surface_onContextLossTriggered=W.surface_onContextLossTriggered)(a,b),vc=w._surface_reportContextLost=(a,b)=>(vc=w._surface_reportContextLost=W.surface_reportContextLost)(a,b);w._surface_setCallbackHandler=(a,b)=>(w._surface_setCallbackHandler=W.surface_setCallbackHandler)(a,b);
@@ -131,12 +131,12 @@ w._textStyle_setForeground=(a,b)=>(w._textStyle_setForeground=W.textStyle_setFor
w._vertices_dispose=a=>(w._vertices_dispose=W.vertices_dispose)(a);w._animatedImage_create=(a,b,c)=>(w._animatedImage_create=W.animatedImage_create)(a,b,c);w._animatedImage_dispose=a=>(w._animatedImage_dispose=W.animatedImage_dispose)(a);w._animatedImage_getFrameCount=a=>(w._animatedImage_getFrameCount=W.animatedImage_getFrameCount)(a);w._animatedImage_getRepetitionCount=a=>(w._animatedImage_getRepetitionCount=W.animatedImage_getRepetitionCount)(a);
w._animatedImage_getCurrentFrameDurationMilliseconds=a=>(w._animatedImage_getCurrentFrameDurationMilliseconds=W.animatedImage_getCurrentFrameDurationMilliseconds)(a);w._animatedImage_decodeNextFrame=a=>(w._animatedImage_decodeNextFrame=W.animatedImage_decodeNextFrame)(a);w._animatedImage_getCurrentFrame=a=>(w._animatedImage_getCurrentFrame=W.animatedImage_getCurrentFrame)(a);w._skwasm_isHeavy=()=>(w._skwasm_isHeavy=W.skwasm_isHeavy)();
w._paragraphBuilder_create=(a,b)=>(w._paragraphBuilder_create=W.paragraphBuilder_create)(a,b);w._paragraphBuilder_build=a=>(w._paragraphBuilder_build=W.paragraphBuilder_build)(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._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();var Ab=a=>(Ab=W.malloc)(a),Cc=(a,b)=>(Cc=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),lc=a=>(lc=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);
function Ec(a,b,c){var e=Z();try{return B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Jc(a,b,c){var e=Z();try{B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Dc(a,b){var c=Z();try{return B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Kc(a,b,c,e){var f=Z();try{B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Fc(a,b,c,e){var f=Z();try{return B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}
function Gc(a,b,c,e,f){var h=Z();try{return B.get(a)(b,c,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}function Lc(a,b,c,e,f,h,l,m){var p=Z();try{B.get(a)(b,c,e,f,h,l,m)}catch(v){Y(p);if(v!==v+0)throw v;X(1,0)}}function Ic(a,b){var c=Z();try{B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Hc(a,b,c,e,f,h,l){var m=Z();try{return B.get(a)(b,c,e,f,h,l)}catch(p){Y(m);if(p!==p+0)throw p;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=mc;
w._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(w._paragraphBuilder_setLineBreaksUtf16=W.paragraphBuilder_setLineBreaksUtf16)(a,b);var Ab=a=>(Ab=W.malloc)(a),Cc=(a,b)=>(Cc=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),lc=a=>(lc=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);
function Ec(a,b,c){var e=Z();try{return B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Ic(a,b,c){var e=Z();try{B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Dc(a,b){var c=Z();try{return B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Jc(a,b,c,e){var f=Z();try{B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Fc(a,b,c,e,f){var h=Z();try{return B.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{B.get(a)(b,c,e,f,h,l,m)}catch(v){Y(p);if(v!==v+0)throw v;X(1,0)}}function Hc(a,b){var c=Z();try{B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Gc(a,b,c,e,f,h,l){var m=Z();try{return B.get(a)(b,c,e,f,h,l)}catch(p){Y(m);if(p!==p+0)throw p;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=mc;
w.addFunction=(a,b)=>{if(!T){T=new WeakMap;var c=B.length;if(T)for(var e=0;e<0+c;e++){var f=B.get(e);f&&T.set(f,e)}}if(c=T.get(a)||0)return c;if(kc.length)c=kc.pop();else{try{B.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}c=B.length-1}try{B.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}B.set(c,b)}T.set(a,c);return c};var Nc,Oc;A=function Pc(){Nc||Qc();Nc||(A=Pc)};function Qc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Oc&&(Oc=1,Ea(va),0<z))return;Nc||(Nc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Qc();moduleRtn=ha;
{e:{f:a}})).exports.f}B.set(c,b)}T.set(a,c);return c};var Mc,Nc;A=function Oc(){Mc||Pc();Mc||(A=Oc)};function Pc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Nc&&(Nc=1,Ea(va),0<z))return;Mc||(Mc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Pc();moduleRtn=ha;
return moduleRtn;
File diff suppressed because one or more lines are too long
Binary file not shown.
+14 -14
View File
@@ -17,10 +17,10 @@ var Sa=0,Ta=0,Ua="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Va=(a,b=
Wa=(a,b)=>a?Va(q(),a,b):"",C={},Xa=1,Ya={},D=(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},E,Za=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))},$a=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))},ab=a=>{var b=a.getExtension("WEBGL_draw_buffers");
b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},bb=a=>{a.H=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},cb=a=>{a.K=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},db=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))},eb=1,fb=[],F=[],gb=[],hb=[],G=[],H=[],ib=[],I=[],J=[],K=[],L=[],jb={},kb={},lb=4,mb=0,M=a=>{for(var b=eb++,c=a.length;c<b;c++)a[c]=null;return b},O=(a,b,c,e)=>{for(var f=0;f<a;f++){var h=E[c](),l=h&&M(e);h?(h.name=l,e[l]=h):N||=1282;r()[b+4*f>>2]=l}},ob=a=>{var b={J:2,alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,I:!0};a.u||(a.u=a.getContext,
a.getContext=function(e,f){f=a.u(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?nb(c,b):0},nb=(a,b)=>{var c=M(I),e={handle:c,attributes:b,version:b.J,o:a};a.canvas&&(a.canvas.N=e);I[c]=e;("undefined"==typeof b.I||b.I)&&pb(e);return c},pb=a=>{a||=P;if(!a.T){a.T=!0;var b=a.o;b.U=b.getExtension("WEBGL_multi_draw");b.R=b.getExtension("EXT_polygon_offset_clamp");b.P=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");
Za(b);$a(b);ab(b);bb(b);cb(b);2<=a.version&&(b.m=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.m)b.m=b.getExtension("EXT_disjoint_timer_query");db(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},N,P,qb=a=>{E.bindVertexArray(ib[a])},rb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=G[e];f&&(E.deleteTexture(f),f.name=0,G[e]=null)}},sb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2];E.deleteVertexArray(ib[e]);ib[e]=null}},tb=[],ub=(a,
b)=>{O(a,b,"createVertexArray",ib)},vb=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/4294967296};function wb(){var a=db(E);return a=a.concat(a.map(b=>"GL_"+b))}
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},eb=1,fb=[],F=[],gb=[],hb=[],G=[],H=[],ib=[],I=[],J=[],K=[],L=[],jb={},kb={},lb=4,mb=0,M=a=>{for(var b=eb++,c=a.length;c<b;c++)a[c]=null;return b},O=(a,b,c,e)=>{for(var f=0;f<a;f++){var h=E[c](),l=h&&M(e);h?(h.name=l,e[l]=h):N||=1282;r()[b+4*f>>2]=l}},ob=(a,b)=>{a.u||(a.u=a.getContext,a.getContext=function(e,f){f=a.u(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?nb(c,b):0},nb=(a,b)=>{var c=M(I),e={handle:c,attributes:b,version:b.J,o:a};a.canvas&&(a.canvas.N=e);I[c]=e;("undefined"==typeof b.I||b.I)&&pb(e);return c},pb=a=>{a||=P;if(!a.T){a.T=!0;var b=a.o;b.U=b.getExtension("WEBGL_multi_draw");b.R=b.getExtension("EXT_polygon_offset_clamp");b.P=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");Za(b);$a(b);ab(b);bb(b);cb(b);2<=a.version&&(b.m=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.m)b.m=b.getExtension("EXT_disjoint_timer_query");
db(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},N,P,qb=a=>{E.bindVertexArray(ib[a])},rb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=G[e];f&&(E.deleteTexture(f),f.name=0,G[e]=null)}},sb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2];E.deleteVertexArray(ib[e]);ib[e]=null}},tb=[],ub=(a,b)=>{O(a,b,"createVertexArray",ib)},vb=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/4294967296};
function wb(){var a=db(E);return a=a.concat(a.map(b=>"GL_"+b))}
var xb=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(N||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=E.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>P.version){N||=1282;return}e=wb().length;break;case 33307:case 33308:if(2>P.version){N||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=E.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":N||=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:N||=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){N||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:N||=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:vb(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 N||=1281},yb=(a,b)=>xb(a,b,0),zb=(a,b,c)=>{if(c){a=J[a];b=2>P.version?E.m.getQueryObjectEXT(a,b):E.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;vb(c,e)}else N||=1281},Bb=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=Ab(b))&&D(a,c,b);return c},Cb=a=>{var b=jb[a];if(!b){switch(a){case 7939:b=Bb(wb().join(" "));
@@ -34,9 +34,9 @@ e};S=function(f,h,l){l?C[l].postMessage(f,{transfer:h}):postMessage(f,{transfer:
f.W,f.V,f.h,Ob());break;case "onRenderComplete":xc(f.g,f.h,{imageBitmaps:f.S,rasterStartMilliseconds:f.Y,rasterEndMilliseconds:f.X});break;case "setAssociatedObject":c.set(f.F,f.object);break;case "disposeAssociatedObject":f=f.F;h=c.get(f);h.close&&h.close();c.delete(f);break;case "disposeSurface":yc(f.g);break;case "rasterizeImage":zc(f.g,f.image,f.format,f.h);break;case "onRasterizeComplete":Ac(f.g,f.data,f.h);break;default:console.warn(`unrecognized skwasm message: ${h}`)}})};ic=function(e,f,h){S({l:"setAssociatedObject",
F:f,object:h},[h],e)};Zb=function(e){return c.get(e)};Yb=function(e,f){S({l:"disposeAssociatedObject",F:f},[],e)};Sb=function(e,f){S({l:"disposeSurface",g:f},[],e)};Wb=function(e,f,h,l){S({l:"transferCanvas",g:f,canvas:h,h:l},[h],e)};ec=function(e,f,h){S({l:"onInitialized",g:e,$:f,h},[])};Vb=function(e,f,h,l,m){S({l:"resizeSurface",g:f,width:h,height:l,h:m},[],e)};fc=function(e,f){S({l:"onResizeComplete",g:e,h:f},[])};gc=function(e,f,h){e=b.get(e);e.width=f;e.height=h};Ub=function(e,f,h,l,m){S({l:"renderPictures",
g:f,W:h,V:l,h:m},[],e)};hc=async function(e,f,h,l){f||=[];S({l:"onRenderComplete",g:e,h:l,S:f,Y:h,X:Ob()},[...f])};Mb=function(e,f){f||=[];e=b.get(e);f.push(e.transferToImageBitmap());return f};Tb=function(e,f,h,l,m){S({l:"rasterizeImage",g:f,image:h,format:l,h:m},[],e)};bc=function(e,f,h){S({l:"onRasterizeComplete",g:e,data:f,h})};Xb=function(e,f,h){S({l:"triggerContextLoss",g:f,h},[],e)};cc=function(e,f){S({l:"onContextLossTriggered",g:e,h:f},[])};dc=function(e,f){S({l:"reportContextLost",g:e,h:f},
[])};jc=function(){P.o.getExtension("WEBGL_lose_context").loseContext()};$b=function(e,f){const h=ob(e);b.set(h,e);var l=function(m){m.preventDefault();Bc(f);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(h,l);return h};Rb=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",h);P===I[e]&&(P=null);"object"==typeof JSEvents&&JSEvents.ba(I[e].o.canvas);I[e]&&I[e].o.canvas&&(I[e].o.canvas.N=void 0);I[e]=null;b.delete(e);a.delete(e)};
Qb=function(e,f,h){const l=P.o,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=M(G);G[e]=m;return e}})();
var Mc={__cxa_throw:(a,b,c)=>{var e=new Ra(a);t()[e.u+16>>2]=0;t()[e.u+4>>2]=b;t()[e.u+8>>2]=c;Sa=a;Ta++;throw Sa;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_lstat64:()=>{},__syscall_newfstatat:()=>{},__syscall_openat:function(){},__syscall_stat64:()=>{},_abort_js:()=>{Ga("")},_emscripten_create_wasm_worker:(a,b)=>{let c=C[Xa]=new Worker(ma("skwasm_heavy.ww.js"));c.postMessage({$ww:Xa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,
[])};jc=function(){P.o.getExtension("WEBGL_lose_context").loseContext()};$b=function(e,f,h){f=ob(e,{J:2,alpha:!0,depth:!0,stencil:!0,antialias:f,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,I:!0});b.set(f,e);var l=function(m){m.preventDefault();Bc(h);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(f,l);return f};Rb=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",
h);P===I[e]&&(P=null);"object"==typeof JSEvents&&JSEvents.ba(I[e].o.canvas);I[e]&&I[e].o.canvas&&(I[e].o.canvas.N=void 0);I[e]=null;b.delete(e);a.delete(e)};Qb=function(e,f,h){const l=P.o,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=M(G);G[e]=m;return e}})();
var Lc={__cxa_throw:(a,b,c)=>{var e=new Ra(a);t()[e.u+16>>2]=0;t()[e.u+4>>2]=b;t()[e.u+8>>2]=c;Sa=a;Ta++;throw Sa;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_lstat64:()=>{},__syscall_newfstatat:()=>{},__syscall_openat:function(){},__syscall_stat64:()=>{},_abort_js:()=>{Ga("")},_emscripten_create_wasm_worker:(a,b)=>{let c=C[Xa]=new Worker(ma("skwasm_heavy.ww.js"));c.postMessage({$ww:Xa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,
wasmMemory:g,sb:a,sz:b});c.onmessage=Da;return Xa++},_emscripten_get_now_is_monotonic:()=>1,_emscripten_runtime_keepalive_clear:()=>{za=!1;Oa=0},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:function(){return-52},_munmap_js:function(){},_setitimer_js:(a,b)=>{Ya[a]&&(clearTimeout(Ya[a].id),delete Ya[a]);if(!b)return 0;var c=setTimeout(()=>{delete Ya[a];Qa(()=>Cc(a,performance.now()))},b);Ya[a]={id:c,ca: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?(D(a,c,17),D(b,e,17)):(D(a,e,17),D(b,c,17))},emscripten_console_warn:a=>{console.warn(Wa(a))},emscripten_get_now:()=>performance.now(),emscripten_glActiveTexture:a=>E.activeTexture(a),emscripten_glAttachShader:(a,b)=>{E.attachShader(F[a],H[b])},emscripten_glBeginQuery:(a,
b)=>{E.beginQuery(a,J[b])},emscripten_glBeginQueryEXT:(a,b)=>{E.m.beginQueryEXT(a,J[b])},emscripten_glBindAttribLocation:(a,b,c)=>{E.bindAttribLocation(F[a],b,Wa(c))},emscripten_glBindBuffer:(a,b)=>{35051==a?E.D=b:35052==a&&(E.s=b);E.bindBuffer(a,fb[b])},emscripten_glBindFramebuffer:(a,b)=>{E.bindFramebuffer(a,gb[b])},emscripten_glBindRenderbuffer:(a,b)=>{E.bindRenderbuffer(a,hb[b])},emscripten_glBindSampler:(a,b)=>{E.bindSampler(a,K[b])},emscripten_glBindTexture:(a,b)=>{E.bindTexture(a,G[b])},emscripten_glBindVertexArray:qb,
@@ -74,9 +74,9 @@ b,c,e,f)},emscripten_glVertexAttribPointer:(a,b,c,e,f,h)=>{E.vertexAttribPointer
void 0}if(f)return!0}return!1},emscripten_wasm_worker_post_function_v:(a,b)=>{C[a].postMessage({_wsc:b,x:[]})},emscripten_webgl_enable_extension:function(a,b){a=I[a];b=Wa(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Za(E);"OES_vertex_array_object"==b&&$a(E);"WEBGL_draw_buffers"==b&&ab(E);"WEBGL_draw_instanced_base_vertex_base_instance"==b&&bb(E);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&cb(E);"WEBGL_multi_draw"==b&&(E.U=E.getExtension("WEBGL_multi_draw"));
"EXT_polygon_offset_clamp"==b&&(E.R=E.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(E.P=E.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==b&&(E.Z=E.getExtension("WEBGL_polygon_mode"));return!!a.o.getExtension(b)},emscripten_webgl_get_current_context:()=>P?P.handle:0,emscripten_webgl_make_context_current:a=>{P=I[a];w.aa=E=P?.o;return!a||E?0:-5},environ_get:(a,b)=>{var c=0;Kb().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=Kb();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],U=Lb[a];0===v||10===v?((1===a?pa:y)(Va(U)),U.length=0):U.push(v)}f+=m}t()[e>>2]=f;return 0},glDeleteTextures:rb,glGetIntegerv:yb,glGetString:Cb,glGetStringi:Db,
invoke_ii:Dc,invoke_iii:Ec,invoke_iiii:Fc,invoke_iiiii:Gc,invoke_iiiiiii:Hc,invoke_vi:Ic,invoke_vii:Jc,invoke_viii:Kc,invoke_viiiiiii:Lc,memory:g,proc_exit:Pa,skwasm_captureImageBitmap:Mb,skwasm_connectThread:Pb,skwasm_createGlTextureFromTextureSource:Qb,skwasm_destroyContext:Rb,skwasm_dispatchDisposeSurface:Sb,skwasm_dispatchRasterizeImage:Tb,skwasm_dispatchRenderPictures:Ub,skwasm_dispatchResizeSurface:Vb,skwasm_dispatchTransferCanvas:Wb,skwasm_dispatchTriggerContextLoss:Xb,skwasm_disposeAssociatedObjectOnThread:Yb,
invoke_ii:Dc,invoke_iii:Ec,invoke_iiiii:Fc,invoke_iiiiiii:Gc,invoke_vi:Hc,invoke_vii:Ic,invoke_viii:Jc,invoke_viiiiiii:Kc,memory:g,proc_exit:Pa,skwasm_captureImageBitmap:Mb,skwasm_connectThread:Pb,skwasm_createGlTextureFromTextureSource:Qb,skwasm_destroyContext:Rb,skwasm_dispatchDisposeSurface:Sb,skwasm_dispatchRasterizeImage:Tb,skwasm_dispatchRenderPictures:Ub,skwasm_dispatchResizeSurface:Vb,skwasm_dispatchTransferCanvas:Wb,skwasm_dispatchTriggerContextLoss:Xb,skwasm_disposeAssociatedObjectOnThread:Yb,
skwasm_getAssociatedObject:Zb,skwasm_getGlContextForCanvas:$b,skwasm_isSingleThreaded:ac,skwasm_postRasterizeResult:bc,skwasm_reportContextLossTriggered:cc,skwasm_reportContextLost:dc,skwasm_reportInitialized:ec,skwasm_reportResizeComplete:fc,skwasm_resizeCanvas:gc,skwasm_resolveAndPostImages:hc,skwasm_setAssociatedObjectOnThread:ic,skwasm_triggerContextLossOnCanvas:jc},W=function(){function a(c,e){W=c.exports;w.wasmExports=W;B=W.__indirect_function_table;wa.unshift(W.__wasm_call_ctors);qa=e;z--;
0==z&&(null!==Fa&&(clearInterval(Fa),Fa=null),A&&(c=A,A=null,c()));return W}var b={env:Mc,wasi_snapshot_preview1:Mc};z++;if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){y(`Module.instantiateWasm callback failed with error: ${c}`),fa(c)}Ia??=Ha("skwasm_heavy.wasm")?"skwasm_heavy.wasm":ma("skwasm_heavy.wasm");La(b,function(c){a(c.instance,c.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,c,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,c,e);
0==z&&(null!==Fa&&(clearInterval(Fa),Fa=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)}Ia??=Ha("skwasm_heavy.wasm")?"skwasm_heavy.wasm":ma("skwasm_heavy.wasm");La(b,function(c){a(c.instance,c.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,c,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,c,e);
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_clear=(a,b)=>(w._canvas_clear=W.canvas_clear)(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);
@@ -102,7 +102,7 @@ w._picture_getCullRect=(a,b)=>(w._picture_getCullRect=W.picture_getCullRect)(a,b
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._uniformData_create=a=>(w._uniformData_create=W.uniformData_create)(a);w._uniformData_dispose=a=>(w._uniformData_dispose=W.uniformData_dispose)(a);w._uniformData_getPointer=a=>(w._uniformData_getPointer=W.uniformData_getPointer)(a);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_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);
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._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();w._surface_create=()=>(w._surface_create=W.surface_create)();w._surface_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);
var pc=w._surface_receiveCanvasOnWorker=(a,b,c)=>(pc=w._surface_receiveCanvasOnWorker=W.surface_receiveCanvasOnWorker)(a,b,c),qc=w._surface_onInitialized=(a,b)=>(qc=w._surface_onInitialized=W.surface_onInitialized)(a,b);w._surface_setSize=(a,b,c)=>(w._surface_setSize=W.surface_setSize)(a,b,c);
var rc=w._surface_resizeOnWorker=(a,b,c,e)=>(rc=w._surface_resizeOnWorker=W.surface_resizeOnWorker)(a,b,c,e),sc=w._surface_onResizeComplete=(a,b)=>(sc=w._surface_onResizeComplete=W.surface_onResizeComplete)(a,b);w._surface_getThreadId=a=>(w._surface_getThreadId=W.surface_getThreadId)(a);w._surface_getGlContext=a=>(w._surface_getGlContext=W.surface_getGlContext)(a);w._surface_triggerContextLoss=a=>(w._surface_triggerContextLoss=W.surface_triggerContextLoss)(a);
var tc=w._surface_triggerContextLossOnWorker=(a,b)=>(tc=w._surface_triggerContextLossOnWorker=W.surface_triggerContextLossOnWorker)(a,b),uc=w._surface_onContextLossTriggered=(a,b)=>(uc=w._surface_onContextLossTriggered=W.surface_onContextLossTriggered)(a,b),vc=w._surface_reportContextLost=(a,b)=>(vc=w._surface_reportContextLost=W.surface_reportContextLost)(a,b);w._surface_setCallbackHandler=(a,b)=>(w._surface_setCallbackHandler=W.surface_setCallbackHandler)(a,b);
@@ -131,12 +131,12 @@ w._textStyle_setForeground=(a,b)=>(w._textStyle_setForeground=W.textStyle_setFor
w._vertices_dispose=a=>(w._vertices_dispose=W.vertices_dispose)(a);w._animatedImage_create=(a,b,c)=>(w._animatedImage_create=W.animatedImage_create)(a,b,c);w._animatedImage_dispose=a=>(w._animatedImage_dispose=W.animatedImage_dispose)(a);w._animatedImage_getFrameCount=a=>(w._animatedImage_getFrameCount=W.animatedImage_getFrameCount)(a);w._animatedImage_getRepetitionCount=a=>(w._animatedImage_getRepetitionCount=W.animatedImage_getRepetitionCount)(a);
w._animatedImage_getCurrentFrameDurationMilliseconds=a=>(w._animatedImage_getCurrentFrameDurationMilliseconds=W.animatedImage_getCurrentFrameDurationMilliseconds)(a);w._animatedImage_decodeNextFrame=a=>(w._animatedImage_decodeNextFrame=W.animatedImage_decodeNextFrame)(a);w._animatedImage_getCurrentFrame=a=>(w._animatedImage_getCurrentFrame=W.animatedImage_getCurrentFrame)(a);w._skwasm_isHeavy=()=>(w._skwasm_isHeavy=W.skwasm_isHeavy)();
w._paragraphBuilder_create=(a,b)=>(w._paragraphBuilder_create=W.paragraphBuilder_create)(a,b);w._paragraphBuilder_build=a=>(w._paragraphBuilder_build=W.paragraphBuilder_build)(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._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();var Ab=a=>(Ab=W.malloc)(a),Cc=(a,b)=>(Cc=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),lc=a=>(lc=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);
function Ec(a,b,c){var e=Z();try{return B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Jc(a,b,c){var e=Z();try{B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Dc(a,b){var c=Z();try{return B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Kc(a,b,c,e){var f=Z();try{B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Fc(a,b,c,e){var f=Z();try{return B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}
function Gc(a,b,c,e,f){var h=Z();try{return B.get(a)(b,c,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}function Lc(a,b,c,e,f,h,l,m){var p=Z();try{B.get(a)(b,c,e,f,h,l,m)}catch(v){Y(p);if(v!==v+0)throw v;X(1,0)}}function Ic(a,b){var c=Z();try{B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Hc(a,b,c,e,f,h,l){var m=Z();try{return B.get(a)(b,c,e,f,h,l)}catch(p){Y(m);if(p!==p+0)throw p;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=mc;
w._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(w._paragraphBuilder_setLineBreaksUtf16=W.paragraphBuilder_setLineBreaksUtf16)(a,b);var Ab=a=>(Ab=W.malloc)(a),Cc=(a,b)=>(Cc=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),lc=a=>(lc=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);
function Ec(a,b,c){var e=Z();try{return B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Ic(a,b,c){var e=Z();try{B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Dc(a,b){var c=Z();try{return B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Jc(a,b,c,e){var f=Z();try{B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Fc(a,b,c,e,f){var h=Z();try{return B.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{B.get(a)(b,c,e,f,h,l,m)}catch(v){Y(p);if(v!==v+0)throw v;X(1,0)}}function Hc(a,b){var c=Z();try{B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Gc(a,b,c,e,f,h,l){var m=Z();try{return B.get(a)(b,c,e,f,h,l)}catch(p){Y(m);if(p!==p+0)throw p;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=mc;
w.addFunction=(a,b)=>{if(!T){T=new WeakMap;var c=B.length;if(T)for(var e=0;e<0+c;e++){var f=B.get(e);f&&T.set(f,e)}}if(c=T.get(a)||0)return c;if(kc.length)c=kc.pop();else{try{B.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}c=B.length-1}try{B.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}B.set(c,b)}T.set(a,c);return c};var Nc,Oc;A=function Pc(){Nc||Qc();Nc||(A=Pc)};function Qc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Oc&&(Oc=1,Ea(va),0<z))return;Nc||(Nc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Qc();moduleRtn=ha;
{e:{f:a}})).exports.f}B.set(c,b)}T.set(a,c);return c};var Mc,Nc;A=function Oc(){Mc||Pc();Mc||(A=Oc)};function Pc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Nc&&(Nc=1,Ea(va),0<z))return;Mc||(Mc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Pc();moduleRtn=ha;
return moduleRtn;
File diff suppressed because one or more lines are too long
Binary file not shown.
+94 -95
View File
@@ -6,98 +6,98 @@ var wimp = (() => {
function(moduleArg = {}) {
var moduleRtn;
function c(){g.buffer!=k.buffer&&p();return k}function q(){g.buffer!=k.buffer&&p();return aa}function t(){g.buffer!=k.buffer&&p();return ba}function u(){g.buffer!=k.buffer&&p();return ca}function v(){g.buffer!=k.buffer&&p();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=w.$ww,la=Object.assign({},w),x="";function ma(a){return w.locateFile?w.locateFile(a,x):x+a}var na,oa;
function c(){g.buffer!=k.buffer&&p();return k}function q(){g.buffer!=k.buffer&&p();return aa}function r(){g.buffer!=k.buffer&&p();return ba}function t(){g.buffer!=k.buffer&&p();return ca}function v(){g.buffer!=k.buffer&&p();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=w.$ww,la=Object.assign({},w),x="";function ma(a){return w.locateFile?w.locateFile(a,x):x+a}var na,oa;
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&&(oa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),na=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
var pa=console.log.bind(console),y=console.error.bind(console);Object.assign(w,la);la=null;var g,qa,ra=!1,sa,k,aa,ta,ua,ba,ca,da;function p(){var a=g.buffer;k=new Int8Array(a);ta=new Int16Array(a);aa=new Uint8Array(a);ua=new Uint16Array(a);ba=new Int32Array(a);ca=new Uint32Array(a);da=new Float32Array(a);new Float64Array(a)}w.wasmMemory?g=w.wasmMemory:g=new WebAssembly.Memory({initial:256,maximum:32768,shared:!0});p();var va=[],wa=[],xa=[];
function ya(){ka?(za=1,Aa(w.sb,w.sz),removeEventListener("message",Ba),Ca=Ca.forEach(Da),addEventListener("message",Da)):Ea(wa)}var z=0,Fa=null,A=null;function Ga(a){a="Aborted("+a+")";y(a);ra=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");fa(a);throw a;}var Ha=a=>a.startsWith("data:application/octet-stream;base64,"),Ia;
function Ja(a){return na(a).then(b=>new Uint8Array(b),()=>{if(oa)var b=oa(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ka(a,b,d){return Ja(a).then(e=>WebAssembly.instantiate(e,b)).then(d,e=>{y(`failed to asynchronously prepare wasm: ${e}`);Ga(e)})}
function La(a,b){var d=Ia;return"function"!=typeof WebAssembly.instantiateStreaming||Ha(d)||"function"!=typeof fetch?Ka(d,a,b):fetch(d,{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 Ka(d,a,b)}))}function Ma(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}
var Ca=[],Na=a=>{if(!(a instanceof Ma||"unwind"==a))throw a;},Oa=0,Pa=a=>{sa=a;za||0<Oa||(ra=!0);throw new Ma(a);},Qa=a=>{if(!ra)try{if(a(),!(za||0<Oa))try{sa=a=sa,Pa(a)}catch(b){Na(b)}}catch(b){Na(b)}},B,Da=a=>{let b=a.data,d=b._wsc;d&&Qa(()=>B.get(d)(...b.x))},Ba=a=>{Ca.push(a)},Ea=a=>{a.forEach(b=>b(w))},za=w.noExitRuntime||!0;class Ra{constructor(a){this.s=a-24}}
var Sa=0,Ta=0,Ua="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Va=(a,b=0,d=NaN)=>{var e=b+d;for(d=b;a[d]&&!(d>=e);)++d;if(16<d-b&&a.buffer&&Ua)return Ua.decode(a.slice(b,d));for(e="";b<d;){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},
C=(a,b)=>a?Va(q(),a,b):"",D={},Wa=1,Xa={},E=(a,b,d)=>{var e=q();if(0<d){var f=b;d=b+d-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>=d)break;e[b++]=l}else{if(2047>=l){if(b+1>=d)break;e[b++]=192|l>>6}else{if(65535>=l){if(b+2>=d)break;e[b++]=224|l>>12}else{if(b+3>=d)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},F,Ya=a=>{var b=a.getExtension("ANGLE_instanced_arrays");
b&&(a.vertexAttribDivisor=(d,e)=>b.vertexAttribDivisorANGLE(d,e),a.drawArraysInstanced=(d,e,f,h)=>b.drawArraysInstancedANGLE(d,e,f,h),a.drawElementsInstanced=(d,e,f,h,l)=>b.drawElementsInstancedANGLE(d,e,f,h,l))},Za=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=d=>b.deleteVertexArrayOES(d),a.bindVertexArray=d=>b.bindVertexArrayOES(d),a.isVertexArray=d=>b.isVertexArrayOES(d))},$a=a=>{var b=a.getExtension("WEBGL_draw_buffers");
b&&(a.drawBuffers=(d,e)=>b.drawBuffersWEBGL(d,e))},ab=a=>{a.ba=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},bb=a=>{a.ca=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},cb=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(d=>b.includes(d))},db=1,G=[],H=[],eb=[],I=[],J=[],K=[],fb=[],L=[],M=[],gb=[],hb={},ib={},jb=4,kb=0,N=a=>{for(var b=db++,d=a.length;d<b;d++)a[d]=null;return b},lb=(a,b,d,e)=>{for(var f=0;f<a;f++){var h=F[d](),l=h&&N(e);h?(h.name=l,e[l]=h):O||=1282;t()[b+4*f>>2]=l}},nb=a=>{var b={J:2,alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,H:!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 d=1<b.J?a.getContext("webgl2",b):a.getContext("webgl",b);return d?mb(d,b):0},mb=(a,b)=>{var d=N(L),e={handle:d,attributes:b,version:b.J,m:a};a.canvas&&(a.canvas.M=e);L[d]=e;("undefined"==typeof b.H||b.H)&&ob(e);return d},ob=a=>{a||=P;if(!a.S){a.S=!0;var b=a.m;b.U=b.getExtension("WEBGL_multi_draw");b.P=b.getExtension("EXT_polygon_offset_clamp");b.O=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");
Ya(b);Za(b);$a(b);ab(b);bb(b);2<=a.version&&(b.o=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.o)b.o=b.getExtension("EXT_disjoint_timer_query");cb(b).forEach(d=>{d.includes("lose_context")||d.includes("debug")||b.getExtension(d)})}},O,P,pb=(a,b)=>{F.bindFramebuffer(a,eb[b])},qb=a=>F.clear(a),rb=(a,b,d,e)=>F.clearColor(a,b,d,e),sb=a=>F.clearStencil(a),tb=(a,b)=>{u()[a>>2]=b;var d=u()[a>>2];u()[a+4>>2]=(b-d)/4294967296};
function ub(){var a=cb(F);return a=a.concat(a.map(b=>"GL_"+b))}
var vb=(a,b,d)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=d&&1!=d&&(O||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=F.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>P.version){O||=1282;return}e=ub().length;break;case 33307:case 33308:if(2>P.version){O||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=F.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":O||=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:O||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(d){case 0:t()[b+4*a>>2]=f[a];break;case 2:v()[b+4*a>>2]=f[a];break;case 4:c()[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(h){O||=1280;y(`GL_INVALID_ENUM in glGet${d}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:O||=1280;y(`GL_INVALID_ENUM in glGet${d}v: Native code calling glGet${d}v(${a}) and it returns ${f} of type ${typeof f}!`);
return}switch(d){case 1:tb(b,e);break;case 0:t()[b>>2]=e;break;case 2:v()[b>>2]=e;break;case 4:c()[b]=e?1:0}}else O||=1281},wb=(a,b)=>vb(a,b,0),xb=a=>{a-=5120;0==a?a=c():1==a?a=q():2==a?(g.buffer!=k.buffer&&p(),a=ta):4==a?a=t():6==a?a=v():5==a||28922==a||28520==a||30779==a||30782==a?a=u():(g.buffer!=k.buffer&&p(),a=ua);return a},yb=(a,b,d,e,f)=>{a=xb(a);b=e*((kb||d)*({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+jb-1&-jb);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),
f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},zb=(a,b,d,e,f,h,l)=>{if(2<=P.version)if(F.D)F.readPixels(a,b,d,e,f,h,l);else{var m=xb(h);l>>>=31-Math.clz32(m.BYTES_PER_ELEMENT);F.readPixels(a,b,d,e,f,h,m,l)}else(m=yb(h,f,d,e,l))?F.readPixels(a,b,d,e,f,h,m):O||=1280},Ab=()=>{Ga("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER");return 0},R={},Bb=a=>{a.forEach(b=>{var d=Ab();d&&(R[d]=b)})},Cb={},Eb=()=>{if(!Db){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 Cb)void 0===Cb[b]?delete a[b]:a[b]=Cb[b];var d=[];for(b in a)d.push(`${b}=${a[b]}`);Db=d}return Db},Db,Fb=[null,[],[]],Hb=a=>{for(var b=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++d):b+=3}b+=1;(d=Gb(b))&&E(a,d,b);return d},Ib=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),S=a=>{var b=F.N;
if(b){var d=b.u[a];"number"==typeof d&&(b.u[a]=d=F.getUniformLocation(b,b.K[a]+(0<d?`[${d}]`:"")));return d}O||=1282},T=[];function Jb(){}function Kb(){}function Lb(){}function Mb(){}function Nb(){}function Ob(){}function Pb(){}function Qb(){}function Rb(){}function Sb(){}function Tb(){}function Ub(){}function Vb(){}function Wb(){}function Xb(){}function Yb(){}function Zb(){}function $b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(){}function U(){}function fc(){}
function gc(){}var V,hc=[],jc=a=>ic(a);w.stackAlloc=jc;ka&&(D[0]=this,addEventListener("message",Ba));for(var kc=new Float32Array(288),lc=0;288>=lc;++lc)T[lc]=kc.subarray(0,lc);
(function(){if(w.skwasmSingleThreaded){Yb=function(){return!0};let e;Kb=function(f,h){e=h};Lb=function(){return performance.now()};U=function(f){queueMicrotask(()=>e(f))}}else{Yb=function(){return!1};let e=0;Kb=function(f,h){function l({data:m}){const n=m.l;n&&("syncTimeOrigin"==n?e=performance.timeOrigin-m.timeOrigin:h(m))}f?(D[f].addEventListener("message",l),D[f].postMessage({l:"syncTimeOrigin",timeOrigin:performance.timeOrigin})):addEventListener("message",l)};Lb=function(){return performance.now()+
e};U=function(f,h,l){l?D[l].postMessage(f,{transfer:h}):postMessage(f,{transfer:h})}}const a=new Map,b=new Map,d=new Map;Mb=function(e){Kb(e,function(f){var h=f.l;if(h)switch(h){case "transferCanvas":mc(f.g,f.canvas,f.h);break;case "onInitialized":nc(f.g,f.h);break;case "resizeSurface":oc(f.g,f.width,f.height,f.h);break;case "onResizeComplete":pc(f.g,f.h);break;case "triggerContextLoss":qc(f.g,f.h);break;case "onContextLossTriggered":rc(f.g,f.h);break;case "reportContextLost":sc(f.g,f.h);break;case "renderPictures":tc(f.g,
f.W,f.V,f.h,Lb());break;case "onRenderComplete":uc(f.g,f.h,{imageBitmaps:f.R,rasterStartMilliseconds:f.Y,rasterEndMilliseconds:f.X});break;case "setAssociatedObject":d.set(f.F,f.object);break;case "disposeAssociatedObject":f=f.F;h=d.get(f);h.close&&h.close();d.delete(f);break;case "disposeSurface":vc(f.g);break;case "rasterizeImage":wc(f.g,f.image,f.format,f.h);break;case "onRasterizeComplete":xc(f.g,f.data,f.h);break;default:console.warn(`unrecognized skwasm message: ${h}`)}})};fc=function(e,f,h){U({l:"setAssociatedObject",
F:f,object:h},[h],e)};Wb=function(e){return d.get(e)};Vb=function(e,f){U({l:"disposeAssociatedObject",F:f},[],e)};Pb=function(e,f){U({l:"disposeSurface",g:f},[],e)};Tb=function(e,f,h,l){U({l:"transferCanvas",g:f,canvas:h,h:l},[h],e)};bc=function(e,f,h){U({l:"onInitialized",g:e,$:f,h},[])};Sb=function(e,f,h,l,m){U({l:"resizeSurface",g:f,width:h,height:l,h:m},[],e)};cc=function(e,f){U({l:"onResizeComplete",g:e,h:f},[])};dc=function(e,f,h){e=b.get(e);e.width=f;e.height=h};Rb=function(e,f,h,l,m){U({l:"renderPictures",
g:f,W:h,V:l,h:m},[],e)};ec=async function(e,f,h,l){f||=[];U({l:"onRenderComplete",g:e,h:l,R:f,Y:h,X:Lb()},[...f])};Jb=function(e,f){f||=[];e=b.get(e);f.push(e.transferToImageBitmap());return f};Qb=function(e,f,h,l,m){U({l:"rasterizeImage",g:f,image:h,format:l,h:m},[],e)};Zb=function(e,f,h){U({l:"onRasterizeComplete",g:e,data:f,h})};Ub=function(e,f,h){U({l:"triggerContextLoss",g:f,h},[],e)};$b=function(e,f){U({l:"onContextLossTriggered",g:e,h:f},[])};ac=function(e,f){U({l:"reportContextLost",g:e,h:f},
[])};gc=function(){P.m.getExtension("WEBGL_lose_context").loseContext()};Xb=function(e,f){const h=nb(e);b.set(h,e);var l=function(m){m.preventDefault();yc(f);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(h,l);return h};Ob=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",h);P===L[e]&&(P=null);"object"==typeof JSEvents&&JSEvents.da(L[e].m.canvas);L[e]&&L[e].m.canvas&&(L[e].m.canvas.M=void 0);L[e]=null;b.delete(e);a.delete(e)};
Nb=function(e,f,h){const l=P.m,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=N(J);J[e]=m;return e}})();
var Jc={__cxa_throw:(a,b,d)=>{var e=new Ra(a);u()[e.s+16>>2]=0;u()[e.s+4>>2]=b;u()[e.s+8>>2]=d;Sa=a;Ta++;throw Sa;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_openat:function(){},_abort_js:()=>{Ga("")},_emscripten_create_wasm_worker:(a,b)=>{let d=D[Wa]=new Worker(ma("wimp.ww.js"));d.postMessage({$ww:Wa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,wasmMemory:g,sb:a,sz:b});d.onmessage=Da;return Wa++},_emscripten_get_now_is_monotonic:()=>
1,_emscripten_runtime_keepalive_clear:()=>{za=!1;Oa=0},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:function(){return-52},_munmap_js:function(){},_setitimer_js:(a,b)=>{Xa[a]&&(clearTimeout(Xa[a].id),delete Xa[a]);if(!b)return 0;var d=setTimeout(()=>{delete Xa[a];Qa(()=>zc(a,performance.now()))},b);Xa[a]={id:d,ea:b};return 0},_tzset_js:(a,b,d,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);u()[a>>2]=
60*l;t()[b>>2]=Number(h!=f);b=m=>{var n=Math.abs(m);return`UTC${0<=m?"-":"+"}${String(Math.floor(n/60)).padStart(2,"0")}${String(n%60).padStart(2,"0")}`};a=b(h);b=b(f);f<h?(E(a,d,17),E(b,e,17)):(E(a,e,17),E(b,d,17))},emscripten_console_warn:a=>{console.warn(C(a))},emscripten_date_now:()=>Date.now(),emscripten_errn:(a,b)=>y(C(a,b)),emscripten_get_now:()=>performance.now(),emscripten_glBindFramebuffer:pb,emscripten_glClear:qb,emscripten_glClearColor:rb,emscripten_glClearStencil:sb,emscripten_glGetIntegerv:wb,
emscripten_glReadPixels:zb,emscripten_resize_heap:a=>{var b=q().length;a>>>=0;if(a<=b||2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=b*(1+.2/d);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);p();var f=1;break a}catch(h){}f=void 0}if(f)return!0}return!1},emscripten_stack_snapshot:function(){var a=Error().stack.toString().split("\n");"Error"==a[0]&&a.shift();Bb(a);R.I=Ab();R.T=a;return R.I},emscripten_stack_unwind_buffer:(a,
b,d)=>{if(R.I==a)var e=R.T;else e=Error().stack.toString().split("\n"),"Error"==e[0]&&e.shift(),Bb(e);for(var f=3;e[f]&&Ab()!=a;)++f;for(a=0;a<d&&e[a+f];++a)t()[b+4*a>>2]=Ab();return a},emscripten_wasm_worker_post_function_v:(a,b)=>{D[a].postMessage({_wsc:b,x:[]})},emscripten_webgl_enable_extension:function(a,b){a=L[a];b=C(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Ya(F);"OES_vertex_array_object"==b&&Za(F);"WEBGL_draw_buffers"==b&&$a(F);"WEBGL_draw_instanced_base_vertex_base_instance"==
b&&ab(F);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&bb(F);"WEBGL_multi_draw"==b&&(F.U=F.getExtension("WEBGL_multi_draw"));"EXT_polygon_offset_clamp"==b&&(F.P=F.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(F.O=F.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==b&&(F.Z=F.getExtension("WEBGL_polygon_mode"));return!!a.m.getExtension(b)},emscripten_webgl_make_context_current:a=>{P=L[a];w.aa=F=P?.m;return!a||F?0:-5},environ_get:(a,b)=>{var d=0;Eb().forEach((e,
f)=>{var h=b+d;f=u()[a+4*f>>2]=h;for(h=0;h<e.length;++h)c()[f++]=e.charCodeAt(h);c()[f]=0;d+=e.length+1});return 0},environ_sizes_get:(a,b)=>{var d=Eb();u()[a>>2]=d.length;var e=0;d.forEach(f=>e+=f.length+1);u()[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,d,e)=>{for(var f=0,h=0;h<d;h++){var l=u()[b>>2],m=u()[b+4>>2];b+=8;for(var n=0;n<m;n++){var r=q()[l+n],Q=Fb[a];0===r||10===r?((1===a?pa:y)(Va(Q)),Q.length=0):Q.push(r)}f+=
m}u()[e>>2]=f;return 0},glActiveTexture:a=>F.activeTexture(a),glAttachShader:(a,b)=>{F.attachShader(H[a],K[b])},glBeginQueryEXT:(a,b)=>{F.o.beginQueryEXT(a,M[b])},glBindAttribLocation:(a,b,d)=>{F.bindAttribLocation(H[a],b,C(d))},glBindBuffer:(a,b)=>{35051==a?F.D=b:35052==a&&(F.v=b);F.bindBuffer(a,G[b])},glBindBufferRange:(a,b,d,e,f)=>{F.bindBufferRange(a,b,G[d],e,f)},glBindFramebuffer:pb,glBindRenderbuffer:(a,b)=>{F.bindRenderbuffer(a,I[b])},glBindTexture:(a,b)=>{F.bindTexture(a,J[b])},glBindVertexArray:a=>
{F.bindVertexArray(fb[a])},glBlendEquationSeparate:(a,b)=>F.blendEquationSeparate(a,b),glBlendFuncSeparate:(a,b,d,e)=>F.blendFuncSeparate(a,b,d,e),glBlitFramebuffer:(a,b,d,e,f,h,l,m,n,r)=>F.blitFramebuffer(a,b,d,e,f,h,l,m,n,r),glBufferData:(a,b,d,e)=>{2<=P.version?d&&b?F.bufferData(a,q(),e,d,b):F.bufferData(a,b,e):F.bufferData(a,d?q().subarray(d,d+b):b,e)},glBufferSubData:(a,b,d,e)=>{2<=P.version?d&&F.bufferSubData(a,b,q(),e,d):F.bufferSubData(a,b,q().subarray(e,e+d))},glCheckFramebufferStatus:a=>
F.checkFramebufferStatus(a),glClear:qb,glClearColor:rb,glClearDepthf:a=>F.clearDepth(a),glClearStencil:sb,glColorMask:(a,b,d,e)=>{F.colorMask(!!a,!!b,!!d,!!e)},glCompileShader:a=>{F.compileShader(K[a])},glCreateProgram:()=>{var a=N(H),b=F.createProgram();b.name=a;b.C=b.A=b.B=0;b.G=1;H[a]=b;return a},glCreateShader:a=>{var b=N(K);K[b]=F.createShader(a);return b},glCullFace:a=>F.cullFace(a),glDeleteBuffers:(a,b)=>{for(var d=0;d<a;d++){var e=t()[b+4*d>>2],f=G[e];f&&(F.deleteBuffer(f),f.name=0,G[e]=null,
e==F.D&&(F.D=0),e==F.v&&(F.v=0))}},glDeleteFramebuffers:(a,b)=>{for(var d=0;d<a;++d){var e=t()[b+4*d>>2],f=eb[e];f&&(F.deleteFramebuffer(f),f.name=0,eb[e]=null)}},glDeleteProgram:a=>{if(a){var b=H[a];b?(F.deleteProgram(b),b.name=0,H[a]=null):O||=1281}},glDeleteQueriesEXT:(a,b)=>{for(var d=0;d<a;d++){var e=t()[b+4*d>>2],f=M[e];f&&(F.o.deleteQueryEXT(f),M[e]=null)}},glDeleteRenderbuffers:(a,b)=>{for(var d=0;d<a;d++){var e=t()[b+4*d>>2],f=I[e];f&&(F.deleteRenderbuffer(f),f.name=0,I[e]=null)}},glDeleteShader:a=>
{if(a){var b=K[a];b?(F.deleteShader(b),K[a]=null):O||=1281}},glDeleteSync:a=>{if(a){var b=gb[a];b?(F.deleteSync(b),b.name=0,gb[a]=null):O||=1281}},glDeleteTextures:(a,b)=>{for(var d=0;d<a;d++){var e=t()[b+4*d>>2],f=J[e];f&&(F.deleteTexture(f),f.name=0,J[e]=null)}},glDeleteVertexArrays:(a,b)=>{for(var d=0;d<a;d++){var e=t()[b+4*d>>2];F.deleteVertexArray(fb[e]);fb[e]=null}},glDepthFunc:a=>F.depthFunc(a),glDepthMask:a=>{F.depthMask(!!a)},glDepthRangef:(a,b)=>F.depthRange(a,b),glDetachShader:(a,b)=>{F.detachShader(H[a],
K[b])},glDisable:a=>F.disable(a),glDisableVertexAttribArray:a=>{F.disableVertexAttribArray(a)},glDrawArrays:(a,b,d)=>{F.drawArrays(a,b,d)},glDrawElements:(a,b,d,e)=>{F.drawElements(a,b,d,e)},glEnable:a=>F.enable(a),glEnableVertexAttribArray:a=>{F.enableVertexAttribArray(a)},glEndQueryEXT:a=>{F.o.endQueryEXT(a)},glFenceSync:(a,b)=>(a=F.fenceSync(a,b))?(b=N(gb),a.name=b,gb[b]=a,b):0,glFinish:()=>F.finish(),glFlush:()=>F.flush(),glFramebufferRenderbuffer:(a,b,d,e)=>{F.framebufferRenderbuffer(a,b,d,I[e])},
glFramebufferTexture2D:(a,b,d,e,f)=>{F.framebufferTexture2D(a,b,d,J[e],f)},glFrontFace:a=>F.frontFace(a),glGenBuffers:(a,b)=>{lb(a,b,"createBuffer",G)},glGenFramebuffers:(a,b)=>{lb(a,b,"createFramebuffer",eb)},glGenQueriesEXT:(a,b)=>{for(var d=0;d<a;d++){var e=F.o.createQueryEXT();if(!e){for(O||=1282;d<a;)t()[b+4*d++>>2]=0;break}var f=N(M);e.name=f;M[f]=e;t()[b+4*d>>2]=f}},glGenRenderbuffers:(a,b)=>{lb(a,b,"createRenderbuffer",I)},glGenTextures:(a,b)=>{lb(a,b,"createTexture",J)},glGenVertexArrays:(a,
b)=>{lb(a,b,"createVertexArray",fb)},glGenerateMipmap:a=>F.generateMipmap(a),glGetActiveUniform:(a,b,d,e,f,h,l)=>{a=H[a];if(b=F.getActiveUniform(a,b))d=l&&E(b.name,l,d),e&&(t()[e>>2]=d),f&&(t()[f>>2]=b.size),h&&(t()[h>>2]=b.type)},glGetActiveUniformBlockName:(a,b,d,e,f)=>{a=H[a];if(a=F.getActiveUniformBlockName(a,b))f&&0<d?(d=E(a,f,d),e&&(t()[e>>2]=d)):e&&(t()[e>>2]=0)},glGetActiveUniformBlockiv:(a,b,d,e)=>{if(e)if(a=H[a],35393==d)d=F.getActiveUniformBlockName(a,b),t()[e>>2]=d.length+1;else{if(a=
F.getActiveUniformBlockParameter(a,b,d),null!==a)if(35395==d)for(d=0;d<a.length;d++)t()[e+4*d>>2]=a[d];else t()[e>>2]=a}else O||=1281},glGetBooleanv:(a,b)=>vb(a,b,4),glGetError:()=>{var a=F.getError()||O;O=0;return a},glGetFloatv:(a,b)=>vb(a,b,2),glGetFramebufferAttachmentParameteriv:(a,b,d,e)=>{a=F.getFramebufferAttachmentParameter(a,b,d);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;t()[e>>2]=a},glGetIntegerv:wb,glGetProgramInfoLog:(a,b,d,e)=>{a=F.getProgramInfoLog(H[a]);
null===a&&(a="(unknown error)");b=0<b&&e?E(a,e,b):0;d&&(t()[d>>2]=b)},glGetProgramiv:(a,b,d)=>{if(d)if(a>=db)O||=1281;else if(a=H[a],35716==b)a=F.getProgramInfoLog(a),null===a&&(a="(unknown error)"),t()[d>>2]=a.length+1;else if(35719==b){if(!a.C){var e=F.getProgramParameter(a,35718);for(b=0;b<e;++b)a.C=Math.max(a.C,F.getActiveUniform(a,b).name.length+1)}t()[d>>2]=a.C}else if(35722==b){if(!a.A)for(e=F.getProgramParameter(a,35721),b=0;b<e;++b)a.A=Math.max(a.A,F.getActiveAttrib(a,b).name.length+1);t()[d>>
2]=a.A}else if(35381==b){if(!a.B)for(e=F.getProgramParameter(a,35382),b=0;b<e;++b)a.B=Math.max(a.B,F.getActiveUniformBlockName(a,b).length+1);t()[d>>2]=a.B}else t()[d>>2]=F.getProgramParameter(a,b);else O||=1281},glGetQueryObjectui64vEXT:(a,b,d)=>{if(d){a=M[a];b=2>P.version?F.o.getQueryObjectEXT(a,b):F.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;tb(d,e)}else O||=1281},glGetQueryObjectuivEXT:(a,b,d)=>{if(d){a=F.o.getQueryObjectEXT(M[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;t()[d>>
2]=e}else O||=1281},glGetShaderInfoLog:(a,b,d,e)=>{a=F.getShaderInfoLog(K[a]);null===a&&(a="(unknown error)");b=0<b&&e?E(a,e,b):0;d&&(t()[d>>2]=b)},glGetShaderSource:(a,b,d,e)=>{if(a=F.getShaderSource(K[a]))b=0<b&&e?E(a,e,b):0,d&&(t()[d>>2]=b)},glGetShaderiv:(a,b,d)=>{d?35716==b?(a=F.getShaderInfoLog(K[a]),null===a&&(a="(unknown error)"),a=a?a.length+1:0,t()[d>>2]=a):35720==b?(a=(a=F.getShaderSource(K[a]))?a.length+1:0,t()[d>>2]=a):t()[d>>2]=F.getShaderParameter(K[a],b):O||=1281},glGetString:a=>{var b=
hb[a];if(!b){switch(a){case 7939:b=Hb(ub().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=F.getParameter(a))||(O||=1280);b=b?Hb(b):0;break;case 7938:b=F.getParameter(7938);var d=`OpenGL ES 2.0 (${b})`;2<=P.version&&(d=`OpenGL ES 3.0 (${b})`);b=Hb(d);break;case 35724:b=F.getParameter(35724);d=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==d&&(3==d[1].length&&(d[1]+="0"),b=`OpenGL ES GLSL ES ${d[1]} (${b})`);b=Hb(b);break;default:O||=1280}hb[a]=b}return b},glGetStringi:(a,
b)=>{if(2>P.version)return O||=1282,0;var d=ib[a];if(d)return 0>b||b>=d.length?(O||=1281,0):d[b];switch(a){case 7939:return d=ub().map(Hb),d=ib[a]=d,0>b||b>=d.length?(O||=1281,0):d[b];default:return O||=1280,0}},glGetUniformBlockIndex:(a,b)=>F.getUniformBlockIndex(H[a],C(b)),glGetUniformLocation:(a,b)=>{b=C(b);if(a=H[a]){var d=a,e=d.u,f=d.L,h;if(!e){d.u=e={};d.K={};var l=F.getProgramParameter(d,35718);for(h=0;h<l;++h){var m=F.getActiveUniform(d,h);var n=m.name;m=m.size;var r=Ib(n);r=0<r?n.slice(0,
r):n;var Q=d.G;d.G+=m;f[r]=[m,Q];for(n=0;n<m;++n)e[Q]=n,d.K[Q++]=r}}d=a.u;e=0;f=b;h=Ib(b);0<h&&(e=parseInt(b.slice(h+1))>>>0,f=b.slice(0,h));if((f=a.L[f])&&e<f[0]&&(e+=f[1],d[e]=d[e]||F.getUniformLocation(a,b)))return e}else O||=1281;return-1},glIsBuffer:a=>(a=G[a])?F.isBuffer(a):0,glIsFramebuffer:a=>(a=eb[a])?F.isFramebuffer(a):0,glIsProgram:a=>(a=H[a])?F.isProgram(a):0,glIsRenderbuffer:a=>(a=I[a])?F.isRenderbuffer(a):0,glIsShader:a=>(a=K[a])?F.isShader(a):0,glIsTexture:a=>(a=J[a])?F.isTexture(a):
0,glLinkProgram:a=>{a=H[a];F.linkProgram(a);a.u=0;a.L={}},glPixelStorei:(a,b)=>{3317==a?jb=b:3314==a&&(kb=b);F.pixelStorei(a,b)},glReadPixels:zb,glRenderbufferStorage:(a,b,d,e)=>F.renderbufferStorage(a,b,d,e),glRenderbufferStorageMultisample:(a,b,d,e,f)=>F.renderbufferStorageMultisample(a,b,d,e,f),glScissor:(a,b,d,e)=>F.scissor(a,b,d,e),glShaderBinary:()=>{O||=1280},glShaderSource:(a,b,d,e)=>{for(var f="",h=0;h<b;++h){var l=e?u()[e+4*h>>2]:void 0;f+=C(u()[d+4*h>>2],l)}F.shaderSource(K[a],f)},glStencilFuncSeparate:(a,
b,d,e)=>F.stencilFuncSeparate(a,b,d,e),glStencilMaskSeparate:(a,b)=>F.stencilMaskSeparate(a,b),glStencilOpSeparate:(a,b,d,e)=>F.stencilOpSeparate(a,b,d,e),glTexImage2D:(a,b,d,e,f,h,l,m,n)=>{if(2<=P.version){if(F.v){F.texImage2D(a,b,d,e,f,h,l,m,n);return}if(n){var r=xb(m);n>>>=31-Math.clz32(r.BYTES_PER_ELEMENT);F.texImage2D(a,b,d,e,f,h,l,m,r,n);return}}r=n?yb(m,l,e,f,n):null;F.texImage2D(a,b,d,e,f,h,l,m,r)},glTexParameterfv:(a,b,d)=>{d=v()[d>>2];F.texParameterf(a,b,d)},glTexParameteri:(a,b,d)=>F.texParameteri(a,
b,d),glTexSubImage2D:(a,b,d,e,f,h,l,m,n)=>{if(2<=P.version){if(F.v){F.texSubImage2D(a,b,d,e,f,h,l,m,n);return}if(n){var r=xb(m);F.texSubImage2D(a,b,d,e,f,h,l,m,r,n>>>31-Math.clz32(r.BYTES_PER_ELEMENT));return}}n=n?yb(m,l,f,h,n):null;F.texSubImage2D(a,b,d,e,f,h,l,m,n)},glUniform1fv:(a,b,d)=>{if(2<=P.version)b&&F.uniform1fv(S(a),v(),d>>2,b);else{if(288>=b)for(var e=T[b],f=0;f<b;++f)e[f]=v()[d+4*f>>2];else e=v().subarray(d>>2,d+4*b>>2);F.uniform1fv(S(a),e)}},glUniform1i:(a,b)=>{F.uniform1i(S(a),b)},
glUniform2fv:(a,b,d)=>{if(2<=P.version)b&&F.uniform2fv(S(a),v(),d>>2,2*b);else{if(144>=b){b*=2;for(var e=T[b],f=0;f<b;f+=2)e[f]=v()[d+4*f>>2],e[f+1]=v()[d+(4*f+4)>>2]}else e=v().subarray(d>>2,d+8*b>>2);F.uniform2fv(S(a),e)}},glUniform3fv:(a,b,d)=>{if(2<=P.version)b&&F.uniform3fv(S(a),v(),d>>2,3*b);else{if(96>=b){b*=3;for(var e=T[b],f=0;f<b;f+=3)e[f]=v()[d+4*f>>2],e[f+1]=v()[d+(4*f+4)>>2],e[f+2]=v()[d+(4*f+8)>>2]}else e=v().subarray(d>>2,d+12*b>>2);F.uniform3fv(S(a),e)}},glUniform4fv:(a,b,d)=>{if(2<=
P.version)b&&F.uniform4fv(S(a),v(),d>>2,4*b);else{if(72>=b){var e=T[4*b],f=v();d>>=2;b*=4;for(var h=0;h<b;h+=4){var l=d+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=v().subarray(d>>2,d+16*b>>2);F.uniform4fv(S(a),e)}},glUniformBlockBinding:(a,b,d)=>{a=H[a];F.uniformBlockBinding(a,b,d)},glUniformMatrix4fv:(a,b,d,e)=>{if(2<=P.version)b&&F.uniformMatrix4fv(S(a),!!d,v(),e>>2,16*b);else{if(18>=b){var f=T[16*b],h=v();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=v().subarray(e>>2,e+64*b>>2);F.uniformMatrix4fv(S(a),!!d,f)}},glUseProgram:a=>{a=H[a];F.useProgram(a);F.N=a},glVertexAttribPointer:(a,b,d,e,f,h)=>{F.vertexAttribPointer(a,b,d,!!e,f,h)},glViewport:(a,b,d,e)=>F.viewport(a,b,d,e),glWaitSync:(a,b,d,e)=>{F.waitSync(gb[a],b,(d>>>0)+4294967296*e)},
invoke_ii:Ac,invoke_iii:Bc,invoke_iiii:Cc,invoke_iiiii:Dc,invoke_iiiiiii:Ec,invoke_vi:Fc,invoke_vii:Gc,invoke_viii:Hc,invoke_viiiiiii:Ic,memory:g,proc_exit:Pa,skwasm_captureImageBitmap:Jb,skwasm_connectThread:Mb,skwasm_createGlTextureFromTextureSource:Nb,skwasm_destroyContext:Ob,skwasm_dispatchDisposeSurface:Pb,skwasm_dispatchRasterizeImage:Qb,skwasm_dispatchRenderPictures:Rb,skwasm_dispatchResizeSurface:Sb,skwasm_dispatchTransferCanvas:Tb,skwasm_dispatchTriggerContextLoss:Ub,skwasm_disposeAssociatedObjectOnThread:Vb,
skwasm_getAssociatedObject:Wb,skwasm_getGlContextForCanvas:Xb,skwasm_isSingleThreaded:Yb,skwasm_postRasterizeResult:Zb,skwasm_reportContextLossTriggered:$b,skwasm_reportContextLost:ac,skwasm_reportInitialized:bc,skwasm_reportResizeComplete:cc,skwasm_resizeCanvas:dc,skwasm_resolveAndPostImages:ec,skwasm_setAssociatedObjectOnThread:fc,skwasm_triggerContextLossOnCanvas:gc},W=function(){function a(d,e){W=d.exports;w.wasmExports=W;B=W.__indirect_function_table;wa.unshift(W.__wasm_call_ctors);qa=e;z--;
0==z&&(null!==Fa&&(clearInterval(Fa),Fa=null),A&&(d=A,A=null,d()));return W}var b={env:Jc,wasi_snapshot_preview1:Jc};z++;if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(d){y(`Module.instantiateWasm callback failed with error: ${d}`),fa(d)}Ia??=Ha("wimp.wasm")?"wimp.wasm":ma("wimp.wasm");La(b,function(d){a(d.instance,d.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,d,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,d,e);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,d)=>(w._canvas_translate=W.canvas_translate)(a,b,d);w._canvas_scale=(a,b,d)=>(w._canvas_scale=W.canvas_scale)(a,b,d);w._canvas_rotate=(a,b)=>(w._canvas_rotate=W.canvas_rotate)(a,b);w._canvas_skew=(a,b,d)=>(w._canvas_skew=W.canvas_skew)(a,b,d);
w._canvas_transform=(a,b)=>(w._canvas_transform=W.canvas_transform)(a,b);w._canvas_clear=(a,b)=>(w._canvas_clear=W.canvas_clear)(a,b);w._canvas_clipRect=(a,b,d,e)=>(w._canvas_clipRect=W.canvas_clipRect)(a,b,d,e);w._canvas_clipRRect=(a,b,d)=>(w._canvas_clipRRect=W.canvas_clipRRect)(a,b,d);w._canvas_clipPath=(a,b,d)=>(w._canvas_clipPath=W.canvas_clipPath)(a,b,d);w._canvas_drawColor=(a,b,d)=>(w._canvas_drawColor=W.canvas_drawColor)(a,b,d);
w._canvas_drawLine=(a,b,d,e,f,h)=>(w._canvas_drawLine=W.canvas_drawLine)(a,b,d,e,f,h);w._canvas_drawPaint=(a,b)=>(w._canvas_drawPaint=W.canvas_drawPaint)(a,b);w._canvas_drawRect=(a,b,d)=>(w._canvas_drawRect=W.canvas_drawRect)(a,b,d);w._canvas_drawRRect=(a,b,d)=>(w._canvas_drawRRect=W.canvas_drawRRect)(a,b,d);w._canvas_drawDRRect=(a,b,d,e)=>(w._canvas_drawDRRect=W.canvas_drawDRRect)(a,b,d,e);w._canvas_drawOval=(a,b,d)=>(w._canvas_drawOval=W.canvas_drawOval)(a,b,d);
w._canvas_drawCircle=(a,b,d,e,f)=>(w._canvas_drawCircle=W.canvas_drawCircle)(a,b,d,e,f);w._canvas_drawArc=(a,b,d,e,f,h)=>(w._canvas_drawArc=W.canvas_drawArc)(a,b,d,e,f,h);w._canvas_drawPath=(a,b,d)=>(w._canvas_drawPath=W.canvas_drawPath)(a,b,d);w._canvas_drawShadow=(a,b,d,e,f,h)=>(w._canvas_drawShadow=W.canvas_drawShadow)(a,b,d,e,f,h);w._canvas_drawParagraph=(a,b,d,e)=>(w._canvas_drawParagraph=W.canvas_drawParagraph)(a,b,d,e);
w._canvas_drawPicture=(a,b)=>(w._canvas_drawPicture=W.canvas_drawPicture)(a,b);w._canvas_drawImage=(a,b,d,e,f,h)=>(w._canvas_drawImage=W.canvas_drawImage)(a,b,d,e,f,h);w._canvas_drawImageRect=(a,b,d,e,f,h)=>(w._canvas_drawImageRect=W.canvas_drawImageRect)(a,b,d,e,f,h);w._canvas_drawImageNine=(a,b,d,e,f,h)=>(w._canvas_drawImageNine=W.canvas_drawImageNine)(a,b,d,e,f,h);w._canvas_drawVertices=(a,b,d,e)=>(w._canvas_drawVertices=W.canvas_drawVertices)(a,b,d,e);
w._canvas_drawPoints=(a,b,d,e,f)=>(w._canvas_drawPoints=W.canvas_drawPoints)(a,b,d,e,f);w._canvas_drawAtlas=(a,b,d,e,f,h,l,m,n)=>(w._canvas_drawAtlas=W.canvas_drawAtlas)(a,b,d,e,f,h,l,m,n);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._canvas_quickReject=(a,b)=>(w._canvas_quickReject=W.canvas_quickReject)(a,b);w._contourMeasureIter_create=(a,b,d)=>(w._contourMeasureIter_create=W.contourMeasureIter_create)(a,b,d);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,d,e)=>(w._contourMeasure_getPosTan=W.contourMeasure_getPosTan)(a,b,d,e);w._contourMeasure_getSegment=(a,b,d,e)=>(w._contourMeasure_getSegment=W.contourMeasure_getSegment)(a,b,d,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,d)=>(w._imageFilter_createBlur=W.imageFilter_createBlur)(a,b,d);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_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,d,e)=>(w._typefaces_filterCoveredCodePoints=W.typefaces_filterCoveredCodePoints)(a,b,d,e);w._fontCollection_registerTypeface=(a,b,d)=>(w._fontCollection_registerTypeface=W.fontCollection_registerTypeface)(a,b,d);w._fontCollection_clearCaches=a=>(w._fontCollection_clearCaches=W.fontCollection_clearCaches)(a);w._image_createFromPicture=(a,b,d)=>(w._image_createFromPicture=W.image_createFromPicture)(a,b,d);
w._image_createFromPixels=(a,b,d,e,f)=>(w._image_createFromPixels=W.image_createFromPixels)(a,b,d,e,f);w._image_createFromTextureSource=(a,b,d,e)=>(w._image_createFromTextureSource=W.image_createFromTextureSource)(a,b,d,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._skwasm_getLiveObjectCounts=a=>(w._skwasm_getLiveObjectCounts=W.skwasm_getLiveObjectCounts)(a);w._paint_create=(a,b,d,e,f,h,l,m,n)=>(w._paint_create=W.paint_create)(a,b,d,e,f,h,l,m,n);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,d)=>(w._path_moveTo=W.path_moveTo)(a,b,d);
w._path_relativeMoveTo=(a,b,d)=>(w._path_relativeMoveTo=W.path_relativeMoveTo)(a,b,d);w._path_lineTo=(a,b,d)=>(w._path_lineTo=W.path_lineTo)(a,b,d);w._path_relativeLineTo=(a,b,d)=>(w._path_relativeLineTo=W.path_relativeLineTo)(a,b,d);w._path_quadraticBezierTo=(a,b,d,e,f)=>(w._path_quadraticBezierTo=W.path_quadraticBezierTo)(a,b,d,e,f);w._path_relativeQuadraticBezierTo=(a,b,d,e,f)=>(w._path_relativeQuadraticBezierTo=W.path_relativeQuadraticBezierTo)(a,b,d,e,f);
w._path_cubicTo=(a,b,d,e,f,h,l)=>(w._path_cubicTo=W.path_cubicTo)(a,b,d,e,f,h,l);w._path_relativeCubicTo=(a,b,d,e,f,h,l)=>(w._path_relativeCubicTo=W.path_relativeCubicTo)(a,b,d,e,f,h,l);w._path_conicTo=(a,b,d,e,f,h)=>(w._path_conicTo=W.path_conicTo)(a,b,d,e,f,h);w._path_relativeConicTo=(a,b,d,e,f,h)=>(w._path_relativeConicTo=W.path_relativeConicTo)(a,b,d,e,f,h);w._path_arcToOval=(a,b,d,e,f)=>(w._path_arcToOval=W.path_arcToOval)(a,b,d,e,f);
w._path_arcToRotated=(a,b,d,e,f,h,l,m)=>(w._path_arcToRotated=W.path_arcToRotated)(a,b,d,e,f,h,l,m);w._path_relativeArcToRotated=(a,b,d,e,f,h,l,m)=>(w._path_relativeArcToRotated=W.path_relativeArcToRotated)(a,b,d,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,d,e)=>(w._path_addArc=W.path_addArc)(a,b,d,e);w._path_addPolygon=(a,b,d,e)=>(w._path_addPolygon=W.path_addPolygon)(a,b,d,e);
w._path_addRRect=(a,b)=>(w._path_addRRect=W.path_addRRect)(a,b);w._path_addPath=(a,b,d,e)=>(w._path_addPath=W.path_addPath)(a,b,d,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,d)=>(w._path_contains=W.path_contains)(a,b,d);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,d)=>(w._path_combine=W.path_combine)(a,b,d);
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_ref=a=>(w._picture_ref=W.picture_ref)(a);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,d,e,f,h)=>(w._shader_createLinearGradient=W.shader_createLinearGradient)(a,b,d,e,f,h);
w._shader_createRadialGradient=(a,b,d,e,f,h,l,m)=>(w._shader_createRadialGradient=W.shader_createRadialGradient)(a,b,d,e,f,h,l,m);w._shader_createConicalGradient=(a,b,d,e,f,h,l,m)=>(w._shader_createConicalGradient=W.shader_createConicalGradient)(a,b,d,e,f,h,l,m);w._shader_createSweepGradient=(a,b,d,e,f,h,l,m,n)=>(w._shader_createSweepGradient=W.shader_createSweepGradient)(a,b,d,e,f,h,l,m,n);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,d,e)=>(w._shader_createRuntimeEffectShader=W.shader_createRuntimeEffectShader)(a,b,d,e);w._shader_createFromImage=(a,b,d,e,f)=>(w._shader_createFromImage=W.shader_createFromImage)(a,b,d,e,f);
w._uniformData_create=a=>(w._uniformData_create=W.uniformData_create)(a);w._uniformData_dispose=a=>(w._uniformData_dispose=W.uniformData_dispose)(a);w._uniformData_getPointer=a=>(w._uniformData_getPointer=W.uniformData_getPointer)(a);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_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);
var mc=w._surface_receiveCanvasOnWorker=(a,b,d)=>(mc=w._surface_receiveCanvasOnWorker=W.surface_receiveCanvasOnWorker)(a,b,d),nc=w._surface_onInitialized=(a,b)=>(nc=w._surface_onInitialized=W.surface_onInitialized)(a,b);w._surface_setSize=(a,b,d)=>(w._surface_setSize=W.surface_setSize)(a,b,d);
var oc=w._surface_resizeOnWorker=(a,b,d,e)=>(oc=w._surface_resizeOnWorker=W.surface_resizeOnWorker)(a,b,d,e),pc=w._surface_onResizeComplete=(a,b)=>(pc=w._surface_onResizeComplete=W.surface_onResizeComplete)(a,b);w._surface_getThreadId=a=>(w._surface_getThreadId=W.surface_getThreadId)(a);w._surface_getGlContext=a=>(w._surface_getGlContext=W.surface_getGlContext)(a);w._surface_triggerContextLoss=a=>(w._surface_triggerContextLoss=W.surface_triggerContextLoss)(a);
var qc=w._surface_triggerContextLossOnWorker=(a,b)=>(qc=w._surface_triggerContextLossOnWorker=W.surface_triggerContextLossOnWorker)(a,b),rc=w._surface_onContextLossTriggered=(a,b)=>(rc=w._surface_onContextLossTriggered=W.surface_onContextLossTriggered)(a,b),sc=w._surface_reportContextLost=(a,b)=>(sc=w._surface_reportContextLost=W.surface_reportContextLost)(a,b);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 vc=w._surface_dispose=a=>(vc=w._surface_dispose=W.surface_dispose)(a);w._surface_setResourceCacheLimitBytes=(a,b)=>(w._surface_setResourceCacheLimitBytes=W.surface_setResourceCacheLimitBytes)(a,b);w._surface_renderPictures=(a,b,d)=>(w._surface_renderPictures=W.surface_renderPictures)(a,b,d);var tc=w._surface_renderPicturesOnWorker=(a,b,d,e,f)=>(tc=w._surface_renderPicturesOnWorker=W.surface_renderPicturesOnWorker)(a,b,d,e,f);
function ya(){ka?(za=1,Aa(w.sb,w.sz),removeEventListener("message",Ba),Ca=Ca.forEach(Da),addEventListener("message",Da)):Ea(wa)}var z=0,Fa=null,Ga=null;function Ha(a){a="Aborted("+a+")";y(a);ra=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");fa(a);throw a;}var Ia=a=>a.startsWith("data:application/octet-stream;base64,"),Ja;
function Ka(a){return na(a).then(b=>new Uint8Array(b),()=>{if(oa)var b=oa(a);else throw"both async and sync fetching of the wasm failed";return b})}function La(a,b,d){return Ka(a).then(e=>WebAssembly.instantiate(e,b)).then(d,e=>{y(`failed to asynchronously prepare wasm: ${e}`);Ha(e)})}
function Ma(a,b){var d=Ja;return"function"!=typeof WebAssembly.instantiateStreaming||Ia(d)||"function"!=typeof fetch?La(d,a,b):fetch(d,{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 La(d,a,b)}))}function Na(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}
var Ca=[],Oa=a=>{if(!(a instanceof Na||"unwind"==a))throw a;},Pa=0,Qa=a=>{sa=a;za||0<Pa||(ra=!0);throw new Na(a);},Ra=a=>{if(!ra)try{if(a(),!(za||0<Pa))try{sa=a=sa,Qa(a)}catch(b){Oa(b)}}catch(b){Oa(b)}},A,Da=a=>{let b=a.data,d=b._wsc;d&&Ra(()=>A.get(d)(...b.x))},Ba=a=>{Ca.push(a)},Ea=a=>{a.forEach(b=>b(w))},za=w.noExitRuntime||!0;class Sa{constructor(a){this.s=a-24}}
var Ta=0,Ua=0,Va="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Wa=(a,b=0,d=NaN)=>{var e=b+d;for(d=b;a[d]&&!(d>=e);)++d;if(16<d-b&&a.buffer&&Va)return Va.decode(a.slice(b,d));for(e="";b<d;){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},
B=(a,b)=>a?Wa(q(),a,b):"",C={},Xa=1,Ya={},D=(a,b,d)=>{var e=q();if(0<d){var f=b;d=b+d-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>=d)break;e[b++]=l}else{if(2047>=l){if(b+1>=d)break;e[b++]=192|l>>6}else{if(65535>=l){if(b+2>=d)break;e[b++]=224|l>>12}else{if(b+3>=d)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},E,Za=a=>{var b=a.getExtension("ANGLE_instanced_arrays");
b&&(a.vertexAttribDivisor=(d,e)=>b.vertexAttribDivisorANGLE(d,e),a.drawArraysInstanced=(d,e,f,h)=>b.drawArraysInstancedANGLE(d,e,f,h),a.drawElementsInstanced=(d,e,f,h,l)=>b.drawElementsInstancedANGLE(d,e,f,h,l))},$a=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=d=>b.deleteVertexArrayOES(d),a.bindVertexArray=d=>b.bindVertexArrayOES(d),a.isVertexArray=d=>b.isVertexArrayOES(d))},ab=a=>{var b=a.getExtension("WEBGL_draw_buffers");
b&&(a.drawBuffers=(d,e)=>b.drawBuffersWEBGL(d,e))},bb=a=>{a.ba=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},cb=a=>{a.ca=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},db=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(d=>b.includes(d))},eb=1,F=[],G=[],fb=[],H=[],I=[],J=[],gb=[],K=[],L=[],hb=[],ib={},jb={},kb=4,lb=0,M=a=>{for(var b=eb++,d=a.length;d<b;d++)a[d]=null;return b},mb=(a,b,d,e)=>{for(var f=0;f<a;f++){var h=E[d](),l=h&&M(e);h?(h.name=l,e[l]=h):N||=1282;r()[b+4*f>>2]=l}},ob=(a,b)=>{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 d=1<b.J?a.getContext("webgl2",b):a.getContext("webgl",
b);return d?nb(d,b):0},nb=(a,b)=>{var d=M(K),e={handle:d,attributes:b,version:b.J,m:a};a.canvas&&(a.canvas.M=e);K[d]=e;("undefined"==typeof b.H||b.H)&&pb(e);return d},pb=a=>{a||=O;if(!a.S){a.S=!0;var b=a.m;b.U=b.getExtension("WEBGL_multi_draw");b.P=b.getExtension("EXT_polygon_offset_clamp");b.O=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");Za(b);$a(b);ab(b);bb(b);cb(b);2<=a.version&&(b.o=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.o)b.o=b.getExtension("EXT_disjoint_timer_query");
db(b).forEach(d=>{d.includes("lose_context")||d.includes("debug")||b.getExtension(d)})}},N,O,qb=(a,b)=>{E.bindFramebuffer(a,fb[b])},rb=a=>E.clear(a),sb=(a,b,d,e)=>E.clearColor(a,b,d,e),tb=a=>E.clearStencil(a),ub=(a,b)=>{t()[a>>2]=b;var d=t()[a>>2];t()[a+4>>2]=(b-d)/4294967296};function vb(){var a=db(E);return a=a.concat(a.map(b=>"GL_"+b))}
var wb=(a,b,d)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=d&&1!=d&&(N||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=E.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>O.version){N||=1282;return}e=vb().length;break;case 33307:case 33308:if(2>O.version){N||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=E.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":N||=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:N||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(d){case 0:r()[b+4*a>>2]=f[a];break;case 2:v()[b+4*a>>2]=f[a];break;case 4:c()[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(h){N||=1280;y(`GL_INVALID_ENUM in glGet${d}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:N||=1280;y(`GL_INVALID_ENUM in glGet${d}v: Native code calling glGet${d}v(${a}) and it returns ${f} of type ${typeof f}!`);
return}switch(d){case 1:ub(b,e);break;case 0:r()[b>>2]=e;break;case 2:v()[b>>2]=e;break;case 4:c()[b]=e?1:0}}else N||=1281},xb=(a,b)=>wb(a,b,0),yb=a=>{a-=5120;0==a?a=c():1==a?a=q():2==a?(g.buffer!=k.buffer&&p(),a=ta):4==a?a=r():6==a?a=v():5==a||28922==a||28520==a||30779==a||30782==a?a=t():(g.buffer!=k.buffer&&p(),a=ua);return a},zb=(a,b,d,e,f)=>{a=yb(a);b=e*((lb||d)*({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+kb-1&-kb);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),
f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},Ab=(a,b,d,e,f,h,l)=>{if(2<=O.version)if(E.D)E.readPixels(a,b,d,e,f,h,l);else{var m=yb(h);l>>>=31-Math.clz32(m.BYTES_PER_ELEMENT);E.readPixels(a,b,d,e,f,h,m,l)}else(m=zb(h,f,d,e,l))?E.readPixels(a,b,d,e,f,h,m):N||=1280},Bb=()=>{Ha("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER");return 0},P={},Cb=a=>{a.forEach(b=>{var d=Bb();d&&(P[d]=b)})},Db={},Fb=()=>{if(!Eb){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 Db)void 0===Db[b]?delete a[b]:a[b]=Db[b];var d=[];for(b in a)d.push(`${b}=${a[b]}`);Eb=d}return Eb},Eb,Gb=[null,[],[]],Ib=a=>{for(var b=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++d):b+=3}b+=1;(d=Hb(b))&&D(a,d,b);return d},Jb=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),Kb=[],Q=a=>{var b=
E.N;if(b){var d=b.u[a];"number"==typeof d&&(b.u[a]=d=E.getUniformLocation(b,b.K[a]+(0<d?`[${d}]`:"")));return d}N||=1282},R=[];function Lb(){}function Mb(){}function Nb(){}function Ob(){}function Pb(){}function Qb(){}function Rb(){}function Sb(){}function Tb(){}function Ub(){}function Vb(){}function Wb(){}function Xb(){}function Yb(){}function Zb(){}function $b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(){}function fc(){}function gc(){}function T(){}
function hc(){}function ic(){}var U,jc=[],lc=a=>kc(a);w.stackAlloc=lc;ka&&(C[0]=this,addEventListener("message",Ba));for(var V=0;32>V;++V)Kb.push(Array(V));var mc=new Float32Array(288);for(V=0;288>=V;++V)R[V]=mc.subarray(0,V);
(function(){if(w.skwasmSingleThreaded){$b=function(){return!0};let e;Mb=function(f,h){e=h};Nb=function(){return performance.now()};T=function(f){queueMicrotask(()=>e(f))}}else{$b=function(){return!1};let e=0;Mb=function(f,h){function l({data:m}){const n=m.l;n&&("syncTimeOrigin"==n?e=performance.timeOrigin-m.timeOrigin:h(m))}f?(C[f].addEventListener("message",l),C[f].postMessage({l:"syncTimeOrigin",timeOrigin:performance.timeOrigin})):addEventListener("message",l)};Nb=function(){return performance.now()+
e};T=function(f,h,l){l?C[l].postMessage(f,{transfer:h}):postMessage(f,{transfer:h})}}const a=new Map,b=new Map,d=new Map;Ob=function(e){Mb(e,function(f){var h=f.l;if(h)switch(h){case "transferCanvas":nc(f.g,f.canvas,f.h);break;case "onInitialized":oc(f.g,f.h);break;case "resizeSurface":pc(f.g,f.width,f.height,f.h);break;case "onResizeComplete":qc(f.g,f.h);break;case "triggerContextLoss":rc(f.g,f.h);break;case "onContextLossTriggered":sc(f.g,f.h);break;case "reportContextLost":tc(f.g,f.h);break;case "renderPictures":uc(f.g,
f.W,f.V,f.h,Nb());break;case "onRenderComplete":vc(f.g,f.h,{imageBitmaps:f.R,rasterStartMilliseconds:f.Y,rasterEndMilliseconds:f.X});break;case "setAssociatedObject":d.set(f.F,f.object);break;case "disposeAssociatedObject":f=f.F;h=d.get(f);h.close&&h.close();d.delete(f);break;case "disposeSurface":wc(f.g);break;case "rasterizeImage":xc(f.g,f.image,f.format,f.h);break;case "onRasterizeComplete":yc(f.g,f.data,f.h);break;default:console.warn(`unrecognized skwasm message: ${h}`)}})};hc=function(e,f,h){T({l:"setAssociatedObject",
F:f,object:h},[h],e)};Yb=function(e){return d.get(e)};Xb=function(e,f){T({l:"disposeAssociatedObject",F:f},[],e)};Rb=function(e,f){T({l:"disposeSurface",g:f},[],e)};Vb=function(e,f,h,l){T({l:"transferCanvas",g:f,canvas:h,h:l},[h],e)};dc=function(e,f,h){T({l:"onInitialized",g:e,$:f,h},[])};Ub=function(e,f,h,l,m){T({l:"resizeSurface",g:f,width:h,height:l,h:m},[],e)};ec=function(e,f){T({l:"onResizeComplete",g:e,h:f},[])};fc=function(e,f,h){e=b.get(e);e.width=f;e.height=h};Tb=function(e,f,h,l,m){T({l:"renderPictures",
g:f,W:h,V:l,h:m},[],e)};gc=async function(e,f,h,l){f||=[];T({l:"onRenderComplete",g:e,h:l,R:f,Y:h,X:Nb()},[...f])};Lb=function(e,f){f||=[];e=b.get(e);f.push(e.transferToImageBitmap());return f};Sb=function(e,f,h,l,m){T({l:"rasterizeImage",g:f,image:h,format:l,h:m},[],e)};ac=function(e,f,h){T({l:"onRasterizeComplete",g:e,data:f,h})};Wb=function(e,f,h){T({l:"triggerContextLoss",g:f,h},[],e)};bc=function(e,f){T({l:"onContextLossTriggered",g:e,h:f},[])};cc=function(e,f){T({l:"reportContextLost",g:e,h:f},
[])};ic=function(){O.m.getExtension("WEBGL_lose_context").loseContext()};Zb=function(e,f,h){f=ob(e,{J:2,alpha:!0,depth:!0,stencil:!0,antialias:f,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,H:!0});b.set(f,e);var l=function(m){m.preventDefault();zc(h);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(f,l);return f};Qb=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",
h);O===K[e]&&(O=null);"object"==typeof JSEvents&&JSEvents.da(K[e].m.canvas);K[e]&&K[e].m.canvas&&(K[e].m.canvas.M=void 0);K[e]=null;b.delete(e);a.delete(e)};Pb=function(e,f,h){const l=O.m,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=M(I);I[e]=m;return e}})();
var Jc={__cxa_throw:(a,b,d)=>{var e=new Sa(a);t()[e.s+16>>2]=0;t()[e.s+4>>2]=b;t()[e.s+8>>2]=d;Ta=a;Ua++;throw Ta;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_openat:function(){},_abort_js:()=>{Ha("")},_emscripten_create_wasm_worker:(a,b)=>{let d=C[Xa]=new Worker(ma("wimp.ww.js"));d.postMessage({$ww:Xa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,wasmMemory:g,sb:a,sz:b});d.onmessage=Da;return Xa++},_emscripten_get_now_is_monotonic:()=>
1,_emscripten_runtime_keepalive_clear:()=>{za=!1;Pa=0},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:function(){return-52},_munmap_js:function(){},_setitimer_js:(a,b)=>{Ya[a]&&(clearTimeout(Ya[a].id),delete Ya[a]);if(!b)return 0;var d=setTimeout(()=>{delete Ya[a];Ra(()=>Ac(a,performance.now()))},b);Ya[a]={id:d,ea:b};return 0},_tzset_js:(a,b,d,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 n=Math.abs(m);return`UTC${0<=m?"-":"+"}${String(Math.floor(n/60)).padStart(2,"0")}${String(n%60).padStart(2,"0")}`};a=b(h);b=b(f);f<h?(D(a,d,17),D(b,e,17)):(D(a,e,17),D(b,d,17))},emscripten_console_warn:a=>{console.warn(B(a))},emscripten_date_now:()=>Date.now(),emscripten_errn:(a,b)=>y(B(a,b)),emscripten_get_now:()=>performance.now(),emscripten_glBindFramebuffer:qb,emscripten_glClear:rb,emscripten_glClearColor:sb,emscripten_glClearStencil:tb,emscripten_glGetIntegerv:xb,
emscripten_glReadPixels:Ab,emscripten_resize_heap:a=>{var b=q().length;a>>>=0;if(a<=b||2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=b*(1+.2/d);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);p();var f=1;break a}catch(h){}f=void 0}if(f)return!0}return!1},emscripten_stack_snapshot:function(){var a=Error().stack.toString().split("\n");"Error"==a[0]&&a.shift();Cb(a);P.I=Bb();P.T=a;return P.I},emscripten_stack_unwind_buffer:(a,
b,d)=>{if(P.I==a)var e=P.T;else e=Error().stack.toString().split("\n"),"Error"==e[0]&&e.shift(),Cb(e);for(var f=3;e[f]&&Bb()!=a;)++f;for(a=0;a<d&&e[a+f];++a)r()[b+4*a>>2]=Bb();return a},emscripten_wasm_worker_post_function_v:(a,b)=>{C[a].postMessage({_wsc:b,x:[]})},emscripten_webgl_enable_extension:function(a,b){a=K[a];b=B(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Za(E);"OES_vertex_array_object"==b&&$a(E);"WEBGL_draw_buffers"==b&&ab(E);"WEBGL_draw_instanced_base_vertex_base_instance"==
b&&bb(E);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&cb(E);"WEBGL_multi_draw"==b&&(E.U=E.getExtension("WEBGL_multi_draw"));"EXT_polygon_offset_clamp"==b&&(E.P=E.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(E.O=E.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==b&&(E.Z=E.getExtension("WEBGL_polygon_mode"));return!!a.m.getExtension(b)},emscripten_webgl_make_context_current:a=>{O=K[a];w.aa=E=O?.m;return!a||E?0:-5},environ_get:(a,b)=>{var d=0;Fb().forEach((e,
f)=>{var h=b+d;f=t()[a+4*f>>2]=h;for(h=0;h<e.length;++h)c()[f++]=e.charCodeAt(h);c()[f]=0;d+=e.length+1});return 0},environ_sizes_get:(a,b)=>{var d=Fb();t()[a>>2]=d.length;var e=0;d.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,d,e)=>{for(var f=0,h=0;h<d;h++){var l=t()[b>>2],m=t()[b+4>>2];b+=8;for(var n=0;n<m;n++){var u=q()[l+n],S=Gb[a];0===u||10===u?((1===a?pa:y)(Wa(S)),S.length=0):S.push(u)}f+=
m}t()[e>>2]=f;return 0},glActiveTexture:a=>E.activeTexture(a),glAttachShader:(a,b)=>{E.attachShader(G[a],J[b])},glBeginQueryEXT:(a,b)=>{E.o.beginQueryEXT(a,L[b])},glBindAttribLocation:(a,b,d)=>{E.bindAttribLocation(G[a],b,B(d))},glBindBuffer:(a,b)=>{35051==a?E.D=b:35052==a&&(E.v=b);E.bindBuffer(a,F[b])},glBindBufferRange:(a,b,d,e,f)=>{E.bindBufferRange(a,b,F[d],e,f)},glBindFramebuffer:qb,glBindRenderbuffer:(a,b)=>{E.bindRenderbuffer(a,H[b])},glBindTexture:(a,b)=>{E.bindTexture(a,I[b])},glBindVertexArray:a=>
{E.bindVertexArray(gb[a])},glBlendEquationSeparate:(a,b)=>E.blendEquationSeparate(a,b),glBlendFuncSeparate:(a,b,d,e)=>E.blendFuncSeparate(a,b,d,e),glBlitFramebuffer:(a,b,d,e,f,h,l,m,n,u)=>E.blitFramebuffer(a,b,d,e,f,h,l,m,n,u),glBufferData:(a,b,d,e)=>{2<=O.version?d&&b?E.bufferData(a,q(),e,d,b):E.bufferData(a,b,e):E.bufferData(a,d?q().subarray(d,d+b):b,e)},glBufferSubData:(a,b,d,e)=>{2<=O.version?d&&E.bufferSubData(a,b,q(),e,d):E.bufferSubData(a,b,q().subarray(e,e+d))},glCheckFramebufferStatus:a=>
E.checkFramebufferStatus(a),glClear:rb,glClearColor:sb,glClearDepthf:a=>E.clearDepth(a),glClearStencil:tb,glColorMask:(a,b,d,e)=>{E.colorMask(!!a,!!b,!!d,!!e)},glCompileShader:a=>{E.compileShader(J[a])},glCreateProgram:()=>{var a=M(G),b=E.createProgram();b.name=a;b.C=b.A=b.B=0;b.G=1;G[a]=b;return a},glCreateShader:a=>{var b=M(J);J[b]=E.createShader(a);return b},glCullFace:a=>E.cullFace(a),glDeleteBuffers:(a,b)=>{for(var d=0;d<a;d++){var e=r()[b+4*d>>2],f=F[e];f&&(E.deleteBuffer(f),f.name=0,F[e]=null,
e==E.D&&(E.D=0),e==E.v&&(E.v=0))}},glDeleteFramebuffers:(a,b)=>{for(var d=0;d<a;++d){var e=r()[b+4*d>>2],f=fb[e];f&&(E.deleteFramebuffer(f),f.name=0,fb[e]=null)}},glDeleteProgram:a=>{if(a){var b=G[a];b?(E.deleteProgram(b),b.name=0,G[a]=null):N||=1281}},glDeleteQueriesEXT:(a,b)=>{for(var d=0;d<a;d++){var e=r()[b+4*d>>2],f=L[e];f&&(E.o.deleteQueryEXT(f),L[e]=null)}},glDeleteRenderbuffers:(a,b)=>{for(var d=0;d<a;d++){var e=r()[b+4*d>>2],f=H[e];f&&(E.deleteRenderbuffer(f),f.name=0,H[e]=null)}},glDeleteShader:a=>
{if(a){var b=J[a];b?(E.deleteShader(b),J[a]=null):N||=1281}},glDeleteSync:a=>{if(a){var b=hb[a];b?(E.deleteSync(b),b.name=0,hb[a]=null):N||=1281}},glDeleteTextures:(a,b)=>{for(var d=0;d<a;d++){var e=r()[b+4*d>>2],f=I[e];f&&(E.deleteTexture(f),f.name=0,I[e]=null)}},glDeleteVertexArrays:(a,b)=>{for(var d=0;d<a;d++){var e=r()[b+4*d>>2];E.deleteVertexArray(gb[e]);gb[e]=null}},glDepthFunc:a=>E.depthFunc(a),glDepthMask:a=>{E.depthMask(!!a)},glDepthRangef:(a,b)=>E.depthRange(a,b),glDetachShader:(a,b)=>{E.detachShader(G[a],
J[b])},glDisable:a=>E.disable(a),glDisableVertexAttribArray:a=>{E.disableVertexAttribArray(a)},glDrawArrays:(a,b,d)=>{E.drawArrays(a,b,d)},glDrawElements:(a,b,d,e)=>{E.drawElements(a,b,d,e)},glEnable:a=>E.enable(a),glEnableVertexAttribArray:a=>{E.enableVertexAttribArray(a)},glEndQueryEXT:a=>{E.o.endQueryEXT(a)},glFenceSync:(a,b)=>(a=E.fenceSync(a,b))?(b=M(hb),a.name=b,hb[b]=a,b):0,glFinish:()=>E.finish(),glFlush:()=>E.flush(),glFramebufferRenderbuffer:(a,b,d,e)=>{E.framebufferRenderbuffer(a,b,d,H[e])},
glFramebufferTexture2D:(a,b,d,e,f)=>{E.framebufferTexture2D(a,b,d,I[e],f)},glFrontFace:a=>E.frontFace(a),glGenBuffers:(a,b)=>{mb(a,b,"createBuffer",F)},glGenFramebuffers:(a,b)=>{mb(a,b,"createFramebuffer",fb)},glGenQueriesEXT:(a,b)=>{for(var d=0;d<a;d++){var e=E.o.createQueryEXT();if(!e){for(N||=1282;d<a;)r()[b+4*d++>>2]=0;break}var f=M(L);e.name=f;L[f]=e;r()[b+4*d>>2]=f}},glGenRenderbuffers:(a,b)=>{mb(a,b,"createRenderbuffer",H)},glGenTextures:(a,b)=>{mb(a,b,"createTexture",I)},glGenVertexArrays:(a,
b)=>{mb(a,b,"createVertexArray",gb)},glGenerateMipmap:a=>E.generateMipmap(a),glGetActiveUniform:(a,b,d,e,f,h,l)=>{a=G[a];if(b=E.getActiveUniform(a,b))d=l&&D(b.name,l,d),e&&(r()[e>>2]=d),f&&(r()[f>>2]=b.size),h&&(r()[h>>2]=b.type)},glGetActiveUniformBlockName:(a,b,d,e,f)=>{a=G[a];if(a=E.getActiveUniformBlockName(a,b))f&&0<d?(d=D(a,f,d),e&&(r()[e>>2]=d)):e&&(r()[e>>2]=0)},glGetActiveUniformBlockiv:(a,b,d,e)=>{if(e)if(a=G[a],35393==d)d=E.getActiveUniformBlockName(a,b),r()[e>>2]=d.length+1;else{if(a=
E.getActiveUniformBlockParameter(a,b,d),null!==a)if(35395==d)for(d=0;d<a.length;d++)r()[e+4*d>>2]=a[d];else r()[e>>2]=a}else N||=1281},glGetBooleanv:(a,b)=>wb(a,b,4),glGetError:()=>{var a=E.getError()||N;N=0;return a},glGetFloatv:(a,b)=>wb(a,b,2),glGetFramebufferAttachmentParameteriv:(a,b,d,e)=>{a=E.getFramebufferAttachmentParameter(a,b,d);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;r()[e>>2]=a},glGetIntegerv:xb,glGetProgramInfoLog:(a,b,d,e)=>{a=E.getProgramInfoLog(G[a]);
null===a&&(a="(unknown error)");b=0<b&&e?D(a,e,b):0;d&&(r()[d>>2]=b)},glGetProgramiv:(a,b,d)=>{if(d)if(a>=eb)N||=1281;else if(a=G[a],35716==b)a=E.getProgramInfoLog(a),null===a&&(a="(unknown error)"),r()[d>>2]=a.length+1;else if(35719==b){if(!a.C){var e=E.getProgramParameter(a,35718);for(b=0;b<e;++b)a.C=Math.max(a.C,E.getActiveUniform(a,b).name.length+1)}r()[d>>2]=a.C}else if(35722==b){if(!a.A)for(e=E.getProgramParameter(a,35721),b=0;b<e;++b)a.A=Math.max(a.A,E.getActiveAttrib(a,b).name.length+1);r()[d>>
2]=a.A}else if(35381==b){if(!a.B)for(e=E.getProgramParameter(a,35382),b=0;b<e;++b)a.B=Math.max(a.B,E.getActiveUniformBlockName(a,b).length+1);r()[d>>2]=a.B}else r()[d>>2]=E.getProgramParameter(a,b);else N||=1281},glGetQueryObjectui64vEXT:(a,b,d)=>{if(d){a=L[a];b=2>O.version?E.o.getQueryObjectEXT(a,b):E.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;ub(d,e)}else N||=1281},glGetQueryObjectuivEXT:(a,b,d)=>{if(d){a=E.o.getQueryObjectEXT(L[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;r()[d>>
2]=e}else N||=1281},glGetShaderInfoLog:(a,b,d,e)=>{a=E.getShaderInfoLog(J[a]);null===a&&(a="(unknown error)");b=0<b&&e?D(a,e,b):0;d&&(r()[d>>2]=b)},glGetShaderSource:(a,b,d,e)=>{if(a=E.getShaderSource(J[a]))b=0<b&&e?D(a,e,b):0,d&&(r()[d>>2]=b)},glGetShaderiv:(a,b,d)=>{d?35716==b?(a=E.getShaderInfoLog(J[a]),null===a&&(a="(unknown error)"),a=a?a.length+1:0,r()[d>>2]=a):35720==b?(a=(a=E.getShaderSource(J[a]))?a.length+1:0,r()[d>>2]=a):r()[d>>2]=E.getShaderParameter(J[a],b):N||=1281},glGetString:a=>{var b=
ib[a];if(!b){switch(a){case 7939:b=Ib(vb().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=E.getParameter(a))||(N||=1280);b=b?Ib(b):0;break;case 7938:b=E.getParameter(7938);var d=`OpenGL ES 2.0 (${b})`;2<=O.version&&(d=`OpenGL ES 3.0 (${b})`);b=Ib(d);break;case 35724:b=E.getParameter(35724);d=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==d&&(3==d[1].length&&(d[1]+="0"),b=`OpenGL ES GLSL ES ${d[1]} (${b})`);b=Ib(b);break;default:N||=1280}ib[a]=b}return b},glGetStringi:(a,
b)=>{if(2>O.version)return N||=1282,0;var d=jb[a];if(d)return 0>b||b>=d.length?(N||=1281,0):d[b];switch(a){case 7939:return d=vb().map(Ib),d=jb[a]=d,0>b||b>=d.length?(N||=1281,0):d[b];default:return N||=1280,0}},glGetUniformBlockIndex:(a,b)=>E.getUniformBlockIndex(G[a],B(b)),glGetUniformLocation:(a,b)=>{b=B(b);if(a=G[a]){var d=a,e=d.u,f=d.L,h;if(!e){d.u=e={};d.K={};var l=E.getProgramParameter(d,35718);for(h=0;h<l;++h){var m=E.getActiveUniform(d,h);var n=m.name;m=m.size;var u=Jb(n);u=0<u?n.slice(0,
u):n;var S=d.G;d.G+=m;f[u]=[m,S];for(n=0;n<m;++n)e[S]=n,d.K[S++]=u}}d=a.u;e=0;f=b;h=Jb(b);0<h&&(e=parseInt(b.slice(h+1))>>>0,f=b.slice(0,h));if((f=a.L[f])&&e<f[0]&&(e+=f[1],d[e]=d[e]||E.getUniformLocation(a,b)))return e}else N||=1281;return-1},glInvalidateFramebuffer:(a,b,d)=>{for(var e=Kb[b],f=0;f<b;f++)e[f]=r()[d+4*f>>2];E.invalidateFramebuffer(a,e)},glIsBuffer:a=>(a=F[a])?E.isBuffer(a):0,glIsFramebuffer:a=>(a=fb[a])?E.isFramebuffer(a):0,glIsProgram:a=>(a=G[a])?E.isProgram(a):0,glIsRenderbuffer:a=>
(a=H[a])?E.isRenderbuffer(a):0,glIsShader:a=>(a=J[a])?E.isShader(a):0,glIsTexture:a=>(a=I[a])?E.isTexture(a):0,glLinkProgram:a=>{a=G[a];E.linkProgram(a);a.u=0;a.L={}},glPixelStorei:(a,b)=>{3317==a?kb=b:3314==a&&(lb=b);E.pixelStorei(a,b)},glReadPixels:Ab,glRenderbufferStorage:(a,b,d,e)=>E.renderbufferStorage(a,b,d,e),glRenderbufferStorageMultisample:(a,b,d,e,f)=>E.renderbufferStorageMultisample(a,b,d,e,f),glScissor:(a,b,d,e)=>E.scissor(a,b,d,e),glShaderBinary:()=>{N||=1280},glShaderSource:(a,b,d,e)=>
{for(var f="",h=0;h<b;++h){var l=e?t()[e+4*h>>2]:void 0;f+=B(t()[d+4*h>>2],l)}E.shaderSource(J[a],f)},glStencilFuncSeparate:(a,b,d,e)=>E.stencilFuncSeparate(a,b,d,e),glStencilMaskSeparate:(a,b)=>E.stencilMaskSeparate(a,b),glStencilOpSeparate:(a,b,d,e)=>E.stencilOpSeparate(a,b,d,e),glTexImage2D:(a,b,d,e,f,h,l,m,n)=>{if(2<=O.version){if(E.v){E.texImage2D(a,b,d,e,f,h,l,m,n);return}if(n){var u=yb(m);n>>>=31-Math.clz32(u.BYTES_PER_ELEMENT);E.texImage2D(a,b,d,e,f,h,l,m,u,n);return}}u=n?zb(m,l,e,f,n):null;
E.texImage2D(a,b,d,e,f,h,l,m,u)},glTexParameterfv:(a,b,d)=>{d=v()[d>>2];E.texParameterf(a,b,d)},glTexParameteri:(a,b,d)=>E.texParameteri(a,b,d),glTexSubImage2D:(a,b,d,e,f,h,l,m,n)=>{if(2<=O.version){if(E.v){E.texSubImage2D(a,b,d,e,f,h,l,m,n);return}if(n){var u=yb(m);E.texSubImage2D(a,b,d,e,f,h,l,m,u,n>>>31-Math.clz32(u.BYTES_PER_ELEMENT));return}}n=n?zb(m,l,f,h,n):null;E.texSubImage2D(a,b,d,e,f,h,l,m,n)},glUniform1fv:(a,b,d)=>{if(2<=O.version)b&&E.uniform1fv(Q(a),v(),d>>2,b);else{if(288>=b)for(var e=
R[b],f=0;f<b;++f)e[f]=v()[d+4*f>>2];else e=v().subarray(d>>2,d+4*b>>2);E.uniform1fv(Q(a),e)}},glUniform1i:(a,b)=>{E.uniform1i(Q(a),b)},glUniform2fv:(a,b,d)=>{if(2<=O.version)b&&E.uniform2fv(Q(a),v(),d>>2,2*b);else{if(144>=b){b*=2;for(var e=R[b],f=0;f<b;f+=2)e[f]=v()[d+4*f>>2],e[f+1]=v()[d+(4*f+4)>>2]}else e=v().subarray(d>>2,d+8*b>>2);E.uniform2fv(Q(a),e)}},glUniform3fv:(a,b,d)=>{if(2<=O.version)b&&E.uniform3fv(Q(a),v(),d>>2,3*b);else{if(96>=b){b*=3;for(var e=R[b],f=0;f<b;f+=3)e[f]=v()[d+4*f>>2],
e[f+1]=v()[d+(4*f+4)>>2],e[f+2]=v()[d+(4*f+8)>>2]}else e=v().subarray(d>>2,d+12*b>>2);E.uniform3fv(Q(a),e)}},glUniform4fv:(a,b,d)=>{if(2<=O.version)b&&E.uniform4fv(Q(a),v(),d>>2,4*b);else{if(72>=b){var e=R[4*b],f=v();d>>=2;b*=4;for(var h=0;h<b;h+=4){var l=d+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=v().subarray(d>>2,d+16*b>>2);E.uniform4fv(Q(a),e)}},glUniformBlockBinding:(a,b,d)=>{a=G[a];E.uniformBlockBinding(a,b,d)},glUniformMatrix2fv:(a,b,d,e)=>{if(2<=O.version)b&&E.uniformMatrix2fv(Q(a),
!!d,v(),e>>2,4*b);else{if(72>=b){b*=4;for(var f=R[b],h=0;h<b;h+=4)f[h]=v()[e+4*h>>2],f[h+1]=v()[e+(4*h+4)>>2],f[h+2]=v()[e+(4*h+8)>>2],f[h+3]=v()[e+(4*h+12)>>2]}else f=v().subarray(e>>2,e+16*b>>2);E.uniformMatrix2fv(Q(a),!!d,f)}},glUniformMatrix3fv:(a,b,d,e)=>{if(2<=O.version)b&&E.uniformMatrix3fv(Q(a),!!d,v(),e>>2,9*b);else{if(32>=b){b*=9;for(var f=R[b],h=0;h<b;h+=9)f[h]=v()[e+4*h>>2],f[h+1]=v()[e+(4*h+4)>>2],f[h+2]=v()[e+(4*h+8)>>2],f[h+3]=v()[e+(4*h+12)>>2],f[h+4]=v()[e+(4*h+16)>>2],f[h+5]=v()[e+
(4*h+20)>>2],f[h+6]=v()[e+(4*h+24)>>2],f[h+7]=v()[e+(4*h+28)>>2],f[h+8]=v()[e+(4*h+32)>>2]}else f=v().subarray(e>>2,e+36*b>>2);E.uniformMatrix3fv(Q(a),!!d,f)}},glUniformMatrix4fv:(a,b,d,e)=>{if(2<=O.version)b&&E.uniformMatrix4fv(Q(a),!!d,v(),e>>2,16*b);else{if(18>=b){var f=R[16*b],h=v();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=v().subarray(e>>2,e+64*b>>2);E.uniformMatrix4fv(Q(a),!!d,f)}},glUseProgram:a=>{a=G[a];E.useProgram(a);E.N=a},glVertexAttribPointer:(a,b,d,e,f,h)=>{E.vertexAttribPointer(a,b,d,!!e,f,h)},glViewport:(a,b,d,e)=>E.viewport(a,b,d,e),glWaitSync:(a,b,d,e)=>{E.waitSync(hb[a],b,(d>>>0)+4294967296*e)},invoke_ii:Bc,invoke_iii:Cc,invoke_iiiii:Dc,invoke_iiiiiii:Ec,invoke_vi:Fc,invoke_vii:Gc,invoke_viii:Hc,invoke_viiiiiii:Ic,memory:g,proc_exit:Qa,
skwasm_captureImageBitmap:Lb,skwasm_connectThread:Ob,skwasm_createGlTextureFromTextureSource:Pb,skwasm_destroyContext:Qb,skwasm_dispatchDisposeSurface:Rb,skwasm_dispatchRasterizeImage:Sb,skwasm_dispatchRenderPictures:Tb,skwasm_dispatchResizeSurface:Ub,skwasm_dispatchTransferCanvas:Vb,skwasm_dispatchTriggerContextLoss:Wb,skwasm_disposeAssociatedObjectOnThread:Xb,skwasm_getAssociatedObject:Yb,skwasm_getGlContextForCanvas:Zb,skwasm_isSingleThreaded:$b,skwasm_postRasterizeResult:ac,skwasm_reportContextLossTriggered:bc,
skwasm_reportContextLost:cc,skwasm_reportInitialized:dc,skwasm_reportResizeComplete:ec,skwasm_resizeCanvas:fc,skwasm_resolveAndPostImages:gc,skwasm_setAssociatedObjectOnThread:hc,skwasm_triggerContextLossOnCanvas:ic},W=function(){function a(d,e){W=d.exports;w.wasmExports=W;A=W.__indirect_function_table;wa.unshift(W.__wasm_call_ctors);qa=e;z--;0==z&&(null!==Fa&&(clearInterval(Fa),Fa=null),Ga&&(d=Ga,Ga=null,d()));return W}var b={env:Jc,wasi_snapshot_preview1:Jc};z++;if(w.instantiateWasm)try{return w.instantiateWasm(b,
a)}catch(d){y(`Module.instantiateWasm callback failed with error: ${d}`),fa(d)}Ja??=Ia("wimp.wasm")?"wimp.wasm":ma("wimp.wasm");Ma(b,function(d){a(d.instance,d.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,d,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,d,e);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,d)=>(w._canvas_translate=W.canvas_translate)(a,b,d);w._canvas_scale=(a,b,d)=>(w._canvas_scale=W.canvas_scale)(a,b,d);w._canvas_rotate=(a,b)=>(w._canvas_rotate=W.canvas_rotate)(a,b);w._canvas_skew=(a,b,d)=>(w._canvas_skew=W.canvas_skew)(a,b,d);w._canvas_transform=(a,b)=>(w._canvas_transform=W.canvas_transform)(a,b);w._canvas_clear=(a,b)=>(w._canvas_clear=W.canvas_clear)(a,b);
w._canvas_clipRect=(a,b,d,e)=>(w._canvas_clipRect=W.canvas_clipRect)(a,b,d,e);w._canvas_clipRRect=(a,b,d)=>(w._canvas_clipRRect=W.canvas_clipRRect)(a,b,d);w._canvas_clipPath=(a,b,d)=>(w._canvas_clipPath=W.canvas_clipPath)(a,b,d);w._canvas_drawColor=(a,b,d)=>(w._canvas_drawColor=W.canvas_drawColor)(a,b,d);w._canvas_drawLine=(a,b,d,e,f,h)=>(w._canvas_drawLine=W.canvas_drawLine)(a,b,d,e,f,h);w._canvas_drawPaint=(a,b)=>(w._canvas_drawPaint=W.canvas_drawPaint)(a,b);
w._canvas_drawRect=(a,b,d)=>(w._canvas_drawRect=W.canvas_drawRect)(a,b,d);w._canvas_drawRRect=(a,b,d)=>(w._canvas_drawRRect=W.canvas_drawRRect)(a,b,d);w._canvas_drawDRRect=(a,b,d,e)=>(w._canvas_drawDRRect=W.canvas_drawDRRect)(a,b,d,e);w._canvas_drawOval=(a,b,d)=>(w._canvas_drawOval=W.canvas_drawOval)(a,b,d);w._canvas_drawCircle=(a,b,d,e,f)=>(w._canvas_drawCircle=W.canvas_drawCircle)(a,b,d,e,f);w._canvas_drawArc=(a,b,d,e,f,h)=>(w._canvas_drawArc=W.canvas_drawArc)(a,b,d,e,f,h);
w._canvas_drawPath=(a,b,d)=>(w._canvas_drawPath=W.canvas_drawPath)(a,b,d);w._canvas_drawShadow=(a,b,d,e,f,h)=>(w._canvas_drawShadow=W.canvas_drawShadow)(a,b,d,e,f,h);w._canvas_drawParagraph=(a,b,d,e)=>(w._canvas_drawParagraph=W.canvas_drawParagraph)(a,b,d,e);w._canvas_drawPicture=(a,b)=>(w._canvas_drawPicture=W.canvas_drawPicture)(a,b);w._canvas_drawImage=(a,b,d,e,f,h)=>(w._canvas_drawImage=W.canvas_drawImage)(a,b,d,e,f,h);
w._canvas_drawImageRect=(a,b,d,e,f,h)=>(w._canvas_drawImageRect=W.canvas_drawImageRect)(a,b,d,e,f,h);w._canvas_drawImageNine=(a,b,d,e,f,h)=>(w._canvas_drawImageNine=W.canvas_drawImageNine)(a,b,d,e,f,h);w._canvas_drawVertices=(a,b,d,e)=>(w._canvas_drawVertices=W.canvas_drawVertices)(a,b,d,e);w._canvas_drawPoints=(a,b,d,e,f)=>(w._canvas_drawPoints=W.canvas_drawPoints)(a,b,d,e,f);w._canvas_drawAtlas=(a,b,d,e,f,h,l,m,n)=>(w._canvas_drawAtlas=W.canvas_drawAtlas)(a,b,d,e,f,h,l,m,n);
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._canvas_quickReject=(a,b)=>(w._canvas_quickReject=W.canvas_quickReject)(a,b);w._contourMeasureIter_create=(a,b,d)=>(w._contourMeasureIter_create=W.contourMeasureIter_create)(a,b,d);
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,d,e)=>(w._contourMeasure_getPosTan=W.contourMeasure_getPosTan)(a,b,d,e);w._contourMeasure_getSegment=(a,b,d,e)=>(w._contourMeasure_getSegment=W.contourMeasure_getSegment)(a,b,d,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,d)=>(w._imageFilter_createBlur=W.imageFilter_createBlur)(a,b,d);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_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,d,e)=>(w._typefaces_filterCoveredCodePoints=W.typefaces_filterCoveredCodePoints)(a,b,d,e);
w._fontCollection_registerTypeface=(a,b,d)=>(w._fontCollection_registerTypeface=W.fontCollection_registerTypeface)(a,b,d);w._fontCollection_clearCaches=a=>(w._fontCollection_clearCaches=W.fontCollection_clearCaches)(a);w._image_createFromPicture=(a,b,d)=>(w._image_createFromPicture=W.image_createFromPicture)(a,b,d);w._image_createFromPixels=(a,b,d,e,f)=>(w._image_createFromPixels=W.image_createFromPixels)(a,b,d,e,f);
w._image_createFromTextureSource=(a,b,d,e)=>(w._image_createFromTextureSource=W.image_createFromTextureSource)(a,b,d,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._skwasm_getLiveObjectCounts=a=>(w._skwasm_getLiveObjectCounts=W.skwasm_getLiveObjectCounts)(a);
w._paint_create=(a,b,d,e,f,h,l,m,n)=>(w._paint_create=W.paint_create)(a,b,d,e,f,h,l,m,n);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,d)=>(w._path_moveTo=W.path_moveTo)(a,b,d);w._path_relativeMoveTo=(a,b,d)=>(w._path_relativeMoveTo=W.path_relativeMoveTo)(a,b,d);w._path_lineTo=(a,b,d)=>(w._path_lineTo=W.path_lineTo)(a,b,d);
w._path_relativeLineTo=(a,b,d)=>(w._path_relativeLineTo=W.path_relativeLineTo)(a,b,d);w._path_quadraticBezierTo=(a,b,d,e,f)=>(w._path_quadraticBezierTo=W.path_quadraticBezierTo)(a,b,d,e,f);w._path_relativeQuadraticBezierTo=(a,b,d,e,f)=>(w._path_relativeQuadraticBezierTo=W.path_relativeQuadraticBezierTo)(a,b,d,e,f);w._path_cubicTo=(a,b,d,e,f,h,l)=>(w._path_cubicTo=W.path_cubicTo)(a,b,d,e,f,h,l);w._path_relativeCubicTo=(a,b,d,e,f,h,l)=>(w._path_relativeCubicTo=W.path_relativeCubicTo)(a,b,d,e,f,h,l);
w._path_conicTo=(a,b,d,e,f,h)=>(w._path_conicTo=W.path_conicTo)(a,b,d,e,f,h);w._path_relativeConicTo=(a,b,d,e,f,h)=>(w._path_relativeConicTo=W.path_relativeConicTo)(a,b,d,e,f,h);w._path_arcToOval=(a,b,d,e,f)=>(w._path_arcToOval=W.path_arcToOval)(a,b,d,e,f);w._path_arcToRotated=(a,b,d,e,f,h,l,m)=>(w._path_arcToRotated=W.path_arcToRotated)(a,b,d,e,f,h,l,m);w._path_relativeArcToRotated=(a,b,d,e,f,h,l,m)=>(w._path_relativeArcToRotated=W.path_relativeArcToRotated)(a,b,d,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,d,e)=>(w._path_addArc=W.path_addArc)(a,b,d,e);w._path_addPolygon=(a,b,d,e)=>(w._path_addPolygon=W.path_addPolygon)(a,b,d,e);w._path_addRRect=(a,b)=>(w._path_addRRect=W.path_addRRect)(a,b);w._path_addPath=(a,b,d,e)=>(w._path_addPath=W.path_addPath)(a,b,d,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,d)=>(w._path_contains=W.path_contains)(a,b,d);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,d)=>(w._path_combine=W.path_combine)(a,b,d);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_ref=a=>(w._picture_ref=W.picture_ref)(a);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,d,e,f,h)=>(w._shader_createLinearGradient=W.shader_createLinearGradient)(a,b,d,e,f,h);w._shader_createRadialGradient=(a,b,d,e,f,h,l,m)=>(w._shader_createRadialGradient=W.shader_createRadialGradient)(a,b,d,e,f,h,l,m);w._shader_createConicalGradient=(a,b,d,e,f,h,l,m)=>(w._shader_createConicalGradient=W.shader_createConicalGradient)(a,b,d,e,f,h,l,m);
w._shader_createSweepGradient=(a,b,d,e,f,h,l,m,n)=>(w._shader_createSweepGradient=W.shader_createSweepGradient)(a,b,d,e,f,h,l,m,n);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,d,e)=>(w._shader_createRuntimeEffectShader=W.shader_createRuntimeEffectShader)(a,b,d,e);w._shader_createFromImage=(a,b,d,e,f)=>(w._shader_createFromImage=W.shader_createFromImage)(a,b,d,e,f);w._uniformData_create=a=>(w._uniformData_create=W.uniformData_create)(a);w._uniformData_dispose=a=>(w._uniformData_dispose=W.uniformData_dispose)(a);w._uniformData_getPointer=a=>(w._uniformData_getPointer=W.uniformData_getPointer)(a);
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._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();w._surface_create=()=>(w._surface_create=W.surface_create)();w._surface_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);var nc=w._surface_receiveCanvasOnWorker=(a,b,d)=>(nc=w._surface_receiveCanvasOnWorker=W.surface_receiveCanvasOnWorker)(a,b,d),oc=w._surface_onInitialized=(a,b)=>(oc=w._surface_onInitialized=W.surface_onInitialized)(a,b);w._surface_setSize=(a,b,d)=>(w._surface_setSize=W.surface_setSize)(a,b,d);
var pc=w._surface_resizeOnWorker=(a,b,d,e)=>(pc=w._surface_resizeOnWorker=W.surface_resizeOnWorker)(a,b,d,e),qc=w._surface_onResizeComplete=(a,b)=>(qc=w._surface_onResizeComplete=W.surface_onResizeComplete)(a,b);w._surface_getThreadId=a=>(w._surface_getThreadId=W.surface_getThreadId)(a);w._surface_getGlContext=a=>(w._surface_getGlContext=W.surface_getGlContext)(a);w._surface_triggerContextLoss=a=>(w._surface_triggerContextLoss=W.surface_triggerContextLoss)(a);
var rc=w._surface_triggerContextLossOnWorker=(a,b)=>(rc=w._surface_triggerContextLossOnWorker=W.surface_triggerContextLossOnWorker)(a,b),sc=w._surface_onContextLossTriggered=(a,b)=>(sc=w._surface_onContextLossTriggered=W.surface_onContextLossTriggered)(a,b),tc=w._surface_reportContextLost=(a,b)=>(tc=w._surface_reportContextLost=W.surface_reportContextLost)(a,b);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 wc=w._surface_dispose=a=>(wc=w._surface_dispose=W.surface_dispose)(a);w._surface_setResourceCacheLimitBytes=(a,b)=>(w._surface_setResourceCacheLimitBytes=W.surface_setResourceCacheLimitBytes)(a,b);w._surface_renderPictures=(a,b,d)=>(w._surface_renderPictures=W.surface_renderPictures)(a,b,d);var uc=w._surface_renderPicturesOnWorker=(a,b,d,e,f)=>(uc=w._surface_renderPicturesOnWorker=W.surface_renderPicturesOnWorker)(a,b,d,e,f);
w._surface_rasterizeImage=(a,b,d)=>(w._surface_rasterizeImage=W.surface_rasterizeImage)(a,b,d);
var wc=w._surface_rasterizeImageOnWorker=(a,b,d,e)=>(wc=w._surface_rasterizeImageOnWorker=W.surface_rasterizeImageOnWorker)(a,b,d,e),uc=w._surface_onRenderComplete=(a,b,d)=>(uc=w._surface_onRenderComplete=W.surface_onRenderComplete)(a,b,d),xc=w._surface_onRasterizeComplete=(a,b,d)=>(xc=w._surface_onRasterizeComplete=W.surface_onRasterizeComplete)(a,b,d),yc=w._surface_onContextLost=a=>(yc=w._surface_onContextLost=W.surface_onContextLost)(a);
var xc=w._surface_rasterizeImageOnWorker=(a,b,d,e)=>(xc=w._surface_rasterizeImageOnWorker=W.surface_rasterizeImageOnWorker)(a,b,d,e),vc=w._surface_onRenderComplete=(a,b,d)=>(vc=w._surface_onRenderComplete=W.surface_onRenderComplete)(a,b,d),yc=w._surface_onRasterizeComplete=(a,b,d)=>(yc=w._surface_onRasterizeComplete=W.surface_onRasterizeComplete)(a,b,d),zc=w._surface_onContextLost=a=>(zc=w._surface_onContextLost=W.surface_onContextLost)(a);
w._skwasm_isMultiThreaded=()=>(w._skwasm_isMultiThreaded=W.skwasm_isMultiThreaded)();w._lineMetrics_create=(a,b,d,e,f,h,l,m,n)=>(w._lineMetrics_create=W.lineMetrics_create)(a,b,d,e,f,h,l,m,n);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);
@@ -120,13 +120,12 @@ w._textStyle_setForeground=(a,b)=>(w._textStyle_setForeground=W.textStyle_setFor
w._vertices_dispose=a=>(w._vertices_dispose=W.vertices_dispose)(a);w._animatedImage_create=(a,b,d)=>(w._animatedImage_create=W.animatedImage_create)(a,b,d);w._animatedImage_dispose=a=>(w._animatedImage_dispose=W.animatedImage_dispose)(a);w._animatedImage_getFrameCount=a=>(w._animatedImage_getFrameCount=W.animatedImage_getFrameCount)(a);w._animatedImage_getRepetitionCount=a=>(w._animatedImage_getRepetitionCount=W.animatedImage_getRepetitionCount)(a);
w._animatedImage_getCurrentFrameDurationMilliseconds=a=>(w._animatedImage_getCurrentFrameDurationMilliseconds=W.animatedImage_getCurrentFrameDurationMilliseconds)(a);w._animatedImage_decodeNextFrame=a=>(w._animatedImage_decodeNextFrame=W.animatedImage_decodeNextFrame)(a);w._animatedImage_getCurrentFrame=a=>(w._animatedImage_getCurrentFrame=W.animatedImage_getCurrentFrame)(a);w._skwasm_isHeavy=()=>(w._skwasm_isHeavy=W.skwasm_isHeavy)();
w._paragraphBuilder_create=(a,b)=>(w._paragraphBuilder_create=W.paragraphBuilder_create)(a,b);w._paragraphBuilder_build=a=>(w._paragraphBuilder_build=W.paragraphBuilder_build)(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._dummyAPICalls=()=>(w._dummyAPICalls=W.dummyAPICalls)();w._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();
var Gb=a=>(Gb=W.malloc)(a),zc=(a,b)=>(zc=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),ic=a=>(ic=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);function Bc(a,b,d){var e=Z();try{return B.get(a)(b,d)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Gc(a,b,d){var e=Z();try{B.get(a)(b,d)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}
function Ac(a,b){var d=Z();try{return B.get(a)(b)}catch(e){Y(d);if(e!==e+0)throw e;X(1,0)}}function Hc(a,b,d,e){var f=Z();try{B.get(a)(b,d,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Cc(a,b,d,e){var f=Z();try{return B.get(a)(b,d,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Dc(a,b,d,e,f){var h=Z();try{return B.get(a)(b,d,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}function Ic(a,b,d,e,f,h,l,m){var n=Z();try{B.get(a)(b,d,e,f,h,l,m)}catch(r){Y(n);if(r!==r+0)throw r;X(1,0)}}
function Fc(a,b){var d=Z();try{B.get(a)(b)}catch(e){Y(d);if(e!==e+0)throw e;X(1,0)}}function Ec(a,b,d,e,f,h,l){var m=Z();try{return B.get(a)(b,d,e,f,h,l)}catch(n){Y(m);if(n!==n+0)throw n;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=jc;
w.addFunction=(a,b)=>{if(!V){V=new WeakMap;var d=B.length;if(V)for(var e=0;e<0+d;e++){var f=B.get(e);f&&V.set(f,e)}}if(d=V.get(a)||0)return d;if(hc.length)d=hc.pop();else{try{B.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}d=B.length-1}try{B.set(d,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:[],
w._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(w._paragraphBuilder_setLineBreaksUtf16=W.paragraphBuilder_setLineBreaksUtf16)(a,b);w._dummyAPICalls=()=>(w._dummyAPICalls=W.dummyAPICalls)();var Hb=a=>(Hb=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),kc=a=>(kc=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);
function Cc(a,b,d){var e=Z();try{return A.get(a)(b,d)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Gc(a,b,d){var e=Z();try{A.get(a)(b,d)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Bc(a,b){var d=Z();try{return A.get(a)(b)}catch(e){Y(d);if(e!==e+0)throw e;X(1,0)}}function Hc(a,b,d,e){var f=Z();try{A.get(a)(b,d,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Dc(a,b,d,e,f){var h=Z();try{return A.get(a)(b,d,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}
function Ic(a,b,d,e,f,h,l,m){var n=Z();try{A.get(a)(b,d,e,f,h,l,m)}catch(u){Y(n);if(u!==u+0)throw u;X(1,0)}}function Fc(a,b){var d=Z();try{A.get(a)(b)}catch(e){Y(d);if(e!==e+0)throw e;X(1,0)}}function Ec(a,b,d,e,f,h,l){var m=Z();try{return A.get(a)(b,d,e,f,h,l)}catch(n){Y(m);if(n!==n+0)throw n;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=lc;
w.addFunction=(a,b)=>{if(!U){U=new WeakMap;var d=A.length;if(U)for(var e=0;e<0+d;e++){var f=A.get(e);f&&U.set(f,e)}}if(d=U.get(a)||0)return d;if(jc.length)d=jc.pop();else{try{A.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}d=A.length-1}try{A.set(d,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}B.set(d,b)}V.set(a,d);return d};var Kc,Lc;A=function Mc(){Kc||Nc();Kc||(A=Mc)};function Nc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Lc&&(Lc=1,Ea(va),0<z))return;Kc||(Kc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Nc();moduleRtn=ha;
{e:{f:a}})).exports.f}A.set(d,b)}U.set(a,d);return d};var Kc,Lc;Ga=function Mc(){Kc||Nc();Kc||(Ga=Mc)};function Nc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Lc&&(Lc=1,Ea(va),0<z))return;Kc||(Kc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Nc();moduleRtn=ha;
return moduleRtn;
File diff suppressed because one or more lines are too long
Binary file not shown.
+10 -5
View File
@@ -1,5 +1,10 @@
(()=>{var _={blink:!0,gecko:!1,webkit:!1,unknown:!1},K=()=>navigator.vendor==="Google Inc."||navigator.userAgent.includes("Edg/")?"blink":navigator.vendor==="Apple Computer, Inc."?"webkit":navigator.vendor===""&&navigator.userAgent.includes("Firefox")?"gecko":"unknown",C=K(),R=()=>typeof ImageDecoder>"u"?!1:C==="blink",B=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",z=()=>{let i=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(i))},M=()=>{let i=document.createElement("canvas");return i.width=1,i.height=1,i.getContext("webgl2")!=null?2:i.getContext("webgl")!=null?1:-1},D=()=>window.chrome&&chrome.runtime&&chrome.runtime.id,w={browserEngine:C,hasImageCodecs:R(),hasChromiumBreakIterators:B(),supportsWasmGC:z(),crossOriginIsolated:window.crossOriginIsolated,webGLVersion:M(),isChromeExtension:D()};function c(...i){return new URL(I(...i),document.baseURI).toString()}function I(...i){return i.filter(e=>!!e).map((e,n)=>n===0?S(e):F(S(e))).filter(e=>e.length).join("/")}function F(i){let e=0;for(;e<i.length&&i.charAt(e)==="/";)e++;return i.substring(e)}function S(i){let e=i.length;for(;e>0&&i.charAt(e-1)==="/";)e--;return i.substring(0,e)}function E(i,e){return i.canvasKitBaseUrl?i.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?I("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var v=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:n=c("main.dart.js"),onEntrypointLoaded:t,nonce:r}=e||{};return this._loadJSEntrypoint(n,t,r)}async load(e,n,t,r,a){a??=l=>{l.initializeEngine(t).then(u=>u.runApp())};let{entrypointBaseUrl:s}=t,{entryPointBaseUrl:o}=t;if(!s&&o&&(console.warn("[deprecated] `entryPointBaseUrl` is deprecated and will be removed in a future release. Use `entrypointBaseUrl` instead."),s=o),e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,n,s,a);{let l=e.mainJsPath??"main.dart.js",u=c(s,l);return this._loadJSEntrypoint(u,a,r)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,n,t){let r=typeof n=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let a=this._createScriptTag(e,t);if(r)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=n,document.head.append(a);else return new Promise((s,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=s,a.addEventListener("error",o),document.head.append(a)})}}async _loadWasmEntrypoint(e,n,t,r){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=r;let{mainWasmPath:a,jsSupportRuntimePath:s}=e,o=c(t,a),l=c(t,s);this._ttPolicy!=null&&(l=this._ttPolicy.createScriptURL(l));let d=(await import(l)).compileStreaming(fetch(o)),p;e.renderer==="skwasm"?p=(async()=>{let h=await n.skwasm;return window._flutter_skwasmInstance=h,{skwasm:h.wasmExports,skwasmWrapper:h,ffi:{memory:h.wasmMemory}}})():p=Promise.resolve({}),await(await(await d).instantiate(await p,{loadDynamicModule:async(h,j)=>{let A=fetch(c(t,h)),L=c(t,j);this._ttPolicy!=null&&(L=this._ttPolicy.createScriptURL(L));let x=import(L);return[await A,await x]}})).invokeMain()}}_createScriptTag(e,n){let t=document.createElement("script");t.type="application/javascript",n&&(t.nonce=n);let r=e;return this._ttPolicy!=null&&(r=this._ttPolicy.createScriptURL(e)),t.src=r,t}};async function T(i,e,n){if(e<0)return i;let t,r=new Promise((a,s)=>{t=setTimeout(()=>{s(new Error(`${n} took more than ${e}ms to resolve. Moving on.`,{cause:T}))},e)});return Promise.race([i,r]).finally(()=>{clearTimeout(t)})}var g=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e||!("serviceWorker"in navigator))return Promise.resolve();let n=()=>{console.warn(`Loading the service worker using Flutter bootstrap is deprecated and will stop working in a future release.
For more details, see: https://github.com/flutter/flutter/issues/156910`)},t=()=>{let{serviceWorkerVersion:r,serviceWorkerUrl:a=c(`flutter_service_worker.js?v=${r}`),timeoutMillis:s=4e3}=e,o=a;this._ttPolicy!=null&&(o=this._ttPolicy.createScriptURL(o));let l=navigator.serviceWorker.register(o).then(u=>this._getNewServiceWorker(u,r)).then(this._waitForServiceWorkerActivation);return T(l,s,"prepareServiceWorker")};return e.serviceWorkerUrl!=null?(n(),t()):navigator.serviceWorker.getRegistration().then(r=>r?t():Promise.resolve())}async _getNewServiceWorker(e,n){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(n))return console.debug("Loading from existing service worker."),e.active;{let t=await e.update();return console.debug("Updating service worker."),t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((n,t)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),n())})})}};var y=class{constructor(e,n="flutter-js"){let t=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(n,{createScriptURL:function(r){if(r.startsWith("blob:"))return r;let a=new URL(r,window.location),s=a.pathname.split("/").pop();if(t.some(l=>l.test(s)))return a.toString();console.error("URL rejected by TrustedTypes policy",n,":",r,"(download prevented)")}}))}};var k=i=>{let e=WebAssembly.compileStreaming(fetch(i));return(n,t)=>((async()=>{let r=await e,a=await WebAssembly.instantiate(r,n);t(a,r)})(),{})};var U=(i,e,n,t)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let r=n.hasChromiumBreakIterators&&n.hasImageCodecs;if(!r&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let a=r&&e.canvasKitVariant!=="full",s=t;e.canvasKitVariant=="experimentalWebParagraph"?s=c(s,"experimental_webparagraph"):a&&(s=c(s,"chromium"));let o=c(s,"canvaskit.js");i.flutterTT.policy&&(o=i.flutterTT.policy.createScriptURL(o));let l=k(c(s,"canvaskit.wasm")),u=await import(o);return window.flutterCanvasKit=await u.default({instantiateWasm:l}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var W=async(i,e,n,t)=>{let a=!n.hasImageCodecs||!n.hasChromiumBreakIterators?"skwasm_heavy":e.enableWimp?"wimp":"skwasm",s=c(t,`${a}.js`),o=s;i.flutterTT.policy&&(o=i.flutterTT.policy.createScriptURL(o));let l=k(c(t,`${a}.wasm`));return await(await import(o)).default({skwasmSingleThreaded:e.enableWimp||!n.crossOriginIsolated||n.isChromeExtension||e.forceSingleThreadedSkwasm,instantiateWasm:l,locateFile:(d,p)=>d.endsWith(".ww.js")?URL.createObjectURL(new Blob([`
(()=>{var C={blink:!0,gecko:!1,webkit:!1,unknown:!1},A=()=>navigator.vendor==="Google Inc."||navigator.userAgent.includes("Edg/")?"blink":navigator.vendor==="Apple Computer, Inc."?"webkit":navigator.vendor===""&&navigator.userAgent.includes("Firefox")?"gecko":"unknown",T=A(),x=()=>typeof ImageDecoder>"u"?!1:T==="blink",R=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",j=()=>typeof window.TextCluster<"u",B=()=>{let n=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(n))},K=()=>{let n=document.createElement("canvas");return n.width=1,n.height=1,n.getContext("webgl2")!=null?2:n.getContext("webgl")!=null?1:-1},$=()=>window.chrome&&chrome.runtime&&chrome.runtime.id,f={browserEngine:T,hasImageCodecs:x(),hasChromiumBreakIterators:R(),hasTextCluster:j(),supportsWasmGC:B(),crossOriginIsolated:window.crossOriginIsolated,webGLVersion:K(),isChromeExtension:$()};function m(...n){return new URL(W(...n),document.baseURI).toString()}function W(...n){return n.filter(e=>!!e).map((e,s)=>s===0?L(e):F(L(e))).filter(e=>e.length).join("/")}function F(n){let e=0;for(;e<n.length&&n.charAt(e)==="/";)e++;return n.substring(e)}function L(n){let e=n.length;for(;e>0&&n.charAt(e-1)==="/";)e--;return n.substring(0,e)}function _(n,e){return n.canvasKitBaseUrl?n.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?W("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var g=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:s=m("main.dart.js"),onEntrypointLoaded:t,nonce:r}=e||{};return this._loadJSEntrypoint(s,t,r)}async load(e,s,t,r,i){i??=a=>{a.initializeEngine(t).then(l=>l.runApp())};let{entrypointBaseUrl:o}=t,{entryPointBaseUrl:c}=t;if(!o&&c&&(console.warn("[deprecated] `entryPointBaseUrl` is deprecated and will be removed in a future release. Use `entrypointBaseUrl` instead."),o=c),e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,s,o,i);{let a=e.mainJsPath??"main.dart.js",l=m(o,a);return this._loadJSEntrypoint(l,i,r)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,s,t){let r=typeof s=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let i=this._createScriptTag(e,t);if(r)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=s,document.head.append(i);else return new Promise((o,c)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=o,i.addEventListener("error",c),document.head.append(i)})}}async _loadWasmEntrypoint(e,s,t,r){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=r;let{mainWasmPath:i,jsSupportRuntimePath:o}=e,c=m(t,i),a=m(t,o);this._ttPolicy!=null&&(a=this._ttPolicy.createScriptURL(a));let p=(await import(a)).compileStreaming(fetch(c)),d;e.renderer==="skwasm"?d=(async()=>{let u=await s.skwasm;return window._flutter_skwasmInstance=u,{skwasm:u.wasmExports,skwasmWrapper:u,ffi:{memory:u.wasmMemory}}})():d=Promise.resolve({}),await(await(await p).instantiate(await d)).invokeMain()}}_createScriptTag(e,s){let t=document.createElement("script");t.type="application/javascript",s&&(t.nonce=s);let r=e;return this._ttPolicy!=null&&(r=this._ttPolicy.createScriptURL(e)),t.src=r,t}};async function E(n,e,s){if(e<0)return n;let t,r=new Promise((i,o)=>{t=setTimeout(()=>{o(new Error(`${s} took more than ${e}ms to resolve. Moving on.`,{cause:E}))},e)});return Promise.race([n,r]).finally(()=>{clearTimeout(t)})}var v=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e||!("serviceWorker"in navigator))return Promise.resolve();let s=()=>{console.warn(`Loading the service worker using Flutter bootstrap is deprecated and will stop working in a future release.
For more details, see: https://github.com/flutter/flutter/issues/156910`)},t=()=>{let{serviceWorkerVersion:r,serviceWorkerUrl:i=m(`flutter_service_worker.js?v=${r}`),timeoutMillis:o=4e3}=e,c=i;this._ttPolicy!=null&&(c=this._ttPolicy.createScriptURL(c));let a=navigator.serviceWorker.register(c).then(l=>this._getNewServiceWorker(l,r)).then(this._waitForServiceWorkerActivation);return E(a,o,"prepareServiceWorker")};return e.serviceWorkerUrl!=null?(s(),t()):navigator.serviceWorker.getRegistration().then(r=>r?t():Promise.resolve())}async _getNewServiceWorker(e,s){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(s))return console.debug("Loading from existing service worker."),e.active;{let t=await e.update();return console.debug("Updating service worker."),t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((s,t)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),s())})})}};var y=class{constructor(e,s="flutter-js"){let t=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(s,{createScriptURL:function(r){if(r.startsWith("blob:"))return r;let i=new URL(r,window.location),o=i.pathname.split("/").pop();if(t.some(a=>a.test(o)))return i.toString();console.error("URL rejected by TrustedTypes policy",s,":",r,"(download prevented)")}}))}};var b=(n,e)=>{let s=window._flutter?.buildConfig?.wasmHashes,t=s?.[e];if(!t&&e.includes("/")){let a=e.split("/").pop();t=s?.[a]}let r="crossOriginStorage"in navigator&&"requestFileHandles"in navigator.crossOriginStorage;r&&console.log("Cross-Origin Storage is supported. See https://wicg.github.io/cross-origin-storage/ for more details.");let i=async a=>{let l={algorithm:"SHA-256",value:a};try{let[p]=await navigator.crossOriginStorage.requestFileHandles([l]),d=await p.getFile();return new Response(d,{headers:{"Content-Type":"application/wasm"}})}catch(p){p.name==="NotAllowedError"?console.warn(`Not allowed to retrieve ${e} (hash: ${a}).`):p.name!=="NotFoundError"&&console.warn(`Unexpected error during retrieval of ${e} (hash: ${a}).`,p)}},o=async()=>{if(r&&t){let l=await i(t);if(l)return l}let a=await fetch(n);if(r&&t&&a.ok){let l={algorithm:"SHA-256",value:t},p=a.clone();(async()=>{try{let d=await p.blob(),[h]=await navigator.crossOriginStorage.requestFileHandles([l],{create:!0}),w=await h.createWritable();await w.write(d),await w.close()}catch(d){console.warn(`Error storing ${e} (hash: ${t}):`,d)}})()}return a},c=WebAssembly.compileStreaming(o());return(a,l)=>((async()=>{let p=await c,d=await WebAssembly.instantiate(p,a);l(d,p)})(),{})};var I=(n,e,s,t)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let r=s.hasChromiumBreakIterators&&s.hasImageCodecs;if(!r&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let i=r&&e.canvasKitVariant!=="full",o=i&&e.preferWebParagraph&&s.hasTextCluster,c=t;o?c=m(c,"webparagraph"):i&&(c=m(c,"chromium"));let a=m(c,"canvaskit.js");n.flutterTT.policy&&(a=n.flutterTT.policy.createScriptURL(a));let l="canvaskit.wasm";o?l="webparagraph/canvaskit.wasm":i&&(l="chromium/canvaskit.wasm");let p=b(m(c,"canvaskit.wasm"),l),d=await import(a);return window.flutterCanvasKit=await d.default({instantiateWasm:p}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var U=async(n,e,s,t)=>{let i=!s.hasImageCodecs||!s.hasChromiumBreakIterators?"skwasm_heavy":e.enableWimp?"wimp":"skwasm",o=m(t,`${i}.js`),c=o;n.flutterTT.policy&&(c=n.flutterTT.policy.createScriptURL(c));let a=b(m(t,`${i}.wasm`),`${i}.wasm`),l=await import(c);return!s.crossOriginIsolated&&!e.forceSingleThreadedSkwasm&&!e.suppressMultithreadingWarning&&console.warn(`Flutter Web: Skwasm uses multi-threading and web workers for better performance, but your page needs to be cross-origin isolated to support multi-threading. Skwasm will run in single-threaded mode.
To enable multithreading, serve your app with these HTTP response headers:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
See https://web.dev/articles/coop-coep for guidance.
To silence this warning, set \`suppressMultithreadingWarning: true\` in your Flutter configuration.`),await l.default({skwasmSingleThreaded:e.enableWimp||!s.crossOriginIsolated||s.isChromeExtension||e.forceSingleThreadedSkwasm,instantiateWasm:a,locateFile:(p,d)=>p.endsWith(".ww.js")?URL.createObjectURL(new Blob([`
"use strict";
let eventListener;
@@ -27,16 +32,16 @@ eventListener = (message) => {
addEventListener("message", eventListener);
};
addEventListener("message", eventListener);
`],{type:"application/javascript"})):c(t,d),mainScriptUrlOrBlob:s})};var P=w.supportsWasmGC,G=P&&w.webGLVersion>0,b=class{async loadEntrypoint(e){let{serviceWorker:n,...t}=e||{},r=new y,a=new g;a.setTrustedTypesPolicy(r.policy),await a.loadServiceWorker(n).catch(o=>{console.warn("Exception while loading service worker:",o)});let s=new v;return s.setTrustedTypesPolicy(r.policy),this.didCreateEngineInitializer=s.didCreateEngineInitializer.bind(s),s.loadEntrypoint(t)}async load({serviceWorkerSettings:e,onEntrypointLoaded:n,nonce:t,config:r}={}){r??={};let a=_flutter.buildConfig;if(!a)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let s=r.wasmAllowList?.[w.browserEngine]??_[w.browserEngine],o=m=>{switch(m){case"skwasm":return G&&s;default:return!0}},l=m=>m.compileTarget==="dart2wasm"&&!P||r.renderer&&r.renderer!=m.renderer?!1:o(m.renderer),u=a.builds.find(l);if(!u)throw"FlutterLoader could not find a build compatible with configuration and environment.";let d={};d.flutterTT=new y,e&&(d.serviceWorkerLoader=new g,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(e).catch(m=>{console.warn("Exception while loading service worker:",m)}));let p=E(r,a);u.renderer==="canvaskit"?d.canvasKit=U(d,r,w,p):u.renderer==="skwasm"&&(d.skwasm=W(d,r,w,p));let f=new v;return f.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=f.didCreateEngineInitializer.bind(f),f.load(u,d,r,t,n)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new b);})();
`],{type:"application/javascript"})):m(t,p),mainScriptUrlOrBlob:o})};var P=f.supportsWasmGC,k=class{async loadEntrypoint(e){let{serviceWorker:s,...t}=e||{},r=new y,i=new v;i.setTrustedTypesPolicy(r.policy),await i.loadServiceWorker(s).catch(c=>{console.warn("Exception while loading service worker:",c)});let o=new g;return o.setTrustedTypesPolicy(r.policy),this.didCreateEngineInitializer=o.didCreateEngineInitializer.bind(o),o.loadEntrypoint(t)}async load({serviceWorkerSettings:e,onEntrypointLoaded:s,nonce:t,config:r}={}){r??={};let i=_flutter.buildConfig;if(!i)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let o=r.wasmAllowList?.[f.browserEngine]??C[f.browserEngine],c=u=>{switch(u){case"skwasm":return P?f.webGLVersion>0?o?null:`Skwasm is disabled by your wasmAllowList configuration for browser engine "${f.browserEngine}".`:"Skwasm requires WebGL support; this browser does not provide it.":"Skwasm requires WasmGC support; this browser does not implement it yet.";default:return null}},a=u=>u.compileTarget==="dart2wasm"&&!P?"dart2wasm requires WasmGC support; this browser does not implement it yet.":r.renderer&&r.renderer!=u.renderer?`The application is configured to use the "${r.renderer}" renderer; this build targets "${u.renderer}".`:c(u.renderer),l,p=[];for(let u of i.builds){let S=a(u);if(S===null){l=u;break}p.push({candidate:u,reason:S})}if(r.verboseBuildSelection)for(let u of p)console.warn(`Flutter Web: build ${u.candidate.compileTarget}/${u.candidate.renderer} was skipped: ${u.reason}`);if(!l)throw console.warn("Flutter Web: no compatible build found for this browser."+(r.verboseBuildSelection?"":" Set `verboseBuildSelection: true` in your Flutter configuration to see why each candidate was rejected.")),new Error("FlutterLoader could not find a build compatible with configuration and environment.");let d={};d.flutterTT=new y,e&&(d.serviceWorkerLoader=new v,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(e).catch(u=>{console.warn("Exception while loading service worker:",u)}));let h=_(r,i);l.renderer==="canvaskit"?d.canvasKit=I(d,r,f,h):l.renderer==="skwasm"&&(d.skwasm=U(d,r,f,h));let w=new g;return w.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=w.didCreateEngineInitializer.bind(w),w.load(l,d,r,t,s)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new k);})();
//# sourceMappingURL=flutter.js.map
if (!window._flutter) {
window._flutter = {};
}
_flutter.buildConfig = {"engineRevision":"3452d735bd38224ef2db85ca763d862d6326b17f","builds":[{"compileTarget":"dart2js","renderer":"canvaskit","mainJsPath":"main.dart.js"}]};
_flutter.buildConfig = {"engineRevision":"af7e796e161ae0bb1ff0758c71a7105418bd9ded","wasmHashes":{"canvaskit.wasm":"fbed517a43e82452404446683f00f2e876d835aed84410695759e67b6bb01cd3","chromium/canvaskit.wasm":"ae8ff1d858140f7b1300ced3fa89fb8c9dce0a400a0f4f1e11f6dcfb3315fdcf","skwasm.wasm":"e540fd5e8303b7b68ec2718cb49e9c421f8ade3075b15e02a7059a62654df9a1","skwasm_heavy.wasm":"565f5cc1cca6ab120f11934b105f01fec4b58b480c82e0889dca93af8e6f8635","webparagraph/canvaskit.wasm":"0ce1b05082efdc8529550e8a01f6ff0593972d55525035010e26f5600aa9f254","wimp.wasm":"e924eaafd801d41e017d178f3fd5cf8a417f641fe35c9ed34a4e1d7582283e0c"},"builds":[{"compileTarget":"dart2js","renderer":"canvaskit","mainJsPath":"main.dart.js"}]};
_flutter.loader.load({
serviceWorkerSettings: {
serviceWorkerVersion: "585429632" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
serviceWorkerVersion: "2875783503" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
}
});
+64363 -63903
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"app_name":"flutter_tank_web_app","version":"1.0.0","build_number":"1","package_name":"flutter_tank_web_app"}
{"app_name":"flutter_tank_web_app","version":"1.1.0","build_number":"2","package_name":"flutter_tank_web_app"}