Merge commit 'bb5df2a66bd3a9ec3fc820c3a4b02130b24d27b1' into yiffed

This commit is contained in:
Inex Code 2020-07-22 03:51:57 +03:00
commit c1977dc1b9
72 changed files with 18381 additions and 929 deletions

View File

@ -32,6 +32,10 @@ build_web:
- cd assets/js/ && unzip olm.zip && cd ../../
- cd assets/js/ && rm olm.zip && cd ../../
- cd assets/js/ && mv javascript package && cd ../../
- cd web/ && rm sql-wasm.js sql-wasm.wasm && cd ../
- cd web/ && curl -L 'https://github.com/sql-js/sql.js/releases/latest/download/sqljs-wasm.zip' > sqljs-wasm.zip && cd ../
- cd web/ && unzip sqljs-wasm.zip && cd ../
- cd web/ && rm sqljs-wasm.zip && cd ../
- flutter pub get
- flutter clean
- flutter build web --release --verbose --dart-define=FLUTTER_WEB_USE_SKIA=true
@ -69,6 +73,7 @@ build_android_apk:
- build/app/outputs/apk/release/app-release.apk
only:
- master
- tags
build_android_appbundle:
@ -94,11 +99,11 @@ upload_to_fdroid_repo:
##
## Install ssh-agent if not already installed.
##
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- 'which ssh-agent || (sudo apt-get update -y && sudo apt-get install openssh-client -y )'
##
## Install rsync if not already installed.
##
- 'which rsync || ( apt-get update -y && apt-get install rsync -y )'
- 'which rsync || (sudo apt-get update -y && sudo apt-get install rsync -y )'
##
## Run ssh-agent (inside the build environment)
##

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "ios/olm"]
path = ios/olm
url = https://gitlab.matrix.org/matrix-org/olm.git

View File

@ -1,3 +1,31 @@
# Version 0.16.0 - 2020-07-??
### Features
- Implement web notifications
### Changes
- Various performance improvements
- Added languages: Galician, Croatian, Japanese, Russian
### Fixes:
- Various fixes, including key verification fixes
# Version 0.15.1 - 2020-06-26
### Fixes:
- Fix a big with account data being stored incorrectly
# Version 0.15.0 - 2020-06-26
### Features:
- New room list app bar design
- Chat app bar transparent
- Implement web file picker
- Minor design and UX improvements
- Implement Cross Signing
- Restore keys from online key backup
- Added translations: Czech, Spanish, Slovakian
### Changes:
- Show presences of users sharing a direct chat
- Big refactoring
### Fixes:
- Various fixes, including e2ee fixes and olm session recovery
# Version 0.14.0 - 2020-05-20
### Features:
- Implement image viewer

View File

@ -61,6 +61,12 @@ Don't even ask.
## How to add translations for your language
You can use Weblate to translate the app to your language:
https://hosted.weblate.org/projects/fluffychat/
1. Replace the non-translated string in the codebase:
```
Text("Hello world"),

View File

@ -49,11 +49,6 @@ android {
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
arguments "-DOLM_TESTS=NO"
}
}
}
signingConfigs {
@ -77,15 +72,6 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
// Encapsulates your CMake build configurations.
cmake {
// Provides a relative path to your CMake build script.
path "../../ios/olm/CMakeLists.txt"
version "3.10.2"
}
}
}
flutter {
@ -98,6 +84,7 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation "net.zetetic:android-database-sqlcipher:4.4.0" // needed for moor_ffi w/ sqlcipher
}
//apply plugin: "com.google.gms.google-services"

Binary file not shown.

View File

@ -0,0 +1 @@
6c5611b14df049743797687d0807922a

View File

@ -63,7 +63,7 @@ target 'Runner' do
# Keep pod path relative so it can be checked into Podfile.lock.
pod 'Flutter', :path => 'Flutter'
pod 'OLMKit'
pod 'SQLCipher'
# Plugin Pods
@ -91,4 +91,4 @@ post_install do |installer|
end
# add pods for desired Firebase products
# https://firebase.google.com/docs/ios/setup#available-pods
# https://firebase.google.com/docs/ios/setup#available-pods

View File

@ -1,103 +1,139 @@
PODS:
- DKImagePickerController/Core (4.2.2):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.2.2)
- DKImagePickerController/PhotoGallery (4.2.2):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.2.2)
- DKPhotoGallery (0.0.14):
- DKPhotoGallery/Core (= 0.0.14)
- DKPhotoGallery/Model (= 0.0.14)
- DKPhotoGallery/Preview (= 0.0.14)
- DKPhotoGallery/Resource (= 0.0.14)
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Core (0.0.14):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Model (0.0.14):
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Preview (0.0.14):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Resource (0.0.14):
- SDWebImage
- SDWebImageFLPlugin
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Firebase/Core (6.21.0):
- Firebase/Core (6.27.0):
- Firebase/CoreOnly
- FirebaseAnalytics (= 6.4.0)
- Firebase/CoreOnly (6.21.0):
- FirebaseCore (= 6.6.5)
- Firebase/Messaging (6.21.0):
- FirebaseAnalytics (= 6.6.1)
- Firebase/CoreOnly (6.27.0):
- FirebaseCore (= 6.8.0)
- Firebase/Messaging (6.27.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 4.3.0)
- FirebaseMessaging (~> 4.5.0)
- firebase_messaging (0.0.1):
- Firebase/Core
- Firebase/Messaging
- Flutter
- FirebaseAnalytics (6.4.0):
- FirebaseCore (~> 6.6)
- FirebaseInstallations (~> 1.1)
- GoogleAppMeasurement (= 6.4.0)
- FirebaseAnalytics (6.6.1):
- FirebaseCore (~> 6.8)
- FirebaseInstallations (~> 1.4)
- GoogleAppMeasurement (= 6.6.1)
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
- GoogleUtilities/MethodSwizzler (~> 6.0)
- GoogleUtilities/Network (~> 6.0)
- "GoogleUtilities/NSData+zlib (~> 6.0)"
- nanopb (= 0.3.9011)
- FirebaseAnalyticsInterop (1.5.0)
- FirebaseCore (6.6.5):
- FirebaseCoreDiagnostics (~> 1.2)
- FirebaseCoreDiagnosticsInterop (~> 1.2)
- nanopb (~> 1.30905.0)
- FirebaseCore (6.8.0):
- FirebaseCoreDiagnostics (~> 1.3)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Logger (~> 6.5)
- FirebaseCoreDiagnostics (1.2.2):
- FirebaseCoreDiagnosticsInterop (~> 1.2)
- GoogleDataTransportCCTSupport (~> 2.0)
- FirebaseCoreDiagnostics (1.4.0):
- GoogleDataTransportCCTSupport (~> 3.1)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Logger (~> 6.5)
- nanopb (~> 0.3.901)
- FirebaseCoreDiagnosticsInterop (1.2.0)
- FirebaseInstallations (1.1.1):
- FirebaseCore (~> 6.6)
- GoogleUtilities/UserDefaults (~> 6.5)
- nanopb (~> 1.30905.0)
- FirebaseInstallations (1.4.0):
- FirebaseCore (~> 6.8)
- GoogleUtilities/Environment (~> 6.6)
- GoogleUtilities/UserDefaults (~> 6.6)
- PromisesObjC (~> 1.2)
- FirebaseInstanceID (4.3.2):
- FirebaseCore (~> 6.6)
- FirebaseInstanceID (4.4.0):
- FirebaseCore (~> 6.8)
- FirebaseInstallations (~> 1.0)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/UserDefaults (~> 6.5)
- FirebaseMessaging (4.3.0):
- FirebaseAnalyticsInterop (~> 1.5)
- FirebaseCore (~> 6.6)
- FirebaseMessaging (4.5.0):
- FirebaseCore (~> 6.8)
- FirebaseInstanceID (~> 4.3)
- GoogleUtilities/AppDelegateSwizzler (~> 6.5)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Reachability (~> 6.5)
- GoogleUtilities/UserDefaults (~> 6.5)
- Protobuf (>= 3.9.2, ~> 3.9)
- FLAnimatedImage (1.0.12)
- Flutter (1.0.0)
- flutter_keyboard_visibility (0.7.0):
- Flutter
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_plugin_android_lifecycle (0.0.1):
- Flutter
- flutter_secure_storage (3.3.1):
- Flutter
- flutter_sound (0.0.1):
- Flutter
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/SQLCipher (2.7.5):
- SQLCipher
- FMDB/standard (2.7.5)
- GoogleAppMeasurement (6.4.0):
- GoogleAppMeasurement (6.6.1):
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
- GoogleUtilities/MethodSwizzler (~> 6.0)
- GoogleUtilities/Network (~> 6.0)
- "GoogleUtilities/NSData+zlib (~> 6.0)"
- nanopb (= 0.3.9011)
- GoogleDataTransport (5.1.0)
- GoogleDataTransportCCTSupport (2.0.1):
- GoogleDataTransport (~> 5.1)
- nanopb (~> 0.3.901)
- GoogleUtilities/AppDelegateSwizzler (6.5.2):
- nanopb (~> 1.30905.0)
- GoogleDataTransport (6.2.1)
- GoogleDataTransportCCTSupport (3.2.0):
- GoogleDataTransport (~> 6.1)
- nanopb (~> 1.30905.0)
- GoogleUtilities/AppDelegateSwizzler (6.6.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Environment (6.5.2)
- GoogleUtilities/Logger (6.5.2):
- GoogleUtilities/Environment (6.6.0):
- PromisesObjC (~> 1.2)
- GoogleUtilities/Logger (6.6.0):
- GoogleUtilities/Environment
- GoogleUtilities/MethodSwizzler (6.5.2):
- GoogleUtilities/MethodSwizzler (6.6.0):
- GoogleUtilities/Logger
- GoogleUtilities/Network (6.5.2):
- GoogleUtilities/Network (6.6.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (6.5.2)"
- GoogleUtilities/Reachability (6.5.2):
- "GoogleUtilities/NSData+zlib (6.6.0)"
- GoogleUtilities/Reachability (6.6.0):
- GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (6.5.2):
- GoogleUtilities/UserDefaults (6.6.0):
- GoogleUtilities/Logger
- image_picker (0.0.1):
- Flutter
- nanopb (0.3.9011):
- nanopb/decode (= 0.3.9011)
- nanopb/encode (= 0.3.9011)
- nanopb/decode (0.3.9011)
- nanopb/encode (0.3.9011)
- nanopb (1.30905.0):
- nanopb/decode (= 1.30905.0)
- nanopb/encode (= 1.30905.0)
- nanopb/decode (1.30905.0)
- nanopb/encode (1.30905.0)
- OLMKit (3.1.0):
- OLMKit/olmc (= 3.1.0)
- OLMKit/olmcpp (= 3.1.0)
@ -107,15 +143,29 @@ PODS:
- Flutter
- path_provider (0.0.1):
- Flutter
- PromisesObjC (1.2.8)
- Protobuf (3.11.4)
- PromisesObjC (1.2.9)
- Protobuf (3.12.0)
- receive_sharing_intent (0.0.1):
- Flutter
- SDWebImage (5.8.1):
- SDWebImage/Core (= 5.8.1)
- SDWebImage/Core (5.8.1)
- SDWebImageFLPlugin (0.4.0):
- FLAnimatedImage (>= 1.0.11)
- SDWebImage/Core (~> 5.6)
- share (0.5.2):
- Flutter
- sqflite (0.0.1):
- Flutter
- FMDB (~> 2.7.2)
- sqflite_sqlcipher (0.0.1):
- Flutter
- FMDB/SQLCipher (~> 2.7.5)
- SQLCipher (4.4.0):
- SQLCipher/standard (= 4.4.0)
- SQLCipher/common (4.4.0)
- SQLCipher/standard (4.4.0):
- SQLCipher/common
- url_launcher (0.0.1):
- Flutter
- url_launcher_macos (0.0.1):
@ -129,7 +179,9 @@ DEPENDENCIES:
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- Flutter (from `Flutter`)
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- flutter_sound (from `.symlinks/plugins/flutter_sound/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
@ -139,6 +191,7 @@ DEPENDENCIES:
- receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`)
- share (from `.symlinks/plugins/share/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- sqflite_sqlcipher (from `.symlinks/plugins/sqflite_sqlcipher/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
- url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
@ -146,15 +199,16 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- Firebase
- FirebaseAnalytics
- FirebaseAnalyticsInterop
- FirebaseCore
- FirebaseCoreDiagnostics
- FirebaseCoreDiagnosticsInterop
- FirebaseInstallations
- FirebaseInstanceID
- FirebaseMessaging
- FLAnimatedImage
- FMDB
- GoogleAppMeasurement
- GoogleDataTransport
@ -164,6 +218,9 @@ SPEC REPOS:
- OLMKit
- PromisesObjC
- Protobuf
- SDWebImage
- SDWebImageFLPlugin
- SQLCipher
EXTERNAL SOURCES:
file_picker:
@ -172,8 +229,12 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/firebase_messaging/ios"
Flutter:
:path: Flutter
flutter_keyboard_visibility:
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_plugin_android_lifecycle:
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
flutter_secure_storage:
:path: ".symlinks/plugins/flutter_secure_storage/ios"
flutter_sound:
@ -190,6 +251,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/share/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
sqflite_sqlcipher:
:path: ".symlinks/plugins/sqflite_sqlcipher/ios"
url_launcher:
:path: ".symlinks/plugins/url_launcher/ios"
url_launcher_macos:
@ -200,36 +263,43 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/webview_flutter/ios"
SPEC CHECKSUMS:
file_picker: 408623be2125b79a4539cf703be3d4b3abe5e245
Firebase: f378c80340dd41c0ad0914af740c021eb282a04b
firebase_messaging: 73b3e7dd7b3b6a7e4bdac10d5295211ca4f87f90
FirebaseAnalytics: a1a0b3327ceb5cd5b4bacffdb293f6c909aa087d
FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae
FirebaseCore: 9f495d3afacb7b558711e6218ebb14b1c51b5802
FirebaseCoreDiagnostics: e9b4cd8ba60dee0f2d13347332e4b7898cca5b61
FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
FirebaseInstallations: acb3216eb9784d3b1d2d2d635ff74fa892cc0c44
FirebaseInstanceID: 7ee0d6777013bb952f377b41965bf132b6a075be
FirebaseMessaging: 4ec33842d36b3319e062e51fb8b35a74f726950d
DKImagePickerController: 4a3e7948a848c4348e600b3fe5ce41478835fa10
DKPhotoGallery: 0290d32343574f06eaa4c26f8f2f8a1035e916be
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
Firebase: fc4cbf6f1592636431821ef9a3c557e4dfd9f268
firebase_messaging: cffb57ce40958c6204f03fb0c81713e4cd1e240c
FirebaseAnalytics: 0ea640473474f036cabbc2576e20c2d63671c92f
FirebaseCore: feda061cb1ee6d8ad4824f4a4a8ffbcfe284f595
FirebaseCoreDiagnostics: 4505e4d4009b1d93f605088ee7d7764d5f0d1c84
FirebaseInstallations: 293f567159b6d66d1c990f13bb868066096c94ec
FirebaseInstanceID: 3b119bfe90e904851218159c9a4ecb847cc51d18
FirebaseMessaging: ad9e1a80ea64905e01a0ce1b3eb76a2944544151
FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
flutter_keyboard_visibility: 6195387fb6d8f46e5cd6dda4a4154e41f800f545
flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
flutter_sound: 0e8163ceac1e00eb6d894e2ae4641ba726a2c479
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
GoogleAppMeasurement: 6e68a94d0eaeb1d73ef6b0ed4f7334e29d63ae29
GoogleDataTransport: b29a21d813e906014ca16c00897827e40e4a24ab
GoogleDataTransportCCTSupport: 6f15a89b0ca35d6fa523e1f752ef818588885988
GoogleUtilities: ad0f3b691c67909d03a3327cc205222ab8f42e0e
image_picker: e3eacd46b94694dde7cf2705955cece853aa1a8f
nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
GoogleAppMeasurement: 2fd5c5a56c069db635c8e7b92d4809a9591d0a69
GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020
GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d
GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1
image_picker: 66aa71bc96850a90590a35d4c4a2907b0d823109
nanopb: c43f40fadfe79e8b8db116583945847910cbabc9
OLMKit: 4ee0159d63feeb86d836fdcfefe418e163511639
open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d
path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d
PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6
Protobuf: 176220c526ad8bd09ab1fb40a978eac3fef665f7
PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75
Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9
receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1
SDWebImage: e3eae2eda88578db0685a0c88597fdadd9433f05
SDWebImageFLPlugin: 6c2295fb1242d44467c6c87dc5db6b0a13228fd8
share: bae0a282aab4483288913fc4dc0b935d4b491f2e
sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
sqflite_sqlcipher: 45e72be2f26bde6ad196ff8b084123d8634ba921
SQLCipher: e434ed542b24f38ea7b36468a13f9765e1b5c072
url_launcher: a1c0cc845906122c4784c542523d8cacbded5626
url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c

View File

@ -328,7 +328,6 @@
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
@ -446,7 +445,6 @@
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
@ -503,7 +501,6 @@
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;

View File

@ -48,7 +48,7 @@ class Avatar extends StatelessWidget {
)
: null,
backgroundColor: noPic
? name?.color ?? Theme.of(context).secondaryHeaderColor
? name?.lightColor ?? Theme.of(context).secondaryHeaderColor
: Theme.of(context).secondaryHeaderColor,
child: noPic
? Text(fallbackLetters, style: TextStyle(color: Colors.white))

View File

@ -0,0 +1,44 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'matrix.dart';
class ConnectionStatusHeader extends StatefulWidget {
@override
_ConnectionStatusHeaderState createState() => _ConnectionStatusHeaderState();
}
class _ConnectionStatusHeaderState extends State<ConnectionStatusHeader> {
StreamSubscription _onSyncSub;
StreamSubscription _onSyncErrorSub;
static bool _connected = false;
set connected(bool connected) {
if (mounted) {
setState(() => _connected = connected);
}
}
@override
void dispose() {
_onSyncSub?.cancel();
_onSyncErrorSub?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
_onSyncSub ??= Matrix.of(context).client.onSync.stream.listen(
(_) => connected = true,
);
_onSyncErrorSub ??= Matrix.of(context).client.onSyncError.stream.listen(
(_) => connected = false,
);
return AnimatedContainer(
duration: Duration(milliseconds: 500),
height: _connected ? 0 : 5,
child: LinearProgressIndicator(),
);
}
}

View File

@ -34,15 +34,6 @@ class PresenceDialog extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(presence.getLocalizedStatusMessage(context)),
if (presence.presence != null)
Text(
presence.presence.toString().split('.').last,
style: TextStyle(
color: presence.presence.currentlyActive == true
? Colors.green
: Theme.of(context).primaryColor,
),
)
],
),
actions: <Widget>[

View File

@ -8,17 +8,17 @@ class SimpleDialogs {
const SimpleDialogs(this.context);
Future<String> enterText({
String titleText,
String confirmText,
String cancelText,
String hintText,
String labelText,
String prefixText,
String suffixText,
bool password = false,
bool multiLine = false,
}) async {
Future<String> enterText(
{String titleText,
String confirmText,
String cancelText,
String hintText,
String labelText,
String prefixText,
String suffixText,
bool password = false,
bool multiLine = false,
TextInputType keyboardType}) async {
var textEditingController = TextEditingController();
final controller = textEditingController;
String input;
@ -32,12 +32,13 @@ class SimpleDialogs {
autocorrect: false,
onSubmitted: (s) {
input = s;
Navigator.of(context).pop();
Navigator.of(c).pop();
},
minLines: multiLine ? 3 : 1,
maxLines: multiLine ? 3 : 1,
obscureText: password,
textInputAction: multiLine ? TextInputAction.newline : null,
keyboardType: keyboardType,
decoration: InputDecoration(
hintText: hintText,
labelText: labelText,
@ -54,7 +55,7 @@ class SimpleDialogs {
cancelText?.toUpperCase() ??
L10n.of(context).close.toUpperCase(),
style: TextStyle(color: Colors.blueGrey)),
onPressed: () => Navigator.of(context).pop(),
onPressed: () => Navigator.of(c).pop(),
),
FlatButton(
child: Text(
@ -63,7 +64,7 @@ class SimpleDialogs {
),
onPressed: () {
input = controller.text;
Navigator.of(context).pop();
Navigator.of(c).pop();
},
),
],
@ -90,7 +91,7 @@ class SimpleDialogs {
cancelText?.toUpperCase() ??
L10n.of(context).close.toUpperCase(),
style: TextStyle(color: Colors.blueGrey)),
onPressed: () => Navigator.of(context).pop(),
onPressed: () => Navigator.of(c).pop(),
),
FlatButton(
child: Text(
@ -99,7 +100,7 @@ class SimpleDialogs {
),
onPressed: () {
confirmed = true;
Navigator.of(context).pop();
Navigator.of(c).pop();
},
),
],
@ -124,7 +125,7 @@ class SimpleDialogs {
okText ?? L10n.of(context).ok.toUpperCase(),
),
onPressed: () {
Navigator.of(context).pop();
Navigator.of(c).pop();
},
),
],
@ -167,7 +168,12 @@ class SimpleDialogs {
children: <Widget>[
CircularProgressIndicator(),
SizedBox(width: 16),
Text(L10n.of(context).loadingPleaseWait),
Expanded(
child: Text(
L10n.of(context).loadingPleaseWait,
overflow: TextOverflow.ellipsis,
maxLines: 1,
)),
],
),
),

View File

@ -21,11 +21,19 @@ class HtmlMessage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// riot-web is notorious for creating bad reply fallback events from invalid messages which, if
// not handled properly, can lead to impersination. As such, we strip the entire `<mx-reply>` tags
// here already, to prevent that from happening.
// We do *not* do this in an AST and just with simple regex here, as riot-web tends to create
// miss-matching tags, and this way we actually correctly identify what we want to strip and, well,
// strip it.
final renderHtml = html.replaceAll(RegExp('<mx-reply>.*<\/mx-reply>'), '');
// there is no need to pre-validate the html, as we validate it while rendering
final themeData = Theme.of(context);
return Html(
data: html,
data: renderHtml,
defaultTextStyle: defaultTextStyle,
linkStyle: linkStyle ??
themeData.textTheme.bodyText2.copyWith(

View File

@ -280,6 +280,7 @@ class InputBar extends StatelessWidget {
onChanged: (text) {
onChanged(text);
},
textCapitalization: TextCapitalization.sentences,
),
suggestionsCallback: getSuggestions,
itemBuilder: buildSuggestion,

View File

@ -1,6 +1,5 @@
import 'package:bubble/bubble.dart';
import 'package:famedlysdk/famedlysdk.dart';
import 'package:famedlysdk/encryption.dart';
import 'package:fluffychat/components/dialogs/simple_dialogs.dart';
import 'package:fluffychat/components/message_content.dart';
import 'package:fluffychat/components/reply_content.dart';
@ -32,6 +31,10 @@ class Message extends StatelessWidget {
this.selected,
this.timeline});
/// Indicates wheither the user may use a mouse instead
/// of touchscreen.
static bool useMouse = false;
@override
Widget build(BuildContext context) {
if (event.type == EventTypes.Unknown) {
@ -118,7 +121,7 @@ class Message extends StatelessWidget {
),
if (event.type == EventTypes.Encrypted &&
event.messageType == MessageTypes.BadEncrypted &&
event.content['body'] == DecryptError.UNKNOWN_SESSION)
event.content['can_request_session'] == true)
RaisedButton(
color: color.withAlpha(100),
child: Text(
@ -169,7 +172,8 @@ class Message extends StatelessWidget {
}
return InkWell(
onTap: longPressSelect ? () => null : () => onSelect(event),
onHover: (b) => useMouse = true,
onTap: !useMouse && longPressSelect ? () => null : () => onSelect(event),
splashColor: Theme.of(context).primaryColor.withAlpha(100),
onLongPress: !longPressSelect ? null : () => onSelect(event),
child: AnimatedContainer(

View File

@ -1,62 +1,83 @@
import 'package:famedlysdk/famedlysdk.dart';
import 'package:fluffychat/components/dialogs/presence_dialog.dart';
import 'package:fluffychat/utils/app_route.dart';
import 'package:fluffychat/views/chat.dart';
import 'package:flutter/material.dart';
import '../avatar.dart';
import '../matrix.dart';
class PresenceListItem extends StatelessWidget {
final Presence presence;
final Room room;
const PresenceListItem(this.presence);
const PresenceListItem(this.room);
static final Map<String, Profile> _presences = {};
Future<Profile> _requestProfile(BuildContext context) async {
_presences[presence.senderId] ??=
await Matrix.of(context).client.getProfileFromUserId(presence.senderId);
return _presences[presence.senderId];
void _startChatAction(BuildContext context, String userId) async {
final roomId = await User(userId,
room: Room(client: Matrix.of(context).client, id: ''))
.startDirectChat();
await Navigator.of(context).pushAndRemoveUntil(
AppRoute.defaultRoute(
context,
ChatView(roomId),
),
(Route r) => r.isFirst);
}
@override
Widget build(BuildContext context) {
return FutureBuilder<Profile>(
future: _requestProfile(context),
builder: (context, snapshot) {
if (!snapshot.hasData) return Container();
Uri avatarUrl;
var displayname = presence.senderId.localpart;
if (snapshot.hasData) {
avatarUrl = snapshot.data.avatarUrl;
displayname = snapshot.data.displayname;
}
return InkWell(
onTap: () => showDialog(
final user = room.getUserByMXIDSync(room.directChatMatrixID);
final presence =
Matrix.of(context).client.presences[room.directChatMatrixID];
return InkWell(
onTap: () => presence?.presence?.statusMsg == null
? _startChatAction(context, user.id)
: showDialog(
context: context,
builder: (c) => PresenceDialog(
builder: (_) => PresenceDialog(
presence,
avatarUrl: avatarUrl,
displayname: displayname,
avatarUrl: user.avatarUrl,
displayname: user.calcDisplayname(),
),
child: Container(
width: 80,
child: Column(
children: <Widget>[
SizedBox(height: 9),
Avatar(avatarUrl, displayname),
Padding(
padding: const EdgeInsets.all(6.0),
child: Text(
displayname,
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
),
],
),
child: Container(
width: 80,
child: Column(
children: <Widget>[
SizedBox(height: 16),
Container(
child: Avatar(user.avatarUrl, user.calcDisplayname()),
decoration: BoxDecoration(
border: Border.all(
width: 1,
color: presence?.presence?.statusMsg == null
? presence?.presence?.currentlyActive == true
? Colors.blue
: Theme.of(context).secondaryHeaderColor
: Theme.of(context).primaryColor,
),
borderRadius: BorderRadius.circular(80),
),
padding: EdgeInsets.all(2),
),
Padding(
padding: const EdgeInsets.only(left: 6.0, top: 0.0, right: 6.0),
child: Text(
user.calcDisplayname().trim().split(' ').first,
overflow: TextOverflow.clip,
maxLines: 1,
style: TextStyle(
color: Theme.of(context)
.textTheme
.bodyText2
.color
.withOpacity(0.66),
fontSize: 13,
),
),
),
);
});
],
),
),
);
}
}

View File

@ -15,18 +15,33 @@ class PublicRoomListItem extends StatelessWidget {
const PublicRoomListItem(this.publicRoomEntry, {Key key}) : super(key: key);
void joinAction(BuildContext context) async {
final success = await SimpleDialogs(context).tryRequestWithLoadingDialog(
Matrix.of(context).client.api.joinRoom(publicRoomEntry.roomId));
final success = await SimpleDialogs(context)
.tryRequestWithLoadingDialog(_joinRoomAndWait(context));
if (success != false) {
await Navigator.of(context).push(
AppRoute.defaultRoute(
context,
ChatView(publicRoomEntry.roomId),
ChatView(success),
),
);
}
}
Future<String> _joinRoomAndWait(BuildContext context) async {
final roomId = await Matrix.of(context)
.client
.api
.joinRoomOrAlias(publicRoomEntry.roomId);
if (Matrix.of(context).client.getRoomById(roomId) == null) {
await Matrix.of(context)
.client
.onRoomUpdate
.stream
.firstWhere((r) => r.id == roomId);
}
return roomId;
}
@override
Widget build(BuildContext context) {
final hasTopic =
@ -43,8 +58,10 @@ class PublicRoomListItem extends StatelessWidget {
subtitle: Text(
hasTopic
? publicRoomEntry.topic
: L10n.of(context).countParticipants(
publicRoomEntry.numJoinedMembers?.toString() ?? '0'),
: publicRoomEntry.numJoinedMembers == null
? L10n.of(context).joinRoom
: L10n.of(context).countParticipants(
publicRoomEntry.numJoinedMembers.toString()),
maxLines: 1,
),
onTap: () => joinAction(context),

View File

@ -9,11 +9,13 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:localstorage/localstorage.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:universal_html/prefer_universal/html.dart' as html;
import '../l10n/l10n.dart';
import '../utils/beautify_string_extension.dart';
import '../utils/famedlysdk_store.dart';
import 'avatar.dart';
import '../views/key_verification.dart';
import '../utils/app_route.dart';
class Matrix extends StatefulWidget {
static const String callNamespace = 'chat.fluffy.jitsi_call';
@ -79,7 +81,7 @@ class MatrixState extends State<Matrix> {
client.connect();
if (await initLoginState == LoginState.logged && !kIsWeb) {
await FirebaseController.setupFirebase(
client,
this,
widget.clientName,
);
}
@ -97,7 +99,9 @@ class MatrixState extends State<Matrix> {
};
StreamSubscription onRoomKeyRequestSub;
StreamSubscription onKeyVerificationRequestSub;
StreamSubscription onJitsiCallSub;
StreamSubscription onNotification;
void onJitsiCall(EventUpdate eventUpdate) {
final event = Event.fromJson(
@ -154,12 +158,48 @@ class MatrixState extends State<Matrix> {
return;
}
void _showWebNotification(EventUpdate eventUpdate) async {
final room = client.getRoomById(eventUpdate.roomID);
if (room.notificationCount == 0) return;
final event = Event.fromJson(eventUpdate.content, room);
final body = event.getLocalizedBody(
L10n.of(context),
withSenderNamePrefix:
!room.isDirectChat || room.lastEvent.senderId == client.userID,
);
html.AudioElement()
..src = 'assets/assets/sounds/notification.wav'
..autoplay = true
..load();
html.Notification(
room.getLocalizedDisplayname(L10n.of(context)),
body: body,
icon: event.sender.avatarUrl?.getThumbnail(client,
width: 64, height: 64, method: ThumbnailMethod.crop) ??
room.avatar?.getThumbnail(client,
width: 64, height: 64, method: ThumbnailMethod.crop),
);
}
@override
void initState() {
store = widget.store ?? Store();
if (widget.client == null) {
debugPrint('[Matrix] Init matrix client');
client = Client(widget.clientName, debug: false);
final Set verificationMethods = <KeyVerificationMethod>{
KeyVerificationMethod.numbers
};
if (!kIsWeb) {
// emojis don't show in web somehow
verificationMethods.add(KeyVerificationMethod.emoji);
}
client = Client(widget.clientName,
debug: false,
enableE2eeRecovery: true,
verificationMethods: verificationMethods,
importantStateEvents: <String>{
'im.ponies.room_emotes', // we want emotes to work properly
});
onJitsiCallSub ??= client.onEvent.stream
.where((e) =>
e.type == 'timeline' &&
@ -170,6 +210,9 @@ class MatrixState extends State<Matrix> {
onRoomKeyRequestSub ??=
client.onRoomKeyRequest.stream.listen((RoomKeyRequest request) async {
final room = request.room;
if (request.sender != room.client.userID) {
return; // ignore share requests by others
}
final sender = room.getUserByMXIDSync(request.sender);
if (await SimpleDialogs(context).askConfirmation(
titleText: L10n.of(context).requestToReadOlderMessages,
@ -181,6 +224,23 @@ class MatrixState extends State<Matrix> {
await request.forwardKey();
}
});
onKeyVerificationRequestSub ??= client.onKeyVerificationRequest.stream
.listen((KeyVerification request) async {
if (await SimpleDialogs(context).askConfirmation(
titleText: L10n.of(context).newVerificationRequest,
contentText: L10n.of(context).askVerificationRequest(request.userId),
)) {
await request.acceptVerification();
await Navigator.of(context).push(
AppRoute.defaultRoute(
context,
KeyVerificationView(request: request),
),
);
} else {
await request.rejectVerification();
}
});
_initWithStore();
} else {
client = widget.client;
@ -201,13 +261,28 @@ class MatrixState extends State<Matrix> {
renderHtml = render == '1';
});
}
if (kIsWeb) {
client.onSync.stream.first.then((s) {
html.Notification.requestPermission();
onNotification ??= client.onEvent.stream
.where((e) =>
e.roomID != activeRoomId &&
e.type == 'timeline' &&
[EventTypes.Message, EventTypes.Sticker, EventTypes.Encrypted]
.contains(e.eventType) &&
e.content['sender'] != client.userID)
.listen(_showWebNotification);
});
}
super.initState();
}
@override
void dispose() {
onRoomKeyRequestSub?.cancel();
onKeyVerificationRequestSub?.cancel();
onJitsiCallSub?.cancel();
onNotification?.cancel();
super.dispose();
}

1395
lib/l10n/intl_cs.arb Normal file

File diff suppressed because it is too large Load Diff

View File

@ -89,7 +89,7 @@
"type": "text",
"placeholders": {}
},
"Banned": "Banned",
"Banned": "Verbannt",
"@Banned": {
"type": "text",
"placeholders": {}
@ -102,7 +102,7 @@
"targetName": {}
}
},
"byDefaultYouWillBeConnectedTo": "Standardmäßig wirst Du mit {Homeserver} verbunden",
"byDefaultYouWillBeConnectedTo": "Standardmäßig wirst Du mit {homeserver} verbunden",
"@byDefaultYouWillBeConnectedTo": {
"type": "text",
"placeholders": {
@ -223,7 +223,7 @@
"username": {}
}
},
"Changelog": "Changelog",
"Changelog": "Protokoll der Änderungen",
"@Changelog": {
"type": "text",
"placeholders": {}
@ -332,7 +332,7 @@
"count": {}
}
},
"Create": "Create",
"Create": "Erstellen",
"@Create": {
"type": "text",
"placeholders": {}
@ -354,8 +354,8 @@
"type": "text",
"placeholders": {}
},
"Currenlty active": "Jetzt gerade online",
"@Currenlty active": {
"Currently active": "Jetzt gerade online",
"@Currently active": {
"type": "text",
"placeholders": {}
},
@ -367,7 +367,7 @@
"timeOfDay": {}
}
},
"dateWithoutYear": "{day}.{month}",
"dateWithoutYear": "{day}. {month}",
"@dateWithoutYear": {
"type": "text",
"placeholders": {
@ -375,7 +375,7 @@
"day": {}
}
},
"dateWithYear": "{day}.{month}.{year}",
"dateWithYear": "{day}. {month}. {year}",
"@dateWithYear": {
"type": "text",
"placeholders": {
@ -599,7 +599,7 @@
"type": "text",
"placeholders": {}
},
"inviteContactToGroup": "Kontakt zu {groupName} einladen",
"inviteContactToGroup": "Kontakt in die Gruppe {groupName} einladen",
"@inviteContactToGroup": {
"type": "text",
"placeholders": {
@ -680,7 +680,7 @@
"type": "text",
"placeholders": {}
},
"Logout": "Logout",
"Logout": "Abmelden",
"@Logout": {
"type": "text",
"placeholders": {}
@ -692,7 +692,7 @@
"username": {}
}
},
"lastActiveAgo": "Zuletzt gesehen: {localizedTimeShort}",
"lastActiveAgo": "Zuletzt aktiv: {localizedTimeShort}",
"@lastActiveAgo": {
"type": "text",
"placeholders": {
@ -860,7 +860,7 @@
"type": "text",
"placeholders": {}
},
"play": "Play {fileName}",
"play": "{fileName} abspielen",
"@play": {
"type": "text",
"placeholders": {
@ -990,7 +990,7 @@
"username": {}
}
},
"Search for a chat": "Durchsuche die Chats",
"Search for a chat": "Chat suchen",
"@Search for a chat": {
"type": "text",
"placeholders": {}
@ -1217,7 +1217,7 @@
"type": "text",
"placeholders": {}
},
"unknownEvent": "Unbekanntes Event '{type}'",
"unknownEvent": "Unbekanntes Ereignis '{type}'",
"@unknownEvent": {
"type": "text",
"placeholders": {
@ -1376,5 +1376,217 @@
"@Your own username": {
"type": "text",
"placeholders": {}
},
"waitingPartnerNumbers": "Warte darauf, dass der Partner die Zahlen annimmt...",
"@waitingPartnerNumbers": {
"type": "text",
"placeholders": {}
},
"waitingPartnerEmoji": "Warte darauf, dass der Partner die Emoji annimmt...",
"@waitingPartnerEmoji": {
"type": "text",
"placeholders": {}
},
"waitingPartnerAcceptRequest": "Warte darauf, dass der Partner die Verifikationsanfrage annimmt...",
"@waitingPartnerAcceptRequest": {
"type": "text",
"placeholders": {}
},
"Verify User": "Verifiziere Benutzer",
"@Verify User": {
"type": "text",
"placeholders": {}
},
"verifyTitle": "Verifiziere anderen Benutzer",
"@verifyTitle": {
"type": "text",
"placeholders": {}
},
"verifySuccess": "Erfolgreich verifiziert!",
"@verifySuccess": {
"type": "text",
"placeholders": {}
},
"verifyStart": "Starte Verifikation",
"@verifyStart": {
"type": "text",
"placeholders": {}
},
"verifiedSession": "Sitzung erfolgreich verifiziert!",
"@verifiedSession": {
"type": "text",
"placeholders": {}
},
"verifyManual": "Verifiziere manuell",
"@verifyManual": {
"type": "text",
"placeholders": {}
},
"unknownSessionVerify": "Unbekannte Sitzung, bitte verifiziere diese",
"@unknownSessionVerify": {
"type": "text",
"placeholders": {}
},
"Unblock Device": "Geräteblockierung aufheben",
"@Unblock Device": {
"type": "text",
"placeholders": {}
},
"They Match": "Stimmen überein",
"@They Match": {
"type": "text",
"placeholders": {}
},
"They Don't Match": "Stimmen nicht überein",
"@They Don't Match": {
"type": "text",
"placeholders": {}
},
"How are you today?": "Wie geht es dir heute?",
"@How are you today?": {
"type": "text",
"placeholders": {}
},
"Skip": "Überspringe",
"@Skip": {
"type": "text",
"placeholders": {}
},
"sessionVerified": "Sitzung ist verifiziert",
"@sessionVerified": {
"type": "text",
"placeholders": {}
},
"Room has been upgraded": "Der Raum wurde ge-upgraded",
"@Room has been upgraded": {
"type": "text",
"placeholders": {}
},
"Reject": "Ablehnen",
"@Reject": {
"type": "text",
"placeholders": {}
},
"passphraseOrKey": "Passwort oder Wiederherstellungsschlüssel",
"@passphraseOrKey": {
"type": "text",
"placeholders": {}
},
"Open app to read messages": "Öffne app, um Nachrichten zu lesen",
"@Open app to read messages": {
"type": "text",
"placeholders": {}
},
"onlineKeyBackupEnabled": "Online Key Backup ist aktiviert",
"@onlineKeyBackupEnabled": {
"type": "text",
"placeholders": {}
},
"onlineKeyBackupDisabled": "Online Key Backup ist deaktiviert",
"@onlineKeyBackupDisabled": {
"type": "text",
"placeholders": {}
},
"noMegolmBootstrap": "Fluffychat unterstützt noch nicht das Einschalten vom Online Key Backup. Bitte schalte es innerhalb Riot an.",
"@noMegolmBootstrap": {
"type": "text",
"placeholders": {}
},
"noCrossSignBootstrap": "Fluffychat unterstützt noch nicht das Einschalten von Cross-Signing. Bitte schalte es innerhalb Riot an.",
"@noCrossSignBootstrap": {
"type": "text",
"placeholders": {}
},
"newVerificationRequest": "Neue Verifikationsanfrage!",
"@newVerificationRequest": {
"type": "text",
"placeholders": {}
},
"keysMissing": "Keys fehlen",
"@keysMissing": {
"type": "text",
"placeholders": {}
},
"keysCached": "Keys sind gecached",
"@keysCached": {
"type": "text",
"placeholders": {}
},
"isDeviceKeyCorrect": "Ist der folgende Geräteschlüssel korrekt?",
"@isDeviceKeyCorrect": {
"type": "text",
"placeholders": {}
},
"incorrectPassphraseOrKey": "Falsches Passwort oder Wiederherstellungsschlüssel",
"@incorrectPassphraseOrKey": {
"type": "text",
"placeholders": {}
},
"Encryption": "Verschlüsselung",
"@Encryption": {
"type": "text",
"placeholders": {}
},
"crossSigningEnabled": "Cross-Signing ist aktiviert",
"@crossSigningEnabled": {
"type": "text",
"placeholders": {}
},
"crossSigningDisabled": "Cross-Signing ist deaktiviert",
"@crossSigningDisabled": {
"type": "text",
"placeholders": {}
},
"compareNumbersMatch": "Vergleiche und stelle sicher, dass die folgenden Zahlen mit denen des anderen Gerätes übereinstimmen:",
"@compareNumbersMatch": {
"type": "text",
"placeholders": {}
},
"compareEmojiMatch": "Vergleiche und stelle sicher, dass die folgenden Emoji mit denen des anderen Gerätes übereinstimmen:",
"@compareEmojiMatch": {
"type": "text",
"placeholders": {}
},
"cachedKeys": "Keys erfolgreich gecached!",
"@cachedKeys": {
"type": "text",
"placeholders": {}
},
"Block Device": "Blockiere Gerät",
"@Block Device": {
"type": "text",
"placeholders": {}
},
"askVerificationRequest": "Diese Bestätigungsanfrage von {username} annehmen?",
"@askVerificationRequest": {
"type": "text",
"placeholders": {
"username": {}
}
},
"askSSSSVerify": "Bitte gebe um deine Session zu verifizieren dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein.",
"@askSSSSVerify": {
"type": "text",
"placeholders": {}
},
"askSSSSSign": "Bitte gebe um die andere Person signieren zu können dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein.",
"@askSSSSSign": {
"type": "text",
"placeholders": {}
},
"askSSSSCache": "Bitte gib dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein, um die Keys zu cachen.",
"@askSSSSCache": {
"type": "text",
"placeholders": {}
},
"Accept": "Annehmen",
"@Accept": {
"type": "text",
"placeholders": {}
},
"Submit": "Absenden",
"@Submit": {
"type": "text",
"placeholders": {}
}
}

1592
lib/l10n/intl_es.arb Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"@@last_modified": "2020-05-15T22:28:40",
"About": "About",
"About": "À propos",
"@About": {
"type": "text",
"placeholders": {}
@ -12,7 +12,7 @@
"username": {}
}
},
"Account": "Account",
"Account": "Compte",
"@Account": {
"type": "text",
"placeholders": {}
@ -89,7 +89,7 @@
"type": "text",
"placeholders": {}
},
"Banned": "Banned",
"Banned": "Banni",
"@Banned": {
"type": "text",
"placeholders": {}
@ -164,7 +164,7 @@
"username": {}
}
},
"changedTheGuestAccessRulesTo": "{username} a changé les règles d'accès à la discussion pour les invités en : {rules}",
"changedTheGuestAccessRulesTo": "{username} a changé les règles d'accès à la discussion pour les invités en : {rules}",
"@changedTheGuestAccessRulesTo": {
"type": "text",
"placeholders": {
@ -354,8 +354,8 @@
"type": "text",
"placeholders": {}
},
"Currenlty active": "Actif en ce moment",
"@Currenlty active": {
"Currently active": "Actif en ce moment",
"@Currently active": {
"type": "text",
"placeholders": {}
},
@ -632,7 +632,7 @@
"type": "text",
"placeholders": {}
},
"is typing...": "is typing...",
"is typing...": "est en train d'écrire...",
"@is typing...": {
"type": "text",
"placeholders": {}
@ -670,17 +670,17 @@
"type": "text",
"placeholders": {}
},
"Leave": "Leave",
"Leave": "Partir",
"@Leave": {
"type": "text",
"placeholders": {}
},
"Left the chat": "Discussion quittée",
"Left the chat": "A quitté la discussion",
"@Left the chat": {
"type": "text",
"placeholders": {}
},
"Logout": "Logout",
"Logout": "Se déconnecter",
"@Logout": {
"type": "text",
"placeholders": {}
@ -692,7 +692,7 @@
"username": {}
}
},
"lastActiveAgo": "Vu pour la dernière fois: {localizedTimeShort}",
"lastActiveAgo": "Vu pour la dernière fois: {localizedTimeShort}",
"@lastActiveAgo": {
"type": "text",
"placeholders": {
@ -1327,7 +1327,7 @@
"type": "text",
"placeholders": {}
},
"End to end encryption is currently in Beta! Use at your own risk!": "Le chiffrement de bout en bout est actuellement en beta ! Utilisez cette fonctionnalité à vos propres risques !!",
"End to end encryption is currently in Beta! Use at your own risk!": "Le chiffrement de bout en bout est actuellement en béta! Utilisez cette fonctionnalité à vos propres risques!",
"@End to end encryption is currently in Beta! Use at your own risk!": {
"type": "text",
"placeholders": {}
@ -1386,5 +1386,207 @@
"@Your own username": {
"type": "text",
"placeholders": {}
},
"waitingPartnerNumbers": "En attente de l'acceptation des nombres par le partenaire...",
"@waitingPartnerNumbers": {
"type": "text",
"placeholders": {}
},
"waitingPartnerEmoji": "En attente de l'acceptation de l'émoji par le partenaire...",
"@waitingPartnerEmoji": {
"type": "text",
"placeholders": {}
},
"waitingPartnerAcceptRequest": "En attente de la vérification de la demande par le partenaire...",
"@waitingPartnerAcceptRequest": {
"type": "text",
"placeholders": {}
},
"Verify User": "Vérifier l'utilisateur/trice",
"@Verify User": {
"type": "text",
"placeholders": {}
},
"verifyTitle": "Vérification de l'autre compte",
"@verifyTitle": {
"type": "text",
"placeholders": {}
},
"verifySuccess": "Vous avez vérifié avec succès !",
"@verifySuccess": {
"type": "text",
"placeholders": {}
},
"verifyStart": "Commencer la vérification",
"@verifyStart": {
"type": "text",
"placeholders": {}
},
"verifiedSession": "Session vérifiée avec succès !",
"@verifiedSession": {
"type": "text",
"placeholders": {}
},
"verifyManual": "Vérifier manuellement",
"@verifyManual": {
"type": "text",
"placeholders": {}
},
"unknownSessionVerify": "Session inconnue, veuillez vérifier",
"@unknownSessionVerify": {
"type": "text",
"placeholders": {}
},
"Unblock Device": "Débloquer l'appareil",
"@Unblock Device": {
"type": "text",
"placeholders": {}
},
"They Match": "Elles correspondent",
"@They Match": {
"type": "text",
"placeholders": {}
},
"They Don't Match": "Elles ne correspondent pas",
"@They Don't Match": {
"type": "text",
"placeholders": {}
},
"Submit": "Soumettre",
"@Submit": {
"type": "text",
"placeholders": {}
},
"Skip": "Ignorer",
"@Skip": {
"type": "text",
"placeholders": {}
},
"sessionVerified": "La session est vérifiée",
"@sessionVerified": {
"type": "text",
"placeholders": {}
},
"Room has been upgraded": "Le salon a été mis à niveau",
"@Room has been upgraded": {
"type": "text",
"placeholders": {}
},
"Reject": "Refuser",
"@Reject": {
"type": "text",
"placeholders": {}
},
"passphraseOrKey": "Phrase de passe ou clé de récupération",
"@passphraseOrKey": {
"type": "text",
"placeholders": {}
},
"onlineKeyBackupEnabled": "La sauvegarde en ligne des clés est activée",
"@onlineKeyBackupEnabled": {
"type": "text",
"placeholders": {}
},
"onlineKeyBackupDisabled": "La sauvegarde en ligne des clés est désactivée",
"@onlineKeyBackupDisabled": {
"type": "text",
"placeholders": {}
},
"noMegolmBootstrap": "Fluffychat ne prend pas actuellement en charge l'activation de la sauvegarde des clés en ligne. Veuillez l'activer à partir de Element.",
"@noMegolmBootstrap": {
"type": "text",
"placeholders": {}
},
"noCrossSignBootstrap": "Fluffychat ne permet pas actuellement d'activer la signature croisée. Veuillez l'activer à partir de Element.",
"@noCrossSignBootstrap": {
"type": "text",
"placeholders": {}
},
"newVerificationRequest": "Nouvelle demande de vérification !",
"@newVerificationRequest": {
"type": "text",
"placeholders": {}
},
"keysMissing": "Les clés sont manquantes",
"@keysMissing": {
"type": "text",
"placeholders": {}
},
"keysCached": "Les clés sont mises en cache",
"@keysCached": {
"type": "text",
"placeholders": {}
},
"isDeviceKeyCorrect": "La clé de l'appareil ci-dessous est-elle correcte ?",
"@isDeviceKeyCorrect": {
"type": "text",
"placeholders": {}
},
"incorrectPassphraseOrKey": "Phrase de passe ou clé de récupération incorrecte",
"@incorrectPassphraseOrKey": {
"type": "text",
"placeholders": {}
},
"Encryption": "Chiffrement",
"@Encryption": {
"type": "text",
"placeholders": {}
},
"crossSigningEnabled": "La signature croisée est activée",
"@crossSigningEnabled": {
"type": "text",
"placeholders": {}
},
"crossSigningDisabled": "La signature croisée est désactivée",
"@crossSigningDisabled": {
"type": "text",
"placeholders": {}
},
"compareNumbersMatch": "Comparez et assurez-vous que les chiffres suivants correspondent à ceux de l'autre appareil :",
"@compareNumbersMatch": {
"type": "text",
"placeholders": {}
},
"compareEmojiMatch": "Comparez et assurez-vous que les emojis suivants correspondent à ceux de l'autre appareil :",
"@compareEmojiMatch": {
"type": "text",
"placeholders": {}
},
"cachedKeys": "Clés mises en cache avec succès !",
"@cachedKeys": {
"type": "text",
"placeholders": {}
},
"Block Device": "Bloquer l'appareil",
"@Block Device": {
"type": "text",
"placeholders": {}
},
"askVerificationRequest": "Accepter cette demande de vérification de {username} ?",
"@askVerificationRequest": {
"type": "text",
"placeholders": {
"username": {}
}
},
"askSSSSVerify": "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour vérifier votre session.",
"@askSSSSVerify": {
"type": "text",
"placeholders": {}
},
"askSSSSSign": "Pour pouvoir faire signer l'autre personne, veuillez entrer votre phrase de passe stockée de manière sécurisée ou votre clé de récupération.",
"@askSSSSSign": {
"type": "text",
"placeholders": {}
},
"askSSSSCache": "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour mettre les clés en cache.",
"@askSSSSCache": {
"type": "text",
"placeholders": {}
},
"Accept": "Accepter",
"@Accept": {
"type": "text",
"placeholders": {}
}
}

1592
lib/l10n/intl_gl.arb Normal file

File diff suppressed because it is too large Load Diff

1592
lib/l10n/intl_hr.arb Normal file

File diff suppressed because it is too large Load Diff

View File

@ -64,7 +64,7 @@
"type": "text",
"placeholders": {}
},
"Are guest users allowed to join": "Csatlakozhatnak-e vendég felhasználók",
"Are guest users allowed to join": "Csatlakozhatnak vendég felhasználók",
"@Are guest users allowed to join": {
"type": "text",
"placeholders": {}
@ -424,7 +424,7 @@
"type": "text",
"placeholders": {}
},
"Emote Settings": "Hangulatjel beállíŧások",
"Emote Settings": "Hangulatjel beállítások",
"@Emote Settings": {
"type": "text",
"placeholders": {}
@ -835,7 +835,7 @@
"type": "text",
"placeholders": {}
},
"Open camera": "Kamera megnyitása",
"Open camera": "Kamera megnyitása",
"@Open camera": {
"type": "text",
"placeholders": {}
@ -1282,7 +1282,7 @@
"type": {}
}
},
"Verify": "Igazol",
"Verify": "Hitelesít",
"@Verify": {
"type": "text",
"placeholders": {}
@ -1376,5 +1376,224 @@
"@Your own username": {
"type": "text",
"placeholders": {}
},
"askSSSSSign": "A másik személy igazolásához, kérlek add meg jelszavadat vagy visszaállítási kulcsodat.",
"@askSSSSSign": {
"type": "text",
"placeholders": {}
},
"newVerificationRequest": "Új hitelesítési kérelem!",
"@newVerificationRequest": {
"type": "text",
"placeholders": {}
},
"waitingPartnerNumbers": "Várakozás partnere, amíg elfogadja a számokat...",
"@waitingPartnerNumbers": {
"type": "text",
"placeholders": {}
},
"waitingPartnerAcceptRequest": "Várakozás partnerre, amíg elfogadja a kérést...",
"@waitingPartnerAcceptRequest": {
"type": "text",
"placeholders": {}
},
"waitingPartnerEmoji": "Várakozás partnere, amíg elfogadja a hangulatjeleket...",
"@waitingPartnerEmoji": {
"type": "text",
"placeholders": {}
},
"Verify User": "Felhasználó hitelesítése",
"@Verify User": {
"type": "text",
"placeholders": {}
},
"verifyTitle": "Másik fiók hitelesítése",
"@verifyTitle": {
"type": "text",
"placeholders": {}
},
"verifySuccess": "Sikeresen hitelesítettél!",
"@verifySuccess": {
"type": "text",
"placeholders": {}
},
"verifyStart": "Hitelesítés megkezdése",
"@verifyStart": {
"type": "text",
"placeholders": {}
},
"verifiedSession": "Sikeresen hitelesítetted a munkamenetedet!",
"@verifiedSession": {
"type": "text",
"placeholders": {}
},
"verifyManual": "Kézi hitelesítés",
"@verifyManual": {
"type": "text",
"placeholders": {}
},
"unknownSessionVerify": "Ismeretlen munkamenet, kérlek hitelesítsd",
"@unknownSessionVerify": {
"type": "text",
"placeholders": {}
},
"Block Device": "Eszköz blokkolása",
"@Block Device": {
"type": "text",
"placeholders": {}
},
"Unblock Device": "Eszköz blokkolásának megszüntetése",
"@Unblock Device": {
"type": "text",
"placeholders": {}
},
"They Match": "Megegyeznek",
"@They Match": {
"type": "text",
"placeholders": {}
},
"They Don't Match": "Nem egyeznek",
"@They Don't Match": {
"type": "text",
"placeholders": {}
},
"Submit": "Mehet",
"@Submit": {
"type": "text",
"placeholders": {}
},
"Skip": "Kihagy",
"@Skip": {
"type": "text",
"placeholders": {}
},
"sessionVerified": "Munkamenet hitelesítve",
"@sessionVerified": {
"type": "text",
"placeholders": {}
},
"Seen a long time ago": "Már régen látta",
"@Seen a long time ago": {
"type": "text",
"placeholders": {}
},
"Room has been upgraded": "Szoba frissítve lett",
"@Room has been upgraded": {
"type": "text",
"placeholders": {}
},
"Reject": "Visszautasít",
"@Reject": {
"type": "text",
"placeholders": {}
},
"passphraseOrKey": "Jelszó vagy visszaállítási kulcs",
"@passphraseOrKey": {
"type": "text",
"placeholders": {}
},
"onlineKeyBackupEnabled": "Online Kulcs Archívum engedélyezve",
"@onlineKeyBackupEnabled": {
"type": "text",
"placeholders": {}
},
"onlineKeyBackupDisabled": "Online Kulcs Archívum letiltva",
"@onlineKeyBackupDisabled": {
"type": "text",
"placeholders": {}
},
"noMegolmBootstrap": "FluffyChat jelenleg nem támogatja az Online Kulcs Archívumot (backup). Kérlek engedélyezd Riot-ból.",
"@noMegolmBootstrap": {
"type": "text",
"placeholders": {}
},
"noCrossSignBootstrap": "FluffyChat jelenleg nem támogatja a Kereszt-Aláírás bekapcsolását. Kérlek engedélyezd Riot-ból.",
"@noCrossSignBootstrap": {
"type": "text",
"placeholders": {}
},
"keysMissing": "Kulcsok hiányoznak",
"@keysMissing": {
"type": "text",
"placeholders": {}
},
"keysCached": "Kulcsok betöltve",
"@keysCached": {
"type": "text",
"placeholders": {}
},
"isDeviceKeyCorrect": "Helyes az alábbi eszköz kulcs?",
"@isDeviceKeyCorrect": {
"type": "text",
"placeholders": {}
},
"incorrectPassphraseOrKey": "Hibás jelszó vagy visszaállítási kulcs",
"@incorrectPassphraseOrKey": {
"type": "text",
"placeholders": {}
},
"Encryption": "Titkosítás",
"@Encryption": {
"type": "text",
"placeholders": {}
},
"Currently active": "Jelenleg aktív",
"@Currently active": {
"type": "text",
"placeholders": {}
},
"crossSigningEnabled": "Kereszt-Aláírás bekapcsolva",
"@crossSigningEnabled": {
"type": "text",
"placeholders": {}
},
"crossSigningDisabled": "Kereszt-Aláírás kikapcsolva",
"@crossSigningDisabled": {
"type": "text",
"placeholders": {}
},
"couldNotDecryptMessage": "Nem sikerült visszafejteni a titkosított üzenetet: {error}",
"@couldNotDecryptMessage": {
"type": "text",
"placeholders": {
"error": {}
}
},
"compareNumbersMatch": "Hasonlítsd össze a számokat a másik eszközön lévőkkel:",
"@compareNumbersMatch": {
"type": "text",
"placeholders": {}
},
"compareEmojiMatch": "Hasonlítsd össze a hangulatjeleket a másik eszközön lévőkkel:",
"@compareEmojiMatch": {
"type": "text",
"placeholders": {}
},
"cachedKeys": "Sikeresen betöltöttük a kulcsokat!",
"@cachedKeys": {
"type": "text",
"placeholders": {}
},
"askVerificationRequest": "Elfogadod {username} hitelesítési kérelmét?",
"@askVerificationRequest": {
"type": "text",
"placeholders": {
"username": {}
}
},
"askSSSSVerify": "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, a munkamenet hitelesítéséhez.",
"@askSSSSVerify": {
"type": "text",
"placeholders": {}
},
"askSSSSCache": "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, hogy betöltsük a kulcsaidat.",
"@askSSSSCache": {
"type": "text",
"placeholders": {}
},
"Accept": "Elfogad",
"@Accept": {
"type": "text",
"placeholders": {}
}
}
}

1592
lib/l10n/intl_ja.arb Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,15 @@
{
"@@last_modified": "2020-05-15T15:34:50.065646",
"@@last_modified": "2020-06-25T16:02:16.297192",
"About": "About",
"@About": {
"type": "text",
"placeholders": {}
},
"Accept": "Accept",
"@Accept": {
"type": "text",
"placeholders": {}
},
"acceptedTheInvitation": "{username} accepted the invitation",
"@acceptedTheInvitation": {
"type": "text",
@ -74,6 +79,28 @@
"type": "text",
"placeholders": {}
},
"askSSSSCache": "Please enter your secure store passphrase or recovery key to cache the keys.",
"@askSSSSCache": {
"type": "text",
"placeholders": {}
},
"askSSSSSign": "To be able to sign the other person, please enter your secure store passphrase or recovery key.",
"@askSSSSSign": {
"type": "text",
"placeholders": {}
},
"askSSSSVerify": "Please enter your secure store passphrase or recovery key to verify your session.",
"@askSSSSVerify": {
"type": "text",
"placeholders": {}
},
"askVerificationRequest": "Accept this verification request from {username}?",
"@askVerificationRequest": {
"type": "text",
"placeholders": {
"username": {}
}
},
"Authentication": "Authentication",
"@Authentication": {
"type": "text",
@ -102,6 +129,11 @@
"targetName": {}
}
},
"Block Device": "Block Device",
"@Block Device": {
"type": "text",
"placeholders": {}
},
"byDefaultYouWillBeConnectedTo": "By default you will be connected to {homeserver}",
"@byDefaultYouWillBeConnectedTo": {
"type": "text",
@ -109,6 +141,11 @@
"homeserver": {}
}
},
"cachedKeys": "Successfully cached keys!",
"@cachedKeys": {
"type": "text",
"placeholders": {}
},
"Cancel": "Cancel",
"@Cancel": {
"type": "text",
@ -202,7 +239,7 @@
"joinRules": {}
}
},
"changedTheProfileAvatar": "{username} changed the profile avatar",
"changedTheProfileAvatar": "{username} changed their avatar",
"@changedTheProfileAvatar": {
"type": "text",
"placeholders": {
@ -273,6 +310,16 @@
"type": "text",
"placeholders": {}
},
"compareEmojiMatch": "Compare and make sure the following emoji match those of the other device:",
"@compareEmojiMatch": {
"type": "text",
"placeholders": {}
},
"compareNumbersMatch": "Compare and make sure the following numbers match those of the other device:",
"@compareNumbersMatch": {
"type": "text",
"placeholders": {}
},
"Confirm": "Confirm",
"@Confirm": {
"type": "text",
@ -354,8 +401,18 @@
"type": "text",
"placeholders": {}
},
"Currenlty active": "Currenlty active",
"@Currenlty active": {
"crossSigningDisabled": "Cross-Signing is disabled",
"@crossSigningDisabled": {
"type": "text",
"placeholders": {}
},
"crossSigningEnabled": "Cross-Signing is enabled",
"@crossSigningEnabled": {
"type": "text",
"placeholders": {}
},
"Currently active": "Currently active",
"@Currently active": {
"type": "text",
"placeholders": {}
},
@ -464,6 +521,11 @@
"type": "text",
"placeholders": {}
},
"Encryption": "Encryption",
"@Encryption": {
"type": "text",
"placeholders": {}
},
"Encryption algorithm": "Encryption algorithm",
"@Encryption algorithm": {
"type": "text",
@ -594,6 +656,11 @@
"type": "text",
"placeholders": {}
},
"incorrectPassphraseOrKey": "Incorrect passphrase or recovery key",
"@incorrectPassphraseOrKey": {
"type": "text",
"placeholders": {}
},
"Invite contact": "Invite contact",
"@Invite contact": {
"type": "text",
@ -632,6 +699,11 @@
"type": "text",
"placeholders": {}
},
"isDeviceKeyCorrect": "Is the following device key correct?",
"@isDeviceKeyCorrect": {
"type": "text",
"placeholders": {}
},
"is typing...": "is typing...",
"@is typing...": {
"type": "text",
@ -649,6 +721,16 @@
"username": {}
}
},
"keysCached": "Keys are cached",
"@keysCached": {
"type": "text",
"placeholders": {}
},
"keysMissing": "Keys are missing",
"@keysMissing": {
"type": "text",
"placeholders": {}
},
"kicked": "{username} kicked {targetName}",
"@kicked": {
"type": "text",
@ -788,6 +870,21 @@
"type": "text",
"placeholders": {}
},
"newVerificationRequest": "New verification request!",
"@newVerificationRequest": {
"type": "text",
"placeholders": {}
},
"noCrossSignBootstrap": "Fluffychat currently does not support enabling Cross-Signing. Please enable it from within Element.",
"@noCrossSignBootstrap": {
"type": "text",
"placeholders": {}
},
"noMegolmBootstrap": "Fluffychat currently does not support enabling Online Key Backup. Please enable it from within Element.",
"@noMegolmBootstrap": {
"type": "text",
"placeholders": {}
},
"It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/",
"@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": {
"type": "text",
@ -830,6 +927,16 @@
"type": "text",
"placeholders": {}
},
"onlineKeyBackupDisabled": "Online Key Backup is disabled",
"@onlineKeyBackupDisabled": {
"type": "text",
"placeholders": {}
},
"onlineKeyBackupEnabled": "Online Key Backup is enabled",
"@onlineKeyBackupEnabled": {
"type": "text",
"placeholders": {}
},
"Oops something went wrong...": "Oops something went wrong...",
"@Oops something went wrong...": {
"type": "text",
@ -855,6 +962,11 @@
"type": "text",
"placeholders": {}
},
"passphraseOrKey": "passphrase or recovery key",
"@passphraseOrKey": {
"type": "text",
"placeholders": {}
},
"Password": "Password",
"@Password": {
"type": "text",
@ -897,6 +1009,11 @@
"type": "text",
"placeholders": {}
},
"Reject": "Reject",
"@Reject": {
"type": "text",
"placeholders": {}
},
"Rejoin": "Rejoin",
"@Rejoin": {
"type": "text",
@ -978,6 +1095,11 @@
"type": "text",
"placeholders": {}
},
"Room has been upgraded": "Room has been upgraded",
"@Room has been upgraded": {
"type": "text",
"placeholders": {}
},
"Saturday": "Saturday",
"@Saturday": {
"type": "text",
@ -1083,6 +1205,11 @@
"username": {}
}
},
"sessionVerified": "Session is verified",
"@sessionVerified": {
"type": "text",
"placeholders": {}
},
"Set a profile picture": "Set a profile picture",
"@Set a profile picture": {
"type": "text",
@ -1113,6 +1240,11 @@
"type": "text",
"placeholders": {}
},
"Skip": "Skip",
"@Skip": {
"type": "text",
"placeholders": {}
},
"Change your style": "Change your style",
"@Change your style": {
"type": "text",
@ -1153,6 +1285,11 @@
"type": "text",
"placeholders": {}
},
"Submit": "Submit",
"@Submit": {
"type": "text",
"placeholders": {}
},
"Sunday": "Sunday",
"@Sunday": {
"type": "text",
@ -1168,6 +1305,16 @@
"type": "text",
"placeholders": {}
},
"They Don't Match": "They Don't Match",
"@They Don't Match": {
"type": "text",
"placeholders": {}
},
"They Match": "They Match",
"@They Match": {
"type": "text",
"placeholders": {}
},
"This room has been archived.": "This room has been archived.",
"@This room has been archived.": {
"type": "text",
@ -1212,6 +1359,11 @@
"targetName": {}
}
},
"Unblock Device": "Unblock Device",
"@Unblock Device": {
"type": "text",
"placeholders": {}
},
"Unmute chat": "Unmute chat",
"@Unmute chat": {
"type": "text",
@ -1227,6 +1379,11 @@
"type": "text",
"placeholders": {}
},
"unknownSessionVerify": "Unknown session, please verify",
"@unknownSessionVerify": {
"type": "text",
"placeholders": {}
},
"unknownEvent": "Unknown event '{type}'",
"@unknownEvent": {
"type": "text",
@ -1297,6 +1454,36 @@
"type": "text",
"placeholders": {}
},
"verifyManual": "Verify Manually",
"@verifyManual": {
"type": "text",
"placeholders": {}
},
"verifiedSession": "Successfully verified session!",
"@verifiedSession": {
"type": "text",
"placeholders": {}
},
"verifyStart": "Start Verification",
"@verifyStart": {
"type": "text",
"placeholders": {}
},
"verifySuccess": "You successfully verified!",
"@verifySuccess": {
"type": "text",
"placeholders": {}
},
"verifyTitle": "Verifying other account",
"@verifyTitle": {
"type": "text",
"placeholders": {}
},
"Verify User": "Verify User",
"@Verify User": {
"type": "text",
"placeholders": {}
},
"Video call": "Video call",
"@Video call": {
"type": "text",
@ -1322,6 +1509,21 @@
"type": "text",
"placeholders": {}
},
"waitingPartnerAcceptRequest": "Waiting for partner to accept the request...",
"@waitingPartnerAcceptRequest": {
"type": "text",
"placeholders": {}
},
"waitingPartnerEmoji": "Waiting for partner to accept the emoji...",
"@waitingPartnerEmoji": {
"type": "text",
"placeholders": {}
},
"waitingPartnerNumbers": "Waiting for partner to accept the numbers...",
"@waitingPartnerNumbers": {
"type": "text",
"placeholders": {}
},
"Wallpaper": "Wallpaper",
"@Wallpaper": {
"type": "text",
@ -1387,4 +1589,4 @@
"type": "text",
"placeholders": {}
}
}
}

1592
lib/l10n/intl_ru.arb Normal file

File diff suppressed because it is too large Load Diff

1592
lib/l10n/intl_sk.arb Normal file

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,20 @@ class AppLocalizationsDelegate extends LocalizationsDelegate<L10n> {
@override
bool isSupported(Locale locale) {
return ['en', 'de', 'hu', 'pl', 'fr'].contains(locale.languageCode);
return [
'en',
'de',
'hu',
'pl',
'fr',
'cs',
'es',
'sk',
'gl',
'hr',
'ja',
'ru',
].contains(locale.languageCode);
}
@override
@ -46,6 +59,8 @@ class L10n extends MatrixLocalizations {
String get about => Intl.message("About");
String get accept => Intl.message("Accept");
String acceptedTheInvitation(String username) => Intl.message(
"$username accepted the invitation",
name: "acceptedTheInvitation",
@ -81,6 +96,22 @@ class L10n extends MatrixLocalizations {
String get areYouSure => Intl.message("Are you sure?");
String get askSSSSCache => Intl.message(
"Please enter your secure store passphrase or recovery key to cache the keys.",
name: "askSSSSCache");
String get askSSSSSign => Intl.message(
"To be able to sign the other person, please enter your secure store passphrase or recovery key.",
name: "askSSSSSign");
String get askSSSSVerify => Intl.message(
"Please enter your secure store passphrase or recovery key to verify your session.",
name: "askSSSSVerify");
String askVerificationRequest(String username) =>
Intl.message("Accept this verification request from $username?",
name: "askVerificationRequest", args: [username]);
String get authentication => Intl.message("Authentication");
String get avatarHasBeenChanged => Intl.message("Avatar has been changed");
@ -95,12 +126,17 @@ class L10n extends MatrixLocalizations {
args: [username, targetName],
);
String get blockDevice => Intl.message("Block Device");
String byDefaultYouWillBeConnectedTo(String homeserver) => Intl.message(
'By default you will be connected to $homeserver',
name: 'byDefaultYouWillBeConnectedTo',
args: [homeserver],
);
String get cachedKeys =>
Intl.message("Successfully cached keys!", name: "cachedKeys");
String get cancel => Intl.message("Cancel");
String changedTheChatAvatar(String username) => Intl.message(
@ -177,7 +213,7 @@ class L10n extends MatrixLocalizations {
);
String changedTheProfileAvatar(String username) => Intl.message(
"$username changed the profile avatar",
"$username changed their avatar",
name: "changedTheProfileAvatar",
args: [username],
);
@ -216,6 +252,14 @@ class L10n extends MatrixLocalizations {
String get close => Intl.message("Close");
String get compareEmojiMatch => Intl.message(
"Compare and make sure the following emoji match those of the other device:",
name: "compareEmojiMatch");
String get compareNumbersMatch => Intl.message(
"Compare and make sure the following numbers match those of the other device:",
name: "compareNumbersMatch");
String get confirm => Intl.message("Confirm");
String get connect => Intl.message('Connect');
@ -261,7 +305,13 @@ class L10n extends MatrixLocalizations {
String get createNewGroup => Intl.message("Create new group");
String get currentlyActive => Intl.message('Currenlty active');
String get crossSigningDisabled =>
Intl.message("Cross-Signing is disabled", name: "crossSigningDisabled");
String get crossSigningEnabled =>
Intl.message("Cross-Signing is enabled", name: "crossSigningEnabled");
String get currentlyActive => Intl.message('Currently active');
String dateAndTimeOfDay(String date, String timeOfDay) => Intl.message(
"$date, $timeOfDay",
@ -319,6 +369,8 @@ class L10n extends MatrixLocalizations {
String get enableEncryptionWarning => Intl.message(
"You won't be able to disable the encryption anymore. Are you sure?");
String get encryption => Intl.message("Encryption");
String get encryptionAlgorithm => Intl.message("Encryption algorithm");
String get encryptionNotEnabled => Intl.message("Encryption is not enabled");
@ -383,6 +435,10 @@ class L10n extends MatrixLocalizations {
String get identity => Intl.message("Identity");
String get incorrectPassphraseOrKey =>
Intl.message("Incorrect passphrase or recovery key",
name: "incorrectPassphraseOrKey");
String get inviteContact => Intl.message("Invite contact");
String inviteContactToGroup(String groupName) => Intl.message(
@ -407,6 +463,10 @@ class L10n extends MatrixLocalizations {
String get invitedUsersOnly => Intl.message("Invited users only");
String get isDeviceKeyCorrect =>
Intl.message("Is the following device key correct?",
name: "isDeviceKeyCorrect");
String get isTyping => Intl.message("is typing...");
String get editJitsiInstance => Intl.message('Edit Jitsi instance');
@ -417,6 +477,13 @@ class L10n extends MatrixLocalizations {
args: [username],
);
String get joinRoom => Intl.message('Join room');
String get keysCached => Intl.message("Keys are cached", name: "keysCached");
String get keysMissing =>
Intl.message("Keys are missing", name: "keysMissing");
String kicked(String username, String targetName) => Intl.message(
"$username kicked $targetName",
name: "kicked",
@ -495,6 +562,17 @@ class L10n extends MatrixLocalizations {
String get newPrivateChat => Intl.message("New private chat");
String get newVerificationRequest =>
Intl.message("New verification request!", name: "newVerificationRequest");
String get noCrossSignBootstrap => Intl.message(
"Fluffychat currently does not support enabling Cross-Signing. Please enable it from within Riot.",
name: "noCrossSignBootstrap");
String get noMegolmBootstrap => Intl.message(
"Fluffychat currently does not support enabling Online Key Backup. Please enable it from within Riot.",
name: "noMegolmBootstrap");
String get noGoogleServicesWarning => Intl.message(
"It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/");
@ -513,6 +591,14 @@ class L10n extends MatrixLocalizations {
String get ok => Intl.message('ok');
String get onlineKeyBackupDisabled =>
Intl.message("Online Key Backup is disabled",
name: "onlineKeyBackupDisabled");
String get onlineKeyBackupEnabled =>
Intl.message("Online Key Backup is enabled",
name: "onlineKeyBackupEnabled");
String get oopsSomethingWentWrong =>
Intl.message("Oops something went wrong...");
@ -525,6 +611,9 @@ class L10n extends MatrixLocalizations {
String get participatingUserDevices =>
Intl.message("Participating user devices");
String get passphraseOrKey =>
Intl.message("passphrase or recovery key", name: "passphraseOrKey");
String get password => Intl.message("Password");
String get pickImage => Intl.message('Pick image');
@ -548,6 +637,8 @@ class L10n extends MatrixLocalizations {
String get publicRooms => Intl.message("Public Rooms");
String get reject => Intl.message("Reject");
String get rejoin => Intl.message("Rejoin");
String get renderRichContent => Intl.message("Render rich message content");
@ -664,6 +755,9 @@ class L10n extends MatrixLocalizations {
args: [username],
);
String get sessionVerified =>
Intl.message("Session is verified", name: "sessionVerified");
String get setAProfilePicture => Intl.message("Set a profile picture");
String get setGroupDescription => Intl.message("Set group description");
@ -676,6 +770,8 @@ class L10n extends MatrixLocalizations {
String get signUp => Intl.message("Sign up");
String get skip => Intl.message("Skip");
String get changeTheme => Intl.message("Change your style");
String get systemTheme => Intl.message("System");
@ -692,12 +788,18 @@ class L10n extends MatrixLocalizations {
String get startYourFirstChat => Intl.message("Start your first chat :-)");
String get submit => Intl.message("Submit");
String get sunday => Intl.message("Sunday");
String get donate => Intl.message("Donate");
String get tapToShowMenu => Intl.message("Tap to show menu");
String get theyDontMatch => Intl.message("They Don't Match");
String get theyMatch => Intl.message("They Match");
String get thisRoomHasBeenArchived =>
Intl.message("This room has been archived.");
@ -728,6 +830,8 @@ class L10n extends MatrixLocalizations {
args: [username, targetName],
);
String get unblockDevice => Intl.message("Unblock Device");
String get unmuteChat => Intl.message('Unmute chat');
String get unknownDevice => Intl.message("Unknown device");
@ -735,6 +839,10 @@ class L10n extends MatrixLocalizations {
String get unknownEncryptionAlgorithm =>
Intl.message("Unknown encryption algorithm");
String get unknownSessionVerify =>
Intl.message("Unknown session, please verify",
name: "unknownSessionVerify");
String unknownEvent(String type) => Intl.message(
"Unknown event '$type'",
name: "unknownEvent",
@ -789,6 +897,23 @@ class L10n extends MatrixLocalizations {
String get verify => Intl.message("Verify");
String get verifyManual =>
Intl.message("Verify Manually", name: "verifyManual");
String get verifiedSession =>
Intl.message("Successfully verified session!", name: "verifiedSession");
String get verifyStart =>
Intl.message("Start Verification", name: "verifyStart");
String get verifySuccess =>
Intl.message("You successfully verified!", name: "verifySuccess");
String get verifyTitle =>
Intl.message("Verifying other account", name: "verifyTitle");
String get verifyUser => Intl.message("Verify User");
String get videoCall => Intl.message('Video call');
String get visibleForAllParticipants =>
@ -801,6 +926,18 @@ class L10n extends MatrixLocalizations {
String get voiceMessage => Intl.message("Voice message");
String get waitingPartnerAcceptRequest =>
Intl.message("Waiting for partner to accept the request...",
name: "waitingPartnerAcceptRequest");
String get waitingPartnerEmoji =>
Intl.message("Waiting for partner to accept the emoji...",
name: "waitingPartnerEmoji");
String get waitingPartnerNumbers =>
Intl.message("Waiting for partner to accept the numbers...",
name: "waitingPartnerNumbers");
String get wallpaper => Intl.message("Wallpaper");
String get warningEncryptionInBeta => Intl.message(

View File

@ -15,33 +15,61 @@ import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
import 'package:intl/src/intl_helpers.dart';
import 'messages_cs.dart' as messages_cs;
import 'messages_de.dart' as messages_de;
import 'messages_es.dart' as messages_es;
import 'messages_fr.dart' as messages_fr;
import 'messages_gl.dart' as messages_gl;
import 'messages_hr.dart' as messages_hr;
import 'messages_hu.dart' as messages_hu;
import 'messages_ja.dart' as messages_ja;
import 'messages_messages.dart' as messages_messages;
import 'messages_pl.dart' as messages_pl;
import 'messages_ru.dart' as messages_ru;
import 'messages_sk.dart' as messages_sk;
typedef Future<dynamic> LibraryLoader();
Map<String, LibraryLoader> _deferredLibraries = {
'cs': () => new Future.value(null),
'de': () => new Future.value(null),
'es': () => new Future.value(null),
'fr': () => new Future.value(null),
'gl': () => new Future.value(null),
'hr': () => new Future.value(null),
'hu': () => new Future.value(null),
'ja': () => new Future.value(null),
'messages': () => new Future.value(null),
'pl': () => new Future.value(null),
'ru': () => new Future.value(null),
'sk': () => new Future.value(null),
};
MessageLookupByLibrary _findExact(String localeName) {
switch (localeName) {
case 'cs':
return messages_cs.messages;
case 'de':
return messages_de.messages;
case 'es':
return messages_es.messages;
case 'fr':
return messages_fr.messages;
case 'gl':
return messages_gl.messages;
case 'hr':
return messages_hr.messages;
case 'hu':
return messages_hu.messages;
case 'ja':
return messages_ja.messages;
case 'messages':
return messages_messages.messages;
case 'pl':
return messages_pl.messages;
case 'ru':
return messages_ru.messages;
case 'sk':
return messages_sk.messages;
default:
return null;
}

525
lib/l10n/messages_cs.dart Normal file
View File

@ -0,0 +1,525 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a cs locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'cs';
static m0(username) => "${username} přijali pozvání";
static m1(username) => "${username} aktivoval koncové šifrování";
static m2(username, targetName) => "${username} zabanoval ${targetName}";
static m3(homeserver) =>
"V základním nastavení budete připojeni do ${homeserver}";
static m4(username) => "${username} změnili svůj avatar";
static m5(username, description) =>
"${username} změnili popis diskuze na: „${description}";
static m6(username, chatname) =>
"${username} změnili jméno diskuze na: „${chatname}";
static m7(username) => "${username} změnili nastavení oprávnění v diskuzi";
static m8(username, displayname) =>
"${username} změnili přezdívku na: ${displayname}";
static m9(username) => "${username} změnili přístupová práva pro hosty";
static m10(username, rules) =>
"${username} změnili přístupová práva pro hosty na: ${rules}";
static m11(username) =>
"${username} změnili nastavení viditelnosti historie diskuze";
static m12(username, rules) =>
"${username} změnili nastavení viditelnosti historie diskuze na: ${rules}";
static m13(username) => "${username} změnili nastavení pravidel připojení";
static m14(username, joinRules) =>
"${username} změnili nastavení pravidel připojení na: ${joinRules}";
static m15(username) => "${username} změnili nastavení profilového avataru";
static m16(username) => "${username} změnili nastavení aliasů místnosti";
static m17(username) => "${username} změnili odkaz k pozvání do místnosti";
static m18(error) => "Nebylo možné dešifrovat zprávu: ${error}";
static m19(count) => "${count} účastníků";
static m20(username) => "${username} založil diskuzi";
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${day}. ${month}. ${year}";
static m23(month, day) => "${day}.${month}";
static m24(displayname) => "Skupina s ${displayname}";
static m25(username, targetName) =>
"${username} vzal zpět pozvání pro ${targetName}";
static m26(groupName) => "Pozvat kontakt do ${groupName}";
static m27(username, link) => "";
static m28(username, targetName) => "${username} pozvali ${targetName}";
static m29(username) => "${username} se připojili do diskuze";
static m30(username, targetName) => "${username} vyhodil ${targetName}";
static m31(username, targetName) =>
"${username} vyhodil a zabanoval ${targetName}";
static m32(localizedTimeShort) => "Naposledy aktivní: ${localizedTimeShort}";
static m33(count) => "Načíst dalších ${count} účastníků";
static m34(homeserver) => "Přihlášení k ${homeserver}";
static m35(number) => "${number} vybráno";
static m36(fileName) => "Přehrát (fileName}";
static m37(username) => "${username} odstranili událost";
static m38(username) => "${username} odmítli pozvání";
static m39(username) => "Odstraněno ${username}";
static m40(username) => "Viděno uživatelem ${username}";
static m41(username, count) =>
"Viděno uživateli ${username} a ${count} dalšími";
static m42(username, username2) =>
"Viděno uživateli ${username} a ${username2}";
static m43(username) => "${username} poslali soubor";
static m44(username) => "${username} poslali obrázek";
static m45(username) => "${username} poslali samolepku";
static m46(username) => "${username} poslali video";
static m47(username) => "${username} poslali zvukovou nahrávku";
static m48(username) => "${username} nasdíleli lokaci";
static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}";
static m50(username, targetName) => "";
static m51(type) => "Neznámá událost „${type}";
static m52(unreadCount) => "${unreadCount} nepřečtených diskuzí";
static m53(unreadEvents) => "${unreadEvents} nepřečtených zpráv";
static m54(unreadEvents, unreadChats) =>
"${unreadEvents} nepřečtených zpráv v ${unreadChats}";
static m55(username, count) => "${username} a ${count} dalších píší…";
static m56(username, username2) => "${username} a ${username2} píší…";
static m57(username) => "${username} píše…";
static m58(username) => "${username} opustili diskuzi";
static m59(username, type) => "${username} poslal událost ${type}";
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Volitelné) Název skupiny"),
"About": MessageLookupByLibrary.simpleMessage("O aplikaci"),
"Accept": MessageLookupByLibrary.simpleMessage("Přijmout"),
"Account": MessageLookupByLibrary.simpleMessage("Účet"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Informace o účtu"),
"Add a group description":
MessageLookupByLibrary.simpleMessage("Přidat popis skupiny"),
"Admin": MessageLookupByLibrary.simpleMessage("Administrátor"),
"Already have an account?":
MessageLookupByLibrary.simpleMessage("Máte již účet?"),
"Anyone can join":
MessageLookupByLibrary.simpleMessage("Kdokoliv se může připojit"),
"Archive": MessageLookupByLibrary.simpleMessage("Archiv"),
"Archived Room":
MessageLookupByLibrary.simpleMessage("Archivované místnosti"),
"Are guest users allowed to join":
MessageLookupByLibrary.simpleMessage("Mohou se připojit hosté"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("Jste si jisti?"),
"Authentication": MessageLookupByLibrary.simpleMessage("Autentizace"),
"Avatar has been changed":
MessageLookupByLibrary.simpleMessage("Avatar byl změněn"),
"Ban from chat":
MessageLookupByLibrary.simpleMessage("Zabanovat z diskuze"),
"Banned": MessageLookupByLibrary.simpleMessage("Zabanován"),
"Cancel": MessageLookupByLibrary.simpleMessage("Zrušit"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("Změnit použitý server"),
"Change the name of the group":
MessageLookupByLibrary.simpleMessage("Změnit název skupiny"),
"Change the server":
MessageLookupByLibrary.simpleMessage("Změnit server"),
"Change wallpaper":
MessageLookupByLibrary.simpleMessage("Změnit pozadí"),
"Change your style":
MessageLookupByLibrary.simpleMessage("Nastavte svůj styl"),
"Changelog": MessageLookupByLibrary.simpleMessage("Historie změn"),
"Chat": MessageLookupByLibrary.simpleMessage("Diskuze"),
"Chat details": MessageLookupByLibrary.simpleMessage("Detail diskuze"),
"Choose a strong password":
MessageLookupByLibrary.simpleMessage("Vyberte silné heslo"),
"Choose a username":
MessageLookupByLibrary.simpleMessage("Vyberte uživatelské jméno"),
"Close": MessageLookupByLibrary.simpleMessage("Zavřít"),
"Confirm": MessageLookupByLibrary.simpleMessage("Potvrdit"),
"Connect": MessageLookupByLibrary.simpleMessage("Připojit"),
"Connection attempt failed":
MessageLookupByLibrary.simpleMessage("Pokus o připojení selhal"),
"Contact has been invited to the group":
MessageLookupByLibrary.simpleMessage(
"Kontakt byl pozván do skupiny"),
"Content viewer":
MessageLookupByLibrary.simpleMessage("Prohlížeč obsahu"),
"Copied to clipboard":
MessageLookupByLibrary.simpleMessage("Zkopírováno do schránky"),
"Copy": MessageLookupByLibrary.simpleMessage("Kopírovat"),
"Could not set avatar": MessageLookupByLibrary.simpleMessage(
"Nebylo možné nastavit avatar"),
"Could not set displayname": MessageLookupByLibrary.simpleMessage(
"Nebylo možné nastavit přezdívku uživatele"),
"Create": MessageLookupByLibrary.simpleMessage("Vytvořit"),
"Create account now":
MessageLookupByLibrary.simpleMessage("Vytvořit účet teď"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Založit skupinu"),
"Currently active":
MessageLookupByLibrary.simpleMessage("Momentálně aktivní"),
"Dark": MessageLookupByLibrary.simpleMessage("Tmavý"),
"Delete": MessageLookupByLibrary.simpleMessage("Smazat"),
"Delete message": MessageLookupByLibrary.simpleMessage("Smazat zprávu"),
"Deny": MessageLookupByLibrary.simpleMessage("Zakázat"),
"Device": MessageLookupByLibrary.simpleMessage("Zařízení"),
"Devices": MessageLookupByLibrary.simpleMessage("Zařízení"),
"Discard picture":
MessageLookupByLibrary.simpleMessage("Vyřadit obrázek"),
"Displayname has been changed":
MessageLookupByLibrary.simpleMessage("Přezdívka byla změněna"),
"Donate": MessageLookupByLibrary.simpleMessage("Přispějte"),
"Download file":
MessageLookupByLibrary.simpleMessage("Stáhnout soubor"),
"Edit Jitsi instance":
MessageLookupByLibrary.simpleMessage("Nastavení instance Jitsi"),
"Edit displayname":
MessageLookupByLibrary.simpleMessage("Změnit přezdívku"),
"Emote Settings":
MessageLookupByLibrary.simpleMessage("Nastavení emotikon"),
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Označení emotikony"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Prázdná diskuze"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Šifrovací algoritmus"),
"Encryption is not enabled":
MessageLookupByLibrary.simpleMessage("Šifrování není aktivní"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"Koncové šifrování je momentálně v Beta verzi! Používejte na vlastní nebezpečí!"),
"End-to-end encryption settings": MessageLookupByLibrary.simpleMessage(
"Nastavení koncového šifrování"),
"Enter a group name":
MessageLookupByLibrary.simpleMessage("Zadejte jméno skupiny"),
"Enter a username":
MessageLookupByLibrary.simpleMessage("Zadejte uživatelské jméno"),
"Enter your homeserver":
MessageLookupByLibrary.simpleMessage("Zadejte adresu serveru"),
"File name": MessageLookupByLibrary.simpleMessage("Název souboru"),
"File size": MessageLookupByLibrary.simpleMessage("Velikost souboru"),
"FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"Forward": MessageLookupByLibrary.simpleMessage("Přeposlat"),
"Friday": MessageLookupByLibrary.simpleMessage("Pátek"),
"From joining": MessageLookupByLibrary.simpleMessage("Od připojení"),
"From the invitation":
MessageLookupByLibrary.simpleMessage("Od pozvání"),
"Group": MessageLookupByLibrary.simpleMessage("Skupina"),
"Group description":
MessageLookupByLibrary.simpleMessage("Popis skupiny"),
"Group description has been changed":
MessageLookupByLibrary.simpleMessage("Popis skupiny byl změněn"),
"Group is public":
MessageLookupByLibrary.simpleMessage("Skupina je veřejná"),
"Guests are forbidden":
MessageLookupByLibrary.simpleMessage("Hosté jsou zakázáni"),
"Guests can join":
MessageLookupByLibrary.simpleMessage("Hosté se mohou připojit"),
"Help": MessageLookupByLibrary.simpleMessage("Pomoc"),
"Homeserver is not compatible":
MessageLookupByLibrary.simpleMessage("Server není kompatibilní"),
"How are you today?":
MessageLookupByLibrary.simpleMessage("Jak se máte?"),
"ID": MessageLookupByLibrary.simpleMessage("ID"),
"Identity": MessageLookupByLibrary.simpleMessage("Identita"),
"Invite contact":
MessageLookupByLibrary.simpleMessage("Pozvat kontakt"),
"Invited": MessageLookupByLibrary.simpleMessage("Pozváni"),
"Invited users only":
MessageLookupByLibrary.simpleMessage("Pouze pozvaní uživatelé"),
"It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/":
MessageLookupByLibrary.simpleMessage(
"Vypadá to, že váš telefon nemá nainstalovány google services. Dobré rozhodnutí pro vaši bezpečnost! Pro příjem notifikací doporučujeme použít miocroG: https://microg.org/"),
"Kick from chat":
MessageLookupByLibrary.simpleMessage("Vyhodit z diskuze"),
"Last seen IP":
MessageLookupByLibrary.simpleMessage("Naposledy viděná IP"),
"Leave": MessageLookupByLibrary.simpleMessage("Odejít"),
"Left the chat":
MessageLookupByLibrary.simpleMessage("Odešel z diskuze"),
"License": MessageLookupByLibrary.simpleMessage("Licence"),
"Light": MessageLookupByLibrary.simpleMessage("Světlý"),
"Load more...": MessageLookupByLibrary.simpleMessage("Načíst další…"),
"Loading... Please wait":
MessageLookupByLibrary.simpleMessage("Načítání… Prosíme počkejte"),
"Login": MessageLookupByLibrary.simpleMessage("Přihlášení"),
"Logout": MessageLookupByLibrary.simpleMessage("Odhlásit"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Učiň moderátorem"),
"Make an admin": MessageLookupByLibrary.simpleMessage("Učiň adminem"),
"Make sure the identifier is valid":
MessageLookupByLibrary.simpleMessage(
"Ujistěte se, že je identifikátor validní"),
"Message will be removed for all participants":
MessageLookupByLibrary.simpleMessage(
"Zpráva bude odstraněna pro všechny účastníky"),
"Moderator": MessageLookupByLibrary.simpleMessage("Moderátor"),
"Monday": MessageLookupByLibrary.simpleMessage("Pondělí"),
"Mute chat": MessageLookupByLibrary.simpleMessage("Ztišit diskuzi"),
"New message in FluffyChat":
MessageLookupByLibrary.simpleMessage("Nová zpráva ve FluffyChatu"),
"New private chat":
MessageLookupByLibrary.simpleMessage("Nová soukromá diskuze"),
"No emotes found. 😕": MessageLookupByLibrary.simpleMessage(
"Žádné emotikony nebyly nalezeny. 😕"),
"No permission":
MessageLookupByLibrary.simpleMessage("Chybí oprávnění"),
"No rooms found...": MessageLookupByLibrary.simpleMessage(
"Žádné místnosti nebyly nalezeny…"),
"None": MessageLookupByLibrary.simpleMessage("Nic"),
"Not supported in web":
MessageLookupByLibrary.simpleMessage("Nepodporováno na webu"),
"Oops something went wrong...":
MessageLookupByLibrary.simpleMessage("Ups! Něco se pokazilo…"),
"Open app to read messages": MessageLookupByLibrary.simpleMessage(
"Otevřete aplikaci pro přečtení zpráv"),
"Open camera":
MessageLookupByLibrary.simpleMessage("Otevřít fotoaparát"),
"Participating user devices": MessageLookupByLibrary.simpleMessage(
"Zúčastněná zařízení uživatele"),
"Password": MessageLookupByLibrary.simpleMessage("Heslo"),
"Pick image": MessageLookupByLibrary.simpleMessage("Zvolit obrázek"),
"Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
MessageLookupByLibrary.simpleMessage(""),
"Please choose a username": MessageLookupByLibrary.simpleMessage(
"Prosíme zvolte si uživatelské jméno"),
"Please enter a matrix identifier":
MessageLookupByLibrary.simpleMessage(
"Prosíme zadejte identifikátor sítě matrix"),
"Please enter your password":
MessageLookupByLibrary.simpleMessage("Prosíme zadejte heslo"),
"Please enter your username": MessageLookupByLibrary.simpleMessage(
"Prosíme zadejte uživateslké jméno"),
"Public Rooms":
MessageLookupByLibrary.simpleMessage("Veřejné místnosti"),
"Recording": MessageLookupByLibrary.simpleMessage("Nahrávání"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Připojit znovu"),
"Remove": MessageLookupByLibrary.simpleMessage("Odstranit"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
"Odstranit všechna další zařízení"),
"Remove device":
MessageLookupByLibrary.simpleMessage("Odstraň zařízení"),
"Remove exile": MessageLookupByLibrary.simpleMessage(""),
"Remove message":
MessageLookupByLibrary.simpleMessage("Odstranit zprávu"),
"Render rich message content":
MessageLookupByLibrary.simpleMessage("Zobrazit formátovaný obsah"),
"Reply": MessageLookupByLibrary.simpleMessage("Odpovědět"),
"Request permission":
MessageLookupByLibrary.simpleMessage("Vyžádat oprávnění"),
"Request to read older messages": MessageLookupByLibrary.simpleMessage(
"Vyžádat přečtení starších zpráv"),
"Revoke all permissions": MessageLookupByLibrary.simpleMessage(
"Vezmi zpět všechna oprávnění"),
"Saturday": MessageLookupByLibrary.simpleMessage("Sobota"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Hledej diskuzi"),
"Seen a long time ago": MessageLookupByLibrary.simpleMessage(""),
"Send": MessageLookupByLibrary.simpleMessage("Odeslat"),
"Send a message":
MessageLookupByLibrary.simpleMessage("Odeslat zprávu"),
"Send file": MessageLookupByLibrary.simpleMessage("Odeslat soubor"),
"Send image": MessageLookupByLibrary.simpleMessage("Odeslat obrázek"),
"Set a profile picture":
MessageLookupByLibrary.simpleMessage("Nastavit profilový obrázek"),
"Set group description":
MessageLookupByLibrary.simpleMessage("Nastavit popis skupiny"),
"Set invitation link":
MessageLookupByLibrary.simpleMessage("Nastavit zvací odkaz"),
"Set status": MessageLookupByLibrary.simpleMessage("Nastavit status"),
"Settings": MessageLookupByLibrary.simpleMessage("Nastavení"),
"Share": MessageLookupByLibrary.simpleMessage("Sdílet"),
"Sign up": MessageLookupByLibrary.simpleMessage("Registrovat se"),
"Source code": MessageLookupByLibrary.simpleMessage("Zdrojové kódy"),
"Start your first chat :-)": MessageLookupByLibrary.simpleMessage(
"Začněte svou první diskuzi :)"),
"Sunday": MessageLookupByLibrary.simpleMessage("Neděle"),
"System": MessageLookupByLibrary.simpleMessage("Systém"),
"Tap to show menu":
MessageLookupByLibrary.simpleMessage("Klepněte pro zobrazení menu"),
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage("Šifrování bylo poškozeno"),
"This room has been archived.": MessageLookupByLibrary.simpleMessage(
"Tato místnost byla archivována."),
"Thursday": MessageLookupByLibrary.simpleMessage("Čtvrtek"),
"Try to send again": MessageLookupByLibrary.simpleMessage(""),
"Tuesday": MessageLookupByLibrary.simpleMessage(""),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Neznámé zařízení"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
"Neznámý šifrovací algoritmus"),
"Unmute chat": MessageLookupByLibrary.simpleMessage("Zrušit ztišení"),
"Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage(
"Použít barvy kompatibilní s Amoled displayem?"),
"Username": MessageLookupByLibrary.simpleMessage("Uživatelské jméno"),
"Verify": MessageLookupByLibrary.simpleMessage("Ověř"),
"Video call": MessageLookupByLibrary.simpleMessage("Video hovor"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Viditelnost historie diskuze"),
"Visible for all participants": MessageLookupByLibrary.simpleMessage(
"Viditelné pro všechny účastníky"),
"Visible for everyone":
MessageLookupByLibrary.simpleMessage("Viditelné pro všechny"),
"Voice message": MessageLookupByLibrary.simpleMessage("Hlasová zpráva"),
"Wallpaper": MessageLookupByLibrary.simpleMessage("Pozadí"),
"Wednesday": MessageLookupByLibrary.simpleMessage("Středa"),
"Welcome to the cutest instant messenger in the matrix network.":
MessageLookupByLibrary.simpleMessage(
"Vítejte v nejroztomilejší diskuzní aplikaci pro síť matrix."),
"Who is allowed to join this group":
MessageLookupByLibrary.simpleMessage(
"Kdo se může připojit do této skupiny"),
"Write a message...":
MessageLookupByLibrary.simpleMessage("Napište zprávu…"),
"Yes": MessageLookupByLibrary.simpleMessage("Ano"),
"You": MessageLookupByLibrary.simpleMessage("Ty"),
"You are invited to this chat":
MessageLookupByLibrary.simpleMessage("Jste zváni do této diskuze"),
"You are no longer participating in this chat":
MessageLookupByLibrary.simpleMessage(
"Této diskuze se nadále neúčastníte"),
"You cannot invite yourself":
MessageLookupByLibrary.simpleMessage("Nemůžete pozvat sami sebe"),
"You have been banned from this chat":
MessageLookupByLibrary.simpleMessage(
"Byli jste zabanováni z této diskuze"),
"You won\'t be able to disable the encryption anymore. Are you sure?":
MessageLookupByLibrary.simpleMessage(
"Šifrování jiš nebude možné vypnout. Jste si tím jisti?"),
"Your own username": MessageLookupByLibrary.simpleMessage(
"Vaše vlastní uživatelské jméno"),
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("alias"),
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
"changedTheChatPermissions": m7,
"changedTheDisplaynameTo": m8,
"changedTheGuestAccessRules": m9,
"changedTheGuestAccessRulesTo": m10,
"changedTheHistoryVisibility": m11,
"changedTheHistoryVisibilityTo": m12,
"changedTheJoinRules": m13,
"changedTheJoinRulesTo": m14,
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
"emoteExists":
MessageLookupByLibrary.simpleMessage("Emotikona již existuje"),
"emoteInvalid": MessageLookupByLibrary.simpleMessage(
"Nesprávné označení emotikony"),
"emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage(
"Musíte zvolit označení emotikony a obrázek"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("píše…"),
"joinedTheChat": m29,
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
"removedBy": m39,
"seenByUser": m40,
"seenByUserAndCountOthers": m41,
"seenByUserAndUser": m42,
"sentAFile": m43,
"sentAPicture": m44,
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
"userAndOthersAreTyping": m55,
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59
};
}

View File

@ -24,6 +24,8 @@ class MessageLookup extends MessageLookupByLibrary {
static m1(username) =>
"${username} hat Ende-zu-Ende Verschlüsselung aktiviert";
static m60(username) => "Diese Bestätigungsanfrage von ${username} annehmen?";
static m2(username, targetName) => "${username} hat ${targetName} verbannt";
static m3(homeserver) => "Standardmäßig wirst Du mit ${homeserver} verbunden";
@ -71,16 +73,16 @@ class MessageLookup extends MessageLookupByLibrary {
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${day}.${month}.${year}";
static m22(year, month, day) => "${day}. ${month}. ${year}";
static m23(month, day) => "${day}.${month}";
static m23(month, day) => "${day}. ${month}";
static m24(displayname) => "Gruppe mit ${displayname}";
static m25(username, targetName) =>
"${username} hat die Einladung für ${targetName} zurückgezogen";
static m26(groupName) => "Kontakt zu ${groupName} einladen";
static m26(groupName) => "Kontakt in die Gruppe ${groupName} einladen";
static m27(username, link) =>
"${username} hat Dich zu FluffyChat eingeladen. \n1. Installiere FluffyChat: http://fluffy.chat \n2. Melde Dich in der App an \n3. Öffne den Einladungslink: ${link}";
@ -96,7 +98,7 @@ class MessageLookup extends MessageLookupByLibrary {
static m31(username, targetName) =>
"${username} hat ${targetName} hinausgeworfen und verbannt";
static m32(localizedTimeShort) => "Zuletzt gesehen: ${localizedTimeShort}";
static m32(localizedTimeShort) => "Zuletzt aktiv: ${localizedTimeShort}";
static m33(count) => "${count} weitere Teilnehmer*innen laden";
@ -104,7 +106,7 @@ class MessageLookup extends MessageLookupByLibrary {
static m35(number) => "${number} ausgewählt";
static m36(fileName) => "Play ${fileName}";
static m36(fileName) => "${fileName} abspielen";
static m37(username) => "${username} hat ein Event enternt";
@ -135,7 +137,7 @@ class MessageLookup extends MessageLookupByLibrary {
static m50(username, targetName) =>
"${username} hat die Verbannung von ${targetName} aufgehoben";
static m51(type) => "Unbekanntes Event \'${type}\'";
static m51(type) => "Unbekanntes Ereignis \'${type}\'";
static m52(unreadCount) => "${unreadCount} ungelesene Unterhaltungen";
@ -161,6 +163,7 @@ class MessageLookup extends MessageLookupByLibrary {
"(Optional) Group name": MessageLookupByLibrary.simpleMessage(
"(Optional) Name für die Gruppe"),
"About": MessageLookupByLibrary.simpleMessage("Über"),
"Accept": MessageLookupByLibrary.simpleMessage("Annehmen"),
"Account": MessageLookupByLibrary.simpleMessage("Konto"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Kontoinformationen"),
@ -184,7 +187,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Avatar wurde geändert"),
"Ban from chat":
MessageLookupByLibrary.simpleMessage("Aus dem Chat verbannen"),
"Banned": MessageLookupByLibrary.simpleMessage("Banned"),
"Banned": MessageLookupByLibrary.simpleMessage("Verbannt"),
"Block Device": MessageLookupByLibrary.simpleMessage("Blockiere Gerät"),
"Cancel": MessageLookupByLibrary.simpleMessage("Abbrechen"),
"Change the homeserver": MessageLookupByLibrary.simpleMessage(
"Anderen Homeserver verwenden"),
@ -196,7 +200,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Hintergrund ändern"),
"Change your style":
MessageLookupByLibrary.simpleMessage("Ändere Deinen Style"),
"Changelog": MessageLookupByLibrary.simpleMessage("Changelog"),
"Changelog":
MessageLookupByLibrary.simpleMessage("Protokoll der Änderungen"),
"Chat": MessageLookupByLibrary.simpleMessage("Chat"),
"Chat details": MessageLookupByLibrary.simpleMessage("Gruppeninfo"),
"Choose a strong password":
@ -220,11 +225,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Profilbild konnte nicht gesetzt werden"),
"Could not set displayname": MessageLookupByLibrary.simpleMessage(
"Anzeigename konnte nicht gesetzt werden"),
"Create": MessageLookupByLibrary.simpleMessage("Create"),
"Create": MessageLookupByLibrary.simpleMessage("Erstellen"),
"Create account now":
MessageLookupByLibrary.simpleMessage("Account jetzt erstellen"),
"Create new group": MessageLookupByLibrary.simpleMessage("Neue Gruppe"),
"Currenlty active":
"Currently active":
MessageLookupByLibrary.simpleMessage("Jetzt gerade online"),
"Dark": MessageLookupByLibrary.simpleMessage("Dunkel"),
"Delete": MessageLookupByLibrary.simpleMessage("Löschen"),
@ -248,6 +253,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Emote Einstellungen"),
"Emote shortcode": MessageLookupByLibrary.simpleMessage("Emote kürzel"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Leerer Chat"),
"Encryption": MessageLookupByLibrary.simpleMessage("Verschlüsselung"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Verschlüsselungsalgorithmus"),
"Encryption is not enabled": MessageLookupByLibrary.simpleMessage(
@ -286,6 +292,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Help": MessageLookupByLibrary.simpleMessage("Hilfe"),
"Homeserver is not compatible": MessageLookupByLibrary.simpleMessage(
"Homeserver ist nicht kompatibel"),
"How are you today?":
MessageLookupByLibrary.simpleMessage("Wie geht es dir heute?"),
"ID": MessageLookupByLibrary.simpleMessage("ID"),
"Identity": MessageLookupByLibrary.simpleMessage("Identität"),
"Invite contact":
@ -309,7 +317,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Loading... Please wait":
MessageLookupByLibrary.simpleMessage("Lade ... Bitte warten"),
"Login": MessageLookupByLibrary.simpleMessage("Login"),
"Logout": MessageLookupByLibrary.simpleMessage("Logout"),
"Logout": MessageLookupByLibrary.simpleMessage("Abmelden"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Zum Moderator ernennen"),
"Make an admin":
@ -338,6 +346,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Wird in der Web-Version nicht unterstützt"),
"Oops something went wrong...": MessageLookupByLibrary.simpleMessage(
"Hoppla! Da ist etwas schief gelaufen ..."),
"Open app to read messages": MessageLookupByLibrary.simpleMessage(
"Öffne app, um Nachrichten zu lesen"),
"Open camera": MessageLookupByLibrary.simpleMessage("Kamera öffnen"),
"Participating user devices":
MessageLookupByLibrary.simpleMessage("Teilnehmende Geräte"),
@ -358,6 +368,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Public Rooms":
MessageLookupByLibrary.simpleMessage("Öffentliche Räume"),
"Recording": MessageLookupByLibrary.simpleMessage("Aufnahme"),
"Reject": MessageLookupByLibrary.simpleMessage("Ablehnen"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Wieder beitreten"),
"Remove": MessageLookupByLibrary.simpleMessage("Entfernen"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
@ -377,9 +388,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Anfrage um ältere Nachrichten zu lesen"),
"Revoke all permissions": MessageLookupByLibrary.simpleMessage(
"Alle Berechtigungen zurücknehmen"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("Der Raum wurde ge-upgraded"),
"Saturday": MessageLookupByLibrary.simpleMessage("Samstag"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Durchsuche die Chats"),
MessageLookupByLibrary.simpleMessage("Chat suchen"),
"Seen a long time ago": MessageLookupByLibrary.simpleMessage(
"Vor sehr langer Zeit gesehen"),
"Send": MessageLookupByLibrary.simpleMessage("Senden"),
@ -397,9 +410,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Settings": MessageLookupByLibrary.simpleMessage("Einstellungen"),
"Share": MessageLookupByLibrary.simpleMessage("Teilen"),
"Sign up": MessageLookupByLibrary.simpleMessage("Registrieren"),
"Skip": MessageLookupByLibrary.simpleMessage("Überspringe"),
"Source code": MessageLookupByLibrary.simpleMessage("Quellcode"),
"Start your first chat :-)": MessageLookupByLibrary.simpleMessage(
"Starte deinen ersten Chat :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Absenden"),
"Sunday": MessageLookupByLibrary.simpleMessage("Sonntag"),
"System": MessageLookupByLibrary.simpleMessage("System"),
"Tap to show menu": MessageLookupByLibrary.simpleMessage(
@ -407,12 +422,17 @@ class MessageLookup extends MessageLookupByLibrary {
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage(
"Die Verschlüsselung wurde korrumpiert"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("Stimmen nicht überein"),
"They Match": MessageLookupByLibrary.simpleMessage("Stimmen überein"),
"This room has been archived.": MessageLookupByLibrary.simpleMessage(
"Dieser Raum wurde archiviert."),
"Thursday": MessageLookupByLibrary.simpleMessage("Donnerstag"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Nochmal versuchen zu senden"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Dienstag"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Geräteblockierung aufheben"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Unbekanntes Gerät"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
@ -422,6 +442,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Amoled optimierte Farben verwenden?"),
"Username": MessageLookupByLibrary.simpleMessage("Benutzername"),
"Verify": MessageLookupByLibrary.simpleMessage("Bestätigen"),
"Verify User":
MessageLookupByLibrary.simpleMessage("Verifiziere Benutzer"),
"Video call": MessageLookupByLibrary.simpleMessage("Videoanruf"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Sichtbarkeit des Chat-Verlaufs"),
@ -461,8 +483,17 @@ class MessageLookup extends MessageLookupByLibrary {
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("Alias"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Bitte gib dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein, um die Keys zu cachen."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"Bitte gebe um die andere Person signieren zu können dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Bitte gebe um deine Session zu verifizieren dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys":
MessageLookupByLibrary.simpleMessage("Keys erfolgreich gecached!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
@ -477,9 +508,17 @@ class MessageLookup extends MessageLookupByLibrary {
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Vergleiche und stelle sicher, dass die folgenden Emoji mit denen des anderen Gerätes übereinstimmen:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Vergleiche und stelle sicher, dass die folgenden Zahlen mit denen des anderen Gerätes übereinstimmen:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled": MessageLookupByLibrary.simpleMessage(
"Cross-Signing ist deaktiviert"),
"crossSigningEnabled":
MessageLookupByLibrary.simpleMessage("Cross-Signing ist aktiviert"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
@ -491,18 +530,37 @@ class MessageLookup extends MessageLookupByLibrary {
"Wähle ein Emote-kürzel und ein Bild!"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Falsches Passwort oder Wiederherstellungsschlüssel"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("schreibt..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"Ist der folgende Geräteschlüssel korrekt?"),
"joinedTheChat": m29,
"keysCached":
MessageLookupByLibrary.simpleMessage("Keys sind gecached"),
"keysMissing": MessageLookupByLibrary.simpleMessage("Keys fehlen"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest":
MessageLookupByLibrary.simpleMessage("Neue Verifikationsanfrage!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat unterstützt noch nicht das Einschalten von Cross-Signing. Bitte schalte es innerhalb Riot an."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat unterstützt noch nicht das Einschalten vom Online Key Backup. Bitte schalte es innerhalb Riot an."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"Online Key Backup ist deaktiviert"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"Online Key Backup ist aktiviert"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Passwort oder Wiederherstellungsschlüssel"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
@ -515,11 +573,15 @@ class MessageLookup extends MessageLookupByLibrary {
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("Sitzung ist verifiziert"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Unbekannte Sitzung, bitte verifiziere diese"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
@ -527,6 +589,22 @@ class MessageLookup extends MessageLookupByLibrary {
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59
"userSentUnknownEvent": m59,
"verifiedSession": MessageLookupByLibrary.simpleMessage(
"Sitzung erfolgreich verifiziert!"),
"verifyManual":
MessageLookupByLibrary.simpleMessage("Verifiziere manuell"),
"verifyStart":
MessageLookupByLibrary.simpleMessage("Starte Verifikation"),
"verifySuccess":
MessageLookupByLibrary.simpleMessage("Erfolgreich verifiziert!"),
"verifyTitle": MessageLookupByLibrary.simpleMessage(
"Verifiziere anderen Benutzer"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"Warte darauf, dass der Partner die Verifikationsanfrage annimmt..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"Warte darauf, dass der Partner die Emoji annimmt..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"Warte darauf, dass der Partner die Zahlen annimmt...")
};
}

609
lib/l10n/messages_es.dart Normal file
View File

@ -0,0 +1,609 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a es locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'es';
static m0(username) => "${username} aceptó la invitación";
static m1(username) => "${username} activó el cifrado de extremo a extremo";
static m60(username) =>
"¿Aceptar esta solicitud de verificación de ${username}?";
static m2(username, targetName) => "${username} vetó a ${targetName}";
static m3(homeserver) =>
"De forma predeterminada estará conectado a ${homeserver}";
static m4(username) => "${username} cambió el icono del chat";
static m5(username, description) =>
"${username} cambió la descripción del chat a: \'${description}\'";
static m6(username, chatname) =>
"${username} cambió el nombre del chat a: \'${chatname}\'";
static m7(username) => "${username} cambió los permisos del chat";
static m8(username, displayname) =>
"${username} cambió su nombre visible a: ${displayname}";
static m9(username) =>
"${username} cambió las reglas de acceso de visitantes";
static m10(username, rules) =>
"${username} cambió las reglas de acceso de visitantes a: ${rules}";
static m11(username) => "${username} cambió la visibilidad del historial";
static m12(username, rules) =>
"${username} cambió la visibilidad del historial a: ${rules}";
static m13(username) => "${username} cambió las reglas de ingreso";
static m14(username, joinRules) =>
"${username} cambió las reglas de ingreso a ${joinRules}";
static m15(username) => "${username} cambió su imagen de perfil";
static m16(username) => "${username} cambió el alias de la sala";
static m17(username) => "${username} cambió el enlace de invitación";
static m18(error) => "No se pudo descifrar el mensaje: ${error}";
static m19(count) => "${count} participantes";
static m20(username) => "${username} creó el chat";
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${day}/${month}/${year}";
static m23(month, day) => "${day}/${month}";
static m24(displayname) => "Grupo con ${displayname}";
static m25(username, targetName) =>
"${username} ha retirado la invitación para ${targetName}";
static m26(groupName) => "Invitar contacto a ${groupName}";
static m27(username, link) =>
"${username} te invitó a FluffyChat.\n1. Instale FluffyChat: http://fluffy.chat\n2. Regístrate o inicia sesión \n3. Abra el enlace de invitación: ${link}";
static m28(username, targetName) => "${username} invitó a ${targetName}";
static m29(username) => "${username} se unió al chat";
static m30(username, targetName) => "${username} echó a ${targetName}";
static m31(username, targetName) => "${username} echó y vetó a ${targetName}";
static m32(localizedTimeShort) => "Última vez activo: ${localizedTimeShort}";
static m33(count) => "Mostrar ${count} participantes más";
static m34(homeserver) => "Iniciar sesión en ${homeserver}";
static m35(number) => "${number} seleccionado(s)";
static m36(fileName) => "Reproducir ${fileName}";
static m37(username) => "${username} redactó un evento";
static m38(username) => "${username} rechazó la invitación";
static m39(username) => "Eliminado por ${username}";
static m40(username) => "Visto por ${username}";
static m41(username, count) => "Visto por ${username} y ${count} más";
static m42(username, username2) => "Visto por ${username} y ${username2}";
static m43(username) => "${username} envió un archivo";
static m44(username) => "${username} envió una imagen";
static m45(username) => "${username} envió un sticker";
static m46(username) => "${username} envió un video";
static m47(username) => "${username} envió un audio";
static m48(username) => "${username} compartió la ubicación";
static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}";
static m50(username, targetName) =>
"${username} admitió a ${targetName} nuevamente";
static m51(type) => "Evento desconocido \'${type}\'";
static m52(unreadCount) => "${unreadCount} chats no leídos";
static m53(unreadEvents) => "${unreadEvents} mensajes no leídos";
static m54(unreadEvents, unreadChats) =>
"${unreadEvents} mensajes no leídos en ${unreadChats} chats";
static m55(username, count) =>
"${username} y ${count} más están escribiendo...";
static m56(username, username2) =>
"${username} y ${username2} están escribiendo...";
static m57(username) => "${username} está escribiendo...";
static m58(username) => "${username} abandonó el chat";
static m59(username, type) => "${username} envió un evento ${type}";
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Opcional) Nombre del grupo"),
"About": MessageLookupByLibrary.simpleMessage("Acerca de"),
"Accept": MessageLookupByLibrary.simpleMessage("Aceptar"),
"Account": MessageLookupByLibrary.simpleMessage("Cuenta"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Información de la cuenta"),
"Add a group description": MessageLookupByLibrary.simpleMessage(
"Agregar una descripción al grupo"),
"Admin": MessageLookupByLibrary.simpleMessage("Administrador"),
"Already have an account?":
MessageLookupByLibrary.simpleMessage("¿Ya tienes una cuenta?"),
"Anyone can join":
MessageLookupByLibrary.simpleMessage("Cualquiera puede unirse"),
"Archive": MessageLookupByLibrary.simpleMessage("Archivo"),
"Archived Room": MessageLookupByLibrary.simpleMessage("Sala archivada"),
"Are guest users allowed to join": MessageLookupByLibrary.simpleMessage(
"¿Pueden unirse los usuarios visitantes?"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("¿Estás seguro?"),
"Authentication": MessageLookupByLibrary.simpleMessage("Autenticación"),
"Avatar has been changed": MessageLookupByLibrary.simpleMessage(
"La imagen de perfil ha sido cambiada"),
"Ban from chat": MessageLookupByLibrary.simpleMessage("Vetar del chat"),
"Banned": MessageLookupByLibrary.simpleMessage("Vetado"),
"Block Device":
MessageLookupByLibrary.simpleMessage("Bloquear dispositivo"),
"Cancel": MessageLookupByLibrary.simpleMessage("Cancelar"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("Cambiar el servidor"),
"Change the name of the group":
MessageLookupByLibrary.simpleMessage("Cambiar el nombre del grupo"),
"Change the server":
MessageLookupByLibrary.simpleMessage("Cambiar el servidor"),
"Change wallpaper": MessageLookupByLibrary.simpleMessage(
"Cambiar el fondo de pantalla"),
"Change your style":
MessageLookupByLibrary.simpleMessage("Cambia tu estilo"),
"Changelog":
MessageLookupByLibrary.simpleMessage("Registro de cambios"),
"Chat": MessageLookupByLibrary.simpleMessage("Chat"),
"Chat details":
MessageLookupByLibrary.simpleMessage("Detalles del chat"),
"Choose a strong password":
MessageLookupByLibrary.simpleMessage("Elija una contraseña segura"),
"Choose a username":
MessageLookupByLibrary.simpleMessage("Elija un nombre de usuario"),
"Close": MessageLookupByLibrary.simpleMessage("Cerrar"),
"Confirm": MessageLookupByLibrary.simpleMessage("Confirmar"),
"Connect": MessageLookupByLibrary.simpleMessage("Conectar"),
"Connection attempt failed": MessageLookupByLibrary.simpleMessage(
"Falló el intento de conexión"),
"Contact has been invited to the group":
MessageLookupByLibrary.simpleMessage(
"El contacto ha sido invitado al grupo"),
"Content viewer":
MessageLookupByLibrary.simpleMessage("Visor de contenido"),
"Copied to clipboard":
MessageLookupByLibrary.simpleMessage("Copiado al portapapeles"),
"Copy": MessageLookupByLibrary.simpleMessage("Copiar"),
"Could not set avatar": MessageLookupByLibrary.simpleMessage(
"No se pudo establecer la imagen de perfil"),
"Could not set displayname": MessageLookupByLibrary.simpleMessage(
"No se pudo establecer el nombre visible"),
"Create": MessageLookupByLibrary.simpleMessage("Crear"),
"Create account now":
MessageLookupByLibrary.simpleMessage("Crear cuenta ahora"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Crear grupo nuevo"),
"Currently active":
MessageLookupByLibrary.simpleMessage("Actualmente activo"),
"Dark": MessageLookupByLibrary.simpleMessage("Oscuro"),
"Delete": MessageLookupByLibrary.simpleMessage("Eliminar"),
"Delete message":
MessageLookupByLibrary.simpleMessage("Eliminar mensaje"),
"Deny": MessageLookupByLibrary.simpleMessage("Rechazar"),
"Device": MessageLookupByLibrary.simpleMessage("Dispositivo"),
"Devices": MessageLookupByLibrary.simpleMessage("Dispositivos"),
"Discard picture":
MessageLookupByLibrary.simpleMessage("Descartar imagen"),
"Displayname has been changed": MessageLookupByLibrary.simpleMessage(
"El nombre visible ha cambiado"),
"Donate": MessageLookupByLibrary.simpleMessage("Donar"),
"Download file":
MessageLookupByLibrary.simpleMessage("Descargar archivo"),
"Edit Jitsi instance": MessageLookupByLibrary.simpleMessage(
"Cambiar la instancia de Jitsi"),
"Edit displayname":
MessageLookupByLibrary.simpleMessage("Editar nombre visible"),
"Emote Settings":
MessageLookupByLibrary.simpleMessage("Configuración de emotes"),
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Atajo de emote"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Chat vacío"),
"Encryption": MessageLookupByLibrary.simpleMessage("Cifrado"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Algoritmo de cifrado"),
"Encryption is not enabled": MessageLookupByLibrary.simpleMessage(
"El cifrado no está habilitado"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"¡El cifrado de extremo a extremo está actualmente en período de prueba! ¡Úselo bajo su propio riesgo!"),
"End-to-end encryption settings": MessageLookupByLibrary.simpleMessage(
"Configuración del cifrado de extremo a extremo"),
"Enter a group name":
MessageLookupByLibrary.simpleMessage("Ingrese un nombre de grupo"),
"Enter a username": MessageLookupByLibrary.simpleMessage(
"Ingrese un nombre de usuario"),
"Enter your homeserver":
MessageLookupByLibrary.simpleMessage("Ingrese su servidor"),
"File name": MessageLookupByLibrary.simpleMessage("Nombre del archivo"),
"File size": MessageLookupByLibrary.simpleMessage("Tamaño del archivo"),
"FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"Forward": MessageLookupByLibrary.simpleMessage("Reenviar"),
"Friday": MessageLookupByLibrary.simpleMessage("Viernes"),
"From joining":
MessageLookupByLibrary.simpleMessage("Desde que se unió"),
"From the invitation":
MessageLookupByLibrary.simpleMessage("Desde la invitación"),
"Group": MessageLookupByLibrary.simpleMessage("Grupo"),
"Group description":
MessageLookupByLibrary.simpleMessage("Descripción del grupo"),
"Group description has been changed":
MessageLookupByLibrary.simpleMessage(
"La descripción del grupo ha sido cambiada"),
"Group is public":
MessageLookupByLibrary.simpleMessage("El grupo es público"),
"Guests are forbidden": MessageLookupByLibrary.simpleMessage(
"Los visitantes están prohibidos"),
"Guests can join": MessageLookupByLibrary.simpleMessage(
"Los visitantes pueden unirse"),
"Help": MessageLookupByLibrary.simpleMessage("Ayuda"),
"Homeserver is not compatible": MessageLookupByLibrary.simpleMessage(
"El servidor no es compatible"),
"How are you today?":
MessageLookupByLibrary.simpleMessage("¿Cómo estás hoy?"),
"ID": MessageLookupByLibrary.simpleMessage("Identificación"),
"Identity": MessageLookupByLibrary.simpleMessage("Identidad"),
"Invite contact":
MessageLookupByLibrary.simpleMessage("Invitar contacto"),
"Invited": MessageLookupByLibrary.simpleMessage("Invitado"),
"Invited users only":
MessageLookupByLibrary.simpleMessage("Sólo usuarios invitados"),
"It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/":
MessageLookupByLibrary.simpleMessage(
"Parece que no tienes servicios de Google en tu teléfono. ¡Esa es una buena decisión para tu privacidad! Para recibir notificaciones instantáneas en FluffyChat, recomendamos usar microG: https://microg.org/"),
"Kick from chat":
MessageLookupByLibrary.simpleMessage("Echar del chat"),
"Last seen IP":
MessageLookupByLibrary.simpleMessage("Última dirección IP vista"),
"Leave": MessageLookupByLibrary.simpleMessage("Abandonar"),
"Left the chat":
MessageLookupByLibrary.simpleMessage("Abandonó el chat"),
"License": MessageLookupByLibrary.simpleMessage("Licencia"),
"Light": MessageLookupByLibrary.simpleMessage("Claro"),
"Load more...": MessageLookupByLibrary.simpleMessage("Mostrar más..."),
"Loading... Please wait": MessageLookupByLibrary.simpleMessage(
"Cargando... Por favor espere"),
"Login": MessageLookupByLibrary.simpleMessage("Iniciar sesión"),
"Logout": MessageLookupByLibrary.simpleMessage("Cerrar sesión"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Hacer un moderador/a"),
"Make an admin":
MessageLookupByLibrary.simpleMessage("Hacer un administrador/a"),
"Make sure the identifier is valid":
MessageLookupByLibrary.simpleMessage(
"Asegúrese de que el identificador es válido"),
"Message will be removed for all participants":
MessageLookupByLibrary.simpleMessage(
"El mensaje será eliminado para todos los participantes"),
"Moderator": MessageLookupByLibrary.simpleMessage("Moderador"),
"Monday": MessageLookupByLibrary.simpleMessage("Lunes"),
"Mute chat": MessageLookupByLibrary.simpleMessage("Silenciar chat"),
"New message in FluffyChat":
MessageLookupByLibrary.simpleMessage("Nuevo mensaje en FluffyChat"),
"New private chat":
MessageLookupByLibrary.simpleMessage("Nuevo chat privado"),
"No emotes found. 😕":
MessageLookupByLibrary.simpleMessage("Ningún emote encontrado. 😕"),
"No permission":
MessageLookupByLibrary.simpleMessage("Sin autorización"),
"No rooms found...":
MessageLookupByLibrary.simpleMessage("Ninguna sala encontrada..."),
"None": MessageLookupByLibrary.simpleMessage("Ninguno"),
"Not supported in web": MessageLookupByLibrary.simpleMessage(
"No es compatible con la versión web"),
"Oops something went wrong...":
MessageLookupByLibrary.simpleMessage("Ups, algo salió mal..."),
"Open app to read messages": MessageLookupByLibrary.simpleMessage(
"Abrir la aplicación para leer los mensajes"),
"Open camera": MessageLookupByLibrary.simpleMessage("Abrir la cámara"),
"Participating user devices": MessageLookupByLibrary.simpleMessage(
"Dispositivos de usuario participantes"),
"Password": MessageLookupByLibrary.simpleMessage("Contraseña"),
"Pick image": MessageLookupByLibrary.simpleMessage("Elegir imagen"),
"Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
MessageLookupByLibrary.simpleMessage(
"Tenga en cuenta que necesita Pantalaimon para utilizar el cifrado de extremo a extremo por ahora."),
"Please choose a username": MessageLookupByLibrary.simpleMessage(
"Por favor, elija un nombre de usuario"),
"Please enter a matrix identifier":
MessageLookupByLibrary.simpleMessage(
"Por favor, ingrese un identificador matrix"),
"Please enter your password": MessageLookupByLibrary.simpleMessage(
"Por favor ingrese su contraseña"),
"Please enter your username": MessageLookupByLibrary.simpleMessage(
"Por favor ingrese su nombre de usuario"),
"Public Rooms": MessageLookupByLibrary.simpleMessage("Salas públicas"),
"Recording": MessageLookupByLibrary.simpleMessage("Grabando"),
"Reject": MessageLookupByLibrary.simpleMessage("Rechazar"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Volver a unirse"),
"Remove": MessageLookupByLibrary.simpleMessage("Eliminar"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
"Eliminar todos los otros dispositivos"),
"Remove device":
MessageLookupByLibrary.simpleMessage("Eliminar dispositivo"),
"Remove exile":
MessageLookupByLibrary.simpleMessage("Eliminar la expulsión"),
"Remove message":
MessageLookupByLibrary.simpleMessage("Eliminar mensaje"),
"Render rich message content": MessageLookupByLibrary.simpleMessage(
"Mostrar el contenido con mensajes enriquecidos"),
"Reply": MessageLookupByLibrary.simpleMessage("Responder"),
"Request permission":
MessageLookupByLibrary.simpleMessage("Solicitar permiso"),
"Request to read older messages": MessageLookupByLibrary.simpleMessage(
"Solicitar poder leer mensajes antiguos"),
"Revoke all permissions":
MessageLookupByLibrary.simpleMessage("Revocar todos los permisos"),
"Room has been upgraded": MessageLookupByLibrary.simpleMessage(
"La sala ha subido de categoría"),
"Saturday": MessageLookupByLibrary.simpleMessage("Sábado"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Buscar un chat"),
"Seen a long time ago":
MessageLookupByLibrary.simpleMessage("Visto hace mucho tiempo"),
"Send": MessageLookupByLibrary.simpleMessage("Enviar"),
"Send a message":
MessageLookupByLibrary.simpleMessage("Enviar un mensaje"),
"Send file": MessageLookupByLibrary.simpleMessage("Enviar un archivo"),
"Send image": MessageLookupByLibrary.simpleMessage("Enviar una imagen"),
"Set a profile picture": MessageLookupByLibrary.simpleMessage(
"Establecer una foto de perfil"),
"Set group description": MessageLookupByLibrary.simpleMessage(
"Establecer descripción del grupo"),
"Set invitation link": MessageLookupByLibrary.simpleMessage(
"Establecer enlace de invitación"),
"Set status": MessageLookupByLibrary.simpleMessage("Establecer estado"),
"Settings": MessageLookupByLibrary.simpleMessage("Ajustes"),
"Share": MessageLookupByLibrary.simpleMessage("Compartir"),
"Sign up": MessageLookupByLibrary.simpleMessage("Registrarse"),
"Skip": MessageLookupByLibrary.simpleMessage("Omitir"),
"Source code": MessageLookupByLibrary.simpleMessage("Código fuente"),
"Start your first chat :-)":
MessageLookupByLibrary.simpleMessage("Comience su primer chat :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Enviar"),
"Sunday": MessageLookupByLibrary.simpleMessage("Domingo"),
"System": MessageLookupByLibrary.simpleMessage("Sistema"),
"Tap to show menu":
MessageLookupByLibrary.simpleMessage("Toca para mostrar el menú"),
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage("El cifrado se ha corrompido"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("No coinciden"),
"They Match": MessageLookupByLibrary.simpleMessage("Coinciden"),
"This room has been archived.": MessageLookupByLibrary.simpleMessage(
"Esta sala ha sido archivada."),
"Thursday": MessageLookupByLibrary.simpleMessage("Jueves"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Intentar enviar nuevamente"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Martes"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Desbloquear dispositivo"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Dispositivo desconocido"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
"Algoritmo de cifrado desconocido"),
"Unmute chat":
MessageLookupByLibrary.simpleMessage("Dejar de silenciar el chat"),
"Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage(
"¿Usar colores compatibles con AMOLED?"),
"Username": MessageLookupByLibrary.simpleMessage("Nombre de usuario"),
"Verify": MessageLookupByLibrary.simpleMessage("Verificar"),
"Verify User":
MessageLookupByLibrary.simpleMessage("Verificar usuario"),
"Video call": MessageLookupByLibrary.simpleMessage("Video llamada"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Visibilidad del historial del chat"),
"Visible for all participants": MessageLookupByLibrary.simpleMessage(
"Visible para todos los participantes"),
"Visible for everyone":
MessageLookupByLibrary.simpleMessage("Visible para todo el mundo"),
"Voice message": MessageLookupByLibrary.simpleMessage("Mensaje de voz"),
"Wallpaper": MessageLookupByLibrary.simpleMessage("Fondo de pantalla"),
"Wednesday": MessageLookupByLibrary.simpleMessage("Miércoles"),
"Welcome to the cutest instant messenger in the matrix network.":
MessageLookupByLibrary.simpleMessage(
"Bienvenido al mensajero instantáneo más tierno de la red Matrix."),
"Who is allowed to join this group":
MessageLookupByLibrary.simpleMessage(
"Quién tiene permitido unirse al grupo"),
"Write a message...":
MessageLookupByLibrary.simpleMessage("Escribe un mensaje..."),
"Yes": MessageLookupByLibrary.simpleMessage(""),
"You": MessageLookupByLibrary.simpleMessage(""),
"You are invited to this chat":
MessageLookupByLibrary.simpleMessage("Estás invitado a este chat"),
"You are no longer participating in this chat":
MessageLookupByLibrary.simpleMessage(
"Ya no estás participando en este chat"),
"You cannot invite yourself": MessageLookupByLibrary.simpleMessage(
"No puedes invitarte a tí mismo"),
"You have been banned from this chat":
MessageLookupByLibrary.simpleMessage(
"Has sido vetado de este chat"),
"You won\'t be able to disable the encryption anymore. Are you sure?":
MessageLookupByLibrary.simpleMessage(
"Ya no podrá deshabilitar el cifrado. ¿Estás seguro?"),
"Your own username":
MessageLookupByLibrary.simpleMessage("Tu nombre de usuario"),
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("alias"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Ingrese su contraseña de almacenamiento segura (SSSS) o la clave de recuperación para almacenar en caché las claves."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"Para poder confirmar a la otra persona, ingrese su contraseña de almacenamiento segura o la clave de recuperación."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Por favor, ingrese su contraseña de almacenamiento seguro (SSSS) o la clave de recuperación para verificar su sesión."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys": MessageLookupByLibrary.simpleMessage(
"¡Las claves se han almacenado exitosamente!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
"changedTheChatPermissions": m7,
"changedTheDisplaynameTo": m8,
"changedTheGuestAccessRules": m9,
"changedTheGuestAccessRulesTo": m10,
"changedTheHistoryVisibility": m11,
"changedTheHistoryVisibilityTo": m12,
"changedTheJoinRules": m13,
"changedTheJoinRulesTo": m14,
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Compare y asegúrese de que los siguientes emoji coincidan con los del otro dispositivo:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Compare y asegúrese de que los siguientes números coincidan con los del otro dispositivo:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled": MessageLookupByLibrary.simpleMessage(
"La confirmación cruzada está deshabilitada"),
"crossSigningEnabled": MessageLookupByLibrary.simpleMessage(
"La confirmación cruzada está habilitada"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
"emoteExists":
MessageLookupByLibrary.simpleMessage("¡El emote ya existe!"),
"emoteInvalid": MessageLookupByLibrary.simpleMessage(
"¡El atajo del emote es inválido!"),
"emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage(
"¡Debes elegir un atajo de emote y una imagen!"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Frase de contraseña o clave de recuperación incorrecta"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...":
MessageLookupByLibrary.simpleMessage("está escribiendo..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"¿Es correcta la siguiente clave de dispositivo?"),
"joinedTheChat": m29,
"keysCached":
MessageLookupByLibrary.simpleMessage("Las claves están en caché"),
"keysMissing":
MessageLookupByLibrary.simpleMessage("Faltan las claves"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest": MessageLookupByLibrary.simpleMessage(
"¡Nueva solicitud de verificación!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat actualmente no admite habilitar confirmación cruzada. Por favor habilítela desde Element."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat actualmente no admite habilitar la Copia de seguridad de clave en línea. Por favor habilítela desde Element."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"La copia de seguridad de la clave en línea está deshabilitada"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"La copia de seguridad de la clave en línea está habilitada"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"contraseña o clave de recuperación"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
"removedBy": m39,
"seenByUser": m40,
"seenByUserAndCountOthers": m41,
"seenByUserAndUser": m42,
"sentAFile": m43,
"sentAPicture": m44,
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("La sesión está verificada"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Sesión desconocida, por favor verifíquela"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
"userAndOthersAreTyping": m55,
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59,
"verifiedSession": MessageLookupByLibrary.simpleMessage(
"¡Sesión verificada exitosamente!"),
"verifyManual":
MessageLookupByLibrary.simpleMessage("Verificar manualmente"),
"verifyStart":
MessageLookupByLibrary.simpleMessage("Comenzar verificación"),
"verifySuccess": MessageLookupByLibrary.simpleMessage(
"¡Has verificado exitosamente!"),
"verifyTitle":
MessageLookupByLibrary.simpleMessage("Verificando la otra cuenta"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"Esperando a que el socio acepte la solicitud..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"Esperando a que el socio acepte los emojis..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"Esperando a que el socio acepte los números...")
};
}

View File

@ -23,6 +23,9 @@ class MessageLookup extends MessageLookupByLibrary {
static m1(username) => "${username} a activé le chiffrement de bout en bout";
static m60(username) =>
"Accepter cette demande de vérification de ${username} ?";
static m2(username, targetName) => "${username} a banni ${targetName}";
static m3(homeserver) => "Par défaut, vous serez connecté à ${homeserver}";
@ -45,7 +48,7 @@ class MessageLookup extends MessageLookupByLibrary {
"${username} a changé les règles d\'accès à la discussion pour les invités";
static m10(username, rules) =>
"${username} a changé les règles d\'accès à la discussion pour les invités en : ${rules}";
"${username} a changé les règles d\'accès à la discussion pour les invités en : ${rules}";
static m11(username) =>
"${username} a changé la visibilité de l\'historique de la discussion";
@ -97,7 +100,7 @@ class MessageLookup extends MessageLookupByLibrary {
"${username} a expulsé et banni ${targetName}";
static m32(localizedTimeShort) =>
"Vu pour la dernière fois: ${localizedTimeShort}";
"Vu pour la dernière fois: ${localizedTimeShort}";
static m33(count) => "Charger ${count} participants de plus";
@ -161,8 +164,9 @@ class MessageLookup extends MessageLookupByLibrary {
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Optionnel) Nom du groupe"),
"About": MessageLookupByLibrary.simpleMessage("About"),
"Account": MessageLookupByLibrary.simpleMessage("Account"),
"About": MessageLookupByLibrary.simpleMessage("À propos"),
"Accept": MessageLookupByLibrary.simpleMessage("Accepter"),
"Account": MessageLookupByLibrary.simpleMessage("Compte"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Informations du compte"),
"Add a group description": MessageLookupByLibrary.simpleMessage(
@ -184,7 +188,9 @@ class MessageLookup extends MessageLookupByLibrary {
"L\'image de profil a été changée"),
"Ban from chat":
MessageLookupByLibrary.simpleMessage("Bannir de la discussion"),
"Banned": MessageLookupByLibrary.simpleMessage("Banned"),
"Banned": MessageLookupByLibrary.simpleMessage("Banni"),
"Block Device":
MessageLookupByLibrary.simpleMessage("Bloquer l\'appareil"),
"Cancel": MessageLookupByLibrary.simpleMessage("Annuler"),
"Change the homeserver": MessageLookupByLibrary.simpleMessage(
"Changer le serveur d\'accueil"),
@ -227,7 +233,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Créer un compte"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Créer un nouveau groupe"),
"Currenlty active":
"Currently active":
MessageLookupByLibrary.simpleMessage("Actif en ce moment"),
"Dark": MessageLookupByLibrary.simpleMessage("Sombre"),
"Delete": MessageLookupByLibrary.simpleMessage("Supprimer"),
@ -252,13 +258,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Raccourci d\'émoticône"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Discussion vide"),
"Encryption": MessageLookupByLibrary.simpleMessage("Chiffrement"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Algorithme de chiffrement"),
"Encryption is not enabled": MessageLookupByLibrary.simpleMessage(
"Le chiffrement n\'est pas actif"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"Le chiffrement de bout en bout est actuellement en beta ! Utilisez cette fonctionnalité à vos propres risques !!"),
"Le chiffrement de bout en bout est actuellement en béta! Utilisez cette fonctionnalité à vos propres risques!"),
"End-to-end encryption settings": MessageLookupByLibrary.simpleMessage(
"Paramètres du chiffrement de bout en bout"),
"Enter a group name":
@ -307,16 +314,16 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Expulser de la discussion"),
"Last seen IP": MessageLookupByLibrary.simpleMessage(
"Dernière addresse IP utilisée"),
"Leave": MessageLookupByLibrary.simpleMessage("Leave"),
"Leave": MessageLookupByLibrary.simpleMessage("Partir"),
"Left the chat":
MessageLookupByLibrary.simpleMessage("Discussion quittée"),
MessageLookupByLibrary.simpleMessage("A quitté la discussion"),
"License": MessageLookupByLibrary.simpleMessage("Licence"),
"Light": MessageLookupByLibrary.simpleMessage("Clair"),
"Load more...": MessageLookupByLibrary.simpleMessage("Charger plus..."),
"Loading... Please wait": MessageLookupByLibrary.simpleMessage(
"Chargement... Merci de patienter"),
"Login": MessageLookupByLibrary.simpleMessage("Connexion"),
"Logout": MessageLookupByLibrary.simpleMessage("Logout"),
"Logout": MessageLookupByLibrary.simpleMessage("Se déconnecter"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Promouvoir comme modérateur"),
"Make an admin": MessageLookupByLibrary.simpleMessage(
@ -368,6 +375,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Renseignez votre nom d\'utilisateur"),
"Public Rooms": MessageLookupByLibrary.simpleMessage("Salons publics"),
"Recording": MessageLookupByLibrary.simpleMessage("Enregistrement"),
"Reject": MessageLookupByLibrary.simpleMessage("Refuser"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Rejoindre de nouveau"),
"Remove": MessageLookupByLibrary.simpleMessage("Supprimer"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
@ -387,6 +395,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Demander à lire les anciens messages"),
"Revoke all permissions": MessageLookupByLibrary.simpleMessage(
"Révoquer toutes les permissions"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("Le salon a été mis à niveau"),
"Saturday": MessageLookupByLibrary.simpleMessage("Samedi"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Rechercher une discussion"),
@ -407,9 +417,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Settings": MessageLookupByLibrary.simpleMessage("Paramètres"),
"Share": MessageLookupByLibrary.simpleMessage("Partager"),
"Sign up": MessageLookupByLibrary.simpleMessage("S\'inscrire"),
"Skip": MessageLookupByLibrary.simpleMessage("Ignorer"),
"Source code": MessageLookupByLibrary.simpleMessage("Code source"),
"Start your first chat :-)": MessageLookupByLibrary.simpleMessage(
"Démarrez votre première discussion :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Soumettre"),
"Sunday": MessageLookupByLibrary.simpleMessage("Dimanche"),
"System": MessageLookupByLibrary.simpleMessage("Système"),
"Tap to show menu": MessageLookupByLibrary.simpleMessage(
@ -417,12 +429,18 @@ class MessageLookup extends MessageLookupByLibrary {
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage(
"Le chiffrement a été corrompu"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("Elles ne correspondent pas"),
"They Match":
MessageLookupByLibrary.simpleMessage("Elles correspondent"),
"This room has been archived.":
MessageLookupByLibrary.simpleMessage("Ce salon a été archivé."),
"Thursday": MessageLookupByLibrary.simpleMessage("Jeudi"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Retenter l\'envoi"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Mardi"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Débloquer l\'appareil"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Périphérique inconnu"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
@ -433,6 +451,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Utiliser des couleurs compatibles Amoled ?"),
"Username": MessageLookupByLibrary.simpleMessage("Nom d\'utilisateur"),
"Verify": MessageLookupByLibrary.simpleMessage("Vérifier"),
"Verify User": MessageLookupByLibrary.simpleMessage(
"Vérifier l\'utilisateur/trice"),
"Video call": MessageLookupByLibrary.simpleMessage("Appel vidéo"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Visibilité de l\'historique de la discussion"),
@ -471,8 +491,17 @@ class MessageLookup extends MessageLookupByLibrary {
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("adresse"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour mettre les clés en cache."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"Pour pouvoir faire signer l\'autre personne, veuillez entrer votre phrase de passe stockée de manière sécurisée ou votre clé de récupération."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour vérifier votre session."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys": MessageLookupByLibrary.simpleMessage(
"Clés mises en cache avec succès !"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
@ -487,9 +516,17 @@ class MessageLookup extends MessageLookupByLibrary {
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Comparez et assurez-vous que les emojis suivants correspondent à ceux de l\'autre appareil :"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Comparez et assurez-vous que les chiffres suivants correspondent à ceux de l\'autre appareil :"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled": MessageLookupByLibrary.simpleMessage(
"La signature croisée est désactivée"),
"crossSigningEnabled": MessageLookupByLibrary.simpleMessage(
"La signature croisée est activée"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
@ -501,18 +538,39 @@ class MessageLookup extends MessageLookupByLibrary {
"Vous devez sélectionner un raccourci d\'émoticône et une image !"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Phrase de passe ou clé de récupération incorrecte"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("is typing..."),
"is typing...":
MessageLookupByLibrary.simpleMessage("est en train d\'écrire..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"La clé de l\'appareil ci-dessous est-elle correcte ?"),
"joinedTheChat": m29,
"keysCached": MessageLookupByLibrary.simpleMessage(
"Les clés sont mises en cache"),
"keysMissing":
MessageLookupByLibrary.simpleMessage("Les clés sont manquantes"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest": MessageLookupByLibrary.simpleMessage(
"Nouvelle demande de vérification !"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat ne permet pas actuellement d\'activer la signature croisée. Veuillez l\'activer à partir de Element."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat ne prend pas actuellement en charge l\'activation de la sauvegarde des clés en ligne. Veuillez l\'activer à partir de Element."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"La sauvegarde en ligne des clés est désactivée"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"La sauvegarde en ligne des clés est activée"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Phrase de passe ou clé de récupération"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
@ -525,11 +583,15 @@ class MessageLookup extends MessageLookupByLibrary {
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("La session est vérifiée"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Session inconnue, veuillez vérifier"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
@ -537,6 +599,22 @@ class MessageLookup extends MessageLookupByLibrary {
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59
"userSentUnknownEvent": m59,
"verifiedSession": MessageLookupByLibrary.simpleMessage(
"Session vérifiée avec succès !"),
"verifyManual":
MessageLookupByLibrary.simpleMessage("Vérifier manuellement"),
"verifyStart":
MessageLookupByLibrary.simpleMessage("Commencer la vérification"),
"verifySuccess": MessageLookupByLibrary.simpleMessage(
"Vous avez vérifié avec succès !"),
"verifyTitle": MessageLookupByLibrary.simpleMessage(
"Vérification de l\'autre compte"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"En attente de la vérification de la demande par le partenaire..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"En attente de l\'acceptation de l\'émoji par le partenaire..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"En attente de l\'acceptation des nombres par le partenaire...")
};
}

606
lib/l10n/messages_gl.dart Normal file
View File

@ -0,0 +1,606 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a gl locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'gl';
static m0(username) => "${username} aceptou o convite";
static m1(username) => "${username} activou o cifrado extremo-a-extremo";
static m60(username) =>
"¿Aceptar a solicitude de verificación de ${username}?";
static m2(username, targetName) => "${username} vetou a ${targetName}";
static m3(homeserver) => "Por omisión vas conectar con ${homeserver}";
static m4(username) => "${username} cambiou o avatar do chat";
static m5(username, description) =>
"${username} mudou a descrición da conversa a: \'${description}\'";
static m6(username, chatname) =>
"${username} mudou o nome da conversa a: \'${chatname}\'";
static m7(username) => "${username} mudou os permisos da conversa";
static m8(username, displayname) =>
"${username} cambiou o nome público a: ${displayname}";
static m9(username) =>
"${username} mudou as regras de acceso para convidadas";
static m10(username, rules) =>
"${username} mudou as regras de acceso para convidadas a: ${rules}";
static m11(username) => "${username} mudou a visibilidade do historial";
static m12(username, rules) =>
"${username} mudou a visibilidade do historial a: ${rules}";
static m13(username) => "${username} mudou as regras de acceso";
static m14(username, joinRules) =>
"${username} mudou as regras de acceso a: ${joinRules}";
static m15(username) => "${username} mudou o avatar do perfil";
static m16(username) => "${username} mudou os alias da sala";
static m17(username) => "${username} mudou a ligazón de convite";
static m18(error) => "Non se descifrou a mensaxe: ${error}";
static m19(count) => "${count} participantes";
static m20(username) => "${username} creou a conversa";
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${day}-${month}-${year}";
static m23(month, day) => "${day}-${month}";
static m24(displayname) => "Grupo con ${displayname}";
static m25(username, targetName) =>
"${username} retirou o convite para ${targetName}";
static m26(groupName) => "Convidar contacto a ${groupName}";
static m27(username, link) =>
"${username} convidoute a FluffyChat.\n1. instala FluffyChat: http://fluffy.chat \n2. Rexístrate ou conéctate\n3. Abre a ligazón do convite: ${link}";
static m28(username, targetName) => "${username} convidou a ${targetName}";
static m29(username) => "${username} uníuse ó chat";
static m30(username, targetName) => "${username} expulsou a ${targetName}";
static m31(username, targetName) =>
"${username} expulsou e vetou a ${targetName}";
static m32(localizedTimeShort) => "Última actividade: ${localizedTimeShort}";
static m33(count) => "Cargar ${count} participantes máis";
static m34(homeserver) => "Conectar con ${homeserver}";
static m35(number) => "${number} seleccionados";
static m36(fileName) => "Reproducir ${fileName}";
static m37(username) => "${username} publicou un evento";
static m38(username) => "${username} rexeitou o convite";
static m39(username) => "Eliminado por ${username}";
static m40(username) => "Visto por ${username}";
static m41(username, count) => "Visto por ${username} e ${count} outras";
static m42(username, username2) => "Visto por ${username} e ${username2}";
static m43(username) => "${username} enviou un ficheiro";
static m44(username) => "${username} enviou unha imaxe";
static m45(username) => "${username} enviou un adhesivo";
static m46(username) => "${username} enviou un vídeo";
static m47(username) => "${username} enviou un audio";
static m48(username) => "${username} compartiu a localización";
static m49(hours12, hours24, minutes, suffix) =>
"${hours12}:${minutes} ${suffix}";
static m50(username, targetName) =>
"${username} retirou o veto a ${targetName}";
static m51(type) => "Evento descoñecido \'${type}\'";
static m52(unreadCount) => "${unreadCount} chats non lidos";
static m53(unreadEvents) => "${unreadEvents} mensaxes non lidas";
static m54(unreadEvents, unreadChats) =>
"${unreadEvents} mensaxes non lidas en ${unreadChats} conversas";
static m55(username, count) =>
"${username} e ${count} máis están escribindo...";
static m56(username, username2) =>
"${username} e ${username2} están escribindo...";
static m57(username) => "${username} está escribindo...";
static m58(username) => "${username} deixou a conversa";
static m59(username, type) => "${username} enviou un evento {type]";
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Optativo) Nome do grupo"),
"About": MessageLookupByLibrary.simpleMessage("Acerca de"),
"Accept": MessageLookupByLibrary.simpleMessage("Aceptar"),
"Account": MessageLookupByLibrary.simpleMessage("Conta"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Información da conta"),
"Add a group description": MessageLookupByLibrary.simpleMessage(
"Engade a descrición do grupo"),
"Admin": MessageLookupByLibrary.simpleMessage("Admin"),
"Already have an account?":
MessageLookupByLibrary.simpleMessage("¿xa tes unha conta?"),
"Anyone can join":
MessageLookupByLibrary.simpleMessage("Calquera pode unirse"),
"Archive": MessageLookupByLibrary.simpleMessage("Arquivo"),
"Archived Room": MessageLookupByLibrary.simpleMessage("Sala arquivada"),
"Are guest users allowed to join": MessageLookupByLibrary.simpleMessage(
"Teñen permitido as convidadas o acceso"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("¿estás certo?"),
"Authentication": MessageLookupByLibrary.simpleMessage("Autenticación"),
"Avatar has been changed":
MessageLookupByLibrary.simpleMessage("O avatar cambiou"),
"Ban from chat":
MessageLookupByLibrary.simpleMessage("Expulsar da conversa"),
"Banned": MessageLookupByLibrary.simpleMessage("Vetada"),
"Block Device":
MessageLookupByLibrary.simpleMessage("Bloquear dispositivo"),
"Cancel": MessageLookupByLibrary.simpleMessage("Cancelar"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("Mudar de servidor de inicio"),
"Change the name of the group":
MessageLookupByLibrary.simpleMessage("Mudar o nome do grupo"),
"Change the server":
MessageLookupByLibrary.simpleMessage("Mudar de servidor"),
"Change wallpaper":
MessageLookupByLibrary.simpleMessage("Mudar fondo do chat"),
"Change your style":
MessageLookupByLibrary.simpleMessage("Cambiar o estilo"),
"Changelog":
MessageLookupByLibrary.simpleMessage("Rexistro de cambios"),
"Chat": MessageLookupByLibrary.simpleMessage("Chat"),
"Chat details":
MessageLookupByLibrary.simpleMessage("Detalles do chat"),
"Choose a strong password": MessageLookupByLibrary.simpleMessage(
"Escolle un contrasinal forte"),
"Choose a username":
MessageLookupByLibrary.simpleMessage("Escolle un nome de usuaria"),
"Close": MessageLookupByLibrary.simpleMessage("Pechar"),
"Confirm": MessageLookupByLibrary.simpleMessage("Confirmar"),
"Connect": MessageLookupByLibrary.simpleMessage("Conectar"),
"Connection attempt failed": MessageLookupByLibrary.simpleMessage(
"Fallou o intento de conexión"),
"Contact has been invited to the group":
MessageLookupByLibrary.simpleMessage(
"O contacto foi convidado ó grupo"),
"Content viewer":
MessageLookupByLibrary.simpleMessage("Visor de contido"),
"Copied to clipboard":
MessageLookupByLibrary.simpleMessage("Copiado ó portapapeis"),
"Copy": MessageLookupByLibrary.simpleMessage("Copiar"),
"Could not set avatar":
MessageLookupByLibrary.simpleMessage("Non se estableceu o avatar"),
"Could not set displayname": MessageLookupByLibrary.simpleMessage(
"Non se estableceu o nome público"),
"Create": MessageLookupByLibrary.simpleMessage("Crear"),
"Create account now":
MessageLookupByLibrary.simpleMessage("Crear unha conta"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Crear novo grupo"),
"Currently active":
MessageLookupByLibrary.simpleMessage("Actualmente activo"),
"Dark": MessageLookupByLibrary.simpleMessage("Escuro"),
"Delete": MessageLookupByLibrary.simpleMessage("Eliminar"),
"Delete message":
MessageLookupByLibrary.simpleMessage("Eliminar mensaxe"),
"Deny": MessageLookupByLibrary.simpleMessage("Denegar"),
"Device": MessageLookupByLibrary.simpleMessage("Dispositivo"),
"Devices": MessageLookupByLibrary.simpleMessage("Dispositivos"),
"Discard picture":
MessageLookupByLibrary.simpleMessage("Desbotar imaxe"),
"Displayname has been changed":
MessageLookupByLibrary.simpleMessage("O nome público mudou"),
"Donate": MessageLookupByLibrary.simpleMessage("Doar"),
"Download file":
MessageLookupByLibrary.simpleMessage("Descargar ficheiro"),
"Edit Jitsi instance":
MessageLookupByLibrary.simpleMessage("Editar instancia Jitsi"),
"Edit displayname":
MessageLookupByLibrary.simpleMessage("Editar nome público"),
"Emote Settings":
MessageLookupByLibrary.simpleMessage("Axustes de Emote"),
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Atallo de Emote"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Chat baleiro"),
"Encryption": MessageLookupByLibrary.simpleMessage("Cifrado"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Algoritmo do cifrado"),
"Encryption is not enabled":
MessageLookupByLibrary.simpleMessage("Cifrado desactivado"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"O cifrado extremo-a-extremo está en Beta! Úsao baixo a túa responsabilidade!"),
"End-to-end encryption settings": MessageLookupByLibrary.simpleMessage(
"Axustes do cifrado extremo-a-extremo"),
"Enter a group name": MessageLookupByLibrary.simpleMessage(
"Escribe un nome para o grupo"),
"Enter a username":
MessageLookupByLibrary.simpleMessage("Escribe un nome de usuaria"),
"Enter your homeserver": MessageLookupByLibrary.simpleMessage(
"Escribe o teu servidor de inicio"),
"File name": MessageLookupByLibrary.simpleMessage("Nome do ficheiro"),
"File size": MessageLookupByLibrary.simpleMessage("Tamaño do ficheiro"),
"FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"Forward": MessageLookupByLibrary.simpleMessage("Reenviar"),
"Friday": MessageLookupByLibrary.simpleMessage("Venres"),
"From joining":
MessageLookupByLibrary.simpleMessage("Desde que se una"),
"From the invitation":
MessageLookupByLibrary.simpleMessage("Desde o convite"),
"Group": MessageLookupByLibrary.simpleMessage("Grupo"),
"Group description":
MessageLookupByLibrary.simpleMessage("Descrición do grupo"),
"Group description has been changed":
MessageLookupByLibrary.simpleMessage("Mudou a descrición do grupo"),
"Group is public":
MessageLookupByLibrary.simpleMessage("O grupo é público"),
"Guests are forbidden":
MessageLookupByLibrary.simpleMessage("Non se permiten convidadas"),
"Guests can join":
MessageLookupByLibrary.simpleMessage("Permítense convidadas"),
"Help": MessageLookupByLibrary.simpleMessage("Axuda"),
"Homeserver is not compatible": MessageLookupByLibrary.simpleMessage(
"Servidor de inicio non compatible"),
"How are you today?":
MessageLookupByLibrary.simpleMessage("¿Que tal estás hoxe?"),
"ID": MessageLookupByLibrary.simpleMessage("ID"),
"Identity": MessageLookupByLibrary.simpleMessage("Identidade"),
"Invite contact":
MessageLookupByLibrary.simpleMessage("Convidar contacto"),
"Invited": MessageLookupByLibrary.simpleMessage("Convidado"),
"Invited users only":
MessageLookupByLibrary.simpleMessage("Só usuarias convidadas"),
"It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/":
MessageLookupByLibrary.simpleMessage(
"Semella que non tes os servizos de google no teu dispositivo. Ben feito! a túa privacidade agradécecho! Para recibir notificacións push en FluffyChat recomendamos usar microG: https://microg.org/"),
"Kick from chat":
MessageLookupByLibrary.simpleMessage("Expulsar da conversa"),
"Last seen IP": MessageLookupByLibrary.simpleMessage("Última IP vista"),
"Leave": MessageLookupByLibrary.simpleMessage("Saír"),
"Left the chat":
MessageLookupByLibrary.simpleMessage("Deixar a conversa"),
"License": MessageLookupByLibrary.simpleMessage("Licenza"),
"Light": MessageLookupByLibrary.simpleMessage("Claro"),
"Load more...": MessageLookupByLibrary.simpleMessage("Cargar máis..."),
"Loading... Please wait":
MessageLookupByLibrary.simpleMessage("Cargando... Agarda"),
"Login": MessageLookupByLibrary.simpleMessage("Conexión"),
"Logout": MessageLookupByLibrary.simpleMessage("Desconectar"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Converter en moderadora"),
"Make an admin":
MessageLookupByLibrary.simpleMessage("Converter en administradora"),
"Make sure the identifier is valid":
MessageLookupByLibrary.simpleMessage(
"Asegúrate de que o identificador é válido"),
"Message will be removed for all participants":
MessageLookupByLibrary.simpleMessage(
"A mensaxe eliminarase para todas as participantes"),
"Moderator": MessageLookupByLibrary.simpleMessage("Moderadora"),
"Monday": MessageLookupByLibrary.simpleMessage("Luns"),
"Mute chat": MessageLookupByLibrary.simpleMessage("Acalar conversa"),
"New message in FluffyChat":
MessageLookupByLibrary.simpleMessage("Nova mensaxe en FluffyChat"),
"New private chat":
MessageLookupByLibrary.simpleMessage("Nova conversa privada"),
"No emotes found. 😕":
MessageLookupByLibrary.simpleMessage("Non hai emotes. 😕"),
"No permission": MessageLookupByLibrary.simpleMessage("Sen permiso"),
"No rooms found...":
MessageLookupByLibrary.simpleMessage("Non se atoparon salas..."),
"None": MessageLookupByLibrary.simpleMessage("Ningún"),
"Not supported in web":
MessageLookupByLibrary.simpleMessage("Non soportado na web"),
"Oops something went wrong...":
MessageLookupByLibrary.simpleMessage("Ooooi, algo fallou..."),
"Open app to read messages":
MessageLookupByLibrary.simpleMessage("Abrir a app e ler mensaxes"),
"Open camera": MessageLookupByLibrary.simpleMessage("Abrir cámara"),
"Participating user devices": MessageLookupByLibrary.simpleMessage(
"Dispositivos das usuarias participantes"),
"Password": MessageLookupByLibrary.simpleMessage("Contrasinal"),
"Pick image":
MessageLookupByLibrary.simpleMessage("Escolle unha imaxe"),
"Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
MessageLookupByLibrary.simpleMessage(
"Ten en conta que polo de agora precisas Pantalaimon para o cifrado extremo-a-extremo."),
"Please choose a username":
MessageLookupByLibrary.simpleMessage("Escolle un nome de usuaria"),
"Please enter a matrix identifier":
MessageLookupByLibrary.simpleMessage(
"Escribe un identificador matrix"),
"Please enter your password":
MessageLookupByLibrary.simpleMessage("Escribe o teu contrasinal"),
"Please enter your username": MessageLookupByLibrary.simpleMessage(
"Escribe o teu nome de usuaria"),
"Public Rooms": MessageLookupByLibrary.simpleMessage("Salas públicas"),
"Recording": MessageLookupByLibrary.simpleMessage("Gravando"),
"Reject": MessageLookupByLibrary.simpleMessage("Rexeitar"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Volta a unirte"),
"Remove": MessageLookupByLibrary.simpleMessage("Eliminar"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
"Quitar todos os outros dispositivos"),
"Remove device":
MessageLookupByLibrary.simpleMessage("Quitar dispositivo"),
"Remove exile": MessageLookupByLibrary.simpleMessage("Quitar o veto"),
"Remove message":
MessageLookupByLibrary.simpleMessage("Eliminar mensaxe"),
"Render rich message content": MessageLookupByLibrary.simpleMessage(
"Mostrar contido enriquecido da mensaxe"),
"Reply": MessageLookupByLibrary.simpleMessage("Responder"),
"Request permission":
MessageLookupByLibrary.simpleMessage("Solicitar permiso"),
"Request to read older messages": MessageLookupByLibrary.simpleMessage(
"Solicitar ler mensaxes antigas"),
"Revoke all permissions":
MessageLookupByLibrary.simpleMessage("Revogar tódolos permisos"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("A sala foi actualizada"),
"Saturday": MessageLookupByLibrary.simpleMessage("Sábado"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Buscar un chat"),
"Seen a long time ago":
MessageLookupByLibrary.simpleMessage("Hai moito que non aparece"),
"Send": MessageLookupByLibrary.simpleMessage("Enviar"),
"Send a message":
MessageLookupByLibrary.simpleMessage("Enviar unha mensaxe"),
"Send file": MessageLookupByLibrary.simpleMessage("Enviar ficheiro"),
"Send image": MessageLookupByLibrary.simpleMessage("Enviar imaxe"),
"Set a profile picture":
MessageLookupByLibrary.simpleMessage("Establecer foto do perfil"),
"Set group description": MessageLookupByLibrary.simpleMessage(
"Establecer descrición do grupo"),
"Set invitation link": MessageLookupByLibrary.simpleMessage(
"Establecer ligazón do convite"),
"Set status": MessageLookupByLibrary.simpleMessage("Establecer estado"),
"Settings": MessageLookupByLibrary.simpleMessage("Axustes"),
"Share": MessageLookupByLibrary.simpleMessage("Compartir"),
"Sign up": MessageLookupByLibrary.simpleMessage("Rexistro"),
"Skip": MessageLookupByLibrary.simpleMessage("Saltar"),
"Source code": MessageLookupByLibrary.simpleMessage("Código fonte"),
"Start your first chat :-)": MessageLookupByLibrary.simpleMessage(
"Abre a primeira conversa :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Enviar"),
"Sunday": MessageLookupByLibrary.simpleMessage("Domingo"),
"System": MessageLookupByLibrary.simpleMessage("Sistema"),
"Tap to show menu":
MessageLookupByLibrary.simpleMessage("Toca para mostrar menú"),
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage("O cifrado está corrompido"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("Non concordan"),
"They Match": MessageLookupByLibrary.simpleMessage("Concordan"),
"This room has been archived.":
MessageLookupByLibrary.simpleMessage("A sala foi arquivada."),
"Thursday": MessageLookupByLibrary.simpleMessage("Xoves"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Inténtao outra vez"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Martes"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Desbloquear dispositivo"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Dispositivo descoñecido"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
"Algoritmo de cifrado descoñecido"),
"Unmute chat": MessageLookupByLibrary.simpleMessage("Reactivar chat"),
"Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage(
"¿Usar cores compatibles con Amoled?"),
"Username": MessageLookupByLibrary.simpleMessage("Nome de usuaria"),
"Verify": MessageLookupByLibrary.simpleMessage("Verificar"),
"Verify User":
MessageLookupByLibrary.simpleMessage("Verificar usuaria"),
"Video call": MessageLookupByLibrary.simpleMessage("Chamada de vídeo"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Visibilidade do historial da conversa"),
"Visible for all participants": MessageLookupByLibrary.simpleMessage(
"Visible para todas as participantes"),
"Visible for everyone":
MessageLookupByLibrary.simpleMessage("Visible para todas"),
"Voice message": MessageLookupByLibrary.simpleMessage("Mensaxe de voz"),
"Wallpaper": MessageLookupByLibrary.simpleMessage("Fondo da conversa"),
"Wednesday": MessageLookupByLibrary.simpleMessage("Mércores"),
"Welcome to the cutest instant messenger in the matrix network.":
MessageLookupByLibrary.simpleMessage(
"Benvida a mensaxería instantánea más cuquiña da rede matrix."),
"Who is allowed to join this group":
MessageLookupByLibrary.simpleMessage(
"Quen se pode unir a este grupo"),
"Write a message...":
MessageLookupByLibrary.simpleMessage("Escribe unha mensaxe..."),
"Yes": MessageLookupByLibrary.simpleMessage("Si"),
"You": MessageLookupByLibrary.simpleMessage("Ti"),
"You are invited to this chat":
MessageLookupByLibrary.simpleMessage("Estás convidada a este chat"),
"You are no longer participating in this chat":
MessageLookupByLibrary.simpleMessage(
"Xa non participas desta conversa"),
"You cannot invite yourself":
MessageLookupByLibrary.simpleMessage("Non podes autoconvidarte"),
"You have been banned from this chat":
MessageLookupByLibrary.simpleMessage(
"Foches vetada nesta conversa"),
"You won\'t be able to disable the encryption anymore. Are you sure?":
MessageLookupByLibrary.simpleMessage(
"Non poderás desactivar o cifrado posteriormente, ¿estás certo?"),
"Your own username":
MessageLookupByLibrary.simpleMessage("O teu nome de usuaria"),
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("alias"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Escribe a frase de paso de seguridade ou chave de recuperación para almacenar as chaves."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"Para poder conectar a outra persoa, escribe a túa frase de paso ou chave de recuperación."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Escribe frase de paso de almacenaxe segura ou chave de recuperación para verificar a túa sesión."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys": MessageLookupByLibrary.simpleMessage(
"Almacenaches as chaves correctamente!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
"changedTheChatPermissions": m7,
"changedTheDisplaynameTo": m8,
"changedTheGuestAccessRules": m9,
"changedTheGuestAccessRulesTo": m10,
"changedTheHistoryVisibility": m11,
"changedTheHistoryVisibilityTo": m12,
"changedTheJoinRules": m13,
"changedTheJoinRulesTo": m14,
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Comparar e asegurarse de que estas emoticonas concordan no outro dispositivo:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Compara e asegúrate de que os seguintes números concordan cos do outro dispositivo:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled": MessageLookupByLibrary.simpleMessage(
"A Sinatura-Cruzada está desactivada"),
"crossSigningEnabled":
MessageLookupByLibrary.simpleMessage("Sinatura-Cruzada activada"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
"emoteExists":
MessageLookupByLibrary.simpleMessage("Xa existe ese emote!"),
"emoteInvalid": MessageLookupByLibrary.simpleMessage(
"Atallo do emote non é válido!"),
"emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage(
"Escribe un atallo e asocialle unha imaxe!"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Frase de paso ou chave de recuperación incorrecta"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...":
MessageLookupByLibrary.simpleMessage("está escribindo..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"¿É correcta esta chave do dispositivo?"),
"joinedTheChat": m29,
"keysCached":
MessageLookupByLibrary.simpleMessage("Chaves almacenadas"),
"keysMissing": MessageLookupByLibrary.simpleMessage("Faltan as chaves"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest": MessageLookupByLibrary.simpleMessage(
"Nova solicitude de verificación!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Polo momento FluffyChat non soporta a activación da Sinatura-Cruzada. Actívaa desde Element."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"Actualmente Fluffychat non soporta a activación da Copia En Liña das Chaves. Actívaa desde Element."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("OK"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"Copia de apoio En liña das Chaves desactivada"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"Copia de Apoio das Chaves activada"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"frase de paso ou chave de recuperación"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
"removedBy": m39,
"seenByUser": m40,
"seenByUserAndCountOthers": m41,
"seenByUserAndUser": m42,
"sentAFile": m43,
"sentAPicture": m44,
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("Sesión verificada"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Sesión descoñecida, por favor verifícaa"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
"userAndOthersAreTyping": m55,
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59,
"verifiedSession": MessageLookupByLibrary.simpleMessage(
"Sesión verificada correctamente!"),
"verifyManual":
MessageLookupByLibrary.simpleMessage("Verificar manualmente"),
"verifyStart":
MessageLookupByLibrary.simpleMessage("Comezar verificación"),
"verifySuccess":
MessageLookupByLibrary.simpleMessage("Verificaches correctamente!"),
"verifyTitle":
MessageLookupByLibrary.simpleMessage("Verificando a outra conta"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"Agardando a que a outra parte acepte a solicitude..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"Agardando a que a outra parte acepte as emoticonas..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"Agardando a que a outra parte acepte os números...")
};
}

599
lib/l10n/messages_hr.dart Normal file
View File

@ -0,0 +1,599 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a hr locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'hr';
static m0(username) => "${username} je prihvatio/la poziv";
static m1(username) => "${username} je aktivirao/la obostrano šifriranje";
static m60(username) =>
"Prihvatiti ovaj zahtjev za potvrđivanje od ${username}?";
static m2(username, targetName) =>
"${username} je isključio/la ${targetName}";
static m3(homeserver) => "Standardno ćeš biti povezan/a s ${homeserver}";
static m4(username) => "${username} je promijenio/la avatar chata";
static m5(username, description) =>
"${username} je promijenio/la opis chata u: „${description}";
static m6(username, chatname) =>
"${username} je promijenio/la ime chata u: „${chatname}";
static m7(username) => "${username} je promijenio/la dozvole chata";
static m8(username, displayname) =>
"${username} je promijenio/la prikazano ime u: ${displayname}";
static m9(username) =>
"${username} je promijenio/la pravila pristupa za goste";
static m10(username, rules) =>
"${username} je promijenio/la pravila pristupa za goste u: ${rules}";
static m11(username) => "${username} je promijenio/la vidljivost kronologije";
static m12(username, rules) =>
"${username} je promijenio/la vidljivost kronologije u: ${rules}";
static m13(username) => "${username} je promijenio/la pravila pridruživanja";
static m14(username, joinRules) =>
"${username} je promijenio/la pravila pridruživanja u: ${joinRules}";
static m15(username) => "${username} je promijenio/la avatar profila";
static m16(username) => "${username} je promijenio/la pseudonime soba";
static m17(username) => "${username} je promijenio/la poveznicu poziva";
static m18(error) => "Neuspjelo dešifriranje poruke: ${error}";
static m19(count) => "${count} sudionika";
static m20(username) => "${username} je stvorio/la chat";
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${day}. ${month}. ${year}.";
static m23(month, day) => "${day}. ${month}.";
static m24(displayname) => "Grupa s ${displayname}";
static m25(username, targetName) =>
"${username} je povukao/la poziv za ${targetName}";
static m26(groupName) => "Pozovi kontakt u ${groupName}";
static m27(username, link) =>
"${username} te je pozvao/la u FluffyChat. \n1. Instaliraj FluffyChat: http://fluffy.chat \n2. Registriraj ili prijavi se \n3. Otvori poveznicu poziva: ${link}";
static m28(username, targetName) => "${username} je pozvao/la ${targetName}";
static m29(username) => "${username} se pridružio/la chatu";
static m30(username, targetName) => "${username} je izbacio/la ${targetName}";
static m31(username, targetName) =>
"${username} je izbacio/la i isključio/la ${targetName}";
static m32(localizedTimeShort) => "Zadnja aktivnost: ${localizedTimeShort}";
static m33(count) => "Učitaj još ${count} sudionika";
static m34(homeserver) => "Prijavi se na ${homeserver}";
static m35(number) => "${number} odabrano";
static m36(fileName) => "Sviraj ${fileName}";
static m37(username) => "${username} je preuredio/la događaj";
static m38(username) => "${username} je odbio/la poziv";
static m39(username) => "Uklonjeno od ${username}";
static m40(username) => "Viđeno od ${username}";
static m41(username, count) =>
"Viđeno od ${username} i još ${count} korisnika";
static m42(username, username2) => "Viđeno od ${username} i ${username2}";
static m43(username) => "${username} ja poslao/la datoteku";
static m44(username) => "${username} ja poslao/la sliku";
static m45(username) => "${username} je poslao/la naljepnicu";
static m46(username) => "${username} ja poslao/la video";
static m47(username) => "${username} ja poslao/la audio";
static m48(username) => "${username} je dijelio/la mjesto";
static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}";
static m50(username, targetName) =>
"${username} je ponovo uključio/la ${targetName}";
static m51(type) => "Nepoznata vrsta događaja „${type}";
static m52(unreadCount) => "${unreadCount} nepročitana chata";
static m53(unreadEvents) => "${unreadEvents} nepročitane poruke";
static m54(unreadEvents, unreadChats) =>
"${unreadEvents} nepročitane poruke u ${unreadChats} chata";
static m55(username, count) => "${username} i još ${count} korisnika pišu …";
static m56(username, username2) => "${username} i ${username2} pišu …";
static m57(username) => "${username} piše …";
static m58(username) => "${username} je napustio/la chat";
static m59(username, type) => "${username} ja poslao/la ${type} događaj";
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Opcionalno) Ime grupe"),
"About": MessageLookupByLibrary.simpleMessage("Informacije"),
"Accept": MessageLookupByLibrary.simpleMessage("Prihvati"),
"Account": MessageLookupByLibrary.simpleMessage("Račun"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Podaci računa"),
"Add a group description":
MessageLookupByLibrary.simpleMessage("Dodaj opis grupe"),
"Admin": MessageLookupByLibrary.simpleMessage("Administrator"),
"Already have an account?":
MessageLookupByLibrary.simpleMessage("Već imaš račun?"),
"Anyone can join":
MessageLookupByLibrary.simpleMessage("Svatko se može pridružiti"),
"Archive": MessageLookupByLibrary.simpleMessage("Arhiva"),
"Archived Room":
MessageLookupByLibrary.simpleMessage("Arhivirana soba"),
"Are guest users allowed to join": MessageLookupByLibrary.simpleMessage(
"Smiju li se gosti pridružiti grupi"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("Sigurno?"),
"Authentication":
MessageLookupByLibrary.simpleMessage("Autentifikacija"),
"Avatar has been changed":
MessageLookupByLibrary.simpleMessage("Avatar je promijenjen"),
"Ban from chat":
MessageLookupByLibrary.simpleMessage("Isključi iz chata"),
"Banned": MessageLookupByLibrary.simpleMessage("Isključen"),
"Block Device": MessageLookupByLibrary.simpleMessage("Blokiraj uređaj"),
"Cancel": MessageLookupByLibrary.simpleMessage("Odustani"),
"Change the homeserver": MessageLookupByLibrary.simpleMessage(
"Promijeni domaćeg poslužitelja"),
"Change the name of the group":
MessageLookupByLibrary.simpleMessage("Promijeni ime grupe"),
"Change the server":
MessageLookupByLibrary.simpleMessage("Promijeni poslužitelja"),
"Change wallpaper":
MessageLookupByLibrary.simpleMessage("Promijeni sliku pozadine"),
"Change your style":
MessageLookupByLibrary.simpleMessage("Promijeni svoj stil"),
"Changelog": MessageLookupByLibrary.simpleMessage("Zapis promjena"),
"Chat": MessageLookupByLibrary.simpleMessage("Chat"),
"Chat details": MessageLookupByLibrary.simpleMessage("Detalji chata"),
"Choose a strong password":
MessageLookupByLibrary.simpleMessage("Odaberi snažnu lozinku"),
"Choose a username":
MessageLookupByLibrary.simpleMessage("Odaberi korisničko ime"),
"Close": MessageLookupByLibrary.simpleMessage("Zatvori"),
"Confirm": MessageLookupByLibrary.simpleMessage("Potvrdi"),
"Connect": MessageLookupByLibrary.simpleMessage("Spoji"),
"Connection attempt failed":
MessageLookupByLibrary.simpleMessage("Neuspio pokušaj povezivanja"),
"Contact has been invited to the group":
MessageLookupByLibrary.simpleMessage("Kontakt je pozvan u grupu"),
"Content viewer":
MessageLookupByLibrary.simpleMessage("Prikazivač sadržaja"),
"Copied to clipboard":
MessageLookupByLibrary.simpleMessage("Kopirano u međuspremnik"),
"Copy": MessageLookupByLibrary.simpleMessage("Kopiraj"),
"Could not set avatar": MessageLookupByLibrary.simpleMessage(
"Neuspjelo postavljanje avatara"),
"Could not set displayname": MessageLookupByLibrary.simpleMessage(
"Neuspjelo postavljanje prikaznog imena"),
"Create": MessageLookupByLibrary.simpleMessage("Stvori"),
"Create account now":
MessageLookupByLibrary.simpleMessage("Stvori račun sada"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Stvori novu grupu"),
"Currently active":
MessageLookupByLibrary.simpleMessage("Trenutačno aktivni"),
"Dark": MessageLookupByLibrary.simpleMessage("Tamna"),
"Delete": MessageLookupByLibrary.simpleMessage("Izbriži"),
"Delete message":
MessageLookupByLibrary.simpleMessage("Izbriži poruku"),
"Deny": MessageLookupByLibrary.simpleMessage("Odbij"),
"Device": MessageLookupByLibrary.simpleMessage("Uređaj"),
"Devices": MessageLookupByLibrary.simpleMessage("Uređaji"),
"Discard picture": MessageLookupByLibrary.simpleMessage("Odbaci sliku"),
"Displayname has been changed": MessageLookupByLibrary.simpleMessage(
"Prikazno ime je promijenjeno"),
"Donate": MessageLookupByLibrary.simpleMessage("Doniraj"),
"Download file":
MessageLookupByLibrary.simpleMessage("Preuzmi datoteku"),
"Edit Jitsi instance":
MessageLookupByLibrary.simpleMessage("Uredi Jitsi primjerak"),
"Edit displayname":
MessageLookupByLibrary.simpleMessage("Uredi prikazano ime"),
"Emote Settings":
MessageLookupByLibrary.simpleMessage("Postavke emojija"),
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Kratica emota"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Prazan chat"),
"Encryption": MessageLookupByLibrary.simpleMessage("Šifriranje"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Algoritam šifriranja"),
"Encryption is not enabled":
MessageLookupByLibrary.simpleMessage("Šifriranje nije aktivirano"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"Obostrano šifriranje je trenutačno u beta stanju! Koriti na vlastitu odgovornost!"),
"End-to-end encryption settings": MessageLookupByLibrary.simpleMessage(
"Postavke obostranog šifriranja"),
"Enter a group name":
MessageLookupByLibrary.simpleMessage("Upiši ime grupe"),
"Enter a username":
MessageLookupByLibrary.simpleMessage("Upiši korisničko ime"),
"Enter your homeserver": MessageLookupByLibrary.simpleMessage(
"Upiši svog domaćeg poslužitelja"),
"File name": MessageLookupByLibrary.simpleMessage("Ime datoteke"),
"File size": MessageLookupByLibrary.simpleMessage("Veličina datoteke"),
"FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"Forward": MessageLookupByLibrary.simpleMessage("Proslijedi"),
"Friday": MessageLookupByLibrary.simpleMessage("Petak"),
"From joining":
MessageLookupByLibrary.simpleMessage("Od pridruživanja"),
"From the invitation":
MessageLookupByLibrary.simpleMessage("Od poziva"),
"Group": MessageLookupByLibrary.simpleMessage("Grupiraj"),
"Group description": MessageLookupByLibrary.simpleMessage("Opis grupe"),
"Group description has been changed":
MessageLookupByLibrary.simpleMessage("Opis grupe je promijenjen"),
"Group is public":
MessageLookupByLibrary.simpleMessage("Grupa je javna"),
"Guests are forbidden":
MessageLookupByLibrary.simpleMessage("Gosti su zabranjeni"),
"Guests can join":
MessageLookupByLibrary.simpleMessage("Gosti se mogu pridružiti"),
"Help": MessageLookupByLibrary.simpleMessage("Pomoć"),
"Homeserver is not compatible": MessageLookupByLibrary.simpleMessage(
"Domaći poslužitelj nije kompatibilan"),
"How are you today?":
MessageLookupByLibrary.simpleMessage("Kako si danas?"),
"ID": MessageLookupByLibrary.simpleMessage("ID"),
"Identity": MessageLookupByLibrary.simpleMessage("Identitet"),
"Invite contact":
MessageLookupByLibrary.simpleMessage("Pozovi kontakt"),
"Invited": MessageLookupByLibrary.simpleMessage("Pozvan/a"),
"Invited users only":
MessageLookupByLibrary.simpleMessage("Samo pozvani korisnici"),
"It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/":
MessageLookupByLibrary.simpleMessage(
"Čini se da na mobitelu nemaš google usluge. To je dobra odluka za tvoju privatnost! Za primanje push obavijesti u FluffyChatu preporučujemo upotrebu microG-a: https://microg.org/"),
"Kick from chat":
MessageLookupByLibrary.simpleMessage("Izbaci iz chata"),
"Last seen IP":
MessageLookupByLibrary.simpleMessage("Zadnji viđeni IP"),
"Leave": MessageLookupByLibrary.simpleMessage("Napusti"),
"Left the chat":
MessageLookupByLibrary.simpleMessage("Napustio/la je chat"),
"License": MessageLookupByLibrary.simpleMessage("Licenca"),
"Light": MessageLookupByLibrary.simpleMessage("Svjetla"),
"Load more...": MessageLookupByLibrary.simpleMessage("Učitaj više …"),
"Loading... Please wait":
MessageLookupByLibrary.simpleMessage("Učitava se … Pričekaj"),
"Login": MessageLookupByLibrary.simpleMessage("Prijava"),
"Logout": MessageLookupByLibrary.simpleMessage("Odjava"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Postavi kao voditelja"),
"Make an admin":
MessageLookupByLibrary.simpleMessage("Postavi kao administratora"),
"Make sure the identifier is valid":
MessageLookupByLibrary.simpleMessage(
"Provjeri je li identifikator ispravan"),
"Message will be removed for all participants":
MessageLookupByLibrary.simpleMessage(
"Poruke će se ukloniti za sve sudionike"),
"Moderator": MessageLookupByLibrary.simpleMessage("Voditelj"),
"Monday": MessageLookupByLibrary.simpleMessage("Ponedjeljak"),
"Mute chat":
MessageLookupByLibrary.simpleMessage("Isključi zvuk chata"),
"New message in FluffyChat":
MessageLookupByLibrary.simpleMessage("Nova poruka u FluffyChatu"),
"New private chat":
MessageLookupByLibrary.simpleMessage("Novi privatni chat"),
"No emotes found. 😕":
MessageLookupByLibrary.simpleMessage("Nema emota. 😕"),
"No permission": MessageLookupByLibrary.simpleMessage("Bez dozvole"),
"No rooms found...":
MessageLookupByLibrary.simpleMessage("Nema pronađenih soba …"),
"None": MessageLookupByLibrary.simpleMessage("Ništa"),
"Not supported in web":
MessageLookupByLibrary.simpleMessage("Nije podržano u internetu"),
"Oops something went wrong...": MessageLookupByLibrary.simpleMessage(
"Ups, došlo je do neke greške …"),
"Open app to read messages": MessageLookupByLibrary.simpleMessage(
"Za čitanje poruka, otvori program"),
"Open camera": MessageLookupByLibrary.simpleMessage("Otvori kameru"),
"Participating user devices": MessageLookupByLibrary.simpleMessage(
"Sudjelujući korisnički uređaji"),
"Password": MessageLookupByLibrary.simpleMessage("Lozinka"),
"Pick image": MessageLookupByLibrary.simpleMessage("Odaberi sliku"),
"Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
MessageLookupByLibrary.simpleMessage(
"Za sada trebaš Pantalaimon za obostrano šifriranje."),
"Please choose a username":
MessageLookupByLibrary.simpleMessage("Odaberi korisničko ime"),
"Please enter a matrix identifier":
MessageLookupByLibrary.simpleMessage("Upiši identifikator matrice"),
"Please enter your password":
MessageLookupByLibrary.simpleMessage("Upiši svoju lozinku"),
"Please enter your username":
MessageLookupByLibrary.simpleMessage("Upiši svoje korisničko ime"),
"Public Rooms": MessageLookupByLibrary.simpleMessage("Javne sobe"),
"Recording": MessageLookupByLibrary.simpleMessage("Snimanje"),
"Reject": MessageLookupByLibrary.simpleMessage("Odbij"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Ponovo se pridruži"),
"Remove": MessageLookupByLibrary.simpleMessage("Ukloni"),
"Remove all other devices":
MessageLookupByLibrary.simpleMessage("Ukloni sve druge uređaje"),
"Remove device": MessageLookupByLibrary.simpleMessage("Ukloni uređaj"),
"Remove exile":
MessageLookupByLibrary.simpleMessage("Ukloni izbacivanje"),
"Remove message": MessageLookupByLibrary.simpleMessage("Ukloni poruku"),
"Render rich message content": MessageLookupByLibrary.simpleMessage(
"Prikaži formatirani sadržaj poruke"),
"Reply": MessageLookupByLibrary.simpleMessage("Odgovori"),
"Request permission":
MessageLookupByLibrary.simpleMessage("Zatraži dozvolu"),
"Request to read older messages": MessageLookupByLibrary.simpleMessage(
"Zahtjev za čitanje starijih poruka"),
"Revoke all permissions":
MessageLookupByLibrary.simpleMessage("Opozovi sve dozvole"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("Ova soba je nadograđena"),
"Saturday": MessageLookupByLibrary.simpleMessage("Subota"),
"Search for a chat": MessageLookupByLibrary.simpleMessage("Traži chat"),
"Seen a long time ago":
MessageLookupByLibrary.simpleMessage("Viđeno prije dugo vremena"),
"Send": MessageLookupByLibrary.simpleMessage("Pošalji"),
"Send a message":
MessageLookupByLibrary.simpleMessage("Pošalji poruku"),
"Send file": MessageLookupByLibrary.simpleMessage("Pošalji datoteku"),
"Send image": MessageLookupByLibrary.simpleMessage("Pošalji sliku"),
"Set a profile picture":
MessageLookupByLibrary.simpleMessage("Postavi sliku profila"),
"Set group description":
MessageLookupByLibrary.simpleMessage("Postavi opis grupe"),
"Set invitation link": MessageLookupByLibrary.simpleMessage(
"Pošalji poveznicu za pozivnicu"),
"Set status": MessageLookupByLibrary.simpleMessage("Postavi stanje"),
"Settings": MessageLookupByLibrary.simpleMessage("Postavke"),
"Share": MessageLookupByLibrary.simpleMessage("Dijeli"),
"Sign up": MessageLookupByLibrary.simpleMessage("Prijavi se"),
"Skip": MessageLookupByLibrary.simpleMessage("Preskoči"),
"Source code": MessageLookupByLibrary.simpleMessage("Izvorni kȏd"),
"Start your first chat :-)":
MessageLookupByLibrary.simpleMessage("Počni svoj prvi chat :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Pošalji"),
"Sunday": MessageLookupByLibrary.simpleMessage("Nedjelja"),
"System": MessageLookupByLibrary.simpleMessage("Sustav"),
"Tap to show menu":
MessageLookupByLibrary.simpleMessage("Dodirni za prikaz izbornika"),
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage("Šifriranje je oštećeno"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("Ne poklapaju se"),
"They Match": MessageLookupByLibrary.simpleMessage("Poklapaju se"),
"This room has been archived.":
MessageLookupByLibrary.simpleMessage("Ova soba je arhivirana."),
"Thursday": MessageLookupByLibrary.simpleMessage("Četvrtak"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Pokušaj ponovo poslati"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Utorak"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Deblokiraj uređaj"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Nepoznat uređaj"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
"Nepoznat algoritam šifriranja"),
"Unmute chat":
MessageLookupByLibrary.simpleMessage("Uključi zvuk chata"),
"Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage(
"Koristiti Amoled kompatibilne boje?"),
"Username": MessageLookupByLibrary.simpleMessage("Korisničko ime"),
"Verify": MessageLookupByLibrary.simpleMessage("Provjeri"),
"Verify User":
MessageLookupByLibrary.simpleMessage("Provjeri korisnika"),
"Video call": MessageLookupByLibrary.simpleMessage("Video poziv"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Vidljivost kronologije chata"),
"Visible for all participants":
MessageLookupByLibrary.simpleMessage("Vidljivo za sve sudionike"),
"Visible for everyone":
MessageLookupByLibrary.simpleMessage("Vidljivo za sve"),
"Voice message":
MessageLookupByLibrary.simpleMessage("Glasovna poruka"),
"Wallpaper": MessageLookupByLibrary.simpleMessage("Slika pozadine"),
"Wednesday": MessageLookupByLibrary.simpleMessage("Srijeda"),
"Welcome to the cutest instant messenger in the matrix network.":
MessageLookupByLibrary.simpleMessage(
"Lijep pozdrav u najslađi program za čavrljanje u matrix-mreži."),
"Who is allowed to join this group":
MessageLookupByLibrary.simpleMessage(
"Tko se smije pridružiti grupi"),
"Write a message...":
MessageLookupByLibrary.simpleMessage("Napiši poruku …"),
"Yes": MessageLookupByLibrary.simpleMessage("Da"),
"You": MessageLookupByLibrary.simpleMessage("Ti"),
"You are invited to this chat":
MessageLookupByLibrary.simpleMessage("Pozvan/a si u ovaj chat"),
"You are no longer participating in this chat":
MessageLookupByLibrary.simpleMessage(
"Više ne sudjeluješ u ovom chatu"),
"You cannot invite yourself":
MessageLookupByLibrary.simpleMessage("Sebe ne možeš pozvati"),
"You have been banned from this chat":
MessageLookupByLibrary.simpleMessage(
"Isključen/a si iz ovog chata"),
"You won\'t be able to disable the encryption anymore. Are you sure?":
MessageLookupByLibrary.simpleMessage(
"Više nećeš moći deaktivirati šifriranje. Sigurno?"),
"Your own username":
MessageLookupByLibrary.simpleMessage("Tvoje korisničko ime"),
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("pseudonim"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Upiši svoju sigurnosnu lozinku ili ključ za obnavljanje, kako bi se ključevi spremili u predmemoriju."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"Za potpisivanje druge osobe, upiši svoju sigurnosnu lozinku ili ključ za obnavljanje."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Za potvrđivanje tvoje sesije, upiši svoju sigurnosnu lozinku ili ključ za obnavljanje."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys": MessageLookupByLibrary.simpleMessage(
"Uspješno međuspremljeni ključevi!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
"changedTheChatPermissions": m7,
"changedTheDisplaynameTo": m8,
"changedTheGuestAccessRules": m9,
"changedTheGuestAccessRulesTo": m10,
"changedTheHistoryVisibility": m11,
"changedTheHistoryVisibilityTo": m12,
"changedTheJoinRules": m13,
"changedTheJoinRulesTo": m14,
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Usporedi i provjeri, poklapaju li se sljedeći emojiji s onima drugog uređaja:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Usporedi i provjeri, poklapaju li se sljedeći brojevi s onima drugog uređaja:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled": MessageLookupByLibrary.simpleMessage(
"Unakrsno potpisivanje je deaktivirano"),
"crossSigningEnabled": MessageLookupByLibrary.simpleMessage(
"Unakrsno potpisivanje je aktivirano"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
"emoteExists":
MessageLookupByLibrary.simpleMessage("Emot već postoji!"),
"emoteInvalid":
MessageLookupByLibrary.simpleMessage("Neispravna kratica emota!"),
"emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage(
"Moraš odabrati jednu kraticu emota i sliku!"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Neispravna lozinka ili ključ za obnavljanje"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("piše …"),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"Je li sljedeći ključ uređaja ispravan?"),
"joinedTheChat": m29,
"keysCached": MessageLookupByLibrary.simpleMessage(
"Ključevi su spremljeni u predmemoriji"),
"keysMissing":
MessageLookupByLibrary.simpleMessage("Nedostaju ključevi"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest":
MessageLookupByLibrary.simpleMessage("Novi zahtjev za provjeru!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat trenutačno ne podržava unakrsno potpisivanje. Aktiviraj je pomoću Element-a."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat trenutačno ne podržava online sigurnosnu kopiju ključeva. Aktiviraj je pomoću Element-a."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("u redu"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"Online sigurnosna kopija ključeva je deaktivirana"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"Online sigurnosna kopija ključeva je aktivirana"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Lozinka ili ključ za obnavljanje"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
"removedBy": m39,
"seenByUser": m40,
"seenByUserAndCountOthers": m41,
"seenByUserAndUser": m42,
"sentAFile": m43,
"sentAPicture": m44,
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("Sesija je provjerena"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify":
MessageLookupByLibrary.simpleMessage("Nepoznata sesija, provjeri"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
"userAndOthersAreTyping": m55,
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59,
"verifiedSession":
MessageLookupByLibrary.simpleMessage("Uspješno provjerena sesija!"),
"verifyManual": MessageLookupByLibrary.simpleMessage("Provjeri ručno"),
"verifyStart": MessageLookupByLibrary.simpleMessage("Pokreni provjeru"),
"verifySuccess":
MessageLookupByLibrary.simpleMessage("Uspješno si provjerio/la!"),
"verifyTitle":
MessageLookupByLibrary.simpleMessage("Provjeravanje drugog računa"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"Čekanje na partnera, da prihvati zahtjeva …"),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"Čekanje na partnera, da prihvati emoji …"),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"Čekanje na partnera, da prihvati brojeve …")
};
}

View File

@ -24,6 +24,8 @@ class MessageLookup extends MessageLookupByLibrary {
static m1(username) =>
"${username} aktiválta a végpontól-végpontig titkosítást";
static m60(username) => "Elfogadod ${username} hitelesítési kérelmét?";
static m2(username, targetName) => "${username} kitiltotta ${targetName}-t";
static m3(homeserver) => "Alapértelmezésben ${homeserver}-hoz csatlakozol";
@ -64,6 +66,9 @@ class MessageLookup extends MessageLookupByLibrary {
static m17(username) => "${username} módosította a meghívó linket";
static m18(error) =>
"Nem sikerült visszafejteni a titkosított üzenetet: ${error}";
static m19(count) => "${count} résztvevő";
static m20(username) => "${username} létrehozta a csevegést";
@ -158,6 +163,7 @@ class MessageLookup extends MessageLookupByLibrary {
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Nem kötelező) Csoport név"),
"About": MessageLookupByLibrary.simpleMessage("Névjegy"),
"Accept": MessageLookupByLibrary.simpleMessage("Elfogad"),
"Account": MessageLookupByLibrary.simpleMessage("Fiók"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Fiók információk"),
@ -172,7 +178,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Archived Room":
MessageLookupByLibrary.simpleMessage("Archivált szoba"),
"Are guest users allowed to join": MessageLookupByLibrary.simpleMessage(
"Csatlakozhatnak-e vendég felhasználók"),
"Csatlakozhatnak vendég felhasználók"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("Biztos?"),
"Authentication": MessageLookupByLibrary.simpleMessage("Hitelesítés"),
"Avatar has been changed":
@ -180,6 +186,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Ban from chat":
MessageLookupByLibrary.simpleMessage("Csevegésből kitiltás"),
"Banned": MessageLookupByLibrary.simpleMessage("Kitiltva"),
"Block Device":
MessageLookupByLibrary.simpleMessage("Eszköz blokkolása"),
"Cancel": MessageLookupByLibrary.simpleMessage("Mégsem"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("Matrix szerver váltás"),
@ -221,6 +229,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Új fiók létrehozása"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Új csoport létrehozása"),
"Currently active":
MessageLookupByLibrary.simpleMessage("Jelenleg aktív"),
"Dark": MessageLookupByLibrary.simpleMessage("Sötét"),
"Delete": MessageLookupByLibrary.simpleMessage("Törlés"),
"Delete message":
@ -238,10 +248,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Edit displayname": MessageLookupByLibrary.simpleMessage(
"Megjelenítési név módosítása"),
"Emote Settings":
MessageLookupByLibrary.simpleMessage("Hangulatjel beállíŧások"),
MessageLookupByLibrary.simpleMessage("Hangulatjel beállítások"),
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Rövid kód a hangulatjelhez"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Üres csevegés"),
"Encryption": MessageLookupByLibrary.simpleMessage("Titkosítás"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Titkosítási algoritmus"),
"Encryption is not enabled": MessageLookupByLibrary.simpleMessage(
@ -357,6 +368,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Add meg a felhasználónevedet"),
"Public Rooms": MessageLookupByLibrary.simpleMessage("Publikus szoba"),
"Recording": MessageLookupByLibrary.simpleMessage("Felvétel"),
"Reject": MessageLookupByLibrary.simpleMessage("Visszautasít"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Újracsatlakozás"),
"Remove": MessageLookupByLibrary.simpleMessage("Eltávolítás"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
@ -376,9 +388,13 @@ class MessageLookup extends MessageLookupByLibrary {
"Korábbi üzenetekhez való hozzáférés igénylése"),
"Revoke all permissions": MessageLookupByLibrary.simpleMessage(
"Minden jogosultság megvonása"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("Szoba frissítve lett"),
"Saturday": MessageLookupByLibrary.simpleMessage("Szombat"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Csevegés keresése"),
"Seen a long time ago":
MessageLookupByLibrary.simpleMessage("Már régen látta"),
"Send": MessageLookupByLibrary.simpleMessage("Küldés"),
"Send a message":
MessageLookupByLibrary.simpleMessage("Üzenet küldése"),
@ -395,9 +411,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Settings": MessageLookupByLibrary.simpleMessage("Beállítások"),
"Share": MessageLookupByLibrary.simpleMessage("Megosztás"),
"Sign up": MessageLookupByLibrary.simpleMessage("Felíratkozás"),
"Skip": MessageLookupByLibrary.simpleMessage("Kihagy"),
"Source code": MessageLookupByLibrary.simpleMessage("Forráskód"),
"Start your first chat :-)":
MessageLookupByLibrary.simpleMessage("Kezdj el csevegni :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Mehet"),
"Sunday": MessageLookupByLibrary.simpleMessage("Vasárnap"),
"System": MessageLookupByLibrary.simpleMessage("Rendszer"),
"Tap to show menu": MessageLookupByLibrary.simpleMessage(
@ -405,12 +423,17 @@ class MessageLookup extends MessageLookupByLibrary {
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage(
"A titkosítás sérült és megbízhatatlan"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("Nem egyeznek"),
"They Match": MessageLookupByLibrary.simpleMessage("Megegyeznek"),
"This room has been archived.":
MessageLookupByLibrary.simpleMessage("Ez a szoba archiválva lett."),
"Thursday": MessageLookupByLibrary.simpleMessage("Csütörtök"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Próbáld újraküldeni"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Kedd"),
"Unblock Device": MessageLookupByLibrary.simpleMessage(
"Eszköz blokkolásának megszüntetése"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Ismeretlen eszköz"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
@ -420,7 +443,9 @@ class MessageLookup extends MessageLookupByLibrary {
"Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage(
"AmoLED kompatibilis színek használata?"),
"Username": MessageLookupByLibrary.simpleMessage("Felhasználónév"),
"Verify": MessageLookupByLibrary.simpleMessage("Igazol"),
"Verify": MessageLookupByLibrary.simpleMessage("Hitelesít"),
"Verify User":
MessageLookupByLibrary.simpleMessage("Felhasználó hitelesítése"),
"Video call": MessageLookupByLibrary.simpleMessage("Videó hívás"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Csevegési előzmény láthatósága"),
@ -459,8 +484,17 @@ class MessageLookup extends MessageLookupByLibrary {
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("álnév"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, hogy betöltsük a kulcsaidat."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"A másik személy igazolásához, kérlek add meg jelszavadat vagy visszaállítási kulcsodat."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, a munkamenet hitelesítéséhez."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys": MessageLookupByLibrary.simpleMessage(
"Sikeresen betöltöttük a kulcsokat!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
@ -475,8 +509,17 @@ class MessageLookup extends MessageLookupByLibrary {
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Hasonlítsd össze a hangulatjeleket a másik eszközön lévőkkel:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Hasonlítsd össze a számokat a másik eszközön lévőkkel:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled":
MessageLookupByLibrary.simpleMessage("Kereszt-Aláírás kikapcsolva"),
"crossSigningEnabled":
MessageLookupByLibrary.simpleMessage("Kereszt-Aláírás bekapcsolva"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
@ -488,18 +531,37 @@ class MessageLookup extends MessageLookupByLibrary {
"A hangulatjelhez válassz egy képet és egy rövid kód"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Hibás jelszó vagy visszaállítási kulcs"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("gépel..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"Helyes az alábbi eszköz kulcs?"),
"joinedTheChat": m29,
"keysCached": MessageLookupByLibrary.simpleMessage("Kulcsok betöltve"),
"keysMissing":
MessageLookupByLibrary.simpleMessage("Kulcsok hiányoznak"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest":
MessageLookupByLibrary.simpleMessage("Új hitelesítési kérelem!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"FluffyChat jelenleg nem támogatja a Kereszt-Aláírás bekapcsolását. Kérlek engedélyezd Riot-ból."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"FluffyChat jelenleg nem támogatja az Online Kulcs Archívumot (backup). Kérlek engedélyezd Riot-ból."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"Online Kulcs Archívum letiltva"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"Online Kulcs Archívum engedélyezve"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Jelszó vagy visszaállítási kulcs"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
@ -512,11 +574,15 @@ class MessageLookup extends MessageLookupByLibrary {
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("Munkamenet hitelesítve"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Ismeretlen munkamenet, kérlek hitelesítsd"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
@ -524,6 +590,22 @@ class MessageLookup extends MessageLookupByLibrary {
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59
"userSentUnknownEvent": m59,
"verifiedSession": MessageLookupByLibrary.simpleMessage(
"Sikeresen hitelesítetted a munkamenetedet!"),
"verifyManual":
MessageLookupByLibrary.simpleMessage("Kézi hitelesítés"),
"verifyStart":
MessageLookupByLibrary.simpleMessage("Hitelesítés megkezdése"),
"verifySuccess":
MessageLookupByLibrary.simpleMessage("Sikeresen hitelesítettél!"),
"verifyTitle":
MessageLookupByLibrary.simpleMessage("Másik fiók hitelesítése"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"Várakozás partnerre, amíg elfogadja a kérést..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"Várakozás partnere, amíg elfogadja a hangulatjeleket..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"Várakozás partnere, amíg elfogadja a számokat...")
};
}

538
lib/l10n/messages_ja.dart Normal file
View File

@ -0,0 +1,538 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a ja locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'ja';
static m0(username) => "${username} が招待を承諾しました";
static m1(username) => "${username} がエンドツーエンド暗号化を有効にしました";
static m60(username) => "${username} の検証リクエストを承認しますか?";
static m2(username, targetName) => "${username}${targetName}をBANしました";
static m3(homeserver) => "デフォルトで${homeserver}に接続されます";
static m4(username) => "${username}がチャットアバターを変更しました";
static m5(username, description) =>
"${username}がチャットの説明を「${description}」に変更しました";
static m6(username, chatname) => "${username}がチャットの名前を「${chatname}」に変更しました";
static m7(username) => "${username}がチャットの権限を変更しました";
static m8(username, displayname) => "${username}が表示名を「${displayname}」に変更しました";
static m9(username) => "${username}がゲストのアクセスルールを変更しました";
static m10(username, rules) => "${username}がゲストのアクセスルールを${rules}に変更しました";
static m11(username) => "${username}が履歴の表示設定を変更しました";
static m12(username, rules) => "${username}が履歴の表示設定を${rules}に変更しました";
static m13(username) => "${username}が参加ルールを変更しました";
static m14(username, joinRules) => "${username}が参加ルールを${joinRules}に変更しました";
static m15(username) => "${username}がプロフィールのアバターを変更しました";
static m16(username) => "${username}が部屋のエイリアスを変更しました";
static m17(username) => "${username}が招待リンクを変更しました";
static m18(error) => "メッセージを解読できませんでした: ${error}";
static m19(count) => "${count}名の参加者";
static m20(username) => "${username}がチャットを作成しました";
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${year}-${month}-${day}";
static m23(month, day) => "${month}-${day}";
static m24(displayname) => "${displayname}とグループを作成する";
static m25(username, targetName) => "${targetName}の招待を${username}が取り下げました";
static m26(groupName) => "連絡先から${groupName}に招待する";
static m27(username, link) =>
"${username}がFluffyChatにあなたを招待しました. \n1. FluffyChatをインストールしてください: http://fluffy.chat \n2. 新しくアカウントを作成するかサインインしてください\n3. 招待リンクを開いてください: ${link}";
static m28(username, targetName) => "${username}${targetName}を招待しました";
static m29(username) => "${username}がチャットに参加しました";
static m30(username, targetName) => "${username}${targetName}をキックしました";
static m31(username, targetName) => "${username}${targetName}をキックしBANしました";
static m32(localizedTimeShort) => "最終アクティブ: ${localizedTimeShort}";
static m33(count) => "あと${count}名参加者を読み込む";
static m34(homeserver) => "${homeserver}にログインする";
static m35(number) => "${number}選択されています";
static m36(fileName) => "${fileName}を再生する";
static m37(username) => "${username}がイベントを編集しました";
static m38(username) => "${username}は招待を拒否しました";
static m39(username) => "${username}によって削除されました";
static m40(username) => "${username}が既読";
static m41(username, count) => "${username}と他${count}名が既読";
static m42(username, username2) => "${username}${username2}が既読";
static m43(username) => "${username}はファイルを送信しました";
static m44(username) => "${username}は画像を送信しました";
static m45(username) => "${username}はステッカーを送信しました";
static m46(username) => "${username}は動画を送信しました";
static m47(username) => "${username}は音声を送信しました";
static m48(username) => "${username}は現在地を共有しました";
static m49(hours12, hours24, minutes, suffix) =>
"${hours24}:${minutes} ${suffix}";
static m50(username, targetName) => "${username}${targetName}のBANを解除しました";
static m51(type) => "未知のイベント\'${type}\'";
static m52(unreadCount) => "${unreadCount}の未読メッセージ";
static m53(unreadEvents) => "${unreadEvents}件の未読メッセージ";
static m54(unreadEvents, unreadChats) =>
"${unreadChats}${unreadEvents}件の未読メッセージ";
static m55(username, count) => "${username}と他${count}名が入力しています...";
static m56(username, username2) => "${username}${username2}が入力しています...";
static m57(username) => "${username}が入力しています...";
static m58(username) => "${username}は退室しました";
static m59(username, type) => "${username}${type}イベントを送信しました";
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(任意)グループ名"),
"About": MessageLookupByLibrary.simpleMessage("このアプリについて"),
"Accept": MessageLookupByLibrary.simpleMessage("承諾する"),
"Account": MessageLookupByLibrary.simpleMessage("アカウント"),
"Account informations": MessageLookupByLibrary.simpleMessage("アカウント情報"),
"Add a group description":
MessageLookupByLibrary.simpleMessage("グループの説明を追加する"),
"Admin": MessageLookupByLibrary.simpleMessage("管理者"),
"Already have an account?":
MessageLookupByLibrary.simpleMessage("アカウントをすでにお持ちですか?"),
"Anyone can join": MessageLookupByLibrary.simpleMessage("誰でも参加できます"),
"Archive": MessageLookupByLibrary.simpleMessage("アーカイブ"),
"Archived Room": MessageLookupByLibrary.simpleMessage("アーカイブされた部屋"),
"Are guest users allowed to join":
MessageLookupByLibrary.simpleMessage("ゲストユーザーの参加を許可する"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("これでよろしいですか?"),
"Authentication": MessageLookupByLibrary.simpleMessage("認証"),
"Avatar has been changed":
MessageLookupByLibrary.simpleMessage("アバターが変更されました"),
"Ban from chat": MessageLookupByLibrary.simpleMessage("チャットからBANする"),
"Banned": MessageLookupByLibrary.simpleMessage("BANされています"),
"Block Device": MessageLookupByLibrary.simpleMessage("デバイスをブロックする"),
"Cancel": MessageLookupByLibrary.simpleMessage("キャンセル"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("ホームサーバーの変更"),
"Change the name of the group":
MessageLookupByLibrary.simpleMessage("グループの名前を変更する"),
"Change the server": MessageLookupByLibrary.simpleMessage("サーバーを変更する"),
"Change wallpaper": MessageLookupByLibrary.simpleMessage("壁紙を変更する"),
"Change your style": MessageLookupByLibrary.simpleMessage("スタイルを変更する"),
"Changelog": MessageLookupByLibrary.simpleMessage("変更履歴"),
"Chat": MessageLookupByLibrary.simpleMessage("チャット"),
"Chat details": MessageLookupByLibrary.simpleMessage("チャットの詳細"),
"Choose a strong password":
MessageLookupByLibrary.simpleMessage("強いパスワードを選択してください"),
"Choose a username":
MessageLookupByLibrary.simpleMessage("ユーザー名を選択してください"),
"Close": MessageLookupByLibrary.simpleMessage("閉じる"),
"Confirm": MessageLookupByLibrary.simpleMessage("確認しました"),
"Connect": MessageLookupByLibrary.simpleMessage("接続"),
"Connection attempt failed":
MessageLookupByLibrary.simpleMessage("接続が失敗しました"),
"Contact has been invited to the group":
MessageLookupByLibrary.simpleMessage("連絡先に登録された人が招待されました"),
"Content viewer": MessageLookupByLibrary.simpleMessage("コンテンツビューアー"),
"Copied to clipboard":
MessageLookupByLibrary.simpleMessage("クリップボードにコピーされました"),
"Copy": MessageLookupByLibrary.simpleMessage("コピー"),
"Could not set avatar":
MessageLookupByLibrary.simpleMessage("アバターをセットできませんでした"),
"Could not set displayname":
MessageLookupByLibrary.simpleMessage("表示名をセットできませんでした"),
"Create": MessageLookupByLibrary.simpleMessage("作成"),
"Create account now":
MessageLookupByLibrary.simpleMessage("アカウントを作成する"),
"Create new group":
MessageLookupByLibrary.simpleMessage("新しいグループを作成する"),
"Currently active": MessageLookupByLibrary.simpleMessage("現在アクティブです"),
"Dark": MessageLookupByLibrary.simpleMessage("ダーク"),
"Delete": MessageLookupByLibrary.simpleMessage("削除"),
"Delete message": MessageLookupByLibrary.simpleMessage("メッセージの削除"),
"Deny": MessageLookupByLibrary.simpleMessage("拒否"),
"Device": MessageLookupByLibrary.simpleMessage("デバイス"),
"Devices": MessageLookupByLibrary.simpleMessage("デバイス"),
"Discard picture": MessageLookupByLibrary.simpleMessage("画像を無視する"),
"Displayname has been changed":
MessageLookupByLibrary.simpleMessage("表示名が変更されました"),
"Donate": MessageLookupByLibrary.simpleMessage("寄付する"),
"Download file": MessageLookupByLibrary.simpleMessage("ファイルのダウンロード"),
"Edit Jitsi instance":
MessageLookupByLibrary.simpleMessage("Jitsiインスタンスを編集する"),
"Edit displayname": MessageLookupByLibrary.simpleMessage("表示名を編集"),
"Emote Settings": MessageLookupByLibrary.simpleMessage("Emote設定"),
"Emote shortcode": MessageLookupByLibrary.simpleMessage("Emoteショートコード"),
"Empty chat": MessageLookupByLibrary.simpleMessage("空のチャット"),
"Encryption": MessageLookupByLibrary.simpleMessage("暗号化"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("暗号化アルゴリズム"),
"Encryption is not enabled":
MessageLookupByLibrary.simpleMessage("暗号化されていません"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"エンドツーエンド暗号化は現在ベータ版です!これは自分自身の責任で行ってください!"),
"End-to-end encryption settings":
MessageLookupByLibrary.simpleMessage("エンドツーエンド暗号化設定"),
"Enter a group name":
MessageLookupByLibrary.simpleMessage("グループ名を入力してください"),
"Enter a username":
MessageLookupByLibrary.simpleMessage("ユーザー名を入力してください"),
"Enter your homeserver":
MessageLookupByLibrary.simpleMessage("ホームサーバーを入力してください"),
"File name": MessageLookupByLibrary.simpleMessage("ファイル名"),
"File size": MessageLookupByLibrary.simpleMessage("ファイルサイズ"),
"FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"Forward": MessageLookupByLibrary.simpleMessage("進む"),
"Friday": MessageLookupByLibrary.simpleMessage("金曜日"),
"From joining": MessageLookupByLibrary.simpleMessage("参加から"),
"From the invitation": MessageLookupByLibrary.simpleMessage("招待から"),
"Group": MessageLookupByLibrary.simpleMessage("グループ"),
"Group description": MessageLookupByLibrary.simpleMessage("グループの説明"),
"Group description has been changed":
MessageLookupByLibrary.simpleMessage("グループの説明が変更されました"),
"Group is public":
MessageLookupByLibrary.simpleMessage("グループは公開されています"),
"Guests are forbidden":
MessageLookupByLibrary.simpleMessage("ゲストは許可されていません"),
"Guests can join": MessageLookupByLibrary.simpleMessage("ゲストが許可されています"),
"Help": MessageLookupByLibrary.simpleMessage("ヘルプ"),
"Homeserver is not compatible":
MessageLookupByLibrary.simpleMessage("このホームサーバーは互換性がありません"),
"How are you today?": MessageLookupByLibrary.simpleMessage("お元気ですか?"),
"ID": MessageLookupByLibrary.simpleMessage("ID"),
"Identity": MessageLookupByLibrary.simpleMessage("アイデンティティ"),
"Invite contact": MessageLookupByLibrary.simpleMessage("連絡先から招待する"),
"Invited": MessageLookupByLibrary.simpleMessage("招待されました"),
"Invited users only":
MessageLookupByLibrary.simpleMessage("招待されたユーザーのみ"),
"It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/":
MessageLookupByLibrary.simpleMessage(
"あなたのスマホにはグーグルサービスがないようですね。プライバシーを保護するための良い選択ですPush通知を受け取るにはmicroGを使うことを推奨しています: https://microg.org/"),
"Kick from chat": MessageLookupByLibrary.simpleMessage("チャットからキックする"),
"Last seen IP": MessageLookupByLibrary.simpleMessage("最終IP"),
"Leave": MessageLookupByLibrary.simpleMessage("退室する"),
"Left the chat": MessageLookupByLibrary.simpleMessage("退室しました"),
"License": MessageLookupByLibrary.simpleMessage("ライセンス"),
"Light": MessageLookupByLibrary.simpleMessage("ライト"),
"Load more...": MessageLookupByLibrary.simpleMessage("更に読み込む..."),
"Loading... Please wait":
MessageLookupByLibrary.simpleMessage("読み込み中...お待ちください。"),
"Login": MessageLookupByLibrary.simpleMessage("ログイン"),
"Logout": MessageLookupByLibrary.simpleMessage("ログアウト"),
"Make a moderator": MessageLookupByLibrary.simpleMessage("モデレータを作成する"),
"Make an admin": MessageLookupByLibrary.simpleMessage("管理者を作成する"),
"Make sure the identifier is valid":
MessageLookupByLibrary.simpleMessage("識別子が正しいか確認してください"),
"Message will be removed for all participants":
MessageLookupByLibrary.simpleMessage("メッセージはすべての参加者から消去されます"),
"Moderator": MessageLookupByLibrary.simpleMessage("モデレータ"),
"Monday": MessageLookupByLibrary.simpleMessage("月曜日"),
"Mute chat": MessageLookupByLibrary.simpleMessage("チャットのミュート"),
"New message in FluffyChat":
MessageLookupByLibrary.simpleMessage("FluffyChatに新しいメッセージがあります"),
"New private chat":
MessageLookupByLibrary.simpleMessage("新しいプライベートチャット"),
"No emotes found. 😕":
MessageLookupByLibrary.simpleMessage("Emoteは見つかりませんでした😕"),
"No permission": MessageLookupByLibrary.simpleMessage("権限がありません"),
"No rooms found...":
MessageLookupByLibrary.simpleMessage("部屋は見つかりませんでした..."),
"None": MessageLookupByLibrary.simpleMessage("なし"),
"Not supported in web":
MessageLookupByLibrary.simpleMessage("ウェブではサポートされていません"),
"Oops something went wrong...":
MessageLookupByLibrary.simpleMessage("おっと、何かがうまくいきませんでした..."),
"Open app to read messages":
MessageLookupByLibrary.simpleMessage("アプリを開いてメッセージを確認してください"),
"Open camera": MessageLookupByLibrary.simpleMessage("カメラを開く"),
"Participating user devices":
MessageLookupByLibrary.simpleMessage("ユーザーの使用しているデバイス"),
"Password": MessageLookupByLibrary.simpleMessage("パスワード"),
"Pick image": MessageLookupByLibrary.simpleMessage("画像を選択してください"),
"Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
MessageLookupByLibrary.simpleMessage(
"現時点では、エンドツーエンドの暗号化を使用するにはPantalaimonが必要であることに注意してください。"),
"Please choose a username":
MessageLookupByLibrary.simpleMessage("ユーザー名を選択してください"),
"Please enter a matrix identifier":
MessageLookupByLibrary.simpleMessage("Matrix識別子を入力してください"),
"Please enter your password":
MessageLookupByLibrary.simpleMessage("パスワードを入力してください"),
"Please enter your username":
MessageLookupByLibrary.simpleMessage("ユーザー名を入力してください"),
"Public Rooms": MessageLookupByLibrary.simpleMessage("公開された部屋"),
"Recording": MessageLookupByLibrary.simpleMessage("録音中"),
"Reject": MessageLookupByLibrary.simpleMessage("拒否"),
"Rejoin": MessageLookupByLibrary.simpleMessage("再参加"),
"Remove": MessageLookupByLibrary.simpleMessage("消去"),
"Remove all other devices":
MessageLookupByLibrary.simpleMessage("他のデバイスをすべて削除"),
"Remove device": MessageLookupByLibrary.simpleMessage("デバイスの削除"),
"Remove exile": MessageLookupByLibrary.simpleMessage("追放を取り消し"),
"Remove message": MessageLookupByLibrary.simpleMessage("メッセージを削除"),
"Render rich message content":
MessageLookupByLibrary.simpleMessage("リッチメッセージをレンダリングする"),
"Reply": MessageLookupByLibrary.simpleMessage("返信"),
"Request permission": MessageLookupByLibrary.simpleMessage("権限を要求する"),
"Request to read older messages":
MessageLookupByLibrary.simpleMessage("過去のメッセージを読む権限を要求する"),
"Revoke all permissions":
MessageLookupByLibrary.simpleMessage("すべての権限を取り消す"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("部屋はアップグレードされました"),
"Saturday": MessageLookupByLibrary.simpleMessage("土曜日"),
"Search for a chat": MessageLookupByLibrary.simpleMessage("チャットを検索する"),
"Seen a long time ago":
MessageLookupByLibrary.simpleMessage("ずいぶん前に既読"),
"Send": MessageLookupByLibrary.simpleMessage("送信"),
"Send a message": MessageLookupByLibrary.simpleMessage("メッセージを送信"),
"Send file": MessageLookupByLibrary.simpleMessage("ファイルを送信"),
"Send image": MessageLookupByLibrary.simpleMessage("画像の送信"),
"Set a profile picture":
MessageLookupByLibrary.simpleMessage("プロフィール画像を設定する"),
"Set group description":
MessageLookupByLibrary.simpleMessage("グループの説明を設定する"),
"Set invitation link":
MessageLookupByLibrary.simpleMessage("招待リンクを設定する"),
"Set status": MessageLookupByLibrary.simpleMessage("ステータスの設定"),
"Settings": MessageLookupByLibrary.simpleMessage("設定"),
"Share": MessageLookupByLibrary.simpleMessage("共有"),
"Sign up": MessageLookupByLibrary.simpleMessage("サインアップ"),
"Skip": MessageLookupByLibrary.simpleMessage("スキップ"),
"Source code": MessageLookupByLibrary.simpleMessage("ソースコード"),
"Start your first chat :-)":
MessageLookupByLibrary.simpleMessage("初めてのチャットを開始してください(^_^)"),
"Submit": MessageLookupByLibrary.simpleMessage("送信"),
"Sunday": MessageLookupByLibrary.simpleMessage("日曜日"),
"System": MessageLookupByLibrary.simpleMessage("システム"),
"Tap to show menu":
MessageLookupByLibrary.simpleMessage("メニューを表示するにはタップしてください"),
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage("暗号が破損しています"),
"They Don\'t Match": MessageLookupByLibrary.simpleMessage("違います"),
"They Match": MessageLookupByLibrary.simpleMessage("一致しています"),
"This room has been archived.":
MessageLookupByLibrary.simpleMessage("この部屋はアーカイブされています"),
"Thursday": MessageLookupByLibrary.simpleMessage("木曜日"),
"Try to send again": MessageLookupByLibrary.simpleMessage("送信し直してみる"),
"Tuesday": MessageLookupByLibrary.simpleMessage("火曜日"),
"Unblock Device": MessageLookupByLibrary.simpleMessage("デバイスをブロック解除する"),
"Unknown device": MessageLookupByLibrary.simpleMessage("未知デバイス"),
"Unknown encryption algorithm":
MessageLookupByLibrary.simpleMessage("未知の暗号化アルゴリズム"),
"Unmute chat": MessageLookupByLibrary.simpleMessage("チャットをミュート解除する"),
"Use Amoled compatible colors?":
MessageLookupByLibrary.simpleMessage("有機EL(Amoled)対応の色にしますか?"),
"Username": MessageLookupByLibrary.simpleMessage("ユーザー名"),
"Verify": MessageLookupByLibrary.simpleMessage("確認"),
"Verify User": MessageLookupByLibrary.simpleMessage("ユーザーの認証"),
"Video call": MessageLookupByLibrary.simpleMessage("音声通話"),
"Visibility of the chat history":
MessageLookupByLibrary.simpleMessage("チャット履歴の表示"),
"Visible for all participants":
MessageLookupByLibrary.simpleMessage("すべての参加者が閲覧可能です"),
"Visible for everyone":
MessageLookupByLibrary.simpleMessage("すべての人が閲覧可能です"),
"Voice message": MessageLookupByLibrary.simpleMessage("ボイスメッセージ"),
"Wallpaper": MessageLookupByLibrary.simpleMessage("壁紙"),
"Wednesday": MessageLookupByLibrary.simpleMessage("水曜日"),
"Welcome to the cutest instant messenger in the matrix network.":
MessageLookupByLibrary.simpleMessage(
"Matrixネットワークで一番かわいいチャットアプリへようこそ"),
"Who is allowed to join this group":
MessageLookupByLibrary.simpleMessage("誰がこのチャットに入れますか"),
"Write a message...":
MessageLookupByLibrary.simpleMessage("メッセージを入力してください..."),
"Yes": MessageLookupByLibrary.simpleMessage("はい"),
"You": MessageLookupByLibrary.simpleMessage("あなた"),
"You are invited to this chat":
MessageLookupByLibrary.simpleMessage("チャットに招待されています"),
"You are no longer participating in this chat":
MessageLookupByLibrary.simpleMessage("あなたはもうこのチャットの参加者ではありません"),
"You cannot invite yourself":
MessageLookupByLibrary.simpleMessage("自分自身を招待することはできません"),
"You have been banned from this chat":
MessageLookupByLibrary.simpleMessage("チャットからBANされてしまいました"),
"You won\'t be able to disable the encryption anymore. Are you sure?":
MessageLookupByLibrary.simpleMessage(
"一度暗号化を有効にするともとに戻せません。よろしいですか?"),
"Your own username": MessageLookupByLibrary.simpleMessage("あなたのユーザー名"),
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("エイリアス"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"鍵をキャッシュするためにはパスフレーズやリカバリーキーを入力してください。"),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"他の人を署名するためにはパスフレーズやリカバリーキーを入力してください。"),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"セッションを検証するためにはパスフレーズやリカバリーキーを入力してください。"),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys": MessageLookupByLibrary.simpleMessage("鍵のキャッシュに成功しました!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
"changedTheChatPermissions": m7,
"changedTheDisplaynameTo": m8,
"changedTheGuestAccessRules": m9,
"changedTheGuestAccessRulesTo": m10,
"changedTheHistoryVisibility": m11,
"changedTheHistoryVisibilityTo": m12,
"changedTheJoinRules": m13,
"changedTheJoinRulesTo": m14,
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"表示されている絵文字が他のデバイスで表示されているものと一致するか確認してください"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"表示されている数字が他のデバイスで表示されているものと一致するか確認してください"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled":
MessageLookupByLibrary.simpleMessage("相互署名は使えません"),
"crossSigningEnabled":
MessageLookupByLibrary.simpleMessage("相互署名が使えます"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
"emoteExists": MessageLookupByLibrary.simpleMessage("Emoteはすでに存在します"),
"emoteInvalid": MessageLookupByLibrary.simpleMessage("不正なEmoteショートコード"),
"emoteWarnNeedToPick":
MessageLookupByLibrary.simpleMessage("Emoteショートコードと画像を選択してください"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey":
MessageLookupByLibrary.simpleMessage("パスフレーズかリカバリーキーが間違っています"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("が入力しています..."),
"isDeviceKeyCorrect":
MessageLookupByLibrary.simpleMessage("このデバイスキーは正しいですか?"),
"joinedTheChat": m29,
"keysCached": MessageLookupByLibrary.simpleMessage("鍵はキャッシュされたいます"),
"keysMissing": MessageLookupByLibrary.simpleMessage("鍵がありません"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest":
MessageLookupByLibrary.simpleMessage("新しい認証リクエスト"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"FluffyChatは現在相互署名機能をサポートしていません。Elementから有効化してください。"),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"FluffyChatは現在鍵のオンラインバックアップの有効化をサポートしていません。Elementから有効化してください。"),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("OK"),
"onlineKeyBackupDisabled":
MessageLookupByLibrary.simpleMessage("オンライン鍵バックアップは使用されていません"),
"onlineKeyBackupEnabled":
MessageLookupByLibrary.simpleMessage("オンライン鍵バックアップは使用されています"),
"passphraseOrKey":
MessageLookupByLibrary.simpleMessage("パスフレーズかリカバリーキー"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
"removedBy": m39,
"seenByUser": m40,
"seenByUserAndCountOthers": m41,
"seenByUserAndUser": m42,
"sentAFile": m43,
"sentAPicture": m44,
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified": MessageLookupByLibrary.simpleMessage("セッションは確認済みです"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify":
MessageLookupByLibrary.simpleMessage("未知のセッションです。確認してください。"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
"userAndOthersAreTyping": m55,
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59,
"verifiedSession":
MessageLookupByLibrary.simpleMessage("セッションの確認ができました!"),
"verifyManual": MessageLookupByLibrary.simpleMessage("手動で確認"),
"verifyStart": MessageLookupByLibrary.simpleMessage("確認を始める"),
"verifySuccess": MessageLookupByLibrary.simpleMessage("確認が完了しました!"),
"verifyTitle": MessageLookupByLibrary.simpleMessage("他のアカウントを確認中"),
"waitingPartnerAcceptRequest":
MessageLookupByLibrary.simpleMessage("パートナーのリクエスト承諾待ちです"),
"waitingPartnerEmoji":
MessageLookupByLibrary.simpleMessage("パートナーの絵文字承諾待ちです..."),
"waitingPartnerNumbers":
MessageLookupByLibrary.simpleMessage("パートナーの数字承諾待ちです")
};
}

View File

@ -23,6 +23,8 @@ class MessageLookup extends MessageLookupByLibrary {
static m1(username) => "${username} activated end to end encryption";
static m60(username) => "Accept this verification request from ${username}?";
static m2(username, targetName) => "${username} banned ${targetName}";
static m3(homeserver) => "By default you will be connected to ${homeserver}";
@ -55,7 +57,7 @@ class MessageLookup extends MessageLookupByLibrary {
static m14(username, joinRules) =>
"${username} changed the join rules to: ${joinRules}";
static m15(username) => "${username} changed the profile avatar";
static m15(username) => "${username} changed their avatar";
static m16(username) => "${username} changed the room aliases";
@ -157,6 +159,7 @@ class MessageLookup extends MessageLookupByLibrary {
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Optional) Group name"),
"About": MessageLookupByLibrary.simpleMessage("About"),
"Accept": MessageLookupByLibrary.simpleMessage("Accept"),
"Account": MessageLookupByLibrary.simpleMessage("Account"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Account informations"),
@ -178,6 +181,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Avatar has been changed"),
"Ban from chat": MessageLookupByLibrary.simpleMessage("Ban from chat"),
"Banned": MessageLookupByLibrary.simpleMessage("Banned"),
"Block Device": MessageLookupByLibrary.simpleMessage("Block Device"),
"Cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("Change the homeserver"),
@ -218,8 +222,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Create account now"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Create new group"),
"Currenlty active":
MessageLookupByLibrary.simpleMessage("Currenlty active"),
"Currently active":
MessageLookupByLibrary.simpleMessage("Currently active"),
"Dark": MessageLookupByLibrary.simpleMessage("Dark"),
"Delete": MessageLookupByLibrary.simpleMessage("Delete"),
"Delete message":
@ -242,6 +246,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Emote shortcode"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Empty chat"),
"Encryption": MessageLookupByLibrary.simpleMessage("Encryption"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Encryption algorithm"),
"Encryption is not enabled":
@ -351,6 +356,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Please enter your username"),
"Public Rooms": MessageLookupByLibrary.simpleMessage("Public Rooms"),
"Recording": MessageLookupByLibrary.simpleMessage("Recording"),
"Reject": MessageLookupByLibrary.simpleMessage("Reject"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Rejoin"),
"Remove": MessageLookupByLibrary.simpleMessage("Remove"),
"Remove all other devices":
@ -368,6 +374,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Request to read older messages"),
"Revoke all permissions":
MessageLookupByLibrary.simpleMessage("Revoke all permissions"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("Room has been upgraded"),
"Saturday": MessageLookupByLibrary.simpleMessage("Saturday"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Search for a chat"),
@ -388,9 +396,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Settings": MessageLookupByLibrary.simpleMessage("Settings"),
"Share": MessageLookupByLibrary.simpleMessage("Share"),
"Sign up": MessageLookupByLibrary.simpleMessage("Sign up"),
"Skip": MessageLookupByLibrary.simpleMessage("Skip"),
"Source code": MessageLookupByLibrary.simpleMessage("Source code"),
"Start your first chat :-)":
MessageLookupByLibrary.simpleMessage("Start your first chat :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Submit"),
"Sunday": MessageLookupByLibrary.simpleMessage("Sunday"),
"System": MessageLookupByLibrary.simpleMessage("System"),
"Tap to show menu":
@ -398,12 +408,17 @@ class MessageLookup extends MessageLookupByLibrary {
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage(
"The encryption has been corrupted"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("They Don\'t Match"),
"They Match": MessageLookupByLibrary.simpleMessage("They Match"),
"This room has been archived.": MessageLookupByLibrary.simpleMessage(
"This room has been archived."),
"Thursday": MessageLookupByLibrary.simpleMessage("Thursday"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Try to send again"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Tuesday"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Unblock Device"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Unknown device"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
@ -413,6 +428,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Use Amoled compatible colors?"),
"Username": MessageLookupByLibrary.simpleMessage("Username"),
"Verify": MessageLookupByLibrary.simpleMessage("Verify"),
"Verify User": MessageLookupByLibrary.simpleMessage("Verify User"),
"Video call": MessageLookupByLibrary.simpleMessage("Video call"),
"Visibility of the chat history": MessageLookupByLibrary.simpleMessage(
"Visibility of the chat history"),
@ -451,8 +467,17 @@ class MessageLookup extends MessageLookupByLibrary {
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("alias"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Please enter your secure store passphrase or recovery key to cache the keys."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"To be able to sign the other person, please enter your secure store passphrase or recovery key."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Please enter your secure store passphrase or recovery key to verify your session."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys":
MessageLookupByLibrary.simpleMessage("Successfully cached keys!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
@ -467,9 +492,17 @@ class MessageLookup extends MessageLookupByLibrary {
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Compare and make sure the following emoji match those of the other device:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Compare and make sure the following numbers match those of the other device:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled":
MessageLookupByLibrary.simpleMessage("Cross-Signing is disabled"),
"crossSigningEnabled":
MessageLookupByLibrary.simpleMessage("Cross-Signing is enabled"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
@ -481,18 +514,36 @@ class MessageLookup extends MessageLookupByLibrary {
"You need to pick an emote shortcode and an image!"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Incorrect passphrase or recovery key"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("is typing..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"Is the following device key correct?"),
"joinedTheChat": m29,
"keysCached": MessageLookupByLibrary.simpleMessage("Keys are cached"),
"keysMissing": MessageLookupByLibrary.simpleMessage("Keys are missing"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest":
MessageLookupByLibrary.simpleMessage("New verification request!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat currently does not support enabling Cross-Signing. Please enable it from within Element."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat currently does not support enabling Online Key Backup. Please enable it from within Element."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"Online Key Backup is disabled"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"Online Key Backup is enabled"),
"passphraseOrKey":
MessageLookupByLibrary.simpleMessage("passphrase or recovery key"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
@ -505,11 +556,15 @@ class MessageLookup extends MessageLookupByLibrary {
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("Session is verified"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Unknown session, please verify"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
@ -517,6 +572,21 @@ class MessageLookup extends MessageLookupByLibrary {
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59
"userSentUnknownEvent": m59,
"verifiedSession": MessageLookupByLibrary.simpleMessage(
"Successfully verified session!"),
"verifyManual": MessageLookupByLibrary.simpleMessage("Verify Manually"),
"verifyStart":
MessageLookupByLibrary.simpleMessage("Start Verification"),
"verifySuccess":
MessageLookupByLibrary.simpleMessage("You successfully verified!"),
"verifyTitle":
MessageLookupByLibrary.simpleMessage("Verifying other account"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"Waiting for partner to accept the request..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"Waiting for partner to accept the emoji..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"Waiting for partner to accept the numbers...")
};
}

603
lib/l10n/messages_ru.dart Normal file
View File

@ -0,0 +1,603 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a ru locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'ru';
static m0(username) => "${username} принял(а) приглашение";
static m1(username) => "${username} активировал(а) сквозное шифрование";
static m60(username) => "Принять этот запрос подтверждения от ${username}?";
static m2(username, targetName) => "${username} забанил(а) ${targetName}";
static m3(homeserver) => "По умолчанию вы будете подключены к ${homeserver}";
static m4(username) => "${username} изменил(а) аватар чата";
static m5(username, description) =>
"${username} изменил(а) описание чата на: \'${description}\'";
static m6(username, chatname) =>
"${username} изменил(а) имя чата на: \'${chatname}\'";
static m7(username) => "${username} изменил(а) права чата";
static m8(username, displayname) =>
"${username} изменил(а) отображаемое имя на: ${displayname}";
static m9(username) => "${username} изменил(а) правила гостевого доступа";
static m10(username, rules) =>
"${username} изменил(а) правила гостевого доступа на: ${rules}";
static m11(username) => "${username} изменил(а) видимость истории";
static m12(username, rules) =>
"${username} изменил(а) видимость истории на: ${rules}";
static m13(username) => "${username} изменил(а) правила присоединения";
static m14(username, joinRules) =>
"${username} изменил(а) правила присоединения на: ${joinRules}";
static m15(username) => "${username} сменил(а) аватар профиля";
static m16(username) => "${username} изменил(а) псевдонимы комнаты";
static m17(username) => "${username} изменил(а) ссылку приглашения";
static m18(error) => "Не удалось расшифровать сообщение: ${error}";
static m19(count) => "${count} участника(-ов)";
static m20(username) => "${username} создал(а) чат";
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${day}. ${month}. ${year}";
static m23(month, day) => "${day}. ${month}";
static m24(displayname) => "Группа с ${displayname}";
static m25(username, targetName) =>
"${username} отозвал(а) приглашение для ${targetName}";
static m26(groupName) => "Пригласить контакт в ${groupName}";
static m27(username, link) =>
"${username} пригласил(а) вас в FluffyChat. \n1. Установите FluffyChat: http://fluffy.chat \n2. Зарегистрируйтесь или войдите \n3. Откройте ссылку приглашения: ${link}";
static m28(username, targetName) => "${username} пригласил(а) ${targetName}";
static m29(username) => "${username} присоединился(-ась) к чату";
static m30(username, targetName) => "${username} исключил(а) ${targetName}";
static m31(username, targetName) =>
"${username} исключил(а) и забанил(а) ${targetName}";
static m32(localizedTimeShort) =>
"Последнее посещение: ${localizedTimeShort}";
static m33(count) => "Загрузить еще ${count} участников";
static m34(homeserver) => "Войти в ${homeserver}";
static m35(number) => "${number} выбрано";
static m36(fileName) => "Играть ${fileName}";
static m37(username) => "${username} отредактировал(а) событие";
static m38(username) => "${username} отклонил(а) приглашение";
static m39(username) => "Удалено пользователем ${username}";
static m40(username) => "Просмотрено пользователем ${username}";
static m41(username, count) =>
"Просмотрено пользователями ${username} и ${count} другими";
static m42(username, username2) =>
"Просмотрено пользователями ${username} и ${username2}";
static m43(username) => "${username} отправил(а) файл";
static m44(username) => "${username} отправил(а) картинку";
static m45(username) => "${username} отправил(а) стикер";
static m46(username) => "${username} отправил(а) видео";
static m47(username) => "${username} отправил(а) аудио";
static m48(username) => "${username} поделился(-ась) местоположением";
static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}";
static m50(username, targetName) => "${username} разбанил(а) ${targetName}";
static m51(type) => "Неизвестное событие \'${type}\'";
static m52(unreadCount) => "${unreadCount} непрочитанных чатов";
static m53(unreadEvents) => "${unreadEvents} непрочитанных сообщений";
static m54(unreadEvents, unreadChats) =>
"${unreadEvents} непрочитанных сообщений в ${unreadChats} чатах";
static m55(username, count) =>
"${username} и ${count} других участников печатают...";
static m56(username, username2) => "${username} и ${username2} печатают...";
static m57(username) => "${username} печатает...";
static m58(username) => "${username} покинул(а) чат";
static m59(username, type) => "${username} отправил(а) событие типа ${type}";
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name": MessageLookupByLibrary.simpleMessage(
"(Необязательно) Название группы"),
"About": MessageLookupByLibrary.simpleMessage("О приложении"),
"Accept": MessageLookupByLibrary.simpleMessage("Принять"),
"Account": MessageLookupByLibrary.simpleMessage("Учётная запись"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Сведения об учётной записи"),
"Add a group description":
MessageLookupByLibrary.simpleMessage("Добавить описание группы"),
"Admin": MessageLookupByLibrary.simpleMessage("Админ"),
"Already have an account?":
MessageLookupByLibrary.simpleMessage("Уже есть учётная запись?"),
"Anyone can join":
MessageLookupByLibrary.simpleMessage("Каждый может присоединиться"),
"Archive": MessageLookupByLibrary.simpleMessage("Архив"),
"Archived Room":
MessageLookupByLibrary.simpleMessage("Архивированная комната"),
"Are guest users allowed to join": MessageLookupByLibrary.simpleMessage(
"Разрешено ли гостям присоединяться"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("Вы уверены?"),
"Authentication":
MessageLookupByLibrary.simpleMessage("Аутентификация"),
"Avatar has been changed":
MessageLookupByLibrary.simpleMessage("Аватар был изменен"),
"Ban from chat": MessageLookupByLibrary.simpleMessage("Бан чата"),
"Banned": MessageLookupByLibrary.simpleMessage("Забанен"),
"Block Device":
MessageLookupByLibrary.simpleMessage("Заблокировать устройство"),
"Cancel": MessageLookupByLibrary.simpleMessage("Отмена"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("Изменить домашний сервер"),
"Change the name of the group":
MessageLookupByLibrary.simpleMessage("Изменить название группы"),
"Change the server":
MessageLookupByLibrary.simpleMessage("Сменить сервер"),
"Change wallpaper":
MessageLookupByLibrary.simpleMessage("Сменить обои"),
"Change your style":
MessageLookupByLibrary.simpleMessage("Изменить свой стиль"),
"Changelog": MessageLookupByLibrary.simpleMessage("Изменения"),
"Chat": MessageLookupByLibrary.simpleMessage("Чат"),
"Chat details": MessageLookupByLibrary.simpleMessage("Детали чата"),
"Choose a strong password":
MessageLookupByLibrary.simpleMessage("Выберите надёжный пароль"),
"Choose a username":
MessageLookupByLibrary.simpleMessage("Выберете имя пользователя"),
"Close": MessageLookupByLibrary.simpleMessage("Закрыть"),
"Confirm": MessageLookupByLibrary.simpleMessage("Подтвердить"),
"Connect": MessageLookupByLibrary.simpleMessage("Присоединиться"),
"Connection attempt failed": MessageLookupByLibrary.simpleMessage(
"Попытка подключения не удалась"),
"Contact has been invited to the group":
MessageLookupByLibrary.simpleMessage(
"Контакт был приглашен в группу"),
"Content viewer":
MessageLookupByLibrary.simpleMessage("Просмотр содержимого"),
"Copied to clipboard":
MessageLookupByLibrary.simpleMessage("Скопировано в буфер обмена"),
"Copy": MessageLookupByLibrary.simpleMessage("Скопировать"),
"Could not set avatar": MessageLookupByLibrary.simpleMessage(
"Не удалось установить аватар"),
"Could not set displayname": MessageLookupByLibrary.simpleMessage(
"Не удалось установить отображаемое имя"),
"Create": MessageLookupByLibrary.simpleMessage("Создать"),
"Create account now": MessageLookupByLibrary.simpleMessage(
"Создать учётную запись сейчас"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Создать новую группу"),
"Currently active":
MessageLookupByLibrary.simpleMessage("В настоящее время активен"),
"Dark": MessageLookupByLibrary.simpleMessage("Тёмный"),
"Delete": MessageLookupByLibrary.simpleMessage("Удалить"),
"Delete message":
MessageLookupByLibrary.simpleMessage("Удалить сообщение"),
"Deny": MessageLookupByLibrary.simpleMessage("Отклонить"),
"Device": MessageLookupByLibrary.simpleMessage("Устройство"),
"Devices": MessageLookupByLibrary.simpleMessage("Устройства"),
"Discard picture":
MessageLookupByLibrary.simpleMessage("Сбросить картинку"),
"Displayname has been changed": MessageLookupByLibrary.simpleMessage(
"Отображаемое имя было изменено"),
"Donate": MessageLookupByLibrary.simpleMessage("Пожертвовать"),
"Download file": MessageLookupByLibrary.simpleMessage("Скачать файл"),
"Edit Jitsi instance":
MessageLookupByLibrary.simpleMessage("Изменить экземпляр Jitsi"),
"Edit displayname":
MessageLookupByLibrary.simpleMessage("Изменить отображаемое имя"),
"Emote Settings":
MessageLookupByLibrary.simpleMessage("Настройки смайликов"),
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Краткий код для смайлика"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Пустой чат"),
"Encryption": MessageLookupByLibrary.simpleMessage("Шифрование"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Алгоритм шифрования"),
"Encryption is not enabled":
MessageLookupByLibrary.simpleMessage("Шифрование не включено"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"Сквозное шифрование в настоящее время в бета-версии! Используйте на свой риск!"),
"End-to-end encryption settings": MessageLookupByLibrary.simpleMessage(
"Сквозные настройки шифрования"),
"Enter a group name":
MessageLookupByLibrary.simpleMessage("Введите название группы"),
"Enter a username":
MessageLookupByLibrary.simpleMessage("Введите имя пользователя"),
"Enter your homeserver":
MessageLookupByLibrary.simpleMessage("Введите ваш домашний сервер"),
"File name": MessageLookupByLibrary.simpleMessage("Имя файла"),
"File size": MessageLookupByLibrary.simpleMessage("Размер файла"),
"FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"Forward": MessageLookupByLibrary.simpleMessage("Переслать"),
"Friday": MessageLookupByLibrary.simpleMessage("Пятница"),
"From joining":
MessageLookupByLibrary.simpleMessage("С момента присоединения"),
"From the invitation":
MessageLookupByLibrary.simpleMessage("С момента приглашения"),
"Group": MessageLookupByLibrary.simpleMessage("Группа"),
"Group description":
MessageLookupByLibrary.simpleMessage("Описание группы"),
"Group description has been changed":
MessageLookupByLibrary.simpleMessage(
"Описание группы было изменено"),
"Group is public":
MessageLookupByLibrary.simpleMessage("Публичная группа"),
"Guests are forbidden":
MessageLookupByLibrary.simpleMessage("Гости запрещены"),
"Guests can join":
MessageLookupByLibrary.simpleMessage("Гости могут присоединиться"),
"Help": MessageLookupByLibrary.simpleMessage("Помощь"),
"Homeserver is not compatible": MessageLookupByLibrary.simpleMessage(
"Домашний сервер не совместим"),
"How are you today?":
MessageLookupByLibrary.simpleMessage("Как у вас сегодня дела?"),
"ID": MessageLookupByLibrary.simpleMessage("ID"),
"Identity": MessageLookupByLibrary.simpleMessage("Идентификация"),
"Invite contact":
MessageLookupByLibrary.simpleMessage("Пригласить контакт"),
"Invited": MessageLookupByLibrary.simpleMessage("Приглашён"),
"Invited users only": MessageLookupByLibrary.simpleMessage(
"Только приглашённым пользователям"),
"It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/":
MessageLookupByLibrary.simpleMessage(
"Похоже, у вас нет служб Google на вашем телефоне. Это хорошее решение для вашей конфиденциальности! Для получения push-уведомлений в FluffyChat мы рекомендуем использовать microG: https://microg.org/"),
"Kick from chat":
MessageLookupByLibrary.simpleMessage("Исключить из чата"),
"Last seen IP":
MessageLookupByLibrary.simpleMessage("Последний увиденный IP"),
"Leave": MessageLookupByLibrary.simpleMessage("Покинуть"),
"Left the chat": MessageLookupByLibrary.simpleMessage("Покинуть чат"),
"License": MessageLookupByLibrary.simpleMessage("Лицензия"),
"Light": MessageLookupByLibrary.simpleMessage("Светлый"),
"Load more...":
MessageLookupByLibrary.simpleMessage("Загрузить больше..."),
"Loading... Please wait": MessageLookupByLibrary.simpleMessage(
"Загрузка... Пожалуйста подождите"),
"Login": MessageLookupByLibrary.simpleMessage("Вход"),
"Logout": MessageLookupByLibrary.simpleMessage("Выйти"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Сделать модератором"),
"Make an admin":
MessageLookupByLibrary.simpleMessage("Сделать админом"),
"Make sure the identifier is valid":
MessageLookupByLibrary.simpleMessage(
"Убедитесь, что идентификатор действителен"),
"Message will be removed for all participants":
MessageLookupByLibrary.simpleMessage(
"Сообщение будет удалено для всех участников"),
"Moderator": MessageLookupByLibrary.simpleMessage("Модератор"),
"Monday": MessageLookupByLibrary.simpleMessage("Понедельник"),
"Mute chat": MessageLookupByLibrary.simpleMessage("Замутить чат"),
"New message in FluffyChat": MessageLookupByLibrary.simpleMessage(
"Новое сообщение в FluffyChat"),
"New private chat":
MessageLookupByLibrary.simpleMessage("Новый приватный чат"),
"No emotes found. 😕":
MessageLookupByLibrary.simpleMessage("Смайликов не найдено. 😕"),
"No permission": MessageLookupByLibrary.simpleMessage("Нет разрешений"),
"No rooms found...":
MessageLookupByLibrary.simpleMessage("Комнаты не найдены..."),
"None": MessageLookupByLibrary.simpleMessage("Ничего"),
"Not supported in web": MessageLookupByLibrary.simpleMessage(
"Не поддерживается в веб-версии"),
"Oops something went wrong...":
MessageLookupByLibrary.simpleMessage("Упс! Что-то пошло не так..."),
"Open app to read messages": MessageLookupByLibrary.simpleMessage(
"Откройте приложение для чтения сообщений"),
"Open camera": MessageLookupByLibrary.simpleMessage("Открыть камеру"),
"Participating user devices":
MessageLookupByLibrary.simpleMessage("Участвующие устройства"),
"Password": MessageLookupByLibrary.simpleMessage("Пароль"),
"Pick image": MessageLookupByLibrary.simpleMessage("Выбрать картинку"),
"Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
MessageLookupByLibrary.simpleMessage(
"Помните, что вам нужен Pantalaimon для использования сквозного шифрования."),
"Please choose a username": MessageLookupByLibrary.simpleMessage(
"Пожалуйста, выберите имя пользователя"),
"Please enter a matrix identifier":
MessageLookupByLibrary.simpleMessage(
"Пожалуйста, введите matrix идентификатор"),
"Please enter your password": MessageLookupByLibrary.simpleMessage(
"Пожалуйста введите ваш пароль"),
"Please enter your username": MessageLookupByLibrary.simpleMessage(
"Пожалуйста, введите имя пользователя"),
"Public Rooms":
MessageLookupByLibrary.simpleMessage("Публичные комнаты"),
"Recording": MessageLookupByLibrary.simpleMessage("Запись"),
"Reject": MessageLookupByLibrary.simpleMessage("Отклонить"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Перезайти"),
"Remove": MessageLookupByLibrary.simpleMessage("Удалить"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
"Удалить все другие устройства"),
"Remove device":
MessageLookupByLibrary.simpleMessage("Удалить устройство"),
"Remove exile": MessageLookupByLibrary.simpleMessage("Удалить ссылку"),
"Remove message":
MessageLookupByLibrary.simpleMessage("Удалить сообщение"),
"Render rich message content": MessageLookupByLibrary.simpleMessage(
"Показать отформатированные сообщения"),
"Reply": MessageLookupByLibrary.simpleMessage("Ответить"),
"Request permission":
MessageLookupByLibrary.simpleMessage("Запросить разрешение"),
"Request to read older messages": MessageLookupByLibrary.simpleMessage(
"Запросить доступ к предыдущим сообщениям"),
"Revoke all permissions":
MessageLookupByLibrary.simpleMessage("Отменить все разрешения"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("Комната обновлена"),
"Saturday": MessageLookupByLibrary.simpleMessage("Суббота"),
"Search for a chat": MessageLookupByLibrary.simpleMessage("Поиск чата"),
"Seen a long time ago":
MessageLookupByLibrary.simpleMessage("Просматривали давно"),
"Send": MessageLookupByLibrary.simpleMessage("Отправить"),
"Send a message":
MessageLookupByLibrary.simpleMessage("Отправить сообщение"),
"Send file": MessageLookupByLibrary.simpleMessage("Отправить файл"),
"Send image":
MessageLookupByLibrary.simpleMessage("Отправить картинку"),
"Set a profile picture": MessageLookupByLibrary.simpleMessage(
"Установить изображение профиля"),
"Set group description":
MessageLookupByLibrary.simpleMessage("Задать описание группы"),
"Set invitation link": MessageLookupByLibrary.simpleMessage(
"Установить ссылку для приглашения"),
"Set status": MessageLookupByLibrary.simpleMessage("Задать статус"),
"Settings": MessageLookupByLibrary.simpleMessage("Настройки"),
"Share": MessageLookupByLibrary.simpleMessage("Поделиться"),
"Sign up": MessageLookupByLibrary.simpleMessage("Зарегистрироваться"),
"Skip": MessageLookupByLibrary.simpleMessage("Пропустить"),
"Source code": MessageLookupByLibrary.simpleMessage("Исходный код"),
"Start your first chat :-)":
MessageLookupByLibrary.simpleMessage("Начни свой первый чат :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Отправить"),
"Sunday": MessageLookupByLibrary.simpleMessage("Воскресенье"),
"System": MessageLookupByLibrary.simpleMessage("Системный"),
"Tap to show menu": MessageLookupByLibrary.simpleMessage(
"Нажмите, чтобы показать меню"),
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage("Шифрование было повреждено"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("Они не совпадают"),
"They Match": MessageLookupByLibrary.simpleMessage("Они совпадают"),
"This room has been archived.": MessageLookupByLibrary.simpleMessage(
"Эта комната была заархивирована."),
"Thursday": MessageLookupByLibrary.simpleMessage("Четверг"),
"Try to send again": MessageLookupByLibrary.simpleMessage(
"Попробуйте отправить еще раз"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Вторник"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Разблокировать устройство"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Неизвестное устройство"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
"Неизвестный алгоритм шифрования"),
"Unmute chat": MessageLookupByLibrary.simpleMessage("Размутить чат"),
"Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage(
"Использовать Amoled совместимые цвета?"),
"Username": MessageLookupByLibrary.simpleMessage("Имя пользователя"),
"Verify": MessageLookupByLibrary.simpleMessage("Проверить"),
"Verify User":
MessageLookupByLibrary.simpleMessage("Проверить пользователя"),
"Video call": MessageLookupByLibrary.simpleMessage("Видеозвонок"),
"Visibility of the chat history":
MessageLookupByLibrary.simpleMessage("Видимость истории чата"),
"Visible for all participants":
MessageLookupByLibrary.simpleMessage("Видима для всех участников"),
"Visible for everyone":
MessageLookupByLibrary.simpleMessage("Видна всем"),
"Voice message":
MessageLookupByLibrary.simpleMessage("Голосовое сообщение"),
"Wallpaper": MessageLookupByLibrary.simpleMessage("Обои"),
"Wednesday": MessageLookupByLibrary.simpleMessage("Среда"),
"Welcome to the cutest instant messenger in the matrix network.":
MessageLookupByLibrary.simpleMessage(
"Добро пожаловать в самый симпатичный мессенджер в сети matrix."),
"Who is allowed to join this group":
MessageLookupByLibrary.simpleMessage(
"Кому разрешено вступать в эту группу"),
"Write a message...":
MessageLookupByLibrary.simpleMessage("Напишите сообщение..."),
"Yes": MessageLookupByLibrary.simpleMessage("Да"),
"You": MessageLookupByLibrary.simpleMessage("Вы"),
"You are invited to this chat":
MessageLookupByLibrary.simpleMessage("Вы приглашены в этот чат"),
"You are no longer participating in this chat":
MessageLookupByLibrary.simpleMessage(
"Вы больше не участвуете в этом чате"),
"You cannot invite yourself": MessageLookupByLibrary.simpleMessage(
"Вы не можете пригласить себя"),
"You have been banned from this chat":
MessageLookupByLibrary.simpleMessage(
"Вы были забанены в этом чате"),
"You won\'t be able to disable the encryption anymore. Are you sure?":
MessageLookupByLibrary.simpleMessage(
"Вы больше не сможете отключить шифрование. Вы уверены?"),
"Your own username":
MessageLookupByLibrary.simpleMessage("Ваше имя пользователя"),
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("псевдоним"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Пожалуйста, введите секретную фразу безопасного хранилища или ключ восстановления для кеширования ключей."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"Чтобы иметь возможность подписать другое лицо, пожалуйста, введите пароль или ключ восстановления вашего безопасного хранилища."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Пожалуйста, введите вашу безопасную парольную фразу или ключ восстановления, чтобы подтвердить ваш сеанс."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys":
MessageLookupByLibrary.simpleMessage("Ключи успешно кэшированы!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
"changedTheChatPermissions": m7,
"changedTheDisplaynameTo": m8,
"changedTheGuestAccessRules": m9,
"changedTheGuestAccessRulesTo": m10,
"changedTheHistoryVisibility": m11,
"changedTheHistoryVisibilityTo": m12,
"changedTheJoinRules": m13,
"changedTheJoinRulesTo": m14,
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Сравните и убедитесь, что следующие эмодзи соответствуют таковым на другом устройстве:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Сравните и убедитесь, что следующие числа соответствуют числам на другом устройстве:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled":
MessageLookupByLibrary.simpleMessage("Кросс-подпись отключена"),
"crossSigningEnabled":
MessageLookupByLibrary.simpleMessage("Кросс-подпись включена"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
"emoteExists":
MessageLookupByLibrary.simpleMessage("Смайлик уже существует!"),
"emoteInvalid": MessageLookupByLibrary.simpleMessage(
"Недопустимый краткий код смайлика!"),
"emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage(
"Вам нужно выбрать краткий код смайлика и картинку!"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Неверный пароль или ключ восстановления"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("Печатает..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"Правильно ли указан следующий ключ устройства?"),
"joinedTheChat": m29,
"keysCached": MessageLookupByLibrary.simpleMessage("Ключи кэшированы"),
"keysMissing":
MessageLookupByLibrary.simpleMessage("Ключи отсутствуют"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest": MessageLookupByLibrary.simpleMessage(
"Новый запрос на подтверждение!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat в настоящее время не поддерживает включение кросс-подписи. Пожалуйста, включите его в Element."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"В настоящее время Fluffychat не поддерживает функцию резервного копирования онлайн-ключей. Пожалуйста, включите его из Element."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"Резервное копирование онлайн-ключей отключено"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"Резервное копирование онлайн ключей включено"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"пароль или ключ восстановления"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
"removedBy": m39,
"seenByUser": m40,
"seenByUserAndCountOthers": m41,
"seenByUserAndUser": m42,
"sentAFile": m43,
"sentAPicture": m44,
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("Сессия подтверждена"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Неизвестная сессия, пожалуйста, проверьте"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
"userAndOthersAreTyping": m55,
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59,
"verifiedSession":
MessageLookupByLibrary.simpleMessage("Успешно проверенная сессия!"),
"verifyManual":
MessageLookupByLibrary.simpleMessage("Проверить вручную"),
"verifyStart": MessageLookupByLibrary.simpleMessage("Начать проверку"),
"verifySuccess":
MessageLookupByLibrary.simpleMessage("Вы успешно проверили!"),
"verifyTitle": MessageLookupByLibrary.simpleMessage(
"Проверка другой учётной записи"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"В ожидании партнера, чтобы принять запрос..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"В ожидании партнера, чтобы принять смайлики..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"В ожидании партнера, чтобы принять числа...")
};
}

604
lib/l10n/messages_sk.dart Normal file
View File

@ -0,0 +1,604 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a sk locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'sk';
static m0(username) => "${username} prijali pozvánku";
static m1(username) => "${username} aktivovali koncové šifrovanie";
static m60(username) => "Akcepovať žiadosť o verifikáciu od ${username}?";
static m2(username, targetName) => "${username} zabanoval ${targetName}";
static m3(homeserver) =>
"V základnom nastavení budete pripojený k ${homeserver}";
static m4(username) => "${username} si zmenili svôj avatar";
static m5(username, description) =>
"${username} zmenili popis chatu na: „${description}";
static m6(username, chatname) =>
"${username} zmenili meno chatu na: „${chatname}";
static m7(username) => "${username} zmenili nastavenie oprávnení chatu";
static m8(username, displayname) =>
"${username} si zmenili prezývku na: ${displayname}";
static m9(username) => "${username} zmenili prístupové práva pre hosťov";
static m10(username, rules) =>
"${username} zmenili prístupové práva pro hosťov na: ${rules}";
static m11(username) =>
"${username} zmenili nastavenie viditelnosti histórie chatu";
static m12(username, rules) =>
"${username} zmenili nastavenie viditelnosti histórie chatu na: ${rules}";
static m13(username) => "${username} zmenili nastavenie pravidiel pripojenia";
static m14(username, joinRules) =>
"${username} zmenili nastavenie pravidiel pripojenia na: ${joinRules}";
static m15(username) => "${username} si zmenili profilový obrázok";
static m16(username) => "${username} zmenili nastavenie aliasov chatu";
static m17(username) => "${username} zmenili odkaz k pozvánke do miestnosti";
static m18(error) => "Nebolo možné dešifrovať správu: ${error}";
static m19(count) => "${count} účastníkov";
static m20(username) => "${username} založili chat";
static m21(date, timeOfDay) => "${date}, ${timeOfDay}";
static m22(year, month, day) => "${day}.${month}.${year}";
static m23(month, day) => "${day}.${month}.";
static m24(displayname) => "Skupina s ${displayname}";
static m25(username, targetName) =>
"${username} vzal späť pozvánku pre ${targetName}";
static m26(groupName) => "Pozvať kontakt do ${groupName}";
static m27(username, link) =>
"${username} vás pozval na FluffyChat.\n1. Nainštalujte si FluffyChat: http://fluffy.chat\n2. Zaregistrujte sa alebo sa prihláste\n3. Otvorte odkaz na pozvánku: ${link}";
static m28(username, targetName) => "${username} pozvali ${targetName}";
static m29(username) => "${username} sa pripojili do chatu";
static m30(username, targetName) => "${username} vyhodili ${targetName}";
static m31(username, targetName) =>
"${username} vyhodili a zabanovali ${targetName}";
static m32(localizedTimeShort) => "Naposledy prítomní: ${localizedTimeShort}";
static m33(count) => "Načítať ďalších ${count} účastníkov";
static m34(homeserver) => "Prihlásenie k ${homeserver}";
static m35(number) => "${number} označených správ";
static m36(fileName) => "Prehrať (fileName}";
static m37(username) => "${username} odstránili udalosť";
static m38(username) => "${username} odmietli pozvánku";
static m39(username) => "Odstánené užívateľom ${username}";
static m40(username) => "Videné užívateľom ${username}";
static m41(username, count) =>
"Videné užívateľom ${username} a ${count} dalšími";
static m42(username, username2) =>
"Videné užívateľmi ${username} a ${username2}";
static m43(username) => "${username} poslali súbor";
static m44(username) => "${username} poslali obrázok";
static m45(username) => "${username} poslali nálepku";
static m46(username) => "${username} poslali video";
static m47(username) => "${username} poslali zvukovú nahrávku";
static m48(username) => "${username} zdieľa lokáciu";
static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}";
static m50(username, targetName) => "${username} odbanovali ${targetName}";
static m51(type) => "Neznáma udalosť „${type}";
static m52(unreadCount) => "${unreadCount} neprečítaných chatov";
static m53(unreadEvents) => "${unreadEvents} neprečítaných správ";
static m54(unreadEvents, unreadChats) =>
"${unreadEvents} neprečítaných správ v ${unreadChats} chatoch";
static m55(username, count) => "${username} a ${count} dalších píšu…";
static m56(username, username2) => "${username} a ${username2} píšu…";
static m57(username) => "${username} píše…";
static m58(username) => "${username} opustili chat";
static m59(username, type) => "${username} poslali udalosť ${type}";
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
"(Optional) Group name":
MessageLookupByLibrary.simpleMessage("(Voliteľné) Názov skupiny"),
"About": MessageLookupByLibrary.simpleMessage("O aplikácii"),
"Accept": MessageLookupByLibrary.simpleMessage("Prijať"),
"Account": MessageLookupByLibrary.simpleMessage("Účet"),
"Account informations":
MessageLookupByLibrary.simpleMessage("Informácie o účte"),
"Add a group description":
MessageLookupByLibrary.simpleMessage("Pridať popis skupiny"),
"Admin": MessageLookupByLibrary.simpleMessage("Administrátor"),
"Already have an account?":
MessageLookupByLibrary.simpleMessage("Máte už účet?"),
"Anyone can join":
MessageLookupByLibrary.simpleMessage("Ktokoľvek sa môže pripojiť"),
"Archive": MessageLookupByLibrary.simpleMessage("Archivovať"),
"Archived Room":
MessageLookupByLibrary.simpleMessage("Archivovaná miestnosť"),
"Are guest users allowed to join":
MessageLookupByLibrary.simpleMessage("Môžu sa pripojiť hostia"),
"Are you sure?": MessageLookupByLibrary.simpleMessage("Ste si istí?"),
"Authentication":
MessageLookupByLibrary.simpleMessage("Autentifikácia"),
"Avatar has been changed":
MessageLookupByLibrary.simpleMessage("Avatar bol zmenený"),
"Ban from chat":
MessageLookupByLibrary.simpleMessage("Zabanovať z chatu"),
"Banned": MessageLookupByLibrary.simpleMessage("Zabanovaný"),
"Block Device":
MessageLookupByLibrary.simpleMessage("Zakázať zariadenie"),
"Cancel": MessageLookupByLibrary.simpleMessage("Zrušiť"),
"Change the homeserver":
MessageLookupByLibrary.simpleMessage("Zmeniť použitý server"),
"Change the name of the group":
MessageLookupByLibrary.simpleMessage("Zmeniť názov skupiny"),
"Change the server":
MessageLookupByLibrary.simpleMessage("Zmeniť server"),
"Change wallpaper":
MessageLookupByLibrary.simpleMessage("Zmeniť pozadie"),
"Change your style":
MessageLookupByLibrary.simpleMessage("Zmena štýlu"),
"Changelog": MessageLookupByLibrary.simpleMessage("História zmien"),
"Chat": MessageLookupByLibrary.simpleMessage("Chat"),
"Chat details":
MessageLookupByLibrary.simpleMessage("Podrobnosti o chate"),
"Choose a strong password":
MessageLookupByLibrary.simpleMessage("Vyberte si silné heslo"),
"Choose a username":
MessageLookupByLibrary.simpleMessage("Vyberte si užívateľské meno"),
"Close": MessageLookupByLibrary.simpleMessage("Zavrieť"),
"Confirm": MessageLookupByLibrary.simpleMessage("Potvrdiť"),
"Connect": MessageLookupByLibrary.simpleMessage("Pripojiť"),
"Connection attempt failed":
MessageLookupByLibrary.simpleMessage("Pokus o pripojenie zlyhal"),
"Contact has been invited to the group":
MessageLookupByLibrary.simpleMessage(
"Kontakt bol pozvaný do skupiny"),
"Content viewer":
MessageLookupByLibrary.simpleMessage("Prehliadač obsahu"),
"Copied to clipboard":
MessageLookupByLibrary.simpleMessage("Skopírované do schránky"),
"Copy": MessageLookupByLibrary.simpleMessage("Kopírovať"),
"Could not set avatar": MessageLookupByLibrary.simpleMessage(
"Nepodarilo sa nastaviť avatar"),
"Could not set displayname": MessageLookupByLibrary.simpleMessage(
"Nepodarilo sa nastaviť prezývku užívateľa"),
"Create": MessageLookupByLibrary.simpleMessage("Vytvoriť"),
"Create account now":
MessageLookupByLibrary.simpleMessage("Vytvoriť účet teraz"),
"Create new group":
MessageLookupByLibrary.simpleMessage("Vytvoriť novú skupinu"),
"Currently active":
MessageLookupByLibrary.simpleMessage("Momentálne prítomní"),
"Dark": MessageLookupByLibrary.simpleMessage("Tmavá"),
"Delete": MessageLookupByLibrary.simpleMessage("Odstrániť"),
"Delete message":
MessageLookupByLibrary.simpleMessage("Odstrániť správu"),
"Deny": MessageLookupByLibrary.simpleMessage("Zamietnuť"),
"Device": MessageLookupByLibrary.simpleMessage("Zariadenie"),
"Devices": MessageLookupByLibrary.simpleMessage("Zariadenia"),
"Discard picture":
MessageLookupByLibrary.simpleMessage("Zahodiť obrázok"),
"Displayname has been changed":
MessageLookupByLibrary.simpleMessage("Prezývka bola zmenená"),
"Donate": MessageLookupByLibrary.simpleMessage("Prispejte"),
"Download file": MessageLookupByLibrary.simpleMessage("Stiahnuť súbor"),
"Edit Jitsi instance":
MessageLookupByLibrary.simpleMessage("Nastavenie inštancie Jitsi"),
"Edit displayname":
MessageLookupByLibrary.simpleMessage("Zmeniť prezývku"),
"Emote Settings":
MessageLookupByLibrary.simpleMessage("Nastavenie emotikonov"),
"Emote shortcode":
MessageLookupByLibrary.simpleMessage("Kód emotikonu"),
"Empty chat": MessageLookupByLibrary.simpleMessage("Prázdny chat"),
"Encryption": MessageLookupByLibrary.simpleMessage("Šifrovanie"),
"Encryption algorithm":
MessageLookupByLibrary.simpleMessage("Šifrovací algoritmus"),
"Encryption is not enabled":
MessageLookupByLibrary.simpleMessage("Šifrovanie nie je aktívne"),
"End to end encryption is currently in Beta! Use at your own risk!":
MessageLookupByLibrary.simpleMessage(
"Konečné šifrovanie je momentálne v Beta verzii! Používajte na vlastné riziko!"),
"End-to-end encryption settings": MessageLookupByLibrary.simpleMessage(
"Nastavenie koncového šifrovania"),
"Enter a group name":
MessageLookupByLibrary.simpleMessage("Zadajte názov skupiny"),
"Enter a username":
MessageLookupByLibrary.simpleMessage("Zadajte uživateľské meno"),
"Enter your homeserver":
MessageLookupByLibrary.simpleMessage("Zadajte svoj homeserver"),
"File name": MessageLookupByLibrary.simpleMessage("Názov súboru"),
"File size": MessageLookupByLibrary.simpleMessage("Veľkosť súboru"),
"FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"Forward": MessageLookupByLibrary.simpleMessage("Preposlať"),
"Friday": MessageLookupByLibrary.simpleMessage("Piatok"),
"From joining": MessageLookupByLibrary.simpleMessage("Od pripojenia"),
"From the invitation":
MessageLookupByLibrary.simpleMessage("Od pozvania"),
"Group": MessageLookupByLibrary.simpleMessage("Skupina"),
"Group description":
MessageLookupByLibrary.simpleMessage("Popis skupiny"),
"Group description has been changed":
MessageLookupByLibrary.simpleMessage("Popis skupiny bol zmenený"),
"Group is public":
MessageLookupByLibrary.simpleMessage("Skupina je verejná"),
"Guests are forbidden":
MessageLookupByLibrary.simpleMessage("Hostia sú zakázaní"),
"Guests can join":
MessageLookupByLibrary.simpleMessage("Hostia sa môžu pripojiť"),
"Help": MessageLookupByLibrary.simpleMessage("Pomoc"),
"Homeserver is not compatible": MessageLookupByLibrary.simpleMessage(
"Homeserver nie je kompatibilný"),
"How are you today?":
MessageLookupByLibrary.simpleMessage("Ako sa dnes máte?"),
"ID": MessageLookupByLibrary.simpleMessage("ID"),
"Identity": MessageLookupByLibrary.simpleMessage("Identita"),
"Invite contact":
MessageLookupByLibrary.simpleMessage("Pozvať kontakt"),
"Invited": MessageLookupByLibrary.simpleMessage("Pozvanie"),
"Invited users only":
MessageLookupByLibrary.simpleMessage("Len pozvaní používatelia"),
"It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/":
MessageLookupByLibrary.simpleMessage(
"Zdá sa, že nemáte žiadne služby Googlu v telefóne. To je dobré rozhodnutie pre vaše súkromie! Ak chcete dostávať push notifikácie vo FluffyChat, odporúčame používať microG: https://microg.org/"),
"Kick from chat":
MessageLookupByLibrary.simpleMessage("Vyhodiť z chatu"),
"Last seen IP": MessageLookupByLibrary.simpleMessage(
"Naposledy zaznamenaná IP adresa"),
"Leave": MessageLookupByLibrary.simpleMessage("Opustiť"),
"Left the chat": MessageLookupByLibrary.simpleMessage("Opustili chat"),
"License": MessageLookupByLibrary.simpleMessage("Licencia"),
"Light": MessageLookupByLibrary.simpleMessage("Svetlá"),
"Load more...": MessageLookupByLibrary.simpleMessage("Načítať viac..."),
"Loading... Please wait": MessageLookupByLibrary.simpleMessage(
"Načítava sa... Čakajte prosím"),
"Login": MessageLookupByLibrary.simpleMessage("Prihlásiť sa"),
"Logout": MessageLookupByLibrary.simpleMessage("Odhlásiť sa"),
"Make a moderator":
MessageLookupByLibrary.simpleMessage("Pridať práva moderátora"),
"Make an admin":
MessageLookupByLibrary.simpleMessage("Pridať práva administrátora"),
"Make sure the identifier is valid":
MessageLookupByLibrary.simpleMessage(
"Skontrolujte, či je identifikátor platný"),
"Message will be removed for all participants":
MessageLookupByLibrary.simpleMessage(
"Správa bude odstránená pre všetkých účastníkov"),
"Moderator": MessageLookupByLibrary.simpleMessage("Moderátor"),
"Monday": MessageLookupByLibrary.simpleMessage("Pondelok"),
"Mute chat": MessageLookupByLibrary.simpleMessage("Stlmiť chat"),
"New message in FluffyChat":
MessageLookupByLibrary.simpleMessage("Nová správa v FluffyChate"),
"New private chat":
MessageLookupByLibrary.simpleMessage("Nový súkromný chat"),
"No emotes found. 😕": MessageLookupByLibrary.simpleMessage(
"Nenašli sa žiadne emotikony. 😕"),
"No permission":
MessageLookupByLibrary.simpleMessage("Chýba povolenie"),
"No rooms found...": MessageLookupByLibrary.simpleMessage(
"Nenašli sa žiadne miestnosti..."),
"None": MessageLookupByLibrary.simpleMessage("Žiadne"),
"Not supported in web": MessageLookupByLibrary.simpleMessage(
"Nepodporované vo webovej verzii"),
"Oops something went wrong...":
MessageLookupByLibrary.simpleMessage("Och! Niečo sa pokazilo..."),
"Open app to read messages": MessageLookupByLibrary.simpleMessage(
"Na prečítanie správy otvorte aplikáciu"),
"Open camera":
MessageLookupByLibrary.simpleMessage("Otvoriť fotoaparát"),
"Participating user devices": MessageLookupByLibrary.simpleMessage(
"Zúčastnené užívateľské zariadenia"),
"Password": MessageLookupByLibrary.simpleMessage("Heslo"),
"Pick image": MessageLookupByLibrary.simpleMessage("Vybrať obrázok"),
"Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
MessageLookupByLibrary.simpleMessage(
"Prosím berte na vedomie, že na koncové šifrovanie zatiaľ potrebujete Pantalaimon."),
"Please choose a username": MessageLookupByLibrary.simpleMessage(
"Vyberte si používateľské meno"),
"Please enter a matrix identifier":
MessageLookupByLibrary.simpleMessage(
"Vyberte si matrix identifkátor"),
"Please enter your password":
MessageLookupByLibrary.simpleMessage("Prosím zadajte svoje heslo"),
"Please enter your username": MessageLookupByLibrary.simpleMessage(
"Zadajte svoje používateľské meno"),
"Public Rooms":
MessageLookupByLibrary.simpleMessage("Verejné miestnosti"),
"Recording": MessageLookupByLibrary.simpleMessage("Nahrávam"),
"Reject": MessageLookupByLibrary.simpleMessage("Odmietnuť"),
"Rejoin": MessageLookupByLibrary.simpleMessage("Vrátiť sa"),
"Remove": MessageLookupByLibrary.simpleMessage("Odstrániť"),
"Remove all other devices": MessageLookupByLibrary.simpleMessage(
"Odstráňiť všetky ostatné zariadenia"),
"Remove device":
MessageLookupByLibrary.simpleMessage("Odstráňiť zariadenie"),
"Remove exile": MessageLookupByLibrary.simpleMessage("Odblokovať"),
"Remove message":
MessageLookupByLibrary.simpleMessage("Odstrániť správu"),
"Render rich message content":
MessageLookupByLibrary.simpleMessage("Zobraziť formátovaný obsah"),
"Reply": MessageLookupByLibrary.simpleMessage("Odpovedať"),
"Request permission":
MessageLookupByLibrary.simpleMessage("Vyžiadať si povolenie"),
"Request to read older messages": MessageLookupByLibrary.simpleMessage(
"Žiadosť o prečítanie starších správ"),
"Revoke all permissions":
MessageLookupByLibrary.simpleMessage("Zrušiť všetky povolenia"),
"Room has been upgraded":
MessageLookupByLibrary.simpleMessage("Miestnosť bola upgradeovaná"),
"Saturday": MessageLookupByLibrary.simpleMessage("Sobota"),
"Search for a chat":
MessageLookupByLibrary.simpleMessage("Vyhladať v chate"),
"Seen a long time ago":
MessageLookupByLibrary.simpleMessage("Videný veľmi dávno"),
"Send": MessageLookupByLibrary.simpleMessage("Odoslať"),
"Send a message":
MessageLookupByLibrary.simpleMessage("Odoslať správu"),
"Send file": MessageLookupByLibrary.simpleMessage("Odoslať súbor"),
"Send image": MessageLookupByLibrary.simpleMessage("Odoslať obrázok"),
"Set a profile picture":
MessageLookupByLibrary.simpleMessage("Nastaviť profilový obrázok"),
"Set group description":
MessageLookupByLibrary.simpleMessage("Nastaviť popis skupiny"),
"Set invitation link":
MessageLookupByLibrary.simpleMessage("Nastaviť odkaz pre pozvánku"),
"Set status": MessageLookupByLibrary.simpleMessage("Nastaviť status"),
"Settings": MessageLookupByLibrary.simpleMessage("Nastavenia"),
"Share": MessageLookupByLibrary.simpleMessage("Zdieľať"),
"Sign up": MessageLookupByLibrary.simpleMessage("Zaregistrovať sa"),
"Skip": MessageLookupByLibrary.simpleMessage("Preskočiť"),
"Source code": MessageLookupByLibrary.simpleMessage("Zdrojový kód"),
"Start your first chat :-)":
MessageLookupByLibrary.simpleMessage("Začnite svoj prvý chat :-)"),
"Submit": MessageLookupByLibrary.simpleMessage("Odoslať"),
"Sunday": MessageLookupByLibrary.simpleMessage("Nedeľa"),
"System": MessageLookupByLibrary.simpleMessage("Systémová farba"),
"Tap to show menu":
MessageLookupByLibrary.simpleMessage("Ťuknutím zobrazíte menu"),
"The encryption has been corrupted":
MessageLookupByLibrary.simpleMessage("Šifrovanie bolo poškodené"),
"They Don\'t Match":
MessageLookupByLibrary.simpleMessage("Sa nezhodujú"),
"They Match": MessageLookupByLibrary.simpleMessage("Zhodujú sa"),
"This room has been archived.": MessageLookupByLibrary.simpleMessage(
"Táto miestnosť bola archivovaná."),
"Thursday": MessageLookupByLibrary.simpleMessage("Štvrtok"),
"Try to send again":
MessageLookupByLibrary.simpleMessage("Skúsiť znova odoslať"),
"Tuesday": MessageLookupByLibrary.simpleMessage("Utorok"),
"Unblock Device":
MessageLookupByLibrary.simpleMessage("Odblokovať zariadenie"),
"Unknown device":
MessageLookupByLibrary.simpleMessage("Neznáme zariadenie"),
"Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage(
"Neznámy šifrovací algoritmus"),
"Unmute chat":
MessageLookupByLibrary.simpleMessage("Zrušiť stlmenie chatu"),
"Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage(
"Použiť Amoled kompatibilné farby?"),
"Username": MessageLookupByLibrary.simpleMessage("Užívateľské meno"),
"Verify": MessageLookupByLibrary.simpleMessage("Overiť"),
"Verify User":
MessageLookupByLibrary.simpleMessage("Verifikovať používateľa"),
"Video call": MessageLookupByLibrary.simpleMessage("Videohovor"),
"Visibility of the chat history":
MessageLookupByLibrary.simpleMessage("Viditeľnosť histórie chatu"),
"Visible for all participants": MessageLookupByLibrary.simpleMessage(
"Viditeľné pre všetkých účastníkov"),
"Visible for everyone":
MessageLookupByLibrary.simpleMessage("Viditeľné pre každého"),
"Voice message": MessageLookupByLibrary.simpleMessage("Hlasová správa"),
"Wallpaper": MessageLookupByLibrary.simpleMessage("Pozadie"),
"Wednesday": MessageLookupByLibrary.simpleMessage("Streda"),
"Welcome to the cutest instant messenger in the matrix network.":
MessageLookupByLibrary.simpleMessage(
"Vítajte v najroztomilejšom instant messengeri v sieti matrix."),
"Who is allowed to join this group":
MessageLookupByLibrary.simpleMessage(
"Kto môže vstúpiť do tejto skupiny"),
"Write a message...":
MessageLookupByLibrary.simpleMessage("Napísať správu..."),
"Yes": MessageLookupByLibrary.simpleMessage("Áno"),
"You": MessageLookupByLibrary.simpleMessage("Vy"),
"You are invited to this chat":
MessageLookupByLibrary.simpleMessage("Ste pozvaní do tohto chatu"),
"You are no longer participating in this chat":
MessageLookupByLibrary.simpleMessage(
"Už sa nezúčastňujete tohto chatu"),
"You cannot invite yourself":
MessageLookupByLibrary.simpleMessage("Nemôžete pozvať samých seba"),
"You have been banned from this chat":
MessageLookupByLibrary.simpleMessage(
"Máte zablokovaný prístup k tomuto chatu"),
"You won\'t be able to disable the encryption anymore. Are you sure?":
MessageLookupByLibrary.simpleMessage(
"Šifrovanie už nebude možné vypnúť. Ste si tým istí?"),
"Your own username":
MessageLookupByLibrary.simpleMessage("Vaša vlastná prezývka"),
"acceptedTheInvitation": m0,
"activatedEndToEndEncryption": m1,
"alias": MessageLookupByLibrary.simpleMessage("alias"),
"askSSSSCache": MessageLookupByLibrary.simpleMessage(
"Prosím zadajte vašu prístupovu frázu k \"bezpečému úložisku\" alebo \"kľúč na obnovu\" pre uloženie kľúčov."),
"askSSSSSign": MessageLookupByLibrary.simpleMessage(
"Na overenie tejto osoby, prosím zadajte prístupovu frázu k \"bezpečému úložisku\" alebo \"klúč na obnovu\"."),
"askSSSSVerify": MessageLookupByLibrary.simpleMessage(
"Prosím zadajte vašu prístupovú frázu k \"bezpečnému úložisku\" alebo \"kľúč na obnovu\" pre overenie vašej relácie."),
"askVerificationRequest": m60,
"bannedUser": m2,
"byDefaultYouWillBeConnectedTo": m3,
"cachedKeys":
MessageLookupByLibrary.simpleMessage("Klúče sa úspešne uložili!"),
"changedTheChatAvatar": m4,
"changedTheChatDescriptionTo": m5,
"changedTheChatNameTo": m6,
"changedTheChatPermissions": m7,
"changedTheDisplaynameTo": m8,
"changedTheGuestAccessRules": m9,
"changedTheGuestAccessRulesTo": m10,
"changedTheHistoryVisibility": m11,
"changedTheHistoryVisibilityTo": m12,
"changedTheJoinRules": m13,
"changedTheJoinRulesTo": m14,
"changedTheProfileAvatar": m15,
"changedTheRoomAliases": m16,
"changedTheRoomInvitationLink": m17,
"compareEmojiMatch": MessageLookupByLibrary.simpleMessage(
"Porovnajte a uistite sa, že nasledujúce emotikony sa zhodujú na oboch zariadeniach:"),
"compareNumbersMatch": MessageLookupByLibrary.simpleMessage(
"Porovnajte a uistite sa, že nasledujúce čísla sa zhodujú na oboch zariadeniach:"),
"couldNotDecryptMessage": m18,
"countParticipants": m19,
"createdTheChat": m20,
"crossSigningDisabled": MessageLookupByLibrary.simpleMessage(
"Vzájomné overenie je vypnuté"),
"crossSigningEnabled": MessageLookupByLibrary.simpleMessage(
"Vzájomné overenie je zapnuté"),
"dateAndTimeOfDay": m21,
"dateWithYear": m22,
"dateWithoutYear": m23,
"emoteExists":
MessageLookupByLibrary.simpleMessage("Emotikon už existuje"),
"emoteInvalid": MessageLookupByLibrary.simpleMessage(
"Nesprávné označenie emotikonu"),
"emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage(
"Musíte zvoliť kód emotikonu a obrázok"),
"groupWith": m24,
"hasWithdrawnTheInvitationFor": m25,
"incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage(
"Nesprávna prístupová fráza alebo kľúč na obnovenie"),
"inviteContactToGroup": m26,
"inviteText": m27,
"invitedUser": m28,
"is typing...": MessageLookupByLibrary.simpleMessage("píše..."),
"isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage(
"Je nasledujúci kód zariadenia správny?"),
"joinedTheChat": m29,
"keysCached": MessageLookupByLibrary.simpleMessage("Kľúče sú uložené"),
"keysMissing": MessageLookupByLibrary.simpleMessage("Kľúče chýbaju"),
"kicked": m30,
"kickedAndBanned": m31,
"lastActiveAgo": m32,
"loadCountMoreParticipants": m33,
"logInTo": m34,
"newVerificationRequest":
MessageLookupByLibrary.simpleMessage("Nová žiadosť o verifikáciu!"),
"noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat v súčasnosti nepodporuje povolenie krížového podpisu. Prosím, povoľte ho z Riot.im."),
"noMegolmBootstrap": MessageLookupByLibrary.simpleMessage(
"Fluffychat v súčasnosti nepodporuje povolenie online zálohu klúčov. Prosím, povoľte ho z Riot.im."),
"numberSelected": m35,
"ok": MessageLookupByLibrary.simpleMessage("ok"),
"onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage(
"Online záloha kľúčov je vypnutá"),
"onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage(
"Online záloha kľúčov je zapnutá"),
"passphraseOrKey": MessageLookupByLibrary.simpleMessage(
"prístupová fráza alebo kľúč na obnovenie"),
"play": m36,
"redactedAnEvent": m37,
"rejectedTheInvitation": m38,
"removedBy": m39,
"seenByUser": m40,
"seenByUserAndCountOthers": m41,
"seenByUserAndUser": m42,
"sentAFile": m43,
"sentAPicture": m44,
"sentASticker": m45,
"sentAVideo": m46,
"sentAnAudio": m47,
"sessionVerified":
MessageLookupByLibrary.simpleMessage("Relácia je overená"),
"sharedTheLocation": m48,
"timeOfDay": m49,
"title": MessageLookupByLibrary.simpleMessage("FluffyChat"),
"unbannedUser": m50,
"unknownEvent": m51,
"unknownSessionVerify": MessageLookupByLibrary.simpleMessage(
"Neznáma relácia, prosím verifikujte ju"),
"unreadChats": m52,
"unreadMessages": m53,
"unreadMessagesInChats": m54,
"userAndOthersAreTyping": m55,
"userAndUserAreTyping": m56,
"userIsTyping": m57,
"userLeftTheChat": m58,
"userSentUnknownEvent": m59,
"verifiedSession":
MessageLookupByLibrary.simpleMessage("Úspešne overenie relácie!"),
"verifyManual":
MessageLookupByLibrary.simpleMessage("Verifikovať manuálne"),
"verifyStart":
MessageLookupByLibrary.simpleMessage("Spustiť verifikáciu"),
"verifySuccess":
MessageLookupByLibrary.simpleMessage("Verifikácia bola úspešná!"),
"verifyTitle":
MessageLookupByLibrary.simpleMessage("Verifikujem protiľahlý účet"),
"waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage(
"Čaká sa, kým partner prijme požiadavku..."),
"waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage(
"Čaká sa, kým partner prijme emotikon..."),
"waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage(
"Čaká sa na to, kým partner prijme čísla...")
};
}

View File

@ -46,6 +46,13 @@ class App extends StatelessWidget {
const Locale('hu'), // Hungarian
const Locale('pl'), // Polish
const Locale('fr'), // French
const Locale('cs'), // Czech
const Locale('es'), // Spanish
const Locale('sk'), // Slovakian
const Locale('gl'), // Galician
const Locale('hr'), // Croatian
const Locale('ja'), // Japanese
const Locale('ru'), // Russian
],
locale: kIsWeb
? Locale(html.window.navigator.language.split('-').first)

View File

@ -1,10 +1,10 @@
import 'package:famedlysdk/famedlysdk.dart';
extension ClientPresenceExtension on Client {
List<Presence> get statusList {
final statusList = presences.values.toList().reversed.toList();
statusList.removeWhere((p) => p.presence.statusMsg?.isEmpty ?? true);
statusList.reversed.toList();
return statusList;
static final Map<String, Profile> presencesCache = {};
Future<Profile> requestProfileCached(String senderId) async {
presencesCache[senderId] ??= await getProfileFromUserId(senderId);
return presencesCache[senderId];
}
}

View File

@ -0,0 +1,121 @@
// file from https://gist.github.com/simolus3/5097bbd80ce59f9b957961fe851fd95a#file-cipher_db-dart
import 'dart:async';
import 'dart:ffi';
import 'dart:io';
import 'dart:math';
import 'package:moor/backends.dart';
import 'package:moor/moor.dart';
import 'package:moor_ffi/moor_ffi.dart';
import 'package:moor_ffi/open_helper.dart';
/// Tells `moor_ffi` to use `sqlcipher` instead of the regular `sqlite3`.
///
/// This needs to be called before using `moor`, for instance in the `main`
/// method.
void init() {
const sharedLibraryName = 'libsqlcipher.so';
open.overrideFor(OperatingSystem.android, () {
try {
return DynamicLibrary.open(sharedLibraryName);
} catch (_) {
// On some (especially old) Android devices, we somehow can't dlopen
// libraries shipped with the apk. We need to find the full path of the
// library (/data/data/<id>/lib/libsqlite3.so) and open that one.
// For details, see https://github.com/simolus3/moor/issues/420
final appIdAsBytes = File('/proc/self/cmdline').readAsBytesSync();
// app id ends with the first \0 character in here.
final endOfAppId = max(appIdAsBytes.indexOf(0), 0);
final appId = String.fromCharCodes(appIdAsBytes.sublist(0, endOfAppId));
return DynamicLibrary.open('/data/data/$appId/lib/$sharedLibraryName');
}
});
open.overrideFor(OperatingSystem.iOS, () => DynamicLibrary.executable());
}
class VmDatabaseEncrypted extends DelegatedDatabase {
/// Creates a database that will store its result in the [file], creating it
/// if it doesn't exist.
factory VmDatabaseEncrypted(
File file, {
String password = '',
bool logStatements = false,
}) {
final vmDatabase = VmDatabase(file, logStatements: logStatements);
return VmDatabaseEncrypted._(vmDatabase, password);
}
factory VmDatabaseEncrypted.memory({
String password = '',
bool logStatements = false,
}) {
final vmDatabase = VmDatabase.memory(logStatements: logStatements);
return VmDatabaseEncrypted._(vmDatabase, password);
}
VmDatabaseEncrypted._(
VmDatabase vmDatabase,
String password,
) : super(
_VmEncryptedDelegate(vmDatabase.delegate, password),
logStatements: vmDatabase.logStatements,
isSequential: vmDatabase.isSequential,
);
}
class _VmEncryptedDelegate extends DatabaseDelegate {
final String password;
final DatabaseDelegate delegate;
_VmEncryptedDelegate(
this.delegate,
this.password,
);
@override
Future<void> open(QueryExecutorUser db) async {
await delegate.open(db);
final keyLiteral = const StringType().mapToSqlConstant(password);
await delegate.runCustom('PRAGMA KEY = $keyLiteral', const []);
return Future.value();
}
@override
FutureOr<bool> get isOpen => delegate.isOpen;
@override
Future<void> runBatched(BatchedStatements statements) {
return delegate.runBatched(statements);
}
@override
Future<void> runCustom(String statement, List args) {
return delegate.runCustom(statement, args);
}
@override
Future<int> runInsert(String statement, List args) {
return delegate.runInsert(statement, args);
}
@override
Future<QueryResult> runSelect(String statement, List args) {
return delegate.runSelect(statement, args);
}
@override
Future<int> runUpdate(String statement, List args) {
return delegate.runUpdate(statement, args);
}
@override
TransactionDelegate get transactionDelegate => delegate.transactionDelegate;
@override
DbVersionDelegate get versionDelegate => delegate.versionDelegate;
}

View File

@ -1,14 +1,63 @@
import 'dart:io';
import 'dart:isolate';
import 'package:famedlysdk/famedlysdk.dart';
import 'package:encrypted_moor/encrypted_moor.dart';
import 'package:sqflite/sqflite.dart' show getDatabasesPath;
import 'package:path/path.dart' as p;
import 'package:flutter/material.dart';
import 'package:moor/moor.dart';
import 'package:moor/isolate.dart';
import 'cipher_db.dart' as cipher;
Database constructDb(
bool _inited = false;
// see https://moor.simonbinder.eu/docs/advanced-features/isolates/
void _startBackground(_IsolateStartRequest request) {
// this is the entry point from the background isolate! Let's create
// the database from the path we received
if (!_inited) {
cipher.init();
_inited = true;
}
final executor = cipher.VmDatabaseEncrypted(File(request.targetPath),
password: request.password, logStatements: request.logStatements);
// we're using MoorIsolate.inCurrent here as this method already runs on a
// background isolate. If we used MoorIsolate.spawn, a third isolate would be
// started which is not what we want!
final moorIsolate = MoorIsolate.inCurrent(
() => DatabaseConnection.fromExecutor(executor),
);
// inform the starting isolate about this, so that it can call .connect()
request.sendMoorIsolate.send(moorIsolate);
}
// used to bundle the SendPort and the target path, since isolate entry point
// functions can only take one parameter.
class _IsolateStartRequest {
final SendPort sendMoorIsolate;
final String targetPath;
final String password;
final bool logStatements;
_IsolateStartRequest(
this.sendMoorIsolate, this.targetPath, this.password, this.logStatements);
}
Future<Database> constructDb(
{bool logStatements = false,
String filename = 'database.sqlite',
String password = ''}) {
String password = ''}) async {
debugPrint('[Moor] using encrypted moor');
return Database(EncryptedExecutor(
path: filename, password: password, logStatements: logStatements));
final dbFolder = await getDatabasesPath();
final targetPath = p.join(dbFolder, filename);
final receivePort = ReceivePort();
await Isolate.spawn(
_startBackground,
_IsolateStartRequest(
receivePort.sendPort, targetPath, password, logStatements),
);
final isolate = (await receivePort.first as MoorIsolate);
return Database.connect(await isolate.connect());
}
Future<String> getLocalstorage(String key) async {

View File

@ -1,9 +1,9 @@
import 'package:famedlysdk/famedlysdk.dart';
Database constructDb(
Future<Database> constructDb(
{bool logStatements = false,
String filename = 'database.sqlite',
String password = ''}) {
String password = ''}) async {
throw 'Platform not supported';
}

View File

@ -3,10 +3,10 @@ import 'package:moor/moor_web.dart';
import 'package:flutter/material.dart';
import 'dart:html';
Database constructDb(
Future<Database> constructDb(
{bool logStatements = false,
String filename = 'database.sqlite',
String password = ''}) {
String password = ''}) async {
debugPrint('[Moor] Using moor web');
return Database(WebDatabase.withStorage(
MoorWebStorage.indexedDbIfSupported(filename),

View File

@ -34,8 +34,8 @@ extension DateTimeExtension on DateTime {
/// Returns a simple time String.
/// TODO: Add localization
String localizedTimeOfDay(BuildContext context) {
return L10n.of(context).timeOfDay(
_z(hour % 12), _z(hour), _z(minute), hour > 11 ? 'pm' : 'am');
return L10n.of(context).timeOfDay(_z(hour % 12 == 0 ? 12 : hour % 12),
_z(hour), _z(minute), hour > 11 ? 'pm' : 'am');
}
/// Returns [localizedTimeOfDay()] if the ChatTime is today, the name of the week

View File

@ -12,27 +12,36 @@ import 'package:olm/olm.dart' as olm; // needed for migration
import 'package:random_string/random_string.dart';
Future<Database> getDatabase(Client client) async {
if (_db != null) return _db;
final store = Store();
var password = await store.getItem('database-password');
var needMigration = false;
if (password == null || password.isEmpty) {
needMigration = true;
password = randomString(255);
while (_generateDatabaseLock) {
await Future.delayed(Duration(milliseconds: 50));
}
_db = constructDb(
logStatements: false,
filename: 'moor.sqlite',
password: password,
);
if (needMigration) {
await migrate(client.clientName, _db, store);
await store.setItem('database-password', password);
_generateDatabaseLock = true;
try {
if (_db != null) return _db;
final store = Store();
var password = await store.getItem('database-password');
var needMigration = false;
if (password == null || password.isEmpty) {
needMigration = true;
password = randomString(255);
}
_db = await constructDb(
logStatements: false,
filename: 'moor.sqlite',
password: password,
);
if (needMigration) {
await migrate(client.clientName, _db, store);
await store.setItem('database-password', password);
}
return _db;
} finally {
_generateDatabaseLock = false;
}
return _db;
}
Database _db;
bool _generateDatabaseLock = false;
Future<void> migrate(String clientName, Database db, Store store) async {
debugPrint('[Store] attempting old migration to moor...');
@ -127,7 +136,7 @@ Future<void> migrate(String clientName, Database db, Store store) async {
var sess = olm.Session();
sess.unpickle(credentials['userID'], pickle);
await db.storeOlmSession(
clientId, identKey, sess.session_id(), pickle);
clientId, identKey, sess.session_id(), pickle, null);
sess?.free();
}
}

View File

@ -13,6 +13,7 @@ import 'package:bot_toast/bot_toast.dart';
import 'package:path_provider/path_provider.dart';
import 'package:famedlysdk/famedlysdk.dart';
import 'famedlysdk_store.dart';
import '../components/matrix.dart';
abstract class FirebaseController {
static final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
@ -26,7 +27,9 @@ abstract class FirebaseController {
static const String GATEWAY_URL = 'https://janian.de:7023/';
static const String PUSHER_FORMAT = 'event_id_only';
static Future<void> setupFirebase(Client client, String clientName) async {
static Future<void> setupFirebase(
MatrixState matrix, String clientName) async {
final client = matrix.client;
if (Platform.isIOS) iOS_Permission();
String token;
@ -36,10 +39,18 @@ abstract class FirebaseController {
token = null;
}
if (token?.isEmpty ?? true) {
BotToast.showText(
text: L10n.of(context).noGoogleServicesWarning,
duration: Duration(seconds: 15),
);
final storeItem =
await matrix.store.getItem('chat.fluffy.show_no_google');
final configOptionMissing = storeItem == null || storeItem.isEmpty;
if (configOptionMissing || (!configOptionMissing && storeItem == '1')) {
BotToast.showText(
text: L10n.of(context).noGoogleServicesWarning,
duration: Duration(seconds: 15),
);
if (configOptionMissing) {
await matrix.store.setItem('chat.fluffy.show_no_google', '0');
}
}
return;
}
final pushers = await client.api.requestPushers();

View File

@ -10,7 +10,7 @@ import 'package:mime_type/mime_type.dart';
extension MatrixFileExtension on MatrixFile {
void open() async {
if (kIsWeb) {
final fileName = path.split('/').last;
final fileName = name.split('/').last;
final mimeType = mime(fileName);
var element = html.document.createElement('a');
element.setAttribute(
@ -25,7 +25,7 @@ extension MatrixFileExtension on MatrixFile {
element.remove();
} else {
var tempDir = await getTemporaryDirectory();
final file = File(tempDir.path + '/' + path.split('/').last);
final file = File(tempDir.path + '/' + name.split('/').last);
file.writeAsBytesSync(bytes);
await OpenFile.open(file.path);
}

View File

@ -8,8 +8,11 @@ extension PresenceExtension on Presence {
if (presence.statusMsg?.isNotEmpty ?? false) {
return presence.statusMsg;
}
return L10n.of(context).lastActiveAgo(
DateTime.fromMillisecondsSinceEpoch(presence.lastActiveAgo)
.localizedTimeShort(context));
if (presence.lastActiveAgo != null) {
return L10n.of(context).lastActiveAgo(
DateTime.fromMillisecondsSinceEpoch(presence.lastActiveAgo)
.localizedTimeShort(context));
}
return L10n.of(context).lastSeenLongTimeAgo;
}
}

View File

@ -9,14 +9,20 @@ extension RoomStatusExtension on Room {
String getLocalizedStatus(BuildContext context) {
if (isDirectChat) {
if (directChatPresence != null) {
if (directChatPresence != null &&
directChatPresence.presence != null &&
(directChatPresence.presence.lastActiveAgo != null ||
directChatPresence.presence.currentlyActive != null)) {
if (directChatPresence.presence.currentlyActive == true) {
return L10n.of(context).currentlyActive;
}
return L10n.of(context).lastActiveAgo(
DateTime.fromMillisecondsSinceEpoch(
directChatPresence.presence.lastActiveAgo)
.localizedTimeShort(context));
if (directChatPresence.presence.lastActiveAgo == null) {
return L10n.of(context).lastSeenLongTimeAgo;
}
final time = DateTime.fromMillisecondsSinceEpoch(
DateTime.now().millisecondsSinceEpoch -
directChatPresence.presence.lastActiveAgo);
return L10n.of(context).lastActiveAgo(time.localizedTimeShort(context));
}
return L10n.of(context).lastSeenLongTimeAgo;
}

View File

@ -9,4 +9,13 @@ extension StringColor on String {
number = (number % 10) * 25.5;
return HSLColor.fromAHSL(1, number, 1, 0.35).toColor();
}
Color get lightColor {
var number = 0.0;
for (var i = 0; i < length; i++) {
number += codeUnitAt(i);
}
number = (number % 10) * 25.5;
return HSLColor.fromAHSL(1, number, 1, 0.66).toColor();
}
}

View File

@ -3,10 +3,10 @@ import 'dart:io';
import 'dart:math';
import 'package:famedlysdk/famedlysdk.dart';
import 'package:file_picker/file_picker.dart';
import 'package:fluffychat/components/adaptive_page_layout.dart';
import 'package:fluffychat/components/avatar.dart';
import 'package:fluffychat/components/chat_settings_popup_menu.dart';
import 'package:fluffychat/components/connection_status_header.dart';
import 'package:fluffychat/components/dialogs/presence_dialog.dart';
import 'package:fluffychat/components/dialogs/recording_dialog.dart';
import 'package:fluffychat/components/dialogs/simple_dialogs.dart';
@ -20,9 +20,9 @@ import 'package:fluffychat/utils/room_status_extension.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:image_picker/image_picker.dart';
import 'package:memoryfilepicker/memoryfilepicker.dart';
import 'package:pedantic/pedantic.dart';
import 'package:image_picker/image_picker.dart';
import 'chat_details.dart';
import 'chat_list.dart';
@ -91,11 +91,11 @@ class _ChatState extends State<_Chat> {
void requestHistory() async {
if (_canLoadMore) {
setState(() => _loadingHistory = true);
try {
await timeline.requestHistory(historyCount: _loadHistoryCount);
} catch (e) {
debugPrint('Error loading history: ' + e.toString());
}
await SimpleDialogs(context).tryRequestWithErrorToast(
timeline.requestHistory(historyCount: _loadHistoryCount),
);
if (mounted) setState(() => _loadingHistory = false);
}
}
@ -157,9 +157,6 @@ class _ChatState extends State<_Chat> {
if (timeline.events.isNotEmpty) {
unawaited(room.sendReadReceipt(timeline.events.first.eventId));
}
if (timeline.events.length < _loadHistoryCount) {
requestHistory();
}
}
updateView();
return true;
@ -187,51 +184,39 @@ class _ChatState extends State<_Chat> {
}
void sendFileAction(BuildContext context) async {
if (kIsWeb) {
BotToast.showText(text: L10n.of(context).notSupportedInWeb);
return;
}
var file = await FilePicker.getFile();
var file = await MemoryFilePicker.getFile();
if (file == null) return;
await SimpleDialogs(context).tryRequestWithLoadingDialog(
room.sendFileEvent(
MatrixFile(bytes: await file.readAsBytes(), path: file.path),
MatrixFile(bytes: file.bytes, name: file.path),
),
);
}
void sendImageAction(BuildContext context) async {
if (kIsWeb) {
BotToast.showText(text: L10n.of(context).notSupportedInWeb);
return;
}
var file = await ImagePicker.pickImage(
var file = await MemoryFilePicker.getImage(
source: ImageSource.gallery,
imageQuality: 50,
maxWidth: 1600,
maxHeight: 1600);
if (file == null) return;
await SimpleDialogs(context).tryRequestWithLoadingDialog(
room.sendImageEvent(
MatrixFile(bytes: await file.readAsBytes(), path: file.path),
room.sendFileEvent(
MatrixImageFile(bytes: await file.bytes, name: file.path),
),
);
}
void openCameraAction(BuildContext context) async {
if (kIsWeb) {
BotToast.showText(text: L10n.of(context).notSupportedInWeb);
return;
}
var file = await ImagePicker.pickImage(
var file = await MemoryFilePicker.getImage(
source: ImageSource.camera,
imageQuality: 50,
maxWidth: 1600,
maxHeight: 1600);
if (file == null) return;
await SimpleDialogs(context).tryRequestWithLoadingDialog(
room.sendImageEvent(
MatrixFile(bytes: await file.readAsBytes(), path: file.path),
room.sendFileEvent(
MatrixImageFile(bytes: file.bytes, name: file.path),
),
);
}
@ -246,8 +231,9 @@ class _ChatState extends State<_Chat> {
if (result == null) return;
final audioFile = File(result);
await SimpleDialogs(context).tryRequestWithLoadingDialog(
room.sendAudioEvent(
MatrixFile(bytes: audioFile.readAsBytesSync(), path: audioFile.path),
room.sendFileEvent(
MatrixAudioFile(
bytes: audioFile.readAsBytesSync(), name: audioFile.path),
),
);
}
@ -462,202 +448,206 @@ class _ChatState extends State<_Chat> {
fit: BoxFit.cover,
),
),
SafeArea(
child: Column(
children: <Widget>[
if (_loadingHistory) LinearProgressIndicator(),
Expanded(
child: FutureBuilder<bool>(
future: getTimeline(),
builder: (BuildContext context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
}
Column(
children: <Widget>[
Expanded(
child: FutureBuilder<bool>(
future: getTimeline(),
builder: (BuildContext context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
}
if (room.notificationCount != null &&
room.notificationCount > 0 &&
timeline != null &&
timeline.events.isNotEmpty) {
room.sendReadReceipt(timeline.events.first.eventId);
}
if (room.notificationCount != null &&
room.notificationCount > 0 &&
timeline != null &&
timeline.events.isNotEmpty) {
room.sendReadReceipt(timeline.events.first.eventId);
}
if (timeline.events.isEmpty) return Container();
if (timeline.events.isEmpty) return Container();
return ListView.builder(
padding: EdgeInsets.symmetric(
horizontal: max(
0,
(MediaQuery.of(context).size.width -
AdaptivePageLayout.defaultMinWidth *
3.5) /
2),
),
reverse: true,
itemCount: timeline.events.length + 2,
controller: _scrollController,
itemBuilder: (BuildContext context, int i) {
return i == timeline.events.length + 1
? _canLoadMore && !_loadingHistory
? FlatButton(
child: Text(
L10n.of(context).loadMore,
style: TextStyle(
color:
Theme.of(context).primaryColor,
fontWeight: FontWeight.bold,
decoration:
TextDecoration.underline,
return ListView.builder(
padding: EdgeInsets.symmetric(
horizontal: max(
0,
(MediaQuery.of(context).size.width -
AdaptivePageLayout.defaultMinWidth *
3.5) /
2),
),
reverse: true,
itemCount: timeline.events.length + 2,
controller: _scrollController,
itemBuilder: (BuildContext context, int i) {
return i == timeline.events.length + 1
? _loadingHistory
? Container(
height: 50,
alignment: Alignment.center,
padding: EdgeInsets.all(8),
child: CircularProgressIndicator(),
)
: _canLoadMore
? FlatButton(
child: Text(
L10n.of(context).loadMore,
style: TextStyle(
color: Theme.of(context)
.primaryColor,
fontWeight: FontWeight.bold,
decoration:
TextDecoration.underline,
),
),
onPressed: requestHistory,
)
: Container()
: i == 0
? AnimatedContainer(
height: seenByText.isEmpty ? 0 : 24,
duration: seenByText.isEmpty
? Duration(milliseconds: 0)
: Duration(milliseconds: 500),
alignment:
timeline.events.first.senderId ==
client.userID
? Alignment.topRight
: Alignment.topLeft,
child: Text(
seenByText,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Theme.of(context).primaryColor,
),
onPressed: requestHistory,
)
: Container()
: i == 0
? AnimatedContainer(
height: seenByText.isEmpty ? 0 : 24,
duration: seenByText.isEmpty
? Duration(milliseconds: 0)
: Duration(milliseconds: 500),
alignment:
timeline.events.first.senderId ==
client.userID
? Alignment.topRight
: Alignment.topLeft,
child: Text(
seenByText,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color:
Theme.of(context).primaryColor,
),
),
padding: EdgeInsets.only(
left: 8,
right: 8,
bottom: 8,
),
)
: Message(timeline.events[i - 1],
onAvatarTab: (Event event) {
sendController.text +=
' ${event.senderId}';
}, onSelect: (Event event) {
if (!event.redacted) {
if (selectedEvents.contains(event)) {
setState(
() =>
selectedEvents.remove(event),
);
} else {
setState(
() => selectedEvents.add(event),
);
}
selectedEvents.sort(
(a, b) => a.originServerTs
.compareTo(b.originServerTs),
),
padding: EdgeInsets.only(
left: 8,
right: 8,
bottom: 8,
),
)
: Message(timeline.events[i - 1],
onAvatarTab: (Event event) {
sendController.text +=
' ${event.senderId}';
}, onSelect: (Event event) {
if (!event.redacted) {
if (selectedEvents.contains(event)) {
setState(
() => selectedEvents.remove(event),
);
} else {
setState(
() => selectedEvents.add(event),
);
}
},
longPressSelect: selectedEvents.isEmpty,
selected: selectedEvents
.contains(timeline.events[i - 1]),
timeline: timeline,
nextEvent: i >= 2
? timeline.events[i - 2]
: null);
});
},
),
selectedEvents.sort(
(a, b) => a.originServerTs
.compareTo(b.originServerTs),
);
}
},
longPressSelect: selectedEvents.isEmpty,
selected: selectedEvents
.contains(timeline.events[i - 1]),
timeline: timeline,
nextEvent: i >= 2
? timeline.events[i - 2]
: null);
});
},
),
AnimatedContainer(
duration: Duration(milliseconds: 300),
height: replyEvent != null ? 56 : 0,
child: Material(
color: Theme.of(context).secondaryHeaderColor,
child: Row(
children: <Widget>[
IconButton(
icon: Icon(Icons.close),
onPressed: () => setState(() => replyEvent = null),
),
Expanded(
child: ReplyContent(replyEvent),
),
],
),
),
),
Divider(
height: 1,
),
ConnectionStatusHeader(),
AnimatedContainer(
duration: Duration(milliseconds: 300),
height: replyEvent != null ? 56 : 0,
child: Material(
color: Theme.of(context).secondaryHeaderColor,
thickness: 1,
child: Row(
children: <Widget>[
IconButton(
icon: Icon(Icons.close),
onPressed: () => setState(() => replyEvent = null),
),
Expanded(
child: ReplyContent(replyEvent),
),
],
),
),
room.canSendDefaultMessages &&
room.membership == Membership.join
? Container(
decoration: BoxDecoration(
color: Theme.of(context)
.backgroundColor
.withOpacity(0.8),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: selectMode
? <Widget>[
Container(
height: 56,
child: FlatButton(
onPressed: () =>
forwardEventsAction(context),
child: Row(
children: <Widget>[
Icon(Icons.keyboard_arrow_left),
Text(L10n.of(context).forward),
],
),
),
Divider(
height: 1,
color: Theme.of(context).secondaryHeaderColor,
thickness: 1,
),
room.canSendDefaultMessages && room.membership == Membership.join
? Container(
decoration: BoxDecoration(
color:
Theme.of(context).backgroundColor.withOpacity(0.8),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: selectMode
? <Widget>[
Container(
height: 56,
child: FlatButton(
onPressed: () =>
forwardEventsAction(context),
child: Row(
children: <Widget>[
Icon(Icons.keyboard_arrow_left),
Text(L10n.of(context).forward),
],
),
),
selectedEvents.length == 1
? selectedEvents.first.status > 0
? Container(
height: 56,
child: FlatButton(
onPressed: () => replyAction(),
child: Row(
children: <Widget>[
Text(
L10n.of(context).reply),
Icon(Icons
.keyboard_arrow_right),
],
),
),
selectedEvents.length == 1
? selectedEvents.first.status > 0
? Container(
height: 56,
child: FlatButton(
onPressed: () => replyAction(),
child: Row(
children: <Widget>[
Text(L10n.of(context).reply),
Icon(Icons
.keyboard_arrow_right),
],
),
)
: Container(
height: 56,
child: FlatButton(
onPressed: () =>
sendAgainAction(),
child: Row(
children: <Widget>[
Text(L10n.of(context)
.tryToSendAgain),
SizedBox(width: 4),
Icon(Icons.send, size: 16),
],
),
),
)
: Container(
height: 56,
child: FlatButton(
onPressed: () =>
sendAgainAction(),
child: Row(
children: <Widget>[
Text(L10n.of(context)
.tryToSendAgain),
SizedBox(width: 4),
Icon(Icons.send, size: 16),
],
),
)
: Container(),
]
: <Widget>[
if (!kIsWeb && inputText.isEmpty)
PopupMenuButton<String>(
),
)
: Container(),
]
: <Widget>[
if (inputText.isEmpty)
Container(
height: 56,
alignment: Alignment.center,
child: PopupMenuButton<String>(
icon: Icon(Icons.add),
onSelected: (String choice) async {
if (choice == 'file') {
@ -700,99 +690,114 @@ class _ChatState extends State<_Chat> {
contentPadding: EdgeInsets.all(0),
),
),
PopupMenuItem<String>(
value: 'camera',
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.purple,
foregroundColor: Colors.white,
child: Icon(Icons.camera_alt),
if (!kIsWeb)
PopupMenuItem<String>(
value: 'camera',
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.purple,
foregroundColor: Colors.white,
child: Icon(Icons.camera_alt),
),
title: Text(
L10n.of(context).openCamera),
contentPadding: EdgeInsets.all(0),
),
title: Text(
L10n.of(context).openCamera),
contentPadding: EdgeInsets.all(0),
),
),
PopupMenuItem<String>(
value: 'voice',
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.red,
foregroundColor: Colors.white,
child: Icon(Icons.mic),
if (!kIsWeb)
PopupMenuItem<String>(
value: 'voice',
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.red,
foregroundColor: Colors.white,
child: Icon(Icons.mic),
),
title: Text(L10n.of(context)
.voiceMessage),
contentPadding: EdgeInsets.all(0),
),
title: Text(
L10n.of(context).voiceMessage),
contentPadding: EdgeInsets.all(0),
),
),
],
),
EncryptionButton(room),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 4.0),
child: InputBar(
room: room,
minLines: 1,
maxLines: kIsWeb ? 1 : 8,
keyboardType: kIsWeb
? TextInputType.text
: TextInputType.multiline,
onSubmitted: (String text) {
send();
FocusScope.of(context)
.requestFocus(inputFocus);
},
focusNode: inputFocus,
controller: sendController,
decoration: InputDecoration(
hintText:
L10n.of(context).writeAMessage,
border: InputBorder.none,
),
onChanged: (String text) {
typingCoolDown?.cancel();
typingCoolDown =
Timer(Duration(seconds: 2), () {
typingCoolDown = null;
currentlyTyping = false;
room.sendTypingInfo(false);
});
typingTimeout ??=
Timer(Duration(seconds: 30), () {
typingTimeout = null;
currentlyTyping = false;
});
if (!currentlyTyping) {
currentlyTyping = true;
room.sendTypingInfo(true,
timeout: Duration(seconds: 30)
.inMilliseconds);
}
setState(() => inputText = text);
},
),
Container(
height: 56,
alignment: Alignment.center,
child: EncryptionButton(room),
),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 4.0),
child: InputBar(
room: room,
minLines: 1,
maxLines: kIsWeb ? 1 : 8,
keyboardType: kIsWeb
? TextInputType.text
: TextInputType.multiline,
onSubmitted: (String text) {
send();
FocusScope.of(context)
.requestFocus(inputFocus);
},
focusNode: inputFocus,
controller: sendController,
decoration: InputDecoration(
hintText:
L10n.of(context).writeAMessage,
hintMaxLines: 1,
border: InputBorder.none,
),
onChanged: (String text) {
typingCoolDown?.cancel();
typingCoolDown =
Timer(Duration(seconds: 2), () {
typingCoolDown = null;
currentlyTyping = false;
room.sendTypingInfo(false);
});
typingTimeout ??=
Timer(Duration(seconds: 30), () {
typingTimeout = null;
currentlyTyping = false;
});
if (!currentlyTyping) {
currentlyTyping = true;
room.sendTypingInfo(true,
timeout: Duration(seconds: 30)
.inMilliseconds);
}
setState(() => inputText = text);
},
),
),
if (!kIsWeb && inputText.isEmpty)
IconButton(
),
if (!kIsWeb && inputText.isEmpty)
Container(
height: 56,
alignment: Alignment.center,
child: IconButton(
icon: Icon(Icons.mic),
onPressed: () =>
voiceMessageAction(context),
),
if (kIsWeb || inputText.isNotEmpty)
IconButton(
),
if (kIsWeb || inputText.isNotEmpty)
Container(
height: 56,
alignment: Alignment.center,
child: IconButton(
icon: Icon(Icons.send),
onPressed: () => send(),
),
],
),
)
: Container(),
],
),
),
],
),
)
: Container(),
],
),
],
),

View File

@ -15,6 +15,7 @@ import 'package:flutter/services.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:image_picker/image_picker.dart';
import 'package:link_text/link_text.dart';
import 'package:memoryfilepicker/memoryfilepicker.dart';
import './settings_emotes.dart';
class ChatDetails extends StatefulWidget {
@ -100,7 +101,7 @@ class _ChatDetailsState extends State<ChatDetails> {
}
void setAvatarAction(BuildContext context) async {
final tempFile = await ImagePicker.pickImage(
final tempFile = await MemoryFilePicker.getImage(
source: ImageSource.gallery,
imageQuality: 50,
maxWidth: 1600,
@ -109,8 +110,8 @@ class _ChatDetailsState extends State<ChatDetails> {
final success = await SimpleDialogs(context).tryRequestWithLoadingDialog(
widget.room.setAvatar(
MatrixFile(
bytes: await tempFile.readAsBytes(),
path: tempFile.path,
bytes: tempFile.bytes,
name: tempFile.path,
),
),
);

View File

@ -1,4 +1,5 @@
import 'package:famedlysdk/famedlysdk.dart';
import 'package:famedlysdk/encryption.dart';
import 'package:fluffychat/components/adaptive_page_layout.dart';
import 'package:fluffychat/components/avatar.dart';
import 'package:fluffychat/components/matrix.dart';
@ -6,6 +7,9 @@ import 'package:fluffychat/utils/beautify_string_extension.dart';
import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/views/chat_list.dart';
import 'package:flutter/material.dart';
import 'key_verification.dart';
import '../utils/app_route.dart';
import '../components/dialogs/simple_dialogs.dart';
class ChatEncryptionSettingsView extends StatelessWidget {
final String id;
@ -33,6 +37,70 @@ class ChatEncryptionSettings extends StatefulWidget {
}
class _ChatEncryptionSettingsState extends State<ChatEncryptionSettings> {
Future<void> onSelected(
BuildContext context, String action, DeviceKeys key) async {
final room = Matrix.of(context).client.getRoomById(widget.id);
final unblock = () async {
if (key.blocked) {
await key.setBlocked(false);
}
};
switch (action) {
case 'verify':
await unblock();
final req = key.startVerification();
req.onUpdate = () {
if (req.state == KeyVerificationState.done) {
setState(() => null);
}
};
await Navigator.of(context).push(
AppRoute.defaultRoute(
context,
KeyVerificationView(request: req),
),
);
break;
case 'verify_manual':
if (await SimpleDialogs(context).askConfirmation(
titleText: L10n.of(context).isDeviceKeyCorrect,
contentText: key.ed25519Key.beautified,
)) {
await unblock();
await key.setVerified(true);
setState(() => null);
}
break;
case 'verify_user':
await unblock();
final req =
await room.client.userDeviceKeys[key.userId].startVerification();
req.onUpdate = () {
if (req.state == KeyVerificationState.done) {
setState(() => null);
}
};
await Navigator.of(context).push(
AppRoute.defaultRoute(
context,
KeyVerificationView(request: req),
),
);
break;
case 'block':
if (key.directVerified) {
await key.setVerified(false);
}
await key.setBlocked(true);
setState(() => null);
break;
case 'unblock':
await unblock();
setState(() => null);
break;
}
}
@override
Widget build(BuildContext context) {
final room = Matrix.of(context).client.getRoomById(widget.id);
@ -68,59 +136,99 @@ class _ChatEncryptionSettingsState extends State<ChatEncryptionSettings> {
if (i == 0 ||
deviceKeys[i].userId != deviceKeys[i - 1].userId)
Material(
child: ListTile(
leading: Avatar(
room
child: PopupMenuButton(
onSelected: (action) =>
onSelected(context, action, deviceKeys[i]),
itemBuilder: (c) {
var items = <PopupMenuEntry<String>>[];
if (room
.client
.userDeviceKeys[deviceKeys[i].userId]
.verified ==
UserVerifiedStatus.unknown &&
deviceKeys[i].userId != room.client.userID) {
items.add(PopupMenuItem(
child: Text(L10n.of(context).verifyUser),
value: 'verify_user',
));
}
return items;
},
child: ListTile(
leading: Avatar(
room
.getUserByMXIDSync(deviceKeys[i].userId)
.avatarUrl,
room
.getUserByMXIDSync(deviceKeys[i].userId)
.calcDisplayname(),
),
title: Text(room
.getUserByMXIDSync(deviceKeys[i].userId)
.avatarUrl,
room
.getUserByMXIDSync(deviceKeys[i].userId)
.calcDisplayname(),
.calcDisplayname()),
subtitle: Text(deviceKeys[i].userId),
),
title: Text(room
.getUserByMXIDSync(deviceKeys[i].userId)
.calcDisplayname()),
subtitle: Text(deviceKeys[i].userId),
),
elevation: 2,
),
CheckboxListTile(
title: Text(
"${deviceKeys[i].unsigned["device_display_name"] ?? L10n.of(context).unknownDevice} - ${deviceKeys[i].deviceId}",
style: TextStyle(
color: deviceKeys[i].blocked
? Colors.red
: deviceKeys[i].verified
? Colors.green
: Colors.orange),
),
subtitle: Text(
deviceKeys[i]
.keys['ed25519:${deviceKeys[i].deviceId}']
.beautified,
style: TextStyle(
color:
Theme.of(context).textTheme.bodyText2.color),
),
value: deviceKeys[i].verified,
onChanged: (bool newVal) {
if (newVal == true) {
if (deviceKeys[i].blocked) {
deviceKeys[i]
.setBlocked(false, Matrix.of(context).client);
PopupMenuButton(
onSelected: (action) =>
onSelected(context, action, deviceKeys[i]),
itemBuilder: (c) {
var items = <PopupMenuEntry<String>>[];
if (deviceKeys[i].blocked ||
!deviceKeys[i].verified) {
if (deviceKeys[i].userId == room.client.userID) {
items.add(PopupMenuItem(
child: Text(L10n.of(context).verifyStart),
value: 'verify',
));
items.add(PopupMenuItem(
child: Text(L10n.of(context).verifyManual),
value: 'verify_manual',
));
} else {
items.add(PopupMenuItem(
child: Text(L10n.of(context).verifyUser),
value: 'verify_user',
));
}
deviceKeys[i]
.setVerified(true, Matrix.of(context).client);
} else {
if (deviceKeys[i].verified) {
deviceKeys[i].setVerified(
false, Matrix.of(context).client);
}
deviceKeys[i]
.setBlocked(true, Matrix.of(context).client);
}
setState(() => null);
if (deviceKeys[i].blocked) {
items.add(PopupMenuItem(
child: Text(L10n.of(context).unblockDevice),
value: 'unblock',
));
}
if (!deviceKeys[i].blocked) {
items.add(PopupMenuItem(
child: Text(L10n.of(context).blockDevice),
value: 'block',
));
}
return items;
},
child: ListTile(
title: Text(
"${deviceKeys[i].unsigned["device_display_name"] ?? L10n.of(context).unknownDevice} - ${deviceKeys[i].deviceId}",
style: TextStyle(
color: deviceKeys[i].blocked
? Colors.red
: deviceKeys[i].verified
? Colors.green
: Colors.orange),
),
subtitle: Text(
deviceKeys[i]
.keys['ed25519:${deviceKeys[i].deviceId}']
.beautified,
style: TextStyle(
color: Theme.of(context)
.textTheme
.bodyText2
.color),
),
),
),
],
),

View File

@ -3,23 +3,20 @@ import 'dart:io';
import 'package:famedlysdk/famedlysdk.dart';
import 'package:famedlysdk/matrix_api.dart';
import 'package:fluffychat/components/connection_status_header.dart';
import 'package:fluffychat/components/dialogs/simple_dialogs.dart';
import 'package:fluffychat/components/list_items/presence_list_item.dart';
import 'package:fluffychat/components/list_items/public_room_list_item.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
import 'package:share/share.dart';
import '../components/theme_switcher.dart';
import '../components/adaptive_page_layout.dart';
import '../components/list_items/chat_list_item.dart';
import '../components/matrix.dart';
import '../l10n/l10n.dart';
import '../utils/app_route.dart';
import '../utils/url_launcher.dart';
import '../utils/client_presence_extension.dart';
import 'archive.dart';
import 'homeserver_picker.dart';
import 'new_group.dart';
@ -55,6 +52,7 @@ class ChatList extends StatefulWidget {
class _ChatListState extends State<ChatList> {
bool get searchMode => searchController.text?.isNotEmpty ?? false;
final TextEditingController searchController = TextEditingController();
final FocusNode _searchFocusNode = FocusNode();
Timer coolDown;
PublicRoomsResponse publicRoomsResponse;
bool loadingPublicRooms = false;
@ -140,7 +138,7 @@ class _ChatListState extends State<ChatList> {
'msgtype': 'chat.fluffy.shared_file',
'file': MatrixFile(
bytes: file.readAsBytesSync(),
path: file.path,
name: file.path,
),
};
}
@ -290,7 +288,7 @@ class _ChatListState extends State<ChatList> {
),
),
appBar: AppBar(
elevation: _scrolledToTop ? 0 : null,
//elevation: _scrolledToTop ? 0 : null,
leading: selectMode != SelectMode.share
? null
: IconButton(
@ -301,31 +299,26 @@ class _ChatListState extends State<ChatList> {
titleSpacing: 0,
title: selectMode == SelectMode.share
? Text(L10n.of(context).share)
: Container(
padding: EdgeInsets.all(8),
height: 42,
margin: EdgeInsets.only(right: 8),
decoration: BoxDecoration(
color: Theme.of(context).secondaryHeaderColor,
borderRadius: BorderRadius.circular(90),
),
: Padding(
padding:
EdgeInsets.only(top: 8, bottom: 8, right: 8),
child: TextField(
autocorrect: false,
controller: searchController,
focusNode: _searchFocusNode,
decoration: InputDecoration(
suffixIcon: loadingPublicRooms
? Container(
alignment: Alignment.centerRight,
child: Container(
width: 20,
height: 20,
child: CircularProgressIndicator(),
),
)
: Icon(Icons.search),
contentPadding: EdgeInsets.all(9),
border: InputBorder.none,
hintText: L10n.of(context).searchForAChat,
suffixIcon: searchMode
? IconButton(
icon: Icon(Icons.backspace),
onPressed: () => setState(() {
searchController.clear();
_searchFocusNode.unfocus();
}),
)
: null,
),
),
),
@ -334,39 +327,14 @@ class _ChatListState extends State<ChatList> {
(AdaptivePageLayout.columnMode(context) ||
selectMode == SelectMode.share)
? null
: SpeedDial(
: FloatingActionButton(
child: Icon(Icons.add),
overlayColor: blackWhiteColor(context),
foregroundColor: Colors.white,
backgroundColor: Theme.of(context).primaryColor,
children: [
SpeedDialChild(
child: Icon(Icons.people_outline),
foregroundColor: Colors.white,
backgroundColor: Colors.blue,
label: L10n.of(context).createNewGroup,
labelStyle: TextStyle(
fontSize: 18.0, color: Colors.black),
onTap: () => Navigator.of(context)
.pushAndRemoveUntil(
AppRoute.defaultRoute(
context, NewGroupView()),
(r) => r.isFirst),
),
SpeedDialChild(
child: Icon(Icons.person_add),
foregroundColor: Colors.white,
backgroundColor: Colors.green,
label: L10n.of(context).newPrivateChat,
labelStyle: TextStyle(
fontSize: 18.0, color: Colors.black),
onTap: () => Navigator.of(context)
.pushAndRemoveUntil(
AppRoute.defaultRoute(
context, NewPrivateChatView()),
(r) => r.isFirst),
),
],
onPressed: () => Navigator.of(context)
.pushAndRemoveUntil(
AppRoute.defaultRoute(
context, NewPrivateChatView()),
(r) => r.isFirst),
),
body: StreamBuilder(
stream: Matrix.of(context).client.onSync.stream,
@ -409,50 +377,66 @@ class _ChatListState extends State<ChatList> {
(publicRoomsResponse?.chunk?.length ?? 0);
final totalCount =
rooms.length + publicRoomsCount;
final directChats =
rooms.where((r) => r.isDirectChat).toList();
final presences =
Matrix.of(context).client.presences;
directChats.sort((a, b) =>
presences[b.directChatMatrixID]
?.presence
?.statusMsg !=
null
? 1
: b.lastEvent.originServerTs.compareTo(
a.lastEvent.originServerTs));
return ListView.separated(
controller: _scrollController,
separatorBuilder:
(BuildContext context, int i) =>
i == totalCount - publicRoomsCount
? Material(
elevation: 2,
child: ListTile(
title: Text(L10n.of(context)
.publicRooms),
),
)
: Container(),
separatorBuilder: (BuildContext context,
int i) =>
i == totalCount - publicRoomsCount
? ListTile(
title: Text(
L10n.of(context).publicRooms +
':',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Theme.of(context)
.primaryColor,
),
),
)
: Container(),
itemCount: totalCount + 1,
itemBuilder: (BuildContext context, int i) {
if (i == 0) {
return (Matrix.of(context)
.client
.statusList
.isEmpty ||
selectMode == SelectMode.share)
? Container()
: PreferredSize(
preferredSize:
Size.fromHeight(89),
child: Container(
height: 81,
child: ListView.builder(
scrollDirection:
Axis.horizontal,
itemCount: Matrix.of(context)
.client
.statusList
.length,
itemBuilder: (BuildContext
context,
int i) =>
PresenceListItem(
Matrix.of(context)
.client
.statusList[i]),
return Column(
mainAxisSize: MainAxisSize.min,
children: [
ConnectionStatusHeader(),
(directChats.isEmpty ||
selectMode ==
SelectMode.share)
? Container()
: PreferredSize(
preferredSize:
Size.fromHeight(90),
child: Container(
height: 82,
child: ListView.builder(
scrollDirection:
Axis.horizontal,
itemCount:
directChats.length,
itemBuilder: (BuildContext
context,
int i) =>
PresenceListItem(
directChats[i]),
),
),
),
),
);
],
);
}
i--;
return i < rooms.length

View File

@ -19,7 +19,8 @@ class _HomeserverPickerState extends State<HomeserverPicker> {
final homeserver = await SimpleDialogs(context).enterText(
titleText: L10n.of(context).enterYourHomeserver,
hintText: Matrix.defaultHomeserver,
prefixText: 'https://');
prefixText: 'https://',
keyboardType: TextInputType.url);
if (homeserver?.isEmpty ?? true) return;
_checkHomeserverAction(homeserver, context);
}
@ -48,6 +49,12 @@ class _HomeserverPickerState extends State<HomeserverPicker> {
)));
}
} else {
homeserver = homeserver.trim();
if (homeserver.endsWith('/')) {
homeserver = homeserver.substring(0, homeserver.length - 1);
}
wellknown = await SimpleDialogs(context).tryRequestWithLoadingDialog(
Matrix.of(context)
.client

View File

@ -0,0 +1,343 @@
import 'package:flutter/material.dart';
import 'package:famedlysdk/encryption.dart';
import 'package:famedlysdk/matrix_api.dart';
import 'chat_list.dart';
import '../components/adaptive_page_layout.dart';
import '../components/avatar.dart';
import '../components/dialogs/simple_dialogs.dart';
import '../l10n/l10n.dart';
class KeyVerificationView extends StatelessWidget {
final KeyVerification request;
KeyVerificationView({this.request});
@override
Widget build(BuildContext context) {
return AdaptivePageLayout(
primaryPage: FocusPage.SECOND,
firstScaffold: ChatList(),
secondScaffold: KeyVerificationPage(request: request),
);
}
}
class KeyVerificationPage extends StatefulWidget {
final KeyVerification request;
KeyVerificationPage({this.request});
@override
_KeyVerificationPageState createState() => _KeyVerificationPageState();
}
class _KeyVerificationPageState extends State<KeyVerificationPage> {
void Function() originalOnUpdate;
@override
void initState() {
originalOnUpdate = widget.request.onUpdate;
widget.request.onUpdate = () {
if (originalOnUpdate != null) {
originalOnUpdate();
}
setState(() => null);
};
widget.request.client.getProfileFromUserId(widget.request.userId).then((p) {
profile = p;
setState(() => null);
});
super.initState();
}
@override
void dispose() {
widget.request.onUpdate =
originalOnUpdate; // don't want to get updates anymore
if (![KeyVerificationState.error, KeyVerificationState.done]
.contains(widget.request.state)) {
widget.request.cancel('m.user');
}
super.dispose();
}
Profile profile;
@override
Widget build(BuildContext context) {
Widget body;
final buttons = <Widget>[];
switch (widget.request.state) {
case KeyVerificationState.askSSSS:
// prompt the user for their ssss passphrase / key
final textEditingController = TextEditingController();
String input;
final checkInput = () async {
if (input == null) {
return;
}
SimpleDialogs(context).showLoadingDialog(context);
// make sure the loading spinner shows before we test the keys
await Future.delayed(Duration(milliseconds: 100));
var valid = false;
try {
await widget.request.openSSSS(recoveryKey: input);
valid = true;
} catch (_) {
try {
await widget.request.openSSSS(passphrase: input);
valid = true;
} catch (_) {
valid = false;
}
}
await Navigator.of(context)?.pop();
if (!valid) {
await SimpleDialogs(context).inform(
contentText: L10n.of(context).incorrectPassphraseOrKey,
);
}
};
body = Container(
margin: EdgeInsets.only(left: 8.0, right: 8.0),
child: Column(
children: <Widget>[
Text(L10n.of(context).askSSSSSign,
style: TextStyle(fontSize: 20)),
Container(height: 10),
TextField(
controller: textEditingController,
autofocus: false,
autocorrect: false,
onSubmitted: (s) {
input = s;
checkInput();
},
minLines: 1,
maxLines: 1,
obscureText: true,
decoration: InputDecoration(
hintText: L10n.of(context).passphraseOrKey,
prefixStyle: TextStyle(color: Theme.of(context).primaryColor),
suffixStyle: TextStyle(color: Theme.of(context).primaryColor),
border: OutlineInputBorder(),
),
),
],
mainAxisSize: MainAxisSize.min,
),
);
buttons.add(RaisedButton(
color: Theme.of(context).primaryColor,
elevation: 5,
textColor: Colors.white,
child: Text(L10n.of(context).submit),
onPressed: () {
input = textEditingController.text;
checkInput();
},
));
buttons.add(RaisedButton(
textColor: Theme.of(context).primaryColor,
elevation: 5,
color: Colors.white,
child: Text(L10n.of(context).skip),
onPressed: () => widget.request.openSSSS(skip: true),
));
break;
case KeyVerificationState.askAccept:
body = Container(
child: Text(
L10n.of(context).askVerificationRequest(widget.request.userId),
style: TextStyle(fontSize: 20)),
margin: EdgeInsets.only(left: 8.0, right: 8.0),
);
buttons.add(RaisedButton(
color: Theme.of(context).primaryColor,
elevation: 5,
textColor: Colors.white,
child: Text(L10n.of(context).accept),
onPressed: () => widget.request.acceptVerification(),
));
buttons.add(RaisedButton(
textColor: Theme.of(context).primaryColor,
elevation: 5,
color: Colors.white,
child: Text(L10n.of(context).reject),
onPressed: () {
widget.request.rejectVerification().then((_) {
Navigator.of(context).pop();
});
},
));
break;
case KeyVerificationState.waitingAccept:
body = Column(
children: <Widget>[
CircularProgressIndicator(),
Container(height: 10),
Text(L10n.of(context).waitingPartnerAcceptRequest),
],
mainAxisSize: MainAxisSize.min,
);
break;
case KeyVerificationState.askSas:
TextSpan compareWidget;
// maybe add a button to switch between the two and only determine default
// view for if "emoji" is a present sasType or not?
String compareText;
if (widget.request.sasTypes.contains('emoji')) {
compareText = L10n.of(context).compareEmojiMatch;
compareWidget = TextSpan(
children: widget.request.sasEmojis
.map((e) => WidgetSpan(child: _Emoji(e)))
.toList(),
);
} else {
compareText = L10n.of(context).compareNumbersMatch;
final numbers = widget.request.sasNumbers;
final numbstr = '${numbers[0]}-${numbers[1]}-${numbers[2]}';
compareWidget =
TextSpan(text: numbstr, style: TextStyle(fontSize: 40));
}
body = Column(
children: <Widget>[
Container(
child: Text(compareText, style: TextStyle(fontSize: 20)),
margin: EdgeInsets.only(left: 8.0, right: 8.0),
),
Container(height: 10),
Text.rich(
compareWidget,
textAlign: TextAlign.center,
),
],
mainAxisSize: MainAxisSize.min,
);
buttons.add(RaisedButton(
color: Theme.of(context).primaryColor,
elevation: 5,
textColor: Colors.white,
child: Text(L10n.of(context).theyMatch),
onPressed: () => widget.request.acceptSas(),
));
buttons.add(RaisedButton(
textColor: Theme.of(context).primaryColor,
elevation: 5,
color: Colors.white,
child: Text(L10n.of(context).theyDontMatch),
onPressed: () => widget.request.rejectSas(),
));
break;
case KeyVerificationState.waitingSas:
var acceptText = widget.request.sasTypes.contains('emoji')
? L10n.of(context).waitingPartnerEmoji
: L10n.of(context).waitingPartnerNumbers;
body = Column(
children: <Widget>[
CircularProgressIndicator(),
Container(height: 10),
Text(acceptText),
],
mainAxisSize: MainAxisSize.min,
);
break;
case KeyVerificationState.done:
body = Column(
children: <Widget>[
Icon(Icons.check_circle, color: Colors.green, size: 200.0),
Container(height: 10),
Text(L10n.of(context).verifySuccess),
],
mainAxisSize: MainAxisSize.min,
);
buttons.add(RaisedButton(
color: Theme.of(context).primaryColor,
elevation: 5,
textColor: Colors.white,
child: Text(L10n.of(context).close),
onPressed: () => Navigator.of(context).pop(),
));
break;
case KeyVerificationState.error:
body = Column(
children: <Widget>[
Icon(Icons.cancel, color: Colors.red, size: 200.0),
Container(height: 10),
Text(
'Error ${widget.request.canceledCode}: ${widget.request.canceledReason}'),
],
mainAxisSize: MainAxisSize.min,
);
buttons.add(RaisedButton(
color: Theme.of(context).primaryColor,
elevation: 5,
textColor: Colors.white,
child: Text(L10n.of(context).close),
onPressed: () => Navigator.of(context).pop(),
));
break;
}
body ??= Text('ERROR: Unknown state ' + widget.request.state.toString());
final otherName = profile?.displayname ?? widget.request.userId;
var bottom;
if (widget.request.deviceId != null) {
final deviceName = widget
.request
.client
.userDeviceKeys[widget.request.userId]
?.deviceKeys[widget.request.deviceId]
?.deviceDisplayName ??
'';
bottom = PreferredSize(
child: Text('$deviceName (${widget.request.deviceId})',
style: TextStyle(color: Theme.of(context).textTheme.caption.color)),
preferredSize: Size(0.0, 20.0),
);
}
return Scaffold(
appBar: AppBar(
title: ListTile(
leading: Avatar(profile?.avatarUrl, otherName),
contentPadding: EdgeInsets.zero,
title: Text(L10n.of(context).verifyTitle),
isThreeLine: otherName != widget.request.userId,
subtitle: Column(
children: <Widget>[
Text(otherName),
if (otherName != widget.request.userId)
Text(widget.request.userId),
],
crossAxisAlignment: CrossAxisAlignment.start,
),
),
elevation: 0,
bottom: bottom,
),
extendBody: true,
extendBodyBehindAppBar: true,
body: Center(
child: body,
),
persistentFooterButtons: buttons.isEmpty ? null : buttons,
);
}
}
class _Emoji extends StatelessWidget {
final KeyVerificationEmoji emoji;
_Emoji(this.emoji);
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(emoji.emoji, style: TextStyle(fontSize: 50)),
Text(emoji.name),
Container(height: 10, width: 5),
],
);
}
}

View File

@ -67,7 +67,7 @@ class _LoginState extends State<Login> {
if (!kIsWeb) {
try {
await FirebaseController.setupFirebase(
matrix.client,
matrix,
matrix.widget.clientName,
);
} catch (exception) {
@ -174,7 +174,8 @@ class _LoginState extends State<Login> {
title: TextField(
readOnly: loading,
autocorrect: false,
autofocus: widget.username != null ? false : true,
autofocus: true,
keyboardType: TextInputType.emailAddress,
onChanged: (t) => _checkWellKnownWithCoolDown(t, context),
controller: usernameController,
decoration: InputDecoration(
@ -231,7 +232,7 @@ class _LoginState extends State<Login> {
L10n.of(context).login.toUpperCase(),
style: TextStyle(color: Colors.white, fontSize: 16),
),
onPressed: () => loading ? null : login(context),
onPressed: loading ? null : () => login(context),
),
),
),

View File

@ -1,9 +1,12 @@
import 'dart:io';
import 'package:famedlysdk/famedlysdk.dart';
import 'package:fluffychat/components/settings_themes.dart';
import 'package:fluffychat/views/settings_devices.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:memoryfilepicker/memoryfilepicker.dart';
import 'package:url_launcher/url_launcher.dart';
import 'app_info.dart';
@ -35,6 +38,10 @@ class Settings extends StatefulWidget {
class _SettingsState extends State<Settings> {
Future<dynamic> profileFuture;
dynamic profile;
Future<bool> crossSigningCachedFuture;
bool crossSigningCached;
Future<bool> megolmBackupCachedFuture;
bool megolmBackupCached;
void logoutAction(BuildContext context) async {
if (await SimpleDialogs(context).askConfirmation() == false) {
@ -81,7 +88,7 @@ class _SettingsState extends State<Settings> {
}
void setAvatarAction(BuildContext context) async {
final tempFile = await ImagePicker.pickImage(
final tempFile = await MemoryFilePicker.getImage(
source: ImageSource.gallery,
imageQuality: 50,
maxWidth: 1600,
@ -91,8 +98,8 @@ class _SettingsState extends State<Settings> {
final success = await SimpleDialogs(context).tryRequestWithLoadingDialog(
matrix.client.setAvatar(
MatrixFile(
bytes: await tempFile.readAsBytes(),
path: tempFile.path,
bytes: tempFile.bytes,
name: tempFile.path,
),
),
);
@ -105,9 +112,9 @@ class _SettingsState extends State<Settings> {
}
void setWallpaperAction(BuildContext context) async {
final wallpaper = await ImagePicker.pickImage(source: ImageSource.gallery);
final wallpaper = await ImagePicker().getImage(source: ImageSource.gallery);
if (wallpaper == null) return;
Matrix.of(context).wallpaper = wallpaper;
Matrix.of(context).wallpaper = File(wallpaper.path);
await Matrix.of(context)
.store
.setItem('chat.fluffy.wallpaper', wallpaper.path);
@ -120,12 +127,65 @@ class _SettingsState extends State<Settings> {
setState(() => null);
}
Future<void> requestSSSSCache(BuildContext context) async {
final handle = Matrix.of(context).client.encryption.ssss.open();
final str = await SimpleDialogs(context).enterText(
titleText: L10n.of(context).askSSSSCache,
hintText: L10n.of(context).passphraseOrKey,
password: true,
);
if (str != null) {
SimpleDialogs(context).showLoadingDialog(context);
// make sure the loading spinner shows before we test the keys
await Future.delayed(Duration(milliseconds: 100));
var valid = false;
try {
handle.unlock(recoveryKey: str);
valid = true;
} catch (_) {
try {
handle.unlock(passphrase: str);
valid = true;
} catch (_) {
valid = false;
}
}
await Navigator.of(context)?.pop();
if (valid) {
await handle.maybeCacheAll();
await SimpleDialogs(context).inform(
contentText: L10n.of(context).cachedKeys,
);
setState(() {
crossSigningCachedFuture = null;
crossSigningCached = null;
megolmBackupCachedFuture = null;
megolmBackupCached = null;
});
} else {
await SimpleDialogs(context).inform(
contentText: L10n.of(context).incorrectPassphraseOrKey,
);
}
}
}
@override
Widget build(BuildContext context) {
final client = Matrix.of(context).client;
profileFuture ??= client.ownProfile;
profileFuture.then((p) {
profileFuture ??= client.ownProfile.then((p) {
if (mounted) setState(() => profile = p);
return p;
});
crossSigningCachedFuture ??=
client.encryption.crossSigning.isCached().then((c) {
if (mounted) setState(() => crossSigningCached = c);
return c;
});
megolmBackupCachedFuture ??=
client.encryption.keyManager.isCached().then((c) {
if (mounted) setState(() => megolmBackupCached = c);
return c;
});
return Scaffold(
body: NestedScrollView(
@ -283,6 +343,110 @@ class _SettingsState extends State<Settings> {
onTap: () => logoutAction(context),
),
Divider(thickness: 1),
ListTile(
title: Text(
L10n.of(context).encryption,
style: TextStyle(
color: Theme.of(context).primaryColor,
fontWeight: FontWeight.bold,
),
),
),
ListTile(
trailing: Icon(Icons.compare_arrows),
title: Text(client.encryption.crossSigning.enabled
? L10n.of(context).crossSigningEnabled
: L10n.of(context).crossSigningDisabled),
subtitle: client.encryption.crossSigning.enabled
? Text(client.isUnknownSession
? L10n.of(context).unknownSessionVerify
: L10n.of(context).sessionVerified +
', ' +
(crossSigningCached == null
? ''
: (crossSigningCached
? L10n.of(context).keysCached
: L10n.of(context).keysMissing)))
: null,
onTap: () async {
if (!client.encryption.crossSigning.enabled) {
await SimpleDialogs(context).inform(
contentText: L10n.of(context).noCrossSignBootstrap,
);
return;
}
if (client.isUnknownSession) {
final str = await SimpleDialogs(context).enterText(
titleText: L10n.of(context).askSSSSVerify,
hintText: L10n.of(context).passphraseOrKey,
password: true,
);
if (str != null) {
SimpleDialogs(context).showLoadingDialog(context);
// make sure the loading spinner shows before we test the keys
await Future.delayed(Duration(milliseconds: 100));
var valid = false;
try {
await client.encryption.crossSigning
.selfSign(recoveryKey: str);
valid = true;
} catch (_) {
try {
await client.encryption.crossSigning
.selfSign(passphrase: str);
valid = true;
} catch (_) {
valid = false;
}
}
await Navigator.of(context)?.pop();
if (valid) {
await SimpleDialogs(context).inform(
contentText: L10n.of(context).verifiedSession,
);
setState(() {
crossSigningCachedFuture = null;
crossSigningCached = null;
megolmBackupCachedFuture = null;
megolmBackupCached = null;
});
} else {
await SimpleDialogs(context).inform(
contentText: L10n.of(context).incorrectPassphraseOrKey,
);
}
}
}
if (!(await client.encryption.crossSigning.isCached())) {
await requestSSSSCache(context);
}
},
),
ListTile(
trailing: Icon(Icons.wb_cloudy),
title: Text(client.encryption.keyManager.enabled
? L10n.of(context).onlineKeyBackupEnabled
: L10n.of(context).onlineKeyBackupDisabled),
subtitle: client.encryption.keyManager.enabled
? Text(megolmBackupCached == null
? ''
: (megolmBackupCached
? L10n.of(context).keysCached
: L10n.of(context).keysMissing))
: null,
onTap: () async {
if (!client.encryption.keyManager.enabled) {
await SimpleDialogs(context).inform(
contentText: L10n.of(context).noMegolmBootstrap,
);
return;
}
if (!(await client.encryption.keyManager.isCached())) {
await requestSSSSCache(context);
}
},
),
Divider(thickness: 1),
ListTile(
title: Text(
L10n.of(context).about,

View File

@ -4,6 +4,7 @@ import 'package:flutter_advanced_networkimage/provider.dart';
import 'package:famedlysdk/famedlysdk.dart';
import 'package:image_picker/image_picker.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:memoryfilepicker/memoryfilepicker.dart';
import 'chat_list.dart';
import '../components/adaptive_page_layout.dart';
@ -367,20 +368,19 @@ class _EmoteImagePickerState extends State<_EmoteImagePicker> {
BotToast.showText(text: L10n.of(context).notSupportedInWeb);
return;
}
var file = await ImagePicker.pickImage(
var file = await MemoryFilePicker.getImage(
source: ImageSource.gallery,
imageQuality: 50,
maxWidth: 128,
maxHeight: 128);
if (file == null) return;
final matrixFile =
MatrixFile(bytes: await file.readAsBytes(), path: file.path);
final matrixFile = MatrixFile(bytes: file.bytes, name: file.path);
final uploadResp =
await SimpleDialogs(context).tryRequestWithLoadingDialog(
Matrix.of(context)
.client
.api
.upload(matrixFile.bytes, matrixFile.path),
.upload(matrixFile.bytes, matrixFile.name),
);
setState(() {
widget.controller.text = uploadResp;

View File

@ -1,4 +1,3 @@
import 'dart:io';
import 'dart:math';
import 'package:famedlysdk/famedlysdk.dart';
@ -10,6 +9,7 @@ import 'package:fluffychat/views/sign_up_password.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:memoryfilepicker/memoryfilepicker.dart';
class SignUp extends StatefulWidget {
SignUp({Key key, WellKnownInformations this.wellknown: null})
@ -25,10 +25,10 @@ class _SignUpState extends State<SignUp> {
final TextEditingController usernameController = TextEditingController();
String usernameError;
bool loading = false;
File avatar;
MemoryFile avatar;
void setAvatarAction() async {
var file = await ImagePicker.pickImage(
var file = await MemoryFilePicker.getImage(
source: ImageSource.gallery,
maxHeight: 512,
maxWidth: 512,
@ -97,7 +97,8 @@ class _SignUpState extends State<SignUp> {
children: <Widget>[
ListTile(
leading: CircleAvatar(
backgroundImage: avatar == null ? null : FileImage(avatar),
backgroundImage:
avatar == null ? null : MemoryImage(avatar.bytes),
backgroundColor: avatar == null
? Theme.of(context).brightness == Brightness.dark
? Color(0xff121212)
@ -164,7 +165,7 @@ class _SignUpState extends State<SignUp> {
L10n.of(context).signUp.toUpperCase(),
style: TextStyle(color: Colors.white, fontSize: 16),
),
onPressed: () => loading ? null : signUpAction(context),
onPressed: loading ? null : () => signUpAction(context),
),
),
),

View File

@ -1,4 +1,3 @@
import 'dart:io';
import 'dart:math';
import 'package:famedlysdk/famedlysdk.dart';
@ -8,11 +7,12 @@ import 'package:fluffychat/utils/app_route.dart';
import 'package:fluffychat/views/auth_web_view.dart';
import 'package:flutter/material.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:memoryfilepicker/memoryfilepicker.dart';
import 'chat_list.dart';
class SignUpPassword extends StatefulWidget {
final File avatar;
final MemoryFile avatar;
final String username;
final String displayname;
final WellKnownInformations wellknown;
@ -102,8 +102,8 @@ class _SignUpPasswordState extends State<SignUpPassword> {
try {
await matrix.client.setAvatar(
MatrixFile(
bytes: await widget.avatar.readAsBytes(),
path: widget.avatar.path,
bytes: widget.avatar.bytes,
name: widget.avatar.path,
),
);
} catch (exception) {
@ -181,7 +181,7 @@ class _SignUpPasswordState extends State<SignUpPassword> {
L10n.of(context).createAccountNow.toUpperCase(),
style: TextStyle(color: Colors.white, fontSize: 16),
),
onPressed: () => loading ? null : _signUpAction(context),
onPressed: loading ? null : () => _signUpAction(context),
),
),
),

View File

@ -29,6 +29,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.0"
asn1lib:
dependency: transitive
description:
name: asn1lib
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.4"
async:
dependency: transitive
description:
@ -36,6 +43,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.1"
base58check:
dependency: transitive
description:
name: base58check
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
boolean_selector:
dependency: transitive
description:
@ -127,15 +141,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.3"
encrypted_moor:
dependency: "direct main"
encrypt:
dependency: transitive
description:
path: "extras/encryption"
ref: HEAD
resolved-ref: "6f930b011577e5bc8a5e5511691c8fcc43869a1c"
url: "https://github.com/simolus3/moor.git"
source: git
version: "1.0.0"
name: encrypt
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.2"
fake_async:
dependency: transitive
description:
@ -158,12 +170,19 @@ packages:
source: hosted
version: "0.1.3"
file_picker:
dependency: "direct main"
dependency: transitive
description:
name: file_picker
url: "https://pub.dartlang.org"
source: hosted
version: "1.4.3+2"
version: "1.12.0"
file_picker_platform_interface:
dependency: transitive
description:
name: file_picker_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
firebase_messaging:
dependency: "direct main"
description:
@ -222,7 +241,21 @@ packages:
name: flutter_matrix_html
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.8"
version: "0.1.2"
flutter_olm:
dependency: "direct main"
description:
name: flutter_olm
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.8"
flutter_secure_storage:
dependency: "direct main"
description:
@ -244,13 +277,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
flutter_speed_dial:
dependency: "direct main"
description:
name: flutter_speed_dial
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.5"
flutter_svg:
dependency: transitive
description:
@ -325,12 +351,19 @@ packages:
source: hosted
version: "2.1.12"
image_picker:
dependency: "direct main"
dependency: transitive
description:
name: image_picker
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.2+3"
version: "0.6.7+2"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
intl:
dependency: "direct main"
description:
@ -397,12 +430,17 @@ packages:
matrix_file_e2ee:
dependency: transitive
description:
path: "."
ref: "1.x.y"
resolved-ref: "32edeff765369a7a77a0822f4b19302ca24a017b"
url: "https://gitlab.com/famedly/libraries/matrix_file_e2ee.git"
source: git
version: "1.0.3"
name: matrix_file_e2ee
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
memoryfilepicker:
dependency: "direct main"
description:
name: memoryfilepicker
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.1"
meta:
dependency: transitive
description:
@ -431,6 +469,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
moor_ffi:
dependency: "direct main"
description:
name: moor_ffi
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.0"
multi_server_socket:
dependency: transitive
description:
@ -462,12 +507,10 @@ packages:
olm:
dependency: transitive
description:
path: "."
ref: "1.x.y"
resolved-ref: f66975bd1b5cb1865eba5efe6e3a392aa5e396a5
url: "https://gitlab.com/famedly/libraries/dart-olm.git"
source: git
version: "1.1.1"
name: olm
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
open_file:
dependency: "direct main"
description:
@ -489,6 +532,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.10"
password_hash:
dependency: transitive
description:
name: password_hash
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
path:
dependency: transitive
description:
@ -551,7 +601,7 @@ packages:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.0.2"
pointycastle:
dependency: transitive
description:
@ -655,20 +705,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
sqflite_sqlcipher:
dependency: transitive
description:
name: sqflite_sqlcipher
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0+6"
stack_trace:
dependency: transitive
description:
@ -738,7 +774,7 @@ packages:
name: universal_html
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.12"
version: "1.2.3"
universal_io:
dependency: transitive
description:

View File

@ -11,7 +11,7 @@ description: Chat with your friends.
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 0.14.0+40
version: 0.15.1+42
environment:
sdk: ">=2.6.0 <3.0.0"
@ -29,12 +29,9 @@ dependencies:
localstorage: ^3.0.1+4
bubble: ^1.1.9+1
file_picker: ^1.4.3+2
image_picker: ^0.6.2+3
flutter_speed_dial: ^1.2.5
memoryfilepicker: ^0.1.1
url_launcher: ^5.4.1
url_launcher_web: ^0.1.0
sqflite: ^1.2.0
flutter_advanced_networkimage: any
firebase_messaging: ^6.0.13
flutter_local_notifications: ^1.4.3
@ -52,20 +49,19 @@ dependencies:
open_file: ^3.0.1
mime_type: ^0.3.0
bot_toast: ^3.0.0
flutter_matrix_html: ^0.0.8
flutter_matrix_html: ^0.1.1
moor: ^3.0.2
random_string: ^2.0.1
flutter_typeahead: ^1.8.1
flutter_olm: ^1.0.1
intl: ^0.16.0
intl_translation: ^0.17.9
flutter_localizations:
sdk: flutter
encrypted_moor:
git:
url: https://github.com/simolus3/moor.git
path: extras/encryption
moor_ffi: ^0.5.0 # 0.6.0 and up have a bug that it doesn't build with --profile, see https://github.com/simolus3/moor/issues/581
sqflite: ^1.1.7 # Still used to obtain the database location
dev_dependencies:
flutter_test:
@ -93,6 +89,7 @@ flutter:
# To add assets to your application, add an assets section, like this:
assets:
- assets/
- assets/sounds/
- assets/js/
- assets/js/package/

View File

@ -19,7 +19,7 @@ var initSqlJs = function (moduleConfig) {
return initSqlJsPromise;
}
// If we're here, we've never called this function before
initSqlJsPromise = new Promise((resolveModule, reject) => {
initSqlJsPromise = new Promise(function (resolveModule, reject) {
// We are modularizing this manually because the current modularize setting in Emscripten has some issues:
// https://github.com/kripken/emscripten/issues/5820
@ -66,124 +66,118 @@ var initSqlJs = function (moduleConfig) {
// of the options, and has the side effect of reducing emcc's efforts to modify the module if its output were to change in the future.
// That's a nice side effect since we're handling the modularization efforts ourselves
module = undefined;
// The emcc-generated code and shell-post.js code goes below,
// meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort
var aa;var f;f||(f=typeof Module !== 'undefined' ? Module : {});
var va=function(){var a;var b=h(4);var c={};var d=function(){function a(a,b){this.fb=a;this.db=b;this.nb=1;this.Eb=[]}a.prototype.bind=function(a){if(!this.fb)throw"Statement closed";this.reset();return Array.isArray(a)?this.lc(a):this.mc(a)};a.prototype.step=function(){var a;if(!this.fb)throw"Statement closed";this.nb=1;switch(a=Tb(this.fb)){case c.hc:return!0;case c.DONE:return!1;default:return this.db.handleError(a)}};a.prototype.sc=function(a){null==a&&(a=this.nb++);return Ub(this.fb,a)};a.prototype.tc=
function(a){null==a&&(a=this.nb++);return Vb(this.fb,a)};a.prototype.getBlob=function(a){var b;null==a&&(a=this.nb++);var c=Wb(this.fb,a);var d=Xb(this.fb,a);var e=new Uint8Array(c);for(a=b=0;0<=c?b<c:b>c;a=0<=c?++b:--b)e[a]=l[d+a];return e};a.prototype.get=function(a){var b,d;null!=a&&this.bind(a)&&this.step();var e=[];a=b=0;for(d=ib(this.fb);0<=d?b<d:b>d;a=0<=d?++b:--b)switch(Yb(this.fb,a)){case c.fc:case c.FLOAT:e.push(this.sc(a));break;case c.ic:e.push(this.tc(a));break;case c.Zb:e.push(this.getBlob(a));
break;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,b;var c=[];var d=a=0;for(b=ib(this.fb);0<=b?a<b:a>b;d=0<=b?++a:--a)c.push(Zb(this.fb,d));return c};a.prototype.getAsObject=function(a){var b,c;var d=this.get(a);var e=this.getColumnNames();var g={};a=b=0;for(c=e.length;b<c;a=++b){var Sb=e[a];g[Sb]=d[a]}return g};a.prototype.run=function(a){null!=a&&this.bind(a);this.step();return this.reset()};a.prototype.pc=function(a,b){var c;null==b&&(b=this.nb++);a=ba(a);this.Eb.push(c=
ea(a));this.db.handleError(ca(this.fb,b,c,a.length-1,0))};a.prototype.kc=function(a,b){var c;null==b&&(b=this.nb++);this.Eb.push(c=ea(a));this.db.handleError(Ia(this.fb,b,c,a.length,0))};a.prototype.oc=function(a,b){null==b&&(b=this.nb++);this.db.handleError((a===(a|0)?$b:ac)(this.fb,b,a))};a.prototype.nc=function(a){null==a&&(a=this.nb++);Ia(this.fb,a,0,0,0)};a.prototype.Qb=function(a,b){null==b&&(b=this.nb++);switch(typeof a){case "string":this.pc(a,b);break;case "number":case "boolean":this.oc(a+
0,b);break;case "object":if(null===a)this.nc(b);else if(null!=a.length)this.kc(a,b);else throw"Wrong API use : tried to bind a value of an unknown type ("+a+").";}};a.prototype.mc=function(a){var b;for(b in a){var c=a[b];var d=bc(this.fb,b);0!==d&&this.Qb(c,d)}return!0};a.prototype.lc=function(a){var b,c;var d=b=0;for(c=a.length;b<c;d=++b){var e=a[d];this.Qb(e,d+1)}return!0};a.prototype.reset=function(){this.freemem();return cc(this.fb)===c.xb&&dc(this.fb)===c.xb};a.prototype.freemem=function(){for(var a;a=
this.Eb.pop();)ha(a);return null};a.prototype.free=function(){this.freemem();var a=ec(this.fb)===c.xb;delete this.db.Bb[this.fb];this.fb=da;return a};return a}();var e=function(){function a(a){this.filename="dbfile_"+(4294967295*Math.random()>>>0);if(null!=a){var c=this.filename,d=c?n("/",c):"/";c=ia(!0,!0);d=ja(d,(void 0!==c?c:438)&4095|32768,0);if(a){if("string"===typeof a){for(var e=Array(a.length),k=0,m=a.length;k<m;++k)e[k]=a.charCodeAt(k);a=e}ka(d,c|146);e=p(d,"w");la(e,a,0,a.length,0,void 0);
ma(e);ka(d,c)}}this.handleError(g(this.filename,b));this.db=q(b,"i32");fc(this.db);this.Bb={}}a.prototype.run=function(a,c){if(!this.db)throw"Database closed";c?(a=this.prepare(a,c),a.step(),a.free()):this.handleError(m(this.db,a,0,0,b));return this};a.prototype.exec=function(a){if(!this.db)throw"Database closed";var c=na();var e=oa(a)+1;var g=h(e);r(a,l,g,e);a=g;e=h(4);for(g=[];q(a,"i8")!==da;){pa(b);pa(e);this.handleError(fa(this.db,a,-1,b,e));var k=q(b,"i32");a=q(e,"i32");if(k!==da){var m=new d(k,
this);for(k=null;m.step();)null===k&&(k={columns:m.getColumnNames(),values:[]},g.push(k)),k.values.push(m.get());m.free()}}qa(c);return g};a.prototype.each=function(a,b,c,d){"function"===typeof b&&(d=c,c=b,b=void 0);for(a=this.prepare(a,b);a.step();)c(a.getAsObject());a.free();if("function"===typeof d)return d()};a.prototype.prepare=function(a,c){pa(b);this.handleError(z(this.db,a,-1,b,da));a=q(b,"i32");if(a===da)throw"Nothing to prepare";var e=new d(a,this);null!=c&&e.bind(c);return this.Bb[a]=e};
a.prototype["export"]=function(){var a;var c=this.Bb;for(e in c){var d=c[e];d.free()}this.handleError(k(this.db));d=this.filename;var e=e={encoding:"binary"};e.flags=e.flags||"r";e.encoding=e.encoding||"binary";if("utf8"!==e.encoding&&"binary"!==e.encoding)throw Error('Invalid encoding type "'+e.encoding+'"');c=p(d,e.flags);d=ra(d).size;var m=new Uint8Array(d);sa(c,m,0,d,0);"utf8"===e.encoding?a=t(m,0):"binary"===e.encoding&&(a=m);ma(c);this.handleError(g(this.filename,b));this.db=q(b,"i32");return a};
a.prototype.close=function(){var a;var b=this.Bb;for(a in b){var c=b[a];c.free()}this.handleError(k(this.db));ta("/"+this.filename);return this.db=null};a.prototype.handleError=function(a){if(a===c.xb)return null;a=hc(this.db);throw Error(a);};a.prototype.getRowsModified=function(){return y(this.db)};a.prototype.create_function=function(a,b){var d=ua(function(a,c,d){var e,g;var k=[];for(e=g=0;0<=c?g<c:g>c;e=0<=c?++g:--g){var m=q(d+4*e,"i32");var z=jc(m);e=function(){switch(!1){case 1!==z:return kc;
case 2!==z:return lc;case 3!==z:return mc;case 4!==z:return function(a){var b,c;var d=nc(a);var e=oc(a);a=new Uint8Array(d);for(b=c=0;0<=d?c<d:c>d;b=0<=d?++c:--c)a[b]=l[e+b];return a};default:return function(){return null}}}();e=e(m);k.push(e)}if(c=b.apply(null,k))switch(typeof c){case "number":return pc(a,c);case "string":return qc(a,c,-1,-1)}else return rc(a)});this.handleError(sc(this.db,a,b.length,c.jc,0,d,0,0,0));return this};return a}();var g=f.cwrap("sqlite3_open","number",["string","number"]);
var k=f.cwrap("sqlite3_close_v2","number",["number"]);var m=f.cwrap("sqlite3_exec","number",["number","string","number","number","number"]);f.cwrap("sqlite3_free","",["number"]);var y=f.cwrap("sqlite3_changes","number",["number"]);var z=f.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);var fa=f.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);var ca=f.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]);
var Ia=f.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);var ac=f.cwrap("sqlite3_bind_double","number",["number","number","number"]);var $b=f.cwrap("sqlite3_bind_int","number",["number","number","number"]);var bc=f.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);var Tb=f.cwrap("sqlite3_step","number",["number"]);var hc=f.cwrap("sqlite3_errmsg","string",["number"]);var ib=f.cwrap("sqlite3_data_count","number",["number"]);var Ub=f.cwrap("sqlite3_column_double",
"number",["number","number"]);var Vb=f.cwrap("sqlite3_column_text","string",["number","number"]);var Xb=f.cwrap("sqlite3_column_blob","number",["number","number"]);var Wb=f.cwrap("sqlite3_column_bytes","number",["number","number"]);var Yb=f.cwrap("sqlite3_column_type","number",["number","number"]);var Zb=f.cwrap("sqlite3_column_name","string",["number","number"]);var dc=f.cwrap("sqlite3_reset","number",["number"]);var cc=f.cwrap("sqlite3_clear_bindings","number",["number"]);var ec=f.cwrap("sqlite3_finalize",
"number",["number"]);var sc=f.cwrap("sqlite3_create_function_v2","number","number string number number number number number number number".split(" "));var jc=f.cwrap("sqlite3_value_type","number",["number"]);var nc=f.cwrap("sqlite3_value_bytes","number",["number"]);var mc=f.cwrap("sqlite3_value_text","string",["number"]);var kc=f.cwrap("sqlite3_value_int","number",["number"]);var oc=f.cwrap("sqlite3_value_blob","number",["number"]);var lc=f.cwrap("sqlite3_value_double","number",["number"]);var pc=
f.cwrap("sqlite3_result_double","",["number","number"]);var rc=f.cwrap("sqlite3_result_null","",["number"]);var qc=f.cwrap("sqlite3_result_text","",["number","string","number","number"]);var fc=f.cwrap("RegisterExtensionFunctions","number",["number"]);this.SQL={Database:e};for(a in this.SQL)f[a]=this.SQL[a];var da=0;c.xb=0;c.we=1;c.Pe=2;c.Ze=3;c.Cc=4;c.Ec=5;c.Se=6;c.NOMEM=7;c.bf=8;c.Qe=9;c.Re=10;c.Hc=11;c.NOTFOUND=12;c.Oe=13;c.Fc=14;c.$e=15;c.EMPTY=16;c.cf=17;c.df=18;c.Gc=19;c.Te=20;c.Ue=21;c.Ve=
22;c.Dc=23;c.Ne=24;c.af=25;c.We=26;c.Xe=27;c.ef=28;c.hc=100;c.DONE=101;c.fc=1;c.FLOAT=2;c.ic=3;c.Zb=4;c.Ye=5;c.jc=1}.bind(this);f.preRun=f.preRun||[];f.preRun.push(va);var wa={},u;for(u in f)f.hasOwnProperty(u)&&(wa[u]=f[u]);f.arguments=[];f.thisProgram="./this.program";f.quit=function(a,b){throw b;};f.preRun=[];f.postRun=[];var v=!1,w=!1,x=!1,xa=!1;v="object"===typeof window;w="function"===typeof importScripts;x="object"===typeof process&&"function"===typeof require&&!v&&!w;xa=!v&&!x&&!w;var A="";
if(x){A=__dirname+"/";var ya,za;f.read=function(a,b){ya||(ya=require("fs"));za||(za=require("path"));a=za.normalize(a);a=ya.readFileSync(a);return b?a:a.toString()};f.readBinary=function(a){a=f.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};1<process.argv.length&&(f.thisProgram=process.argv[1].replace(/\\/g,"/"));f.arguments=process.argv.slice(2);"undefined"!==typeof module&&(module.exports=f);process.on("unhandledRejection",B);f.quit=function(a){process.exit(a)};f.inspect=
function(){return"[Emscripten Module object]"}}else if(xa)"undefined"!=typeof read&&(f.read=function(a){return read(a)}),f.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");assert("object"===typeof a);return a},"undefined"!=typeof scriptArgs?f.arguments=scriptArgs:"undefined"!=typeof arguments&&(f.arguments=arguments),"function"===typeof quit&&(f.quit=function(a){quit(a)});else if(v||w)w?A=self.location.href:document.currentScript&&(A=
document.currentScript.src),A=0!==A.indexOf("blob:")?A.substr(0,A.lastIndexOf("/")+1):"",f.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},w&&(f.readBinary=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),f.readAsync=function(a,b,c){var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";d.onload=function(){200==d.status||0==d.status&&d.response?b(d.response):
c()};d.onerror=c;d.send(null)},f.setWindowTitle=function(a){document.title=a};var Aa=f.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),C=f.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||Aa);for(u in wa)wa.hasOwnProperty(u)&&(f[u]=wa[u]);wa=void 0;function Ba(a){var b=D[Ca>>2];a=b+a+15&-16;if(a<=Da())D[Ca>>2]=a;else if(!Ea(a))return 0;return b}
var Fa={"f64-rem":function(a,b){return a%b},"debugger":function(){debugger}},Ga=1,E=Array(64);function ua(a){for(var b=0;64>b;b++)if(!E[b])return E[b]=a,Ga+b;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";}"object"!==typeof WebAssembly&&C("no native wasm support detected");
function q(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return l[a>>0];case "i8":return l[a>>0];case "i16":return Ha[a>>1];case "i32":return D[a>>2];case "i64":return D[a>>2];case "float":return Ja[a>>2];case "double":return Ka[a>>3];default:B("invalid type for getValue: "+b)}return null}var La,Ma=!1;function assert(a,b){a||B("Assertion failed: "+b)}function Na(a){var b=f["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b}
function Oa(a,b,c,d){var e={string:function(a){var b=0;if(null!==a&&void 0!==a&&0!==a){var c=(a.length<<2)+1;b=h(c);r(a,F,b,c)}return b},array:function(a){var b=h(a.length);l.set(a,b);return b}},g=Na(a),k=[];a=0;if(d)for(var m=0;m<d.length;m++){var y=e[c[m]];y?(0===a&&(a=na()),k[m]=y(d[m])):k[m]=d[m]}c=g.apply(null,k);c=function(a){return"string"===b?G(a):"boolean"===b?!!a:a}(c);0!==a&&qa(a);return c}
function pa(a){var b="i32";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":l[a>>0]=0;break;case "i8":l[a>>0]=0;break;case "i16":Ha[a>>1]=0;break;case "i32":D[a>>2]=0;break;case "i64":aa=[0,1<=+Pa(0)?~~+Qa(0)>>>0:0];D[a>>2]=aa[0];D[a+4>>2]=aa[1];break;case "float":Ja[a>>2]=0;break;case "double":Ka[a>>3]=0;break;default:B("invalid type for setValue: "+b)}}var Ra=0,Sa=3;
function ea(a){var b=Ra;if("number"===typeof a){var c=!0;var d=a}else c=!1,d=a.length;b=b==Sa?e:[Ta,h,Ba][b](Math.max(d,1));if(c){var e=b;assert(0==(b&3));for(a=b+(d&-4);e<a;e+=4)D[e>>2]=0;for(a=b+d;e<a;)l[e++>>0]=0;return b}a.subarray||a.slice?F.set(a,b):F.set(new Uint8Array(a),b);return b}var Ua="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
function t(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16<c-b&&a.subarray&&Ua)return Ua.decode(a.subarray(b,c));for(d="";b<c;){var e=a[b++];if(e&128){var g=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|g);else{var k=a[b++]&63;e=224==(e&240)?(e&15)<<12|g<<6|k:(e&7)<<18|g<<12|k<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function G(a){return a?t(F,a,void 0):""}
function r(a,b,c,d){if(!(0<d))return 0;var e=c;d=c+d-1;for(var g=0;g<a.length;++g){var k=a.charCodeAt(g);if(55296<=k&&57343>=k){var m=a.charCodeAt(++g);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e}
function oa(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function Va(a){return a.replace(/__Z[\w\d_]+/g,function(a){return a===a?a:a+" ["+a+"]"})}function Wa(a){0<a%65536&&(a+=65536-a%65536);return a}var buffer,l,F,Ha,D,Ja,Ka;
function Xa(){f.HEAP8=l=new Int8Array(buffer);f.HEAP16=Ha=new Int16Array(buffer);f.HEAP32=D=new Int32Array(buffer);f.HEAPU8=F=new Uint8Array(buffer);f.HEAPU16=new Uint16Array(buffer);f.HEAPU32=new Uint32Array(buffer);f.HEAPF32=Ja=new Float32Array(buffer);f.HEAPF64=Ka=new Float64Array(buffer)}var Ca=60128,Ya=f.TOTAL_MEMORY||16777216;5242880>Ya&&C("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+Ya+"! (TOTAL_STACK=5242880)");
f.buffer?buffer=f.buffer:"object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(La=new WebAssembly.Memory({initial:Ya/65536}),buffer=La.buffer):buffer=new ArrayBuffer(Ya);Xa();D[Ca>>2]=5303264;function Za(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b();else{var c=b.rc;"number"===typeof c?void 0===b.Fb?f.dynCall_v(c):f.dynCall_vi(c,b.Fb):c(void 0===b.Fb?null:b.Fb)}}}var $a=[],ab=[],bb=[],cb=[],db=!1;function eb(){var a=f.preRun.shift();$a.unshift(a)}
var Pa=Math.abs,Qa=Math.ceil,H=0,fb=null,gb=null;f.preloadedImages={};f.preloadedAudios={};function hb(){var a=I;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var I="sql-wasm.wasm";if(!hb()){var jb=I;I=f.locateFile?f.locateFile(jb,A):A+jb}
function kb(){try{if(f.wasmBinary)return new Uint8Array(f.wasmBinary);if(f.readBinary)return f.readBinary(I);throw"both async and sync fetching of the wasm failed";}catch(a){B(a)}}function lb(){return f.wasmBinary||!v&&!w||"function"!==typeof fetch?new Promise(function(a){a(kb())}):fetch(I,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+I+"'";return a.arrayBuffer()}).catch(function(){return kb()})}
function mb(a){function b(a){f.asm=a.exports;H--;f.monitorRunDependencies&&f.monitorRunDependencies(H);0==H&&(null!==fb&&(clearInterval(fb),fb=null),gb&&(a=gb,gb=null,a()))}function c(a){b(a.instance)}function d(a){lb().then(function(a){return WebAssembly.instantiate(a,e)}).then(a,function(a){C("failed to asynchronously prepare wasm: "+a);B(a)})}var e={env:a,global:{NaN:NaN,Infinity:Infinity},"global.Math":Math,asm2wasm:Fa};H++;f.monitorRunDependencies&&f.monitorRunDependencies(H);if(f.instantiateWasm)try{return f.instantiateWasm(e,
b)}catch(g){return C("Module.instantiateWasm callback failed with error: "+g),!1}f.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||hb()||"function"!==typeof fetch?d(c):WebAssembly.instantiateStreaming(fetch(I,{credentials:"same-origin"}),e).then(c,function(a){C("wasm streaming compile failed: "+a);C("falling back to ArrayBuffer instantiation");d(c)});return{}}
f.asm=function(a,b){b.memory=La;b.table=new WebAssembly.Table({initial:2560,maximum:2560,element:"anyfunc"});b.__memory_base=1024;b.__table_base=0;return mb(b)};ab.push({rc:function(){nb()}});var J={};
function ob(a){if(ob.rb){var b=D[a>>2];var c=D[b>>2]}else ob.rb=!0,J.USER=J.LOGNAME="web_user",J.PATH="/",J.PWD="/",J.HOME="/home/web_user",J.LANG="C.UTF-8",J._=f.thisProgram,c=db?Ta(1024):Ba(1024),b=db?Ta(256):Ba(256),D[b>>2]=c,D[a>>2]=b;a=[];var d=0,e;for(e in J)if("string"===typeof J[e]){var g=e+"="+J[e];a.push(g);d+=g.length}if(1024<d)throw Error("Environment size exceeded TOTAL_ENV_SIZE!");for(e=0;e<a.length;e++){d=g=a[e];for(var k=c,m=0;m<d.length;++m)l[k++>>0]=d.charCodeAt(m);l[k>>0]=0;D[b+
4*e>>2]=c;c+=g.length+1}D[b+4*a.length>>2]=0}function pb(a){f.___errno_location&&(D[f.___errno_location()>>2]=a);return a}function qb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function rb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=qb(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a}
function sb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function tb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function ub(){var a=Array.prototype.slice.call(arguments,0);return rb(a.join("/"))}function n(a,b){return rb(a+"/"+b)}
function vb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=qb(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var wb=[];function xb(a,b){wb[a]={input:[],output:[],ub:b};yb(a,zb)}
var zb={open:function(a){var b=wb[a.node.rdev];if(!b)throw new K(L.Cb);a.tty=b;a.seekable=!1},close:function(a){a.tty.ub.flush(a.tty)},flush:function(a){a.tty.ub.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.ub.Xb)throw new K(L.Ob);for(var e=0,g=0;g<d;g++){try{var k=a.tty.ub.Xb(a.tty)}catch(m){throw new K(L.Lb);}if(void 0===k&&0===e)throw new K(L.ac);if(null===k||void 0===k)break;e++;b[c+g]=k}e&&(a.node.timestamp=Date.now());return e},write:function(a,b,c,d){if(!a.tty||!a.tty.ub.Ib)throw new K(L.Ob);
try{for(var e=0;e<d;e++)a.tty.ub.Ib(a.tty,b[c+e])}catch(g){throw new K(L.Lb);}d&&(a.node.timestamp=Date.now());return e}},Ab={Xb:function(a){if(!a.input.length){var b=null;if(x){var c=new Buffer(256),d=0,e=process.stdin.fd;if("win32"!=process.platform){var g=!1;try{e=fs.openSync("/dev/stdin","r"),g=!0}catch(k){}}try{d=fs.readSync(e,c,0,256,null)}catch(k){if(-1!=k.toString().indexOf("EOF"))d=0;else throw k;}g&&fs.closeSync(e);0<d?b=c.slice(0,d).toString("utf-8"):b=null}else"undefined"!=typeof window&&
"function"==typeof window.prompt?(b=window.prompt("Input: "),null!==b&&(b+="\n")):"function"==typeof readline&&(b=readline(),null!==b&&(b+="\n"));if(!b)return null;a.input=ba(b,!0)}return a.input.shift()},Ib:function(a,b){null===b||10===b?(Aa(t(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(Aa(t(a.output,0)),a.output=[])}},Bb={Ib:function(a,b){null===b||10===b?(C(t(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&
(C(t(a.output,0)),a.output=[])}},M={mb:null,jb:function(){return M.createNode(null,"/",16895,0)},createNode:function(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new K(L.dc);M.mb||(M.mb={dir:{node:{lb:M.ab.lb,hb:M.ab.hb,lookup:M.ab.lookup,vb:M.ab.vb,rename:M.ab.rename,unlink:M.ab.unlink,rmdir:M.ab.rmdir,readdir:M.ab.readdir,symlink:M.ab.symlink},stream:{ob:M.cb.ob}},file:{node:{lb:M.ab.lb,hb:M.ab.hb},stream:{ob:M.cb.ob,read:M.cb.read,write:M.cb.write,Pb:M.cb.Pb,zb:M.cb.zb,Ab:M.cb.Ab}},link:{node:{lb:M.ab.lb,
hb:M.ab.hb,readlink:M.ab.readlink},stream:{}},Sb:{node:{lb:M.ab.lb,hb:M.ab.hb},stream:Cb}});c=Db(a,b,c,d);N(c.mode)?(c.ab=M.mb.dir.node,c.cb=M.mb.dir.stream,c.bb={}):32768===(c.mode&61440)?(c.ab=M.mb.file.node,c.cb=M.mb.file.stream,c.gb=0,c.bb=null):40960===(c.mode&61440)?(c.ab=M.mb.link.node,c.cb=M.mb.link.stream):8192===(c.mode&61440)&&(c.ab=M.mb.Sb.node,c.cb=M.mb.Sb.stream);c.timestamp=Date.now();a&&(a.bb[b]=c);return c},ff:function(a){if(a.bb&&a.bb.subarray){for(var b=[],c=0;c<a.gb;++c)b.push(a.bb[c]);
return b}return a.bb},gf:function(a){return a.bb?a.bb.subarray?a.bb.subarray(0,a.gb):new Uint8Array(a.bb):new Uint8Array},Tb:function(a,b){var c=a.bb?a.bb.length:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.bb,a.bb=new Uint8Array(b),0<a.gb&&a.bb.set(c.subarray(0,a.gb),0))},yc:function(a,b){if(a.gb!=b)if(0==b)a.bb=null,a.gb=0;else{if(!a.bb||a.bb.subarray){var c=a.bb;a.bb=new Uint8Array(new ArrayBuffer(b));c&&a.bb.set(c.subarray(0,Math.min(b,a.gb)))}else if(a.bb||(a.bb=
[]),a.bb.length>b)a.bb.length=b;else for(;a.bb.length<b;)a.bb.push(0);a.gb=b}},ab:{lb:function(a){var b={};b.dev=8192===(a.mode&61440)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=a.rdev;N(a.mode)?b.size=4096:32768===(a.mode&61440)?b.size=a.gb:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.atime=new Date(a.timestamp);b.mtime=new Date(a.timestamp);b.ctime=new Date(a.timestamp);b.pb=4096;b.blocks=Math.ceil(b.size/b.pb);return b},hb:function(a,b){void 0!==b.mode&&(a.mode=
b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);void 0!==b.size&&M.yc(a,b.size)},lookup:function(){throw Eb[L.bc];},vb:function(a,b,c,d){return M.createNode(a,b,c,d)},rename:function(a,b,c){if(N(a.mode)){try{var d=O(b,c)}catch(g){}if(d)for(var e in d.bb)throw new K(L.Nb);}delete a.parent.bb[a.name];a.name=c;b.bb[c]=a;a.parent=b},unlink:function(a,b){delete a.bb[b]},rmdir:function(a,b){var c=O(a,b),d;for(d in c.bb)throw new K(L.Nb);delete a.bb[b]},readdir:function(a){var b=[".",".."],c;for(c in a.bb)a.bb.hasOwnProperty(c)&&
b.push(c);return b},symlink:function(a,b,c){a=M.createNode(a,b,41471,0);a.link=c;return a},readlink:function(a){if(40960!==(a.mode&61440))throw new K(L.ib);return a.link}},cb:{read:function(a,b,c,d,e){var g=a.node.bb;if(e>=a.node.gb)return 0;a=Math.min(a.node.gb-e,d);if(8<a&&g.subarray)b.set(g.subarray(e,e+a),c);else for(d=0;d<a;d++)b[c+d]=g[e+d];return a},write:function(a,b,c,d,e,g){g=!1;if(!d)return 0;a=a.node;a.timestamp=Date.now();if(b.subarray&&(!a.bb||a.bb.subarray)){if(g)return a.bb=b.subarray(c,
c+d),a.gb=d;if(0===a.gb&&0===e)return a.bb=new Uint8Array(b.subarray(c,c+d)),a.gb=d;if(e+d<=a.gb)return a.bb.set(b.subarray(c,c+d),e),d}M.Tb(a,e+d);if(a.bb.subarray&&b.subarray)a.bb.set(b.subarray(c,c+d),e);else for(g=0;g<d;g++)a.bb[e+g]=b[c+g];a.gb=Math.max(a.gb,e+d);return d},ob:function(a,b,c){1===c?b+=a.position:2===c&&32768===(a.node.mode&61440)&&(b+=a.node.gb);if(0>b)throw new K(L.ib);return b},Pb:function(a,b,c){M.Tb(a.node,b+c);a.node.gb=Math.max(a.node.gb,b+c)},zb:function(a,b,c,d,e,g,k){if(32768!==
(a.node.mode&61440))throw new K(L.Cb);c=a.node.bb;if(k&2||c.buffer!==b&&c.buffer!==b.buffer){if(0<e||e+d<a.node.gb)c.subarray?c=c.subarray(e,e+d):c=Array.prototype.slice.call(c,e,e+d);a=!0;d=Ta(d);if(!d)throw new K(L.Mb);b.set(c,d)}else a=!1,d=c.byteOffset;return{xc:d,Db:a}},Ab:function(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new K(L.Cb);if(e&2)return 0;M.cb.write(a,b,0,d,c,!1);return 0}}},P={yb:!1,Ac:function(){P.yb=!!process.platform.match(/^win/);var a=process.binding("constants");a.fs&&
(a=a.fs);P.Ub={1024:a.O_APPEND,64:a.O_CREAT,128:a.O_EXCL,0:a.O_RDONLY,2:a.O_RDWR,4096:a.O_SYNC,512:a.O_TRUNC,1:a.O_WRONLY}},Rb:function(a){return Buffer.rb?Buffer.from(a):new Buffer(a)},jb:function(a){assert(x);return P.createNode(null,"/",P.Wb(a.Hb.root),0)},createNode:function(a,b,c){if(!N(c)&&32768!==(c&61440)&&40960!==(c&61440))throw new K(L.ib);a=Db(a,b,c);a.ab=P.ab;a.cb=P.cb;return a},Wb:function(a){try{var b=fs.lstatSync(a);P.yb&&(b.mode=b.mode|(b.mode&292)>>2)}catch(c){if(!c.code)throw c;
throw new K(L[c.code]);}return b.mode},kb:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.jb.Hb.root);b.reverse();return ub.apply(null,b)},qc:function(a){a&=-2656257;var b=0,c;for(c in P.Ub)a&c&&(b|=P.Ub[c],a^=c);if(a)throw new K(L.ib);return b},ab:{lb:function(a){a=P.kb(a);try{var b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}P.yb&&!b.pb&&(b.pb=4096);P.yb&&!b.blocks&&(b.blocks=(b.size+b.pb-1)/b.pb|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink,
uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,pb:b.pb,blocks:b.blocks}},hb:function(a,b){var c=P.kb(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},lookup:function(a,b){var c=n(P.kb(a),b);c=P.Wb(c);return P.createNode(a,b,c)},vb:function(a,b,c,d){a=P.createNode(a,b,c,d);b=P.kb(a);try{N(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(e){if(!e.code)throw e;
throw new K(L[e.code]);}return a},rename:function(a,b,c){a=P.kb(a);b=n(P.kb(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},unlink:function(a,b){a=n(P.kb(a),b);try{fs.unlinkSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},rmdir:function(a,b){a=n(P.kb(a),b);try{fs.rmdirSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},readdir:function(a){a=P.kb(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new K(L[b.code]);}},symlink:function(a,
b,c){a=n(P.kb(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},readlink:function(a){var b=P.kb(a);try{return b=fs.readlinkSync(b),b=Fb.relative(Fb.resolve(a.jb.Hb.root),b)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}}},cb:{open:function(a){var b=P.kb(a.node);try{32768===(a.node.mode&61440)&&(a.wb=fs.openSync(b,P.qc(a.flags)))}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},close:function(a){try{32768===(a.node.mode&61440)&&a.wb&&fs.closeSync(a.wb)}catch(b){if(!b.code)throw b;
throw new K(L[b.code]);}},read:function(a,b,c,d,e){if(0===d)return 0;try{return fs.readSync(a.wb,P.Rb(b.buffer),c,d,e)}catch(g){throw new K(L[g.code]);}},write:function(a,b,c,d,e){try{return fs.writeSync(a.wb,P.Rb(b.buffer),c,d,e)}catch(g){throw new K(L[g.code]);}},ob:function(a,b,c){if(1===c)b+=a.position;else if(2===c&&32768===(a.node.mode&61440))try{b+=fs.fstatSync(a.wb).size}catch(d){throw new K(L[d.code]);}if(0>b)throw new K(L.ib);return b}}},Gb=null,Hb={},Q=[],Ib=1,R=null,Jb=!0,S={},K=null,
Eb={};function T(a,b){a=vb("/",a);b=b||{};if(!a)return{path:"",node:null};var c={Vb:!0,Jb:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8<b.Jb)throw new K(40);a=qb(a.split("/").filter(function(a){return!!a}),!1);var e=Gb;c="/";for(d=0;d<a.length;d++){var g=d===a.length-1;if(g&&b.parent)break;e=O(e,a[d]);c=n(c,a[d]);e.sb&&(!g||g&&b.Vb)&&(e=e.sb.root);if(!g||b.qb)for(g=0;40960===(e.mode&61440);)if(e=Kb(c),c=vb(sb(c),e),e=T(c,{Jb:b.Jb}).node,40<g++)throw new K(40);}return{path:c,node:e}}
function Lb(a){for(var b;;){if(a===a.parent)return a=a.jb.Yb,b?"/"!==a[a.length-1]?a+"/"+b:a+b:a;b=b?a.name+"/"+b:a.name;a=a.parent}}function Mb(a,b){for(var c=0,d=0;d<b.length;d++)c=(c<<5)-c+b.charCodeAt(d)|0;return(a+c>>>0)%R.length}function Nb(a){var b=Mb(a.parent.id,a.name);a.tb=R[b];R[b]=a}function Ob(a){var b=Mb(a.parent.id,a.name);if(R[b]===a)R[b]=a.tb;else for(b=R[b];b;){if(b.tb===a){b.tb=a.tb;break}b=b.tb}}
function O(a,b){var c;if(c=(c=Pb(a,"x"))?c:a.ab.lookup?0:13)throw new K(c,a);for(c=R[Mb(a.id,b)];c;c=c.tb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ab.lookup(a,b)}
function Db(a,b,c,d){Qb||(Qb=function(a,b,c,d){a||(a=this);this.parent=a;this.jb=a.jb;this.sb=null;this.id=Ib++;this.name=b;this.mode=c;this.ab={};this.cb={};this.rdev=d},Qb.prototype={},Object.defineProperties(Qb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}}));a=new Qb(a,b,c,d);Nb(a);return a}
function N(a){return 16384===(a&61440)}var Rb={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function ic(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Pb(a,b){if(Jb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 13}else return 13;return 0}function tc(a,b){try{return O(a,b),17}catch(c){}return Pb(a,"wx")}
function uc(a,b,c){try{var d=O(a,b)}catch(e){return e.eb}if(a=Pb(a,"wx"))return a;if(c){if(!N(d.mode))return 20;if(d===d.parent||"/"===Lb(d))return 16}else if(N(d.mode))return 21;return 0}function vc(a){var b=4096;for(a=a||0;a<=b;a++)if(!Q[a])return a;throw new K(24);}
function wc(a,b){xc||(xc=function(){},xc.prototype={},Object.defineProperties(xc.prototype,{object:{get:function(){return this.node},set:function(a){this.node=a}}}));var c=new xc,d;for(d in a)c[d]=a[d];a=c;b=vc(b);a.fd=b;return Q[b]=a}var Cb={open:function(a){a.cb=Hb[a.node.rdev].cb;a.cb.open&&a.cb.open(a)},ob:function(){throw new K(29);}};function yb(a,b){Hb[a]={cb:b}}
function yc(a,b){var c="/"===b,d=!b;if(c&&Gb)throw new K(16);if(!c&&!d){var e=T(b,{Vb:!1});b=e.path;e=e.node;if(e.sb)throw new K(16);if(!N(e.mode))throw new K(20);}b={type:a,Hb:{},Yb:b,wc:[]};a=a.jb(b);a.jb=b;b.root=a;c?Gb=a:e&&(e.sb=b,e.jb&&e.jb.wc.push(b))}function ja(a,b,c){var d=T(a,{parent:!0}).node;a=tb(a);if(!a||"."===a||".."===a)throw new K(22);var e=tc(d,a);if(e)throw new K(e);if(!d.ab.vb)throw new K(1);return d.ab.vb(d,a,b,c)}function U(a,b){ja(a,(void 0!==b?b:511)&1023|16384,0)}
function zc(a,b,c){"undefined"===typeof c&&(c=b,b=438);ja(a,b|8192,c)}function Ac(a,b){if(!vb(a))throw new K(2);var c=T(b,{parent:!0}).node;if(!c)throw new K(2);b=tb(b);var d=tc(c,b);if(d)throw new K(d);if(!c.ab.symlink)throw new K(1);c.ab.symlink(c,b,a)}
function ta(a){var b=T(a,{parent:!0}).node,c=tb(a),d=O(b,c),e=uc(b,c,!1);if(e)throw new K(e);if(!b.ab.unlink)throw new K(1);if(d.sb)throw new K(16);try{S.willDeletePath&&S.willDeletePath(a)}catch(g){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.ab.unlink(b,c);Ob(d);try{if(S.onDeletePath)S.onDeletePath(a)}catch(g){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}}
function Kb(a){a=T(a).node;if(!a)throw new K(2);if(!a.ab.readlink)throw new K(22);return vb(Lb(a.parent),a.ab.readlink(a))}function ra(a,b){a=T(a,{qb:!b}).node;if(!a)throw new K(2);if(!a.ab.lb)throw new K(1);return a.ab.lb(a)}function Bc(a){return ra(a,!0)}function ka(a,b){var c;"string"===typeof a?c=T(a,{qb:!0}).node:c=a;if(!c.ab.hb)throw new K(1);c.ab.hb(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})}
function Cc(a){var b;"string"===typeof a?b=T(a,{qb:!0}).node:b=a;if(!b.ab.hb)throw new K(1);b.ab.hb(b,{timestamp:Date.now()})}function Dc(a,b){if(0>b)throw new K(22);var c;"string"===typeof a?c=T(a,{qb:!0}).node:c=a;if(!c.ab.hb)throw new K(1);if(N(c.mode))throw new K(21);if(32768!==(c.mode&61440))throw new K(22);if(a=Pb(c,"w"))throw new K(a);c.ab.hb(c,{size:b,timestamp:Date.now()})}
function p(a,b,c,d){if(""===a)throw new K(2);if("string"===typeof b){var e=Rb[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=rb(a);try{g=T(a,{qb:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(g){if(b&128)throw new K(17);}else g=ja(a,c,0),e=!0;if(!g)throw new K(2);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!N(g.mode))throw new K(20);if(!e&&(c=g?40960===(g.mode&61440)?40:N(g.mode)&&
("r"!==ic(b)||b&512)?21:Pb(g,ic(b)):2))throw new K(c);b&512&&Dc(g,0);b&=-641;d=wc({node:g,path:Lb(g),flags:b,seekable:!0,position:0,cb:g.cb,Bc:[],error:!1},d);d.cb.open&&d.cb.open(d);!f.logReadFiles||b&1||(Ec||(Ec={}),a in Ec||(Ec[a]=1,console.log("FS.trackingDelegate error on read file: "+a)));try{S.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),S.onOpenFile(a,g))}catch(k){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}return d}
function ma(a){if(null===a.fd)throw new K(9);a.Gb&&(a.Gb=null);try{a.cb.close&&a.cb.close(a)}catch(b){throw b;}finally{Q[a.fd]=null}a.fd=null}function Fc(a,b,c){if(null===a.fd)throw new K(9);if(!a.seekable||!a.cb.ob)throw new K(29);if(0!=c&&1!=c&&2!=c)throw new K(22);a.position=a.cb.ob(a,b,c);a.Bc=[]}
function sa(a,b,c,d,e){if(0>d||0>e)throw new K(22);if(null===a.fd)throw new K(9);if(1===(a.flags&2097155))throw new K(9);if(N(a.node.mode))throw new K(21);if(!a.cb.read)throw new K(22);var g="undefined"!==typeof e;if(!g)e=a.position;else if(!a.seekable)throw new K(29);b=a.cb.read(a,b,c,d,e);g||(a.position+=b);return b}
function la(a,b,c,d,e,g){if(0>d||0>e)throw new K(22);if(null===a.fd)throw new K(9);if(0===(a.flags&2097155))throw new K(9);if(N(a.node.mode))throw new K(21);if(!a.cb.write)throw new K(22);a.flags&1024&&Fc(a,0,2);var k="undefined"!==typeof e;if(!k)e=a.position;else if(!a.seekable)throw new K(29);b=a.cb.write(a,b,c,d,e,g);k||(a.position+=b);try{if(a.path&&S.onWriteToFile)S.onWriteToFile(a.path)}catch(m){console.log("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+m.message)}return b}
function Gc(){K||(K=function(a,b){this.node=b;this.zc=function(a){this.eb=a};this.zc(a);this.message="FS error";this.stack&&Object.defineProperty(this,"stack",{value:Error().stack,writable:!0})},K.prototype=Error(),K.prototype.constructor=K,[2].forEach(function(a){Eb[a]=new K(a);Eb[a].stack="<generic error, no stack>"}))}var Hc;function ia(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c}
function Ic(a,b,c){a=n("/dev",a);var d=ia(!!b,!!c);Jc||(Jc=64);var e=Jc++<<8|0;yb(e,{open:function(a){a.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(a,c,d,e){for(var g=0,k=0;k<e;k++){try{var m=b()}catch(Ia){throw new K(5);}if(void 0===m&&0===g)throw new K(11);if(null===m||void 0===m)break;g++;c[d+k]=m}g&&(a.node.timestamp=Date.now());return g},write:function(a,b,d,e){for(var g=0;g<e;g++)try{c(b[d+g])}catch(fa){throw new K(5);}e&&(a.node.timestamp=Date.now());return g}});
zc(a,d,e)}
var Jc,V={},Qb,xc,Ec,L={dc:1,bc:2,Ae:3,sd:4,Lb:5,Ob:6,Ic:7,Td:8,Kb:9,Xc:10,ac:11,Ke:11,Mb:12,$b:13,ld:14,ee:15,Vc:16,kd:17,Le:18,Cb:19,cc:20,ud:21,ib:22,Od:23,Gd:24,je:25,He:26,md:27,ae:28,ze:29,ve:30,Hd:31,pe:32,gd:33,ec:34,Xd:42,pd:43,Yc:44,wd:45,xd:46,yd:47,Ed:48,Ie:49,Rd:50,vd:51,cd:35,Ud:37,Oc:52,Rc:53,Me:54,Pd:55,Sc:56,Tc:57,dd:35,Uc:59,ce:60,Sd:61,Ee:62,be:63,Yd:64,Zd:65,ue:66,Vd:67,Lc:68,Be:69,Zc:70,qe:71,Jd:72,hd:73,Qc:74,ke:76,Pc:77,te:78,zd:79,Ad:80,Dd:81,Cd:82,Bd:83,de:38,Nb:39,Kd:36,
Fd:40,le:95,oe:96,bd:104,Qd:105,Mc:97,se:91,he:88,$d:92,xe:108,ad:111,Jc:98,$c:103,Nd:101,Ld:100,Fe:110,nd:112,od:113,rd:115,Nc:114,ed:89,Id:90,re:93,ye:94,Kc:99,Md:102,td:106,fe:107,Ge:109,Je:87,jd:122,Ce:116,ie:95,Wd:123,qd:84,me:75,Wc:125,ge:131,ne:130,De:86},Kc={};
function Lc(a,b,c){try{var d=a(b)}catch(e){if(e&&e.node&&rb(b)!==rb(Lb(e.node)))return-L.cc;throw e;}D[c>>2]=d.dev;D[c+4>>2]=0;D[c+8>>2]=d.ino;D[c+12>>2]=d.mode;D[c+16>>2]=d.nlink;D[c+20>>2]=d.uid;D[c+24>>2]=d.gid;D[c+28>>2]=d.rdev;D[c+32>>2]=0;D[c+36>>2]=d.size;D[c+40>>2]=4096;D[c+44>>2]=d.blocks;D[c+48>>2]=d.atime.getTime()/1E3|0;D[c+52>>2]=0;D[c+56>>2]=d.mtime.getTime()/1E3|0;D[c+60>>2]=0;D[c+64>>2]=d.ctime.getTime()/1E3|0;D[c+68>>2]=0;D[c+72>>2]=d.ino;return 0}var W=0;
function X(){W+=4;return D[W-4>>2]}function Y(){return G(X())}function Z(){var a=Q[X()];if(!a)throw new K(L.Kb);return a}function Da(){return l.length}function Ea(a){if(2147418112<a)return!1;for(var b=Math.max(Da(),16777216);b<a;)536870912>=b?b=Wa(2*b):b=Math.min(Wa((3*b+2147483648)/4),2147418112);a=Wa(b);var c=buffer.byteLength;try{var d=-1!==La.grow((a-c)/65536)?buffer=La.buffer:null}catch(e){d=null}if(!d||d.byteLength!=b)return!1;Xa();return!0}
function Mc(a){if(0===a)return 0;a=G(a);if(!J.hasOwnProperty(a))return 0;Mc.rb&&ha(Mc.rb);a=J[a];var b=oa(a)+1,c=Ta(b);c&&r(a,l,c,b);Mc.rb=c;return Mc.rb}r("GMT",F,60272,4);
function Nc(){function a(a){return(a=a.toTimeString().match(/\(([A-Za-z ]+)\)$/))?a[1]:"GMT"}if(!Oc){Oc=!0;D[Pc()>>2]=60*(new Date).getTimezoneOffset();var b=new Date(2E3,0,1),c=new Date(2E3,6,1);D[Qc()>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c);d=ea(ba(d));e=ea(ba(e));c.getTimezoneOffset()<b.getTimezoneOffset()?(D[Rc()>>2]=d,D[Rc()+4>>2]=e):(D[Rc()>>2]=e,D[Rc()+4>>2]=d)}}var Oc;
function Sc(a){a/=1E3;if((v||w)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b<a;);else for(b=Date.now();Date.now()-b<a;);return 0}f._usleep=Sc;Gc();R=Array(4096);yc(M,"/");U("/tmp");U("/home");U("/home/web_user");
(function(){U("/dev");yb(259,{read:function(){return 0},write:function(a,b,c,k){return k}});zc("/dev/null",259);xb(1280,Ab);xb(1536,Bb);zc("/dev/tty",1280);zc("/dev/tty1",1536);if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);var b=function(){crypto.getRandomValues(a);return a[0]}}else if(x)try{var c=require("crypto");b=function(){return c.randomBytes(1)[0]}}catch(d){}b||(b=function(){B("random_device")});Ic("random",b);Ic("urandom",b);U("/dev/shm");
U("/dev/shm/tmp")})();U("/proc");U("/proc/self");U("/proc/self/fd");yc({jb:function(){var a=Db("/proc/self","fd",16895,73);a.ab={lookup:function(a,c){var b=Q[+c];if(!b)throw new K(9);a={parent:null,jb:{Yb:"fake"},ab:{readlink:function(){return b.path}}};return a.parent=a}};return a}},"/proc/self/fd");if(x){var fs=require("fs"),Fb=require("path");P.Ac()}function ba(a,b){var c=Array(oa(a)+1);a=r(a,c,0,c.length);b&&(c.length=a);return c}
var Vc=f.asm({},{n:B,l:function(a){return E[a]()},i:function(a,b){return E[a](b)},h:function(a,b,c){return E[a](b,c)},g:function(a,b,c,d){return E[a](b,c,d)},f:function(a,b,c,d,e){return E[a](b,c,d,e)},e:function(a,b,c,d,e,g){return E[a](b,c,d,e,g)},d:function(a,b,c,d,e,g,k){return E[a](b,c,d,e,g,k)},B:function(a,b,c,d,e){return E[a](b,c,d,e)},A:function(a,b,c){return E[a](b,c)},z:function(a,b,c,d){return E[a](b,c,d)},y:function(a,b,c,d,e){return E[a](b,c,d,e)},c:function(a,b){E[a](b)},b:function(a,
b,c){E[a](b,c)},k:function(a,b,c,d){E[a](b,c,d)},j:function(a,b,c,d,e){E[a](b,c,d,e)},x:function(a,b,c,d,e,g){E[a](b,c,d,e,g)},w:function(a,b,c,d){E[a](b,c,d)},v:function(a,b,c,d){E[a](b,c,d)},m:function(a,b,c,d){B("Assertion failed: "+G(a)+", at: "+[b?G(b):"unknown filename",c,d?G(d):"unknown function"])},ga:ob,u:pb,fa:function(a,b){W=b;try{var c=Y();ta(c);return 0}catch(d){return"undefined"!==typeof V&&d instanceof K||B(d),-d.eb}},ea:function(a,b){W=b;try{return Z(),0}catch(c){return"undefined"!==
typeof V&&c instanceof K||B(c),-c.eb}},da:function(a,b){W=b;try{var c=Z();X();var d=X(),e=X(),g=X();Fc(c,d,g);D[e>>2]=c.position;c.Gb&&0===d&&0===g&&(c.Gb=null);return 0}catch(k){return"undefined"!==typeof V&&k instanceof K||B(k),-k.eb}},ca:function(a,b){W=b;try{var c=Y(),d=X();ka(c,d);return 0}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},ba:function(a,b){W=b;try{var c=X(),d=X();if(0===d)return-L.ib;if(d<oa("/")+1)return-L.ec;r("/",F,c,d);return c}catch(e){return"undefined"!==
typeof V&&e instanceof K||B(e),-e.eb}},aa:function(a,b){W=b;try{var c=X(),d=X(),e=X(),g=X(),k=X(),m=X();m<<=12;a=!1;if(-1===k){var y=Tc(16384,d);if(!y)return-L.Mb;Uc(y,0,d);a=!0}else{var z=Q[k];if(!z)return-L.Kb;b=F;if(1===(z.flags&2097155))throw new K(13);if(!z.cb.zb)throw new K(19);var fa=z.cb.zb(z,b,c,d,m,e,g);y=fa.xc;a=fa.Db}Kc[y]={vc:y,uc:d,Db:a,fd:k,flags:g};return y}catch(ca){return"undefined"!==typeof V&&ca instanceof K||B(ca),-ca.eb}},$:function(a,b){W=b;try{var c=X();X();var d=X();X();var e=
Q[c];if(!e)throw new K(9);if(0===(e.flags&2097155))throw new K(22);Dc(e.node,d);return 0}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},t:function(a,b){W=b;try{var c=Y(),d=X();return Lc(ra,c,d)}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},_:function(a,b){W=b;try{var c=Y(),d=X();return Lc(Bc,c,d)}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},Z:function(a,b){W=b;try{var c=Z(),d=X();return Lc(ra,c.path,d)}catch(e){return"undefined"!==
typeof V&&e instanceof K||B(e),-e.eb}},Y:function(a,b){W=b;return 42},X:function(a,b){W=b;return 0},W:function(a,b){W=b;try{var c=X();X();X();var d=Q[c];if(!d)throw new K(9);Cc(d.node);return 0}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},V:function(a,b){W=b;try{var c=Y();X();X();Cc(c);return 0}catch(d){return"undefined"!==typeof V&&d instanceof K||B(d),-d.eb}},o:function(a,b){W=b;try{var c=Z();switch(X()){case 0:var d=X();return 0>d?-L.ib:p(c.path,c.flags,0,d).fd;case 1:case 2:return 0;
case 3:return c.flags;case 4:return d=X(),c.flags|=d,0;case 12:return d=X(),Ha[d+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-L.ib;case 9:return pb(L.ib),-1;default:return-L.ib}}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},U:function(a,b){W=b;try{var c=Z(),d=X(),e=X();return sa(c,l,d,e)}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},T:function(a,b){W=b;try{var c=Y();var d=X();if(d&-8)var e=-L.ib;else{var g=T(c,{qb:!0}).node;a="";d&4&&(a+="r");
d&2&&(a+="w");d&1&&(a+="x");e=a&&Pb(g,a)?-L.$b:0}return e}catch(k){return"undefined"!==typeof V&&k instanceof K||B(k),-k.eb}},S:function(a,b){W=b;try{var c=Y(),d=X();a=c;a=rb(a);"/"===a[a.length-1]&&(a=a.substr(0,a.length-1));U(a,d);return 0}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},R:function(a,b){W=b;try{var c=Z(),d=X(),e=X();return la(c,l,d,e)}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},Q:function(a,b){W=b;try{var c=Y(),d=T(c,{parent:!0}).node,
e=tb(c),g=O(d,e),k=uc(d,e,!0);if(k)throw new K(k);if(!d.ab.rmdir)throw new K(1);if(g.sb)throw new K(16);try{S.willDeletePath&&S.willDeletePath(c)}catch(m){console.log("FS.trackingDelegate['willDeletePath']('"+c+"') threw an exception: "+m.message)}d.ab.rmdir(d,e);Ob(g);try{if(S.onDeletePath)S.onDeletePath(c)}catch(m){console.log("FS.trackingDelegate['onDeletePath']('"+c+"') threw an exception: "+m.message)}return 0}catch(m){return"undefined"!==typeof V&&m instanceof K||B(m),-m.eb}},P:function(a,b){W=
b;try{var c=Y(),d=X(),e=X();return p(c,d,e).fd}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},s:function(a,b){W=b;try{var c=Z();ma(c);return 0}catch(d){return"undefined"!==typeof V&&d instanceof K||B(d),-d.eb}},O:function(a,b){W=b;try{var c=Y(),d=X();var e=X();if(0>=e)var g=-L.ib;else{var k=Kb(c),m=Math.min(e,oa(k)),y=l[d+m];r(k,F,d,e+1);l[d+m]=y;g=m}return g}catch(z){return"undefined"!==typeof V&&z instanceof K||B(z),-z.eb}},N:function(a,b){W=b;try{var c=X(),d=X(),e=Kc[c];if(!e)return 0;
if(d===e.uc){var g=Q[e.fd],k=e.flags,m=new Uint8Array(F.subarray(c,c+d));g&&g.cb.Ab&&g.cb.Ab(g,m,0,d,k);Kc[c]=null;e.Db&&ha(e.vc)}return 0}catch(y){return"undefined"!==typeof V&&y instanceof K||B(y),-y.eb}},M:function(a,b){W=b;try{var c=X(),d=X(),e=Q[c];if(!e)throw new K(9);ka(e.node,d);return 0}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},L:Da,K:function(a,b,c){F.set(F.subarray(b,b+c),a)},J:Ea,r:Mc,q:function(a){var b=Date.now();D[a>>2]=b/1E3|0;D[a+4>>2]=b%1E3*1E3|0;return 0},
I:function(a){return Math.log(a)/Math.LN10},p:function(){B("trap!")},H:function(a){Nc();a=new Date(1E3*D[a>>2]);D[15056]=a.getSeconds();D[15057]=a.getMinutes();D[15058]=a.getHours();D[15059]=a.getDate();D[15060]=a.getMonth();D[15061]=a.getFullYear()-1900;D[15062]=a.getDay();var b=new Date(a.getFullYear(),0,1);D[15063]=(a.getTime()-b.getTime())/864E5|0;D[15065]=-(60*a.getTimezoneOffset());var c=(new Date(2E3,6,1)).getTimezoneOffset();b=b.getTimezoneOffset();a=(c!=b&&a.getTimezoneOffset()==Math.min(b,
c))|0;D[15064]=a;a=D[Rc()+(a?4:0)>>2];D[15066]=a;return 60224},G:function(a,b){var c=D[a>>2];a=D[a+4>>2];0!==b&&(D[b>>2]=0,D[b+4>>2]=0);return Sc(1E6*c+a/1E3)},F:function(a){switch(a){case 30:return 16384;case 85:return 131068;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;
case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;
case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}pb(22);return-1},
E:function(a){var b=Date.now()/1E3|0;a&&(D[a>>2]=b);return b},D:function(a,b){if(b){var c=1E3*D[b+8>>2];c+=D[b+12>>2]/1E3}else c=Date.now();a=G(a);try{b=c;var d=T(a,{qb:!0}).node;d.ab.hb(d,{timestamp:Math.max(b,c)});return 0}catch(e){a=e;if(!(a instanceof K)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error(0);}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}f.extraStackTrace&&(d+="\n"+f.extraStackTrace());d=Va(d);throw a+d;}pb(a.eb);return-1}},C:function(){B("OOM")},
a:Ca},buffer);f.asm=Vc;f._RegisterExtensionFunctions=function(){return f.asm.ha.apply(null,arguments)};var nb=f.___emscripten_environ_constructor=function(){return f.asm.ia.apply(null,arguments)};f.___errno_location=function(){return f.asm.ja.apply(null,arguments)};
var Qc=f.__get_daylight=function(){return f.asm.ka.apply(null,arguments)},Pc=f.__get_timezone=function(){return f.asm.la.apply(null,arguments)},Rc=f.__get_tzname=function(){return f.asm.ma.apply(null,arguments)},ha=f._free=function(){return f.asm.na.apply(null,arguments)},Ta=f._malloc=function(){return f.asm.oa.apply(null,arguments)},Tc=f._memalign=function(){return f.asm.pa.apply(null,arguments)},Uc=f._memset=function(){return f.asm.qa.apply(null,arguments)};
f._sqlite3_bind_blob=function(){return f.asm.ra.apply(null,arguments)};f._sqlite3_bind_double=function(){return f.asm.sa.apply(null,arguments)};f._sqlite3_bind_int=function(){return f.asm.ta.apply(null,arguments)};f._sqlite3_bind_parameter_index=function(){return f.asm.ua.apply(null,arguments)};f._sqlite3_bind_text=function(){return f.asm.va.apply(null,arguments)};f._sqlite3_changes=function(){return f.asm.wa.apply(null,arguments)};f._sqlite3_clear_bindings=function(){return f.asm.xa.apply(null,arguments)};
f._sqlite3_close_v2=function(){return f.asm.ya.apply(null,arguments)};f._sqlite3_column_blob=function(){return f.asm.za.apply(null,arguments)};f._sqlite3_column_bytes=function(){return f.asm.Aa.apply(null,arguments)};f._sqlite3_column_double=function(){return f.asm.Ba.apply(null,arguments)};f._sqlite3_column_name=function(){return f.asm.Ca.apply(null,arguments)};f._sqlite3_column_text=function(){return f.asm.Da.apply(null,arguments)};f._sqlite3_column_type=function(){return f.asm.Ea.apply(null,arguments)};
f._sqlite3_create_function_v2=function(){return f.asm.Fa.apply(null,arguments)};f._sqlite3_data_count=function(){return f.asm.Ga.apply(null,arguments)};f._sqlite3_errmsg=function(){return f.asm.Ha.apply(null,arguments)};f._sqlite3_exec=function(){return f.asm.Ia.apply(null,arguments)};f._sqlite3_finalize=function(){return f.asm.Ja.apply(null,arguments)};f._sqlite3_free=function(){return f.asm.Ka.apply(null,arguments)};f._sqlite3_open=function(){return f.asm.La.apply(null,arguments)};
f._sqlite3_prepare_v2=function(){return f.asm.Ma.apply(null,arguments)};f._sqlite3_reset=function(){return f.asm.Na.apply(null,arguments)};f._sqlite3_result_double=function(){return f.asm.Oa.apply(null,arguments)};f._sqlite3_result_null=function(){return f.asm.Pa.apply(null,arguments)};f._sqlite3_result_text=function(){return f.asm.Qa.apply(null,arguments)};f._sqlite3_step=function(){return f.asm.Ra.apply(null,arguments)};f._sqlite3_value_blob=function(){return f.asm.Sa.apply(null,arguments)};
f._sqlite3_value_bytes=function(){return f.asm.Ta.apply(null,arguments)};f._sqlite3_value_double=function(){return f.asm.Ua.apply(null,arguments)};f._sqlite3_value_int=function(){return f.asm.Va.apply(null,arguments)};f._sqlite3_value_text=function(){return f.asm.Wa.apply(null,arguments)};f._sqlite3_value_type=function(){return f.asm.Xa.apply(null,arguments)};
var h=f.stackAlloc=function(){return f.asm.Za.apply(null,arguments)},qa=f.stackRestore=function(){return f.asm._a.apply(null,arguments)},na=f.stackSave=function(){return f.asm.$a.apply(null,arguments)};f.dynCall_vi=function(){return f.asm.Ya.apply(null,arguments)};f.asm=Vc;f.cwrap=function(a,b,c,d){c=c||[];var e=c.every(function(a){return"number"===a});return"string"!==b&&e&&!d?Na(a):function(){return Oa(a,b,c,arguments)}};f.stackSave=na;f.stackRestore=qa;f.stackAlloc=h;
function Wc(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}Wc.prototype=Error();Wc.prototype.constructor=Wc;gb=function Xc(){f.calledRun||Yc();f.calledRun||(gb=Xc)};
function Yc(){function a(){if(!f.calledRun&&(f.calledRun=!0,!Ma)){db||(db=!0,f.noFSInit||Hc||(Hc=!0,Gc(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Ic("stdin",f.stdin):Ac("/dev/tty","/dev/stdin"),f.stdout?Ic("stdout",null,f.stdout):Ac("/dev/tty","/dev/stdout"),f.stderr?Ic("stderr",null,f.stderr):Ac("/dev/tty1","/dev/stderr"),p("/dev/stdin","r"),p("/dev/stdout","w"),p("/dev/stderr","w")),Za(ab));Jb=!1;Za(bb);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"==
typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var a=f.postRun.shift();cb.unshift(a)}Za(cb)}}if(!(0<H)){if(f.preRun)for("function"==typeof f.preRun&&(f.preRun=[f.preRun]);f.preRun.length;)eb();Za($a);0<H||f.calledRun||(f.setStatus?(f.setStatus("Running..."),setTimeout(function(){setTimeout(function(){f.setStatus("")},1);a()},1)):a())}}f.run=Yc;
function B(a){if(f.onAbort)f.onAbort(a);void 0!==a?(Aa(a),C(a),a=JSON.stringify(a)):a="";Ma=!0;throw"abort("+a+"). Build with -s ASSERTIONS=1 for more info.";}f.abort=B;if(f.preInit)for("function"==typeof f.preInit&&(f.preInit=[f.preInit]);0<f.preInit.length;)f.preInit.pop()();f.noExitRuntime=!0;Yc();
var e;e||(e=typeof Module !== 'undefined' ? Module : {});
e.onRuntimeInitialized=function(){function a(h,m){this.Na=h;this.db=m;this.Ma=1;this.eb=[]}function b(h){this.filename="dbfile_"+(4294967295*Math.random()>>>0);if(null!=h){var m=this.filename,q=m?k("//"+m):"/";m=aa(!0,!0);q=ba(q,(void 0!==m?m:438)&4095|32768,0);if(h){if("string"===typeof h){for(var v=Array(h.length),B=0,Q=h.length;B<Q;++B)v[B]=h.charCodeAt(B);h=v}ca(q,m|146);v=l(q,"w");da(v,h,0,h.length,0,void 0);ea(v);ca(q,m)}}this.handleError(f(this.filename,c));this.db=p(c,"i32");uc(this.db);this.bb=
{};this.Ta={}}null;var c=t(4),d=e.cwrap,f=d("sqlite3_open","number",["string","number"]),g=d("sqlite3_close_v2","number",["number"]),n=d("sqlite3_exec","number",["number","string","number","number","number"]),r=d("sqlite3_changes","number",["number"]),w=d("sqlite3_prepare_v2","number",["number","string","number","number","number"]),u=d("sqlite3_prepare_v2","number",["number","number","number","number","number"]),C=d("sqlite3_bind_text","number",["number","number","number","number","number"]),H=d("sqlite3_bind_blob",
"number",["number","number","number","number","number"]),ma=d("sqlite3_bind_double","number",["number","number","number"]),na=d("sqlite3_bind_int","number",["number","number","number"]),vc=d("sqlite3_bind_parameter_index","number",["number","string"]),wc=d("sqlite3_step","number",["number"]),xc=d("sqlite3_errmsg","string",["number"]),wb=d("sqlite3_data_count","number",["number"]),yc=d("sqlite3_column_double","number",["number","number"]),zc=d("sqlite3_column_text","string",["number","number"]),Ac=
d("sqlite3_column_blob","number",["number","number"]),Bc=d("sqlite3_column_bytes","number",["number","number"]),Cc=d("sqlite3_column_type","number",["number","number"]),Dc=d("sqlite3_column_name","string",["number","number"]),Ec=d("sqlite3_reset","number",["number"]),Fc=d("sqlite3_clear_bindings","number",["number"]),Gc=d("sqlite3_finalize","number",["number"]),Hc=d("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),Ic=d("sqlite3_value_type",
"number",["number"]),Jc=d("sqlite3_value_bytes","number",["number"]),Kc=d("sqlite3_value_text","string",["number"]),Lc=d("sqlite3_value_blob","number",["number"]),Mc=d("sqlite3_value_double","number",["number"]),Nc=d("sqlite3_result_double","",["number","number"]),xb=d("sqlite3_result_null","",["number"]),Oc=d("sqlite3_result_text","",["number","string","number","number"]),Pc=d("sqlite3_result_blob","",["number","number","number","number"]),Qc=d("sqlite3_result_int","",["number","number"]),yb=d("sqlite3_result_error",
"",["number","string","number"]),uc=d("RegisterExtensionFunctions","number",["number"]);a.prototype.bind=function(h){if(!this.Na)throw"Statement closed";this.reset();return Array.isArray(h)?this.sb(h):null!=h&&"object"===typeof h?this.tb(h):!0};a.prototype.step=function(){if(!this.Na)throw"Statement closed";this.Ma=1;var h=wc(this.Na);switch(h){case 100:return!0;case 101:return!1;default:throw this.db.handleError(h);}};a.prototype.zb=function(h){null==h&&(h=this.Ma,this.Ma+=1);return yc(this.Na,h)};
a.prototype.Ab=function(h){null==h&&(h=this.Ma,this.Ma+=1);return zc(this.Na,h)};a.prototype.getBlob=function(h){null==h&&(h=this.Ma,this.Ma+=1);var m=Bc(this.Na,h);var q=Ac(this.Na,h);var v=new Uint8Array(m);for(h=0;h<m;)v[h]=x[q+h],h+=1;return v};a.prototype.get=function(h){var m;null!=h&&this.bind(h)&&this.step();var q=[];h=0;for(m=wb(this.Na);h<m;){switch(Cc(this.Na,h)){case 1:case 2:q.push(this.zb(h));break;case 3:q.push(this.Ab(h));break;case 4:q.push(this.getBlob(h));break;default:q.push(null)}h+=
1}return q};a.prototype.getColumnNames=function(){var h;var m=[];var q=0;for(h=wb(this.Na);q<h;)m.push(Dc(this.Na,q)),q+=1;return m};a.prototype.getAsObject=function(h){var m;var q=this.get(h);var v=this.getColumnNames();var B={};h=0;for(m=v.length;h<m;){var Q=v[h];B[Q]=q[h];h+=1}return B};a.prototype.run=function(h){null!=h&&this.bind(h);this.step();return this.reset()};a.prototype.wb=function(h,m){null==m&&(m=this.Ma,this.Ma+=1);h=fa(h);var q=ha(h);this.eb.push(q);this.db.handleError(C(this.Na,
m,q,h.length-1,0))};a.prototype.rb=function(h,m){null==m&&(m=this.Ma,this.Ma+=1);var q=ha(h);this.eb.push(q);this.db.handleError(H(this.Na,m,q,h.length,0))};a.prototype.vb=function(h,m){null==m&&(m=this.Ma,this.Ma+=1);this.db.handleError((h===(h|0)?na:ma)(this.Na,m,h))};a.prototype.ub=function(h){null==h&&(h=this.Ma,this.Ma+=1);H(this.Na,h,0,0,0)};a.prototype.kb=function(h,m){null==m&&(m=this.Ma,this.Ma+=1);switch(typeof h){case "string":this.wb(h,m);return;case "number":case "boolean":this.vb(h+
0,m);return;case "object":if(null===h){this.ub(m);return}if(null!=h.length){this.rb(h,m);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+h+").";};a.prototype.tb=function(h){var m=this;Object.keys(h).forEach(function(q){var v=vc(m.Na,q);0!==v&&m.kb(h[q],v)});return!0};a.prototype.sb=function(h){var m;for(m=0;m<h.length;)this.kb(h[m],m+1),m+=1;return!0};a.prototype.reset=function(){return 0===Fc(this.Na)&&0===Ec(this.Na)};a.prototype.freemem=function(){for(var h;void 0!==(h=
this.eb.pop());)ia(h)};a.prototype.free=function(){var h=0===Gc(this.Na);delete this.db.bb[this.Na];this.Na=0;return h};b.prototype.run=function(h,m){if(!this.db)throw"Database closed";if(m){h=this.prepare(h,m);try{h.step()}finally{h.free()}}else this.handleError(n(this.db,h,0,0,c));return this};b.prototype.exec=function(h,m){if(!this.db)throw"Database closed";var q=ja();try{var v=ka(h)+1,B=t(v);la(h,x,B,v);var Q=B;var F=t(4);for(h=[];0!==p(Q,"i8");){oa(c);oa(F);this.handleError(u(this.db,Q,-1,c,
F));var pa=p(c,"i32");Q=p(F,"i32");if(0!==pa){var S=null;var A=new a(pa,this);for(null!=m&&A.bind(m);A.step();)null===S&&(S={columns:A.getColumnNames(),values:[]},h.push(S)),S.values.push(A.get());A.free()}}return h}catch(M){throw A&&A.free(),M;}finally{qa(q)}};b.prototype.each=function(h,m,q,v){"function"===typeof m&&(v=q,q=m,m=void 0);h=this.prepare(h,m);try{for(;h.step();)q(h.getAsObject())}finally{h.free()}if("function"===typeof v)return v()};b.prototype.prepare=function(h,m){oa(c);this.handleError(w(this.db,
h,-1,c,0));h=p(c,"i32");if(0===h)throw"Nothing to prepare";var q=new a(h,this);null!=m&&q.bind(m);return this.bb[h]=q};b.prototype["export"]=function(){Object.values(this.bb).forEach(function(m){m.free()});Object.values(this.Ta).forEach(ra);this.Ta={};this.handleError(g(this.db));var h=sa(this.filename);this.handleError(f(this.filename,c));this.db=p(c,"i32");return h};b.prototype.close=function(){null!==this.db&&(Object.values(this.bb).forEach(function(h){h.free()}),Object.values(this.Ta).forEach(ra),
this.Ta={},this.handleError(g(this.db)),ta("/"+this.filename),this.db=null)};b.prototype.handleError=function(h){if(0===h)return null;h=xc(this.db);throw Error(h);};b.prototype.getRowsModified=function(){return r(this.db)};b.prototype.create_function=function(h,m){Object.prototype.hasOwnProperty.call(this.Ta,h)&&(ua(this.Ta[h]),delete this.Ta[h]);var q=va(function(v,B,Q){for(var F,pa=[],S=0;S<B;S+=1){var A=p(Q+4*S,"i32"),M=Ic(A);if(1===M||2===M)A=Mc(A);else if(3===M)A=Kc(A);else if(4===M){M=A;A=Jc(M);
M=Lc(M);for(var Db=new Uint8Array(A),Da=0;Da<A;Da+=1)Db[Da]=x[M+Da];A=Db}else A=null;pa.push(A)}try{F=m.apply(null,pa)}catch(Tc){yb(v,Tc,-1);return}switch(typeof F){case "boolean":Qc(v,F?1:0);break;case "number":Nc(v,F);break;case "string":Oc(v,F,-1,-1);break;case "object":null===F?xb(v):null!=F.length?(B=ha(F),Pc(v,B,F.length,-1),ia(B)):yb(v,"Wrong API use : tried to return a value of an unknown type ("+F+").",-1);break;default:xb(v)}});this.Ta[h]=q;this.handleError(Hc(this.db,h,m.length,1,0,q,0,
0,0));return this};e.Database=b};var wa={},y;for(y in e)e.hasOwnProperty(y)&&(wa[y]=e[y]);var xa="./this.program",ya=!1,za=!1,Aa=!1,Ba=!1;ya="object"===typeof window;za="function"===typeof importScripts;Aa="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node;Ba=!ya&&!Aa&&!za;var z="",Ca,Ea,Fa,Ga;
if(Aa)z=za?require("path").dirname(z)+"/":__dirname+"/",Ca=function(a,b){Fa||(Fa=require("fs"));Ga||(Ga=require("path"));a=Ga.normalize(a);return Fa.readFileSync(a,b?null:"utf8")},Ea=function(a){a=Ca(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a},1<process.argv.length&&(xa=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),"undefined"!==typeof module&&(module.exports=e),process.on("unhandledRejection",D),e.inspect=function(){return"[Emscripten Module object]"};else if(Ba)"undefined"!=
typeof read&&(Ca=function(a){return read(a)}),Ea=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");assert("object"===typeof a);return a},"undefined"!==typeof print&&("undefined"===typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!==typeof printErr?printErr:print);else if(ya||za)za?z=self.location.href:document.currentScript&&(z=document.currentScript.src),z=0!==z.indexOf("blob:")?z.substr(0,z.lastIndexOf("/")+
1):"",Ca=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},za&&(Ea=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});var Ha=e.print||console.log.bind(console),E=e.printErr||console.warn.bind(console);for(y in wa)wa.hasOwnProperty(y)&&(e[y]=wa[y]);wa=null;e.thisProgram&&(xa=e.thisProgram);function Ia(a){var b=G[Ja>>2];G[Ja>>2]=b+a+15&-16;return b}var Ka=[],La;
function ua(a){La.delete(I.get(a));Ka.push(a)}
function va(a){if(!La){La=new WeakMap;for(var b=0;b<I.length;b++){var c=I.get(b);c&&La.set(c,b)}}if(La.has(a))a=La.get(a);else{if(Ka.length)b=Ka.pop();else{b=I.length;try{I.grow(1)}catch(g){if(!(g instanceof RangeError))throw g;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}}try{I.set(b,a)}catch(g){if(!(g instanceof TypeError))throw g;assert(!0,"Missing signature argument to addFunction");if("function"===typeof WebAssembly.Function){var d={i:"i32",j:"i64",f:"f32",d:"f64"},f={parameters:[],
results:[]};for(c=1;4>c;++c)f.parameters.push(d["viii"[c]]);c=new WebAssembly.Function(f,a)}else{d=[1,0,1,96];f={i:127,j:126,f:125,d:124};d.push(3);for(c=0;3>c;++c)d.push(f["iii"[c]]);d.push(0);d[1]=d.length-2;c=new Uint8Array([0,97,115,109,1,0,0,0].concat(d,[2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0]));c=new WebAssembly.Module(c);c=(new WebAssembly.Instance(c,{e:{f:a}})).exports.f}I.set(b,c)}La.set(a,b);a=b}return a}function ra(a){ua(a)}var Ma;e.wasmBinary&&(Ma=e.wasmBinary);var noExitRuntime;
e.noExitRuntime&&(noExitRuntime=e.noExitRuntime);"object"!==typeof WebAssembly&&E("no native wasm support detected");
function oa(a){var b="i32";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":x[a>>0]=0;break;case "i8":x[a>>0]=0;break;case "i16":Na[a>>1]=0;break;case "i32":G[a>>2]=0;break;case "i64":J=[0,(K=0,1<=+Oa(K)?0<K?(Pa(+Qa(K/4294967296),4294967295)|0)>>>0:~~+Ra((K-+(~~K>>>0))/4294967296)>>>0:0)];G[a>>2]=J[0];G[a+4>>2]=J[1];break;case "float":Sa[a>>2]=0;break;case "double":Ta[a>>3]=0;break;default:D("invalid type for setValue: "+b)}}
function p(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return x[a>>0];case "i8":return x[a>>0];case "i16":return Na[a>>1];case "i32":return G[a>>2];case "i64":return G[a>>2];case "float":return Sa[a>>2];case "double":return Ta[a>>3];default:D("invalid type for getValue: "+b)}return null}var Ua,I=new WebAssembly.Table({initial:387,element:"anyfunc"}),Va=!1;function assert(a,b){a||D("Assertion failed: "+b)}
function Wa(a){var b=e["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b}
function Xa(a,b,c,d){var f={string:function(u){var C=0;if(null!==u&&void 0!==u&&0!==u){var H=(u.length<<2)+1;C=t(H);la(u,L,C,H)}return C},array:function(u){var C=t(u.length);x.set(u,C);return C}},g=Wa(a),n=[];a=0;if(d)for(var r=0;r<d.length;r++){var w=f[c[r]];w?(0===a&&(a=ja()),n[r]=w(d[r])):n[r]=d[r]}c=g.apply(null,n);c=function(u){return"string"===b?N(u):"boolean"===b?!!u:u}(c);0!==a&&qa(a);return c}var Ya=0,Za=3;
function ha(a){var b=Ya;if("number"===typeof a){var c=!0;var d=a}else c=!1,d=a.length;var f;b==Za?f=g:f=[$a,t,Ia][b](Math.max(d,1));if(c){var g=f;assert(0==(f&3));for(a=f+(d&-4);g<a;g+=4)G[g>>2]=0;for(a=f+d;g<a;)x[g++>>0]=0;return f}a.subarray||a.slice?L.set(a,f):L.set(new Uint8Array(a),f);return f}var ab="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
function bb(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16<c-b&&a.subarray&&ab)return ab.decode(a.subarray(b,c));for(d="";b<c;){var f=a[b++];if(f&128){var g=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|g);else{var n=a[b++]&63;f=224==(f&240)?(f&15)<<12|g<<6|n:(f&7)<<18|g<<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}function N(a){return a?bb(L,a,void 0):""}
function la(a,b,c,d){if(!(0<d))return 0;var f=c;d=c+d-1;for(var g=0;g<a.length;++g){var n=a.charCodeAt(g);if(55296<=n&&57343>=n){var r=a.charCodeAt(++g);n=65536+((n&1023)<<10)|r&1023}if(127>=n){if(c>=d)break;b[c++]=n}else{if(2047>=n){if(c+1>=d)break;b[c++]=192|n>>6}else{if(65535>=n){if(c+2>=d)break;b[c++]=224|n>>12}else{if(c+3>=d)break;b[c++]=240|n>>18;b[c++]=128|n>>12&63}b[c++]=128|n>>6&63}b[c++]=128|n&63}}b[c]=0;return c-f}
function ka(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}function cb(a){var b=ka(a)+1,c=$a(b);c&&la(a,x,c,b);return c}var db,x,L,Na,G,Sa,Ta;
function eb(a){db=a;e.HEAP8=x=new Int8Array(a);e.HEAP16=Na=new Int16Array(a);e.HEAP32=G=new Int32Array(a);e.HEAPU8=L=new Uint8Array(a);e.HEAPU16=new Uint16Array(a);e.HEAPU32=new Uint32Array(a);e.HEAPF32=Sa=new Float32Array(a);e.HEAPF64=Ta=new Float64Array(a)}var Ja=63056,fb=e.INITIAL_MEMORY||16777216;e.wasmMemory?Ua=e.wasmMemory:Ua=new WebAssembly.Memory({initial:fb/65536,maximum:32768});Ua&&(db=Ua.buffer);fb=db.byteLength;eb(db);G[Ja>>2]=5306096;
function gb(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(e);else{var c=b.yb;"number"===typeof c?void 0===b.fb?e.dynCall_v(c):e.dynCall_vi(c,b.fb):c(void 0===b.fb?null:b.fb)}}}var hb=[],ib=[],jb=[],kb=[];function lb(){var a=e.preRun.shift();hb.unshift(a)}var Oa=Math.abs,Ra=Math.ceil,Qa=Math.floor,Pa=Math.min,mb=0,nb=null,ob=null;e.preloadedImages={};e.preloadedAudios={};
function D(a){if(e.onAbort)e.onAbort(a);Ha(a);E(a);Va=!0;throw new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");}function pb(a){var b=qb;return String.prototype.startsWith?b.startsWith(a):0===b.indexOf(a)}function rb(){return pb("data:application/octet-stream;base64,")}var qb="sql-wasm.wasm";if(!rb()){var sb=qb;qb=e.locateFile?e.locateFile(sb,z):z+sb}
function tb(){try{if(Ma)return new Uint8Array(Ma);if(Ea)return Ea(qb);throw"both async and sync fetching of the wasm failed";}catch(a){D(a)}}function ub(){return Ma||!ya&&!za||"function"!==typeof fetch||pb("file://")?new Promise(function(a){a(tb())}):fetch(qb,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+qb+"'";return a.arrayBuffer()}).catch(function(){return tb()})}var K,J;ib.push({yb:function(){vb()}});
function zb(a){return a.replace(/\b_Z[\w\d_]+/g,function(b){return b===b?b:b+" ["+b+"]"})}function Ab(a,b){for(var c=0,d=a.length-1;0<=d;d--){var f=a[d];"."===f?a.splice(d,1):".."===f?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function k(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=Ab(a.split("/").filter(function(d){return!!d}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a}
function Bb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Cb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function Eb(a){G[Fb()>>2]=a}
function Gb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=Ab(a.split("/").filter(function(d){return!!d}),!b).join("/");return(b?"/":"")+a||"."}var Hb=[];function Ib(a,b){Hb[a]={input:[],output:[],Ya:b};Jb(a,Kb)}
var Kb={open:function(a){var b=Hb[a.node.rdev];if(!b)throw new O(43);a.tty=b;a.seekable=!1},close:function(a){a.tty.Ya.flush(a.tty)},flush:function(a){a.tty.Ya.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.Ya.ob)throw new O(60);for(var f=0,g=0;g<d;g++){try{var n=a.tty.Ya.ob(a.tty)}catch(r){throw new O(29);}if(void 0===n&&0===f)throw new O(6);if(null===n||void 0===n)break;f++;b[c+g]=n}f&&(a.node.timestamp=Date.now());return f},write:function(a,b,c,d){if(!a.tty||!a.tty.Ya.hb)throw new O(60);
try{for(var f=0;f<d;f++)a.tty.Ya.hb(a.tty,b[c+f])}catch(g){throw new O(29);}d&&(a.node.timestamp=Date.now());return f}},Lb={ob:function(a){if(!a.input.length){var b=null;if(Aa){var c=Buffer.qb?Buffer.qb(256):new Buffer(256),d=0;try{d=Fa.readSync(process.stdin.fd,c,0,256,null)}catch(f){if(-1!=f.toString().indexOf("EOF"))d=0;else throw f;}0<d?b=c.slice(0,d).toString("utf-8"):b=null}else"undefined"!=typeof window&&"function"==typeof window.prompt?(b=window.prompt("Input: "),null!==b&&(b+="\n")):"function"==
typeof readline&&(b=readline(),null!==b&&(b+="\n"));if(!b)return null;a.input=fa(b,!0)}return a.input.shift()},hb:function(a,b){null===b||10===b?(Ha(bb(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(Ha(bb(a.output,0)),a.output=[])}},Mb={hb:function(a,b){null===b||10===b?(E(bb(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(E(bb(a.output,0)),a.output=[])}},P={Ra:null,Sa:function(){return P.createNode(null,
"/",16895,0)},createNode:function(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new O(63);P.Ra||(P.Ra={dir:{node:{Qa:P.Ja.Qa,Pa:P.Ja.Pa,lookup:P.Ja.lookup,Za:P.Ja.Za,rename:P.Ja.rename,unlink:P.Ja.unlink,rmdir:P.Ja.rmdir,readdir:P.Ja.readdir,symlink:P.Ja.symlink},stream:{Va:P.Ka.Va}},file:{node:{Qa:P.Ja.Qa,Pa:P.Ja.Pa},stream:{Va:P.Ka.Va,read:P.Ka.read,write:P.Ka.write,jb:P.Ka.jb,$a:P.Ka.$a,ab:P.Ka.ab}},link:{node:{Qa:P.Ja.Qa,Pa:P.Ja.Pa,readlink:P.Ja.readlink},stream:{}},lb:{node:{Qa:P.Ja.Qa,
Pa:P.Ja.Pa},stream:Nb}});c=Ob(a,b,c,d);R(c.mode)?(c.Ja=P.Ra.dir.node,c.Ka=P.Ra.dir.stream,c.Ia={}):32768===(c.mode&61440)?(c.Ja=P.Ra.file.node,c.Ka=P.Ra.file.stream,c.Oa=0,c.Ia=null):40960===(c.mode&61440)?(c.Ja=P.Ra.link.node,c.Ka=P.Ra.link.stream):8192===(c.mode&61440)&&(c.Ja=P.Ra.lb.node,c.Ka=P.Ra.lb.stream);c.timestamp=Date.now();a&&(a.Ia[b]=c);return c},Jb:function(a){if(a.Ia&&a.Ia.subarray){for(var b=[],c=0;c<a.Oa;++c)b.push(a.Ia[c]);return b}return a.Ia},Kb:function(a){return a.Ia?a.Ia.subarray?
a.Ia.subarray(0,a.Oa):new Uint8Array(a.Ia):new Uint8Array(0)},mb:function(a,b){var c=a.Ia?a.Ia.length:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.Ia,a.Ia=new Uint8Array(b),0<a.Oa&&a.Ia.set(c.subarray(0,a.Oa),0))},Gb:function(a,b){if(a.Oa!=b)if(0==b)a.Ia=null,a.Oa=0;else{if(!a.Ia||a.Ia.subarray){var c=a.Ia;a.Ia=new Uint8Array(b);c&&a.Ia.set(c.subarray(0,Math.min(b,a.Oa)))}else if(a.Ia||(a.Ia=[]),a.Ia.length>b)a.Ia.length=b;else for(;a.Ia.length<b;)a.Ia.push(0);a.Oa=
b}},Ja:{Qa:function(a){var b={};b.dev=8192===(a.mode&61440)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=a.rdev;R(a.mode)?b.size=4096:32768===(a.mode&61440)?b.size=a.Oa:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.atime=new Date(a.timestamp);b.mtime=new Date(a.timestamp);b.ctime=new Date(a.timestamp);b.xb=4096;b.blocks=Math.ceil(b.size/b.xb);return b},Pa:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);void 0!==b.size&&P.Gb(a,
b.size)},lookup:function(){throw Pb[44];},Za:function(a,b,c,d){return P.createNode(a,b,c,d)},rename:function(a,b,c){if(R(a.mode)){try{var d=Qb(b,c)}catch(g){}if(d)for(var f in d.Ia)throw new O(55);}delete a.parent.Ia[a.name];a.name=c;b.Ia[c]=a;a.parent=b},unlink:function(a,b){delete a.Ia[b]},rmdir:function(a,b){var c=Qb(a,b),d;for(d in c.Ia)throw new O(55);delete a.Ia[b]},readdir:function(a){var b=[".",".."],c;for(c in a.Ia)a.Ia.hasOwnProperty(c)&&b.push(c);return b},symlink:function(a,b,c){a=P.createNode(a,
b,41471,0);a.link=c;return a},readlink:function(a){if(40960!==(a.mode&61440))throw new O(28);return a.link}},Ka:{read:function(a,b,c,d,f){var g=a.node.Ia;if(f>=a.node.Oa)return 0;a=Math.min(a.node.Oa-f,d);if(8<a&&g.subarray)b.set(g.subarray(f,f+a),c);else for(d=0;d<a;d++)b[c+d]=g[f+d];return a},write:function(a,b,c,d,f,g){b.buffer===x.buffer&&(g=!1);if(!d)return 0;a=a.node;a.timestamp=Date.now();if(b.subarray&&(!a.Ia||a.Ia.subarray)){if(g)return a.Ia=b.subarray(c,c+d),a.Oa=d;if(0===a.Oa&&0===f)return a.Ia=
b.slice(c,c+d),a.Oa=d;if(f+d<=a.Oa)return a.Ia.set(b.subarray(c,c+d),f),d}P.mb(a,f+d);if(a.Ia.subarray&&b.subarray)a.Ia.set(b.subarray(c,c+d),f);else for(g=0;g<d;g++)a.Ia[f+g]=b[c+g];a.Oa=Math.max(a.Oa,f+d);return d},Va:function(a,b,c){1===c?b+=a.position:2===c&&32768===(a.node.mode&61440)&&(b+=a.node.Oa);if(0>b)throw new O(28);return b},jb:function(a,b,c){P.mb(a.node,b+c);a.node.Oa=Math.max(a.node.Oa,b+c)},$a:function(a,b,c,d,f,g,n){if(32768!==(a.node.mode&61440))throw new O(43);a=a.node.Ia;if(n&
2||a.buffer!==b.buffer){if(0<f||f+d<a.length)a.subarray?a=a.subarray(f,f+d):a=Array.prototype.slice.call(a,f,f+d);f=!0;n=b.buffer==x.buffer;d=$a(d);if(!d)throw new O(48);(n?x:b).set(a,d)}else f=!1,d=a.byteOffset;return{Fb:d,cb:f}},ab:function(a,b,c,d,f){if(32768!==(a.node.mode&61440))throw new O(43);if(f&2)return 0;P.Ka.write(a,b,0,d,c,!1);return 0}}},Rb=null,Sb={},T=[],Tb=1,U=null,Ub=!0,V={},O=null,Pb={};
function W(a,b){a=Gb("/",a);b=b||{};if(!a)return{path:"",node:null};var c={nb:!0,ib:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8<b.ib)throw new O(32);a=Ab(a.split("/").filter(function(n){return!!n}),!1);var f=Rb;c="/";for(d=0;d<a.length;d++){var g=d===a.length-1;if(g&&b.parent)break;f=Qb(f,a[d]);c=k(c+"/"+a[d]);f.Wa&&(!g||g&&b.nb)&&(f=f.Wa.root);if(!g||b.Ua)for(g=0;40960===(f.mode&61440);)if(f=Vb(c),c=Gb(Bb(c),f),f=W(c,{ib:b.ib}).node,40<g++)throw new O(32);}return{path:c,node:f}}
function Wb(a){for(var b;;){if(a===a.parent)return a=a.Sa.pb,b?"/"!==a[a.length-1]?a+"/"+b:a+b:a;b=b?a.name+"/"+b:a.name;a=a.parent}}function Xb(a,b){for(var c=0,d=0;d<b.length;d++)c=(c<<5)-c+b.charCodeAt(d)|0;return(a+c>>>0)%U.length}function Yb(a){var b=Xb(a.parent.id,a.name);if(U[b]===a)U[b]=a.Xa;else for(b=U[b];b;){if(b.Xa===a){b.Xa=a.Xa;break}b=b.Xa}}
function Qb(a,b){var c;if(c=(c=Zb(a,"x"))?c:a.Ja.lookup?0:2)throw new O(c,a);for(c=U[Xb(a.id,b)];c;c=c.Xa){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.Ja.lookup(a,b)}function Ob(a,b,c,d){a=new $b(a,b,c,d);b=Xb(a.parent.id,a.name);a.Xa=U[b];return U[b]=a}function R(a){return 16384===(a&61440)}var ac={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};
function bc(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Zb(a,b){if(Ub)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;return 0}function cc(a,b){try{return Qb(a,b),20}catch(c){}return Zb(a,"wx")}function dc(a,b,c){try{var d=Qb(a,b)}catch(f){return f.La}if(a=Zb(a,"wx"))return a;if(c){if(!R(d.mode))return 54;if(d===d.parent||"/"===Wb(d))return 10}else if(R(d.mode))return 31;return 0}
function ec(a){var b=4096;for(a=a||0;a<=b;a++)if(!T[a])return a;throw new O(33);}function fc(a,b){hc||(hc=function(){},hc.prototype={});var c=new hc,d;for(d in a)c[d]=a[d];a=c;b=ec(b);a.fd=b;return T[b]=a}var Nb={open:function(a){a.Ka=Sb[a.node.rdev].Ka;a.Ka.open&&a.Ka.open(a)},Va:function(){throw new O(70);}};function Jb(a,b){Sb[a]={Ka:b}}
function ic(a,b){var c="/"===b,d=!b;if(c&&Rb)throw new O(10);if(!c&&!d){var f=W(b,{nb:!1});b=f.path;f=f.node;if(f.Wa)throw new O(10);if(!R(f.mode))throw new O(54);}b={type:a,Lb:{},pb:b,Db:[]};a=a.Sa(b);a.Sa=b;b.root=a;c?Rb=a:f&&(f.Wa=b,f.Sa&&f.Sa.Db.push(b))}function ba(a,b,c){var d=W(a,{parent:!0}).node;a=Cb(a);if(!a||"."===a||".."===a)throw new O(28);var f=cc(d,a);if(f)throw new O(f);if(!d.Ja.Za)throw new O(63);return d.Ja.Za(d,a,b,c)}function X(a,b){ba(a,(void 0!==b?b:511)&1023|16384,0)}
function jc(a,b,c){"undefined"===typeof c&&(c=b,b=438);ba(a,b|8192,c)}function kc(a,b){if(!Gb(a))throw new O(44);var c=W(b,{parent:!0}).node;if(!c)throw new O(44);b=Cb(b);var d=cc(c,b);if(d)throw new O(d);if(!c.Ja.symlink)throw new O(63);c.Ja.symlink(c,b,a)}
function ta(a){var b=W(a,{parent:!0}).node,c=Cb(a),d=Qb(b,c),f=dc(b,c,!1);if(f)throw new O(f);if(!b.Ja.unlink)throw new O(63);if(d.Wa)throw new O(10);try{V.willDeletePath&&V.willDeletePath(a)}catch(g){E("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.Ja.unlink(b,c);Yb(d);try{if(V.onDeletePath)V.onDeletePath(a)}catch(g){E("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}}
function Vb(a){a=W(a).node;if(!a)throw new O(44);if(!a.Ja.readlink)throw new O(28);return Gb(Wb(a.parent),a.Ja.readlink(a))}function lc(a,b){a=W(a,{Ua:!b}).node;if(!a)throw new O(44);if(!a.Ja.Qa)throw new O(63);return a.Ja.Qa(a)}function mc(a){return lc(a,!0)}function ca(a,b){var c;"string"===typeof a?c=W(a,{Ua:!0}).node:c=a;if(!c.Ja.Pa)throw new O(63);c.Ja.Pa(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})}
function nc(a){var b;"string"===typeof a?b=W(a,{Ua:!0}).node:b=a;if(!b.Ja.Pa)throw new O(63);b.Ja.Pa(b,{timestamp:Date.now()})}function oc(a,b){if(0>b)throw new O(28);var c;"string"===typeof a?c=W(a,{Ua:!0}).node:c=a;if(!c.Ja.Pa)throw new O(63);if(R(c.mode))throw new O(31);if(32768!==(c.mode&61440))throw new O(28);if(a=Zb(c,"w"))throw new O(a);c.Ja.Pa(c,{size:b,timestamp:Date.now()})}
function l(a,b,c,d){if(""===a)throw new O(44);if("string"===typeof b){var f=ac[b];if("undefined"===typeof f)throw Error("Unknown file open mode: "+b);b=f}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=k(a);try{g=W(a,{Ua:!(b&131072)}).node}catch(n){}}f=!1;if(b&64)if(g){if(b&128)throw new O(20);}else g=ba(a,c,0),f=!0;if(!g)throw new O(44);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!R(g.mode))throw new O(54);if(!f&&(c=g?40960===(g.mode&61440)?32:R(g.mode)&&
("r"!==bc(b)||b&512)?31:Zb(g,bc(b)):44))throw new O(c);b&512&&oc(g,0);b&=-131713;d=fc({node:g,path:Wb(g),flags:b,seekable:!0,position:0,Ka:g.Ka,Ib:[],error:!1},d);d.Ka.open&&d.Ka.open(d);!e.logReadFiles||b&1||(pc||(pc={}),a in pc||(pc[a]=1,E("FS.trackingDelegate error on read file: "+a)));try{V.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),V.onOpenFile(a,g))}catch(n){E("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+n.message)}return d}
function ea(a){if(null===a.fd)throw new O(8);a.gb&&(a.gb=null);try{a.Ka.close&&a.Ka.close(a)}catch(b){throw b;}finally{T[a.fd]=null}a.fd=null}function qc(a,b,c){if(null===a.fd)throw new O(8);if(!a.seekable||!a.Ka.Va)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.Ka.Va(a,b,c);a.Ib=[]}
function rc(a,b,c,d,f){if(0>d||0>f)throw new O(28);if(null===a.fd)throw new O(8);if(1===(a.flags&2097155))throw new O(8);if(R(a.node.mode))throw new O(31);if(!a.Ka.read)throw new O(28);var g="undefined"!==typeof f;if(!g)f=a.position;else if(!a.seekable)throw new O(70);b=a.Ka.read(a,b,c,d,f);g||(a.position+=b);return b}
function da(a,b,c,d,f,g){if(0>d||0>f)throw new O(28);if(null===a.fd)throw new O(8);if(0===(a.flags&2097155))throw new O(8);if(R(a.node.mode))throw new O(31);if(!a.Ka.write)throw new O(28);a.seekable&&a.flags&1024&&qc(a,0,2);var n="undefined"!==typeof f;if(!n)f=a.position;else if(!a.seekable)throw new O(70);b=a.Ka.write(a,b,c,d,f,g);n||(a.position+=b);try{if(a.path&&V.onWriteToFile)V.onWriteToFile(a.path)}catch(r){E("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+r.message)}return b}
function sa(a){var b={encoding:"binary"};b=b||{};b.flags=b.flags||"r";b.encoding=b.encoding||"binary";if("utf8"!==b.encoding&&"binary"!==b.encoding)throw Error('Invalid encoding type "'+b.encoding+'"');var c,d=l(a,b.flags);a=lc(a).size;var f=new Uint8Array(a);rc(d,f,0,a,0);"utf8"===b.encoding?c=bb(f,0):"binary"===b.encoding&&(c=f);ea(d);return c}
function sc(){O||(O=function(a,b){this.node=b;this.Hb=function(c){this.La=c};this.Hb(a);this.message="FS error"},O.prototype=Error(),O.prototype.constructor=O,[44].forEach(function(a){Pb[a]=new O(a);Pb[a].stack="<generic error, no stack>"}))}var tc;function aa(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c}
function Rc(a,b,c){a=k("/dev/"+a);var d=aa(!!b,!!c);Sc||(Sc=64);var f=Sc++<<8|0;Jb(f,{open:function(g){g.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(g,n,r,w){for(var u=0,C=0;C<w;C++){try{var H=b()}catch(ma){throw new O(29);}if(void 0===H&&0===u)throw new O(6);if(null===H||void 0===H)break;u++;n[r+C]=H}u&&(g.node.timestamp=Date.now());return u},write:function(g,n,r,w){for(var u=0;u<w;u++)try{c(n[r+u])}catch(C){throw new O(29);}w&&(g.node.timestamp=Date.now());return u}});
jc(a,d,f)}var Sc,Y={},hc,pc,Uc={};
function Vc(a,b,c){try{var d=a(b)}catch(f){if(f&&f.node&&k(b)!==k(Wb(f.node)))return-54;throw f;}G[c>>2]=d.dev;G[c+4>>2]=0;G[c+8>>2]=d.ino;G[c+12>>2]=d.mode;G[c+16>>2]=d.nlink;G[c+20>>2]=d.uid;G[c+24>>2]=d.gid;G[c+28>>2]=d.rdev;G[c+32>>2]=0;J=[d.size>>>0,(K=d.size,1<=+Oa(K)?0<K?(Pa(+Qa(K/4294967296),4294967295)|0)>>>0:~~+Ra((K-+(~~K>>>0))/4294967296)>>>0:0)];G[c+40>>2]=J[0];G[c+44>>2]=J[1];G[c+48>>2]=4096;G[c+52>>2]=d.blocks;G[c+56>>2]=d.atime.getTime()/1E3|0;G[c+60>>2]=0;G[c+64>>2]=d.mtime.getTime()/
1E3|0;G[c+68>>2]=0;G[c+72>>2]=d.ctime.getTime()/1E3|0;G[c+76>>2]=0;J=[d.ino>>>0,(K=d.ino,1<=+Oa(K)?0<K?(Pa(+Qa(K/4294967296),4294967295)|0)>>>0:~~+Ra((K-+(~~K>>>0))/4294967296)>>>0:0)];G[c+80>>2]=J[0];G[c+84>>2]=J[1];return 0}var Wc=void 0;function Xc(){Wc+=4;return G[Wc-4>>2]}function Z(a){a=T[a];if(!a)throw new O(8);return a}var Yc={};
function Zc(){if(!$c){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",_:xa||"./this.program"},b;for(b in Yc)a[b]=Yc[b];var c=[];for(b in a)c.push(b+"="+a[b]);$c=c}return $c}var $c;la("GMT",L,63120,4);
function ad(){function a(g){return(g=g.toTimeString().match(/\(([A-Za-z ]+)\)$/))?g[1]:"GMT"}if(!bd){bd=!0;G[cd()>>2]=60*(new Date).getTimezoneOffset();var b=(new Date).getFullYear(),c=new Date(b,0,1);b=new Date(b,6,1);G[dd()>>2]=Number(c.getTimezoneOffset()!=b.getTimezoneOffset());var d=a(c),f=a(b);d=cb(d);f=cb(f);b.getTimezoneOffset()<c.getTimezoneOffset()?(G[ed()>>2]=d,G[ed()+4>>2]=f):(G[ed()>>2]=f,G[ed()+4>>2]=d)}}var bd,fd;
Aa?fd=function(){var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:"undefined"!==typeof dateNow?fd=dateNow:fd=function(){return performance.now()};function gd(a){for(var b=fd();fd()-b<a/1E3;);}e._usleep=gd;function $b(a,b,c,d){a||(a=this);this.parent=a;this.Sa=a.Sa;this.Wa=null;this.id=Tb++;this.name=b;this.mode=c;this.Ja={};this.Ka={};this.rdev=d}
Object.defineProperties($b.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}});sc();U=Array(4096);ic(P,"/");X("/tmp");X("/home");X("/home/web_user");
(function(){X("/dev");Jb(259,{read:function(){return 0},write:function(d,f,g,n){return n}});jc("/dev/null",259);Ib(1280,Lb);Ib(1536,Mb);jc("/dev/tty",1280);jc("/dev/tty1",1536);if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);var b=function(){crypto.getRandomValues(a);return a[0]}}else if(Aa)try{var c=require("crypto");b=function(){return c.randomBytes(1)[0]}}catch(d){}b||(b=function(){D("random_device")});Rc("random",b);Rc("urandom",b);X("/dev/shm");
X("/dev/shm/tmp")})();X("/proc");X("/proc/self");X("/proc/self/fd");ic({Sa:function(){var a=Ob("/proc/self","fd",16895,73);a.Ja={lookup:function(b,c){var d=T[+c];if(!d)throw new O(8);b={parent:null,Sa:{pb:"fake"},Ja:{readlink:function(){return d.path}}};return b.parent=b}};return a}},"/proc/self/fd");function fa(a,b){var c=Array(ka(a)+1);a=la(a,c,0,c.length);b&&(c.length=a);return c}
var jd={a:function(a,b,c,d){D("Assertion failed: "+N(a)+", at: "+[b?N(b):"unknown filename",c,d?N(d):"unknown function"])},j:function(a,b){try{a=N(a);if(b&-8)var c=-28;else{var d;(d=W(a,{Ua:!0}).node)?(a="",b&4&&(a+="r"),b&2&&(a+="w"),b&1&&(a+="x"),c=a&&Zb(d,a)?-2:0):c=-44}return c}catch(f){return"undefined"!==typeof Y&&f instanceof O||D(f),-f.La}},v:function(a,b){try{return a=N(a),ca(a,b),0}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),-c.La}},G:function(a){try{return a=N(a),nc(a),
0}catch(b){return"undefined"!==typeof Y&&b instanceof O||D(b),-b.La}},w:function(a,b){try{var c=T[a];if(!c)throw new O(8);ca(c.node,b);return 0}catch(d){return"undefined"!==typeof Y&&d instanceof O||D(d),-d.La}},H:function(a){try{var b=T[a];if(!b)throw new O(8);nc(b.node);return 0}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),-c.La}},b:function(a,b,c){Wc=c;try{var d=Z(a);switch(b){case 0:var f=Xc();return 0>f?-28:l(d.path,d.flags,0,f).fd;case 1:case 2:return 0;case 3:return d.flags;
case 4:return f=Xc(),d.flags|=f,0;case 12:return f=Xc(),Na[f+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Eb(28),-1;default:return-28}}catch(g){return"undefined"!==typeof Y&&g instanceof O||D(g),-g.La}},t:function(a,b){try{var c=Z(a);return Vc(lc,c.path,b)}catch(d){return"undefined"!==typeof Y&&d instanceof O||D(d),-d.La}},J:function(a,b,c){try{var d=T[a];if(!d)throw new O(8);if(0===(d.flags&2097155))throw new O(28);oc(d.node,c);return 0}catch(f){return"undefined"!==typeof Y&&
f instanceof O||D(f),-f.La}},F:function(a,b){try{if(0===b)return-28;if(b<ka("/")+1)return-68;la("/",L,a,b);return a}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),-c.La}},C:function(){return 0},d:function(){return 42},u:function(a,b){try{return a=N(a),Vc(mc,a,b)}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),-c.La}},x:function(a,b){try{return a=N(a),a=k(a),"/"===a[a.length-1]&&(a=a.substr(0,a.length-1)),X(a,b),0}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),
-c.La}},s:function(a,b,c,d,f,g){try{a:{g<<=12;var n=!1;if(0!==(d&16)&&0!==a%16384)var r=-28;else{if(0!==(d&32)){var w=hd(16384,b);if(!w){r=-48;break a}id(w,0,b);n=!0}else{var u=T[f];if(!u){r=-8;break a}var C=g,H=L;if(0!==(c&2)&&0===(d&2)&&2!==(u.flags&2097155))throw new O(2);if(1===(u.flags&2097155))throw new O(2);if(!u.Ka.$a)throw new O(43);var ma=u.Ka.$a(u,H,a,b,C,c,d);w=ma.Fb;n=ma.cb}Uc[w]={Cb:w,Bb:b,cb:n,fd:f,Eb:c,flags:d,offset:g};r=w}}return r}catch(na){return"undefined"!==typeof Y&&na instanceof
O||D(na),-na.La}},q:function(a,b){try{if(-1===(a|0)||0===b)var c=-28;else{var d=Uc[a];if(d&&b===d.Bb){var f=T[d.fd];if(d.Eb&2){var g=d.flags,n=d.offset,r=L.slice(a,a+b);f&&f.Ka.ab&&f.Ka.ab(f,r,n,b,g)}Uc[a]=null;d.cb&&ia(d.Cb)}c=0}return c}catch(w){return"undefined"!==typeof Y&&w instanceof O||D(w),-w.La}},y:function(a,b,c){Wc=c;try{var d=N(a),f=Xc();return l(d,b,f).fd}catch(g){return"undefined"!==typeof Y&&g instanceof O||D(g),-g.La}},B:function(a,b,c){try{var d=Z(a);return rc(d,x,b,c)}catch(f){return"undefined"!==
typeof Y&&f instanceof O||D(f),-f.La}},I:function(a,b,c){try{a=N(a);if(0>=c)var d=-28;else{var f=Vb(a),g=Math.min(c,ka(f)),n=x[b+g];la(f,L,b,c+1);x[b+g]=n;d=g}return d}catch(r){return"undefined"!==typeof Y&&r instanceof O||D(r),-r.La}},D:function(a){try{a=N(a);var b=W(a,{parent:!0}).node,c=Cb(a),d=Qb(b,c),f=dc(b,c,!0);if(f)throw new O(f);if(!b.Ja.rmdir)throw new O(63);if(d.Wa)throw new O(10);try{V.willDeletePath&&V.willDeletePath(a)}catch(g){E("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+
g.message)}b.Ja.rmdir(b,c);Yb(d);try{if(V.onDeletePath)V.onDeletePath(a)}catch(g){E("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}return 0}catch(g){return"undefined"!==typeof Y&&g instanceof O||D(g),-g.La}},e:function(a,b){try{return a=N(a),Vc(lc,a,b)}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),-c.La}},h:function(a){try{return a=N(a),ta(a),0}catch(b){return"undefined"!==typeof Y&&b instanceof O||D(b),-b.La}},m:function(a,b,c){L.copyWithin(a,b,b+c)},
c:function(a){a>>>=0;var b=L.length;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0<d%65536&&(d+=65536-d%65536);a:{try{Ua.grow(Math.min(2147483648,d)-db.byteLength+65535>>>16);eb(Ua.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},o:function(a,b){var c=0;Zc().forEach(function(d,f){var g=b+c;f=G[a+4*f>>2]=g;for(g=0;g<d.length;++g)x[f++>>0]=d.charCodeAt(g);x[f>>0]=0;c+=d.length+1});return 0},p:function(a,b){var c=
Zc();G[a>>2]=c.length;var d=0;c.forEach(function(f){d+=f.length+1});G[b>>2]=d;return 0},f:function(a){try{var b=Z(a);ea(b);return 0}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),c.La}},n:function(a,b){try{var c=Z(a);x[b>>0]=c.tty?2:R(c.mode)?3:40960===(c.mode&61440)?7:4;return 0}catch(d){return"undefined"!==typeof Y&&d instanceof O||D(d),d.La}},l:function(a,b,c,d,f){try{var g=Z(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;qc(g,a,d);J=[g.position>>>
0,(K=g.position,1<=+Oa(K)?0<K?(Pa(+Qa(K/4294967296),4294967295)|0)>>>0:~~+Ra((K-+(~~K>>>0))/4294967296)>>>0:0)];G[f>>2]=J[0];G[f+4>>2]=J[1];g.gb&&0===a&&0===d&&(g.gb=null);return 0}catch(n){return"undefined"!==typeof Y&&n instanceof O||D(n),n.La}},E:function(a){try{var b=Z(a);return b.Ka&&b.Ka.fsync?-b.Ka.fsync(b):0}catch(c){return"undefined"!==typeof Y&&c instanceof O||D(c),c.La}},i:function(a,b,c,d){try{a:{for(var f=Z(a),g=a=0;g<c;g++){var n=da(f,x,G[b+8*g>>2],G[b+(8*g+4)>>2],void 0);if(0>n){var r=
-1;break a}a+=n}r=a}G[d>>2]=r;return 0}catch(w){return"undefined"!==typeof Y&&w instanceof O||D(w),w.La}},g:function(a){var b=Date.now();G[a>>2]=b/1E3|0;G[a+4>>2]=b%1E3*1E3|0;return 0},k:function(a){ad();a=new Date(1E3*G[a>>2]);G[15768]=a.getSeconds();G[15769]=a.getMinutes();G[15770]=a.getHours();G[15771]=a.getDate();G[15772]=a.getMonth();G[15773]=a.getFullYear()-1900;G[15774]=a.getDay();var b=new Date(a.getFullYear(),0,1);G[15775]=(a.getTime()-b.getTime())/864E5|0;G[15777]=-(60*a.getTimezoneOffset());
var c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();b=b.getTimezoneOffset();a=(c!=b&&a.getTimezoneOffset()==Math.min(b,c))|0;G[15776]=a;a=G[ed()+(a?4:0)>>2];G[15778]=a;return 63072},memory:Ua,z:function(a,b){if(0===a)return Eb(28),-1;var c=G[a>>2];a=G[a+4>>2];if(0>a||999999999<a||0>c)return Eb(28),-1;0!==b&&(G[b>>2]=0,G[b+4>>2]=0);return gd(1E6*c+a/1E3)},A:function(a){switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;
case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;
case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}Eb(28);return-1},
table:I,K:function(a){var b=Date.now()/1E3|0;a&&(G[a>>2]=b);return b},r:function(a,b){if(b){var c=1E3*G[b+8>>2];c+=G[b+12>>2]/1E3}else c=Date.now();a=N(a);try{b=c;var d=W(a,{Ua:!0}).node;d.Ja.Pa(d,{timestamp:Math.max(b,c)});return 0}catch(f){a=f;if(!(a instanceof O)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error();}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}e.extraStackTrace&&(d+="\n"+e.extraStackTrace());d=zb(d);throw a+d;}Eb(a.La);return-1}}},kd=
function(){function a(f){e.asm=f.exports;mb--;e.monitorRunDependencies&&e.monitorRunDependencies(mb);0==mb&&(null!==nb&&(clearInterval(nb),nb=null),ob&&(f=ob,ob=null,f()))}function b(f){a(f.instance)}function c(f){return ub().then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){E("failed to asynchronously prepare wasm: "+g);D(g)})}var d={a:jd};mb++;e.monitorRunDependencies&&e.monitorRunDependencies(mb);if(e.instantiateWasm)try{return e.instantiateWasm(d,a)}catch(f){return E("Module.instantiateWasm callback failed with error: "+
f),!1}(function(){if(Ma||"function"!==typeof WebAssembly.instantiateStreaming||rb()||pb("file://")||"function"!==typeof fetch)return c(b);fetch(qb,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,d).then(b,function(g){E("wasm streaming compile failed: "+g);E("falling back to ArrayBuffer instantiation");c(b)})})})();return{}}();e.asm=kd;
var vb=e.___wasm_call_ctors=function(){return(vb=e.___wasm_call_ctors=e.asm.L).apply(null,arguments)},id=e._memset=function(){return(id=e._memset=e.asm.M).apply(null,arguments)};e._sqlite3_free=function(){return(e._sqlite3_free=e.asm.N).apply(null,arguments)};var Fb=e.___errno_location=function(){return(Fb=e.___errno_location=e.asm.O).apply(null,arguments)};e._sqlite3_finalize=function(){return(e._sqlite3_finalize=e.asm.P).apply(null,arguments)};
e._sqlite3_reset=function(){return(e._sqlite3_reset=e.asm.Q).apply(null,arguments)};e._sqlite3_clear_bindings=function(){return(e._sqlite3_clear_bindings=e.asm.R).apply(null,arguments)};e._sqlite3_value_blob=function(){return(e._sqlite3_value_blob=e.asm.S).apply(null,arguments)};e._sqlite3_value_text=function(){return(e._sqlite3_value_text=e.asm.T).apply(null,arguments)};e._sqlite3_value_bytes=function(){return(e._sqlite3_value_bytes=e.asm.U).apply(null,arguments)};
e._sqlite3_value_double=function(){return(e._sqlite3_value_double=e.asm.V).apply(null,arguments)};e._sqlite3_value_int=function(){return(e._sqlite3_value_int=e.asm.W).apply(null,arguments)};e._sqlite3_value_type=function(){return(e._sqlite3_value_type=e.asm.X).apply(null,arguments)};e._sqlite3_result_blob=function(){return(e._sqlite3_result_blob=e.asm.Y).apply(null,arguments)};e._sqlite3_result_double=function(){return(e._sqlite3_result_double=e.asm.Z).apply(null,arguments)};
e._sqlite3_result_error=function(){return(e._sqlite3_result_error=e.asm._).apply(null,arguments)};e._sqlite3_result_int=function(){return(e._sqlite3_result_int=e.asm.$).apply(null,arguments)};e._sqlite3_result_int64=function(){return(e._sqlite3_result_int64=e.asm.aa).apply(null,arguments)};e._sqlite3_result_null=function(){return(e._sqlite3_result_null=e.asm.ba).apply(null,arguments)};e._sqlite3_result_text=function(){return(e._sqlite3_result_text=e.asm.ca).apply(null,arguments)};
e._sqlite3_step=function(){return(e._sqlite3_step=e.asm.da).apply(null,arguments)};e._sqlite3_data_count=function(){return(e._sqlite3_data_count=e.asm.ea).apply(null,arguments)};e._sqlite3_column_blob=function(){return(e._sqlite3_column_blob=e.asm.fa).apply(null,arguments)};e._sqlite3_column_bytes=function(){return(e._sqlite3_column_bytes=e.asm.ga).apply(null,arguments)};e._sqlite3_column_double=function(){return(e._sqlite3_column_double=e.asm.ha).apply(null,arguments)};
e._sqlite3_column_text=function(){return(e._sqlite3_column_text=e.asm.ia).apply(null,arguments)};e._sqlite3_column_type=function(){return(e._sqlite3_column_type=e.asm.ja).apply(null,arguments)};e._sqlite3_column_name=function(){return(e._sqlite3_column_name=e.asm.ka).apply(null,arguments)};e._sqlite3_bind_blob=function(){return(e._sqlite3_bind_blob=e.asm.la).apply(null,arguments)};e._sqlite3_bind_double=function(){return(e._sqlite3_bind_double=e.asm.ma).apply(null,arguments)};
e._sqlite3_bind_int=function(){return(e._sqlite3_bind_int=e.asm.na).apply(null,arguments)};e._sqlite3_bind_text=function(){return(e._sqlite3_bind_text=e.asm.oa).apply(null,arguments)};e._sqlite3_bind_parameter_index=function(){return(e._sqlite3_bind_parameter_index=e.asm.pa).apply(null,arguments)};e._sqlite3_errmsg=function(){return(e._sqlite3_errmsg=e.asm.qa).apply(null,arguments)};e._sqlite3_exec=function(){return(e._sqlite3_exec=e.asm.ra).apply(null,arguments)};
e._sqlite3_prepare_v2=function(){return(e._sqlite3_prepare_v2=e.asm.sa).apply(null,arguments)};e._sqlite3_changes=function(){return(e._sqlite3_changes=e.asm.ta).apply(null,arguments)};e._sqlite3_close_v2=function(){return(e._sqlite3_close_v2=e.asm.ua).apply(null,arguments)};e._sqlite3_create_function_v2=function(){return(e._sqlite3_create_function_v2=e.asm.va).apply(null,arguments)};e._sqlite3_open=function(){return(e._sqlite3_open=e.asm.wa).apply(null,arguments)};
var $a=e._malloc=function(){return($a=e._malloc=e.asm.xa).apply(null,arguments)},ia=e._free=function(){return(ia=e._free=e.asm.ya).apply(null,arguments)};e._RegisterExtensionFunctions=function(){return(e._RegisterExtensionFunctions=e.asm.za).apply(null,arguments)};
var ed=e.__get_tzname=function(){return(ed=e.__get_tzname=e.asm.Aa).apply(null,arguments)},dd=e.__get_daylight=function(){return(dd=e.__get_daylight=e.asm.Ba).apply(null,arguments)},cd=e.__get_timezone=function(){return(cd=e.__get_timezone=e.asm.Ca).apply(null,arguments)},hd=e._memalign=function(){return(hd=e._memalign=e.asm.Da).apply(null,arguments)},ja=e.stackSave=function(){return(ja=e.stackSave=e.asm.Ea).apply(null,arguments)},t=e.stackAlloc=function(){return(t=e.stackAlloc=e.asm.Fa).apply(null,
arguments)},qa=e.stackRestore=function(){return(qa=e.stackRestore=e.asm.Ga).apply(null,arguments)};e.dynCall_vi=function(){return(e.dynCall_vi=e.asm.Ha).apply(null,arguments)};e.asm=kd;e.cwrap=function(a,b,c,d){c=c||[];var f=c.every(function(g){return"number"===g});return"string"!==b&&f&&!d?Wa(a):function(){return Xa(a,b,c,arguments)}};e.stackSave=ja;e.stackRestore=qa;e.stackAlloc=t;var ld;ob=function md(){ld||nd();ld||(ob=md)};
function nd(){function a(){if(!ld&&(ld=!0,e.calledRun=!0,!Va)){e.noFSInit||tc||(tc=!0,sc(),e.stdin=e.stdin,e.stdout=e.stdout,e.stderr=e.stderr,e.stdin?Rc("stdin",e.stdin):kc("/dev/tty","/dev/stdin"),e.stdout?Rc("stdout",null,e.stdout):kc("/dev/tty","/dev/stdout"),e.stderr?Rc("stderr",null,e.stderr):kc("/dev/tty1","/dev/stderr"),l("/dev/stdin","r"),l("/dev/stdout","w"),l("/dev/stderr","w"));gb(ib);Ub=!1;gb(jb);if(e.onRuntimeInitialized)e.onRuntimeInitialized();if(e.postRun)for("function"==typeof e.postRun&&
(e.postRun=[e.postRun]);e.postRun.length;){var b=e.postRun.shift();kb.unshift(b)}gb(kb)}}if(!(0<mb)){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)lb();gb(hb);0<mb||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1);a()},1)):a())}}e.run=nd;if(e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);0<e.preInit.length;)e.preInit.pop()();noExitRuntime=!0;nd();
// The shell-pre.js and emcc-generated code goes above
@ -206,4 +200,3 @@ else if (typeof define === 'function' && define['amd']) {
else if (typeof exports === 'object'){
exports["Module"] = initSqlJs;
}

Binary file not shown.