Compare commits

..

19 Commits

Author SHA1 Message Date
Kyle Spearrin
3b7454961d New Crowdin translations (#663)
* New translations AppResources.resx (Bulgarian)

* New translations AppResources.resx (Hungarian)

* New translations AppResources.resx (Turkish)

* New translations AppResources.resx (Spanish)

* New translations AppResources.resx (Russian)

* New translations AppResources.resx (Romanian)

* New translations AppResources.resx (Portuguese, Brazilian)

* New translations AppResources.resx (Portuguese)

* New translations AppResources.resx (Polish)

* New translations copy.resx (Persian)

* New translations copy.resx (Persian)

* New translations AppResources.resx (Persian)

* New translations AppResources.resx (Japanese)

* New translations AppResources.resx (Italian)

* New translations AppResources.resx (Hebrew)

* New translations AppResources.resx (Catalan)

* New translations AppResources.resx (German)

* New translations AppResources.resx (French)

* New translations AppResources.resx (Finnish)

* New translations AppResources.resx (Estonian)

* New translations AppResources.resx (English, United Kingdom)

* New translations copy.resx (Dutch)

* New translations copy.resx (Dutch)

* New translations AppResources.resx (Dutch)

* New translations AppResources.resx (Danish)

* New translations AppResources.resx (Czech)

* New translations AppResources.resx (Croatian)

* New translations AppResources.resx (Chinese Traditional)

* New translations AppResources.resx (Chinese Simplified)

* New translations AppResources.resx (Ukrainian)
2019-12-03 11:35:09 -05:00
Kyle Spearrin
88009e1a63 bump versions 2019-12-03 11:11:30 -05:00
Kyle Spearrin
0afca29b0c still load list if there are any ciphers 2019-11-22 09:51:30 -05:00
Kyle Spearrin
46a75a2944 Revert "try new http client handler for icons"
This reverts commit c099f82752.
2019-11-22 08:24:23 -05:00
Kyle Spearrin
c099f82752 try new http client handler for icons 2019-11-20 17:38:05 -05:00
Kyle Spearrin
1da94bd9c8 completed status on track release 2019-11-20 10:39:15 -05:00
Kyle Spearrin
96ce8165e9 upgrade to v3 publisher apis 2019-11-20 09:57:40 -05:00
Kyle Spearrin
f9b617339d try builds with VS 2019 preview 2019-11-20 08:25:52 -05:00
Kyle Spearrin
58084810f3 don't auto-capitalize password field when viewed 2019-11-20 08:24:08 -05:00
Kyle Spearrin
429e62e6b5 Don't index a "never" uri match. 2019-11-19 07:47:01 -05:00
Kyle Spearrin
b0b7f2afdf Merge branch 'master' of github.com:bitwarden/mobile 2019-11-15 08:55:31 -05:00
Kyle Spearrin
55f160d125 Show exception message from Api errors 2019-11-15 08:55:22 -05:00
Wasim Malik
f6352f5392 Updated Incorrect Check Condition (#648)
Issue is fixed No 361
Now tested on android device extra comma is not appended anymore
2019-11-12 16:28:12 -05:00
Kyle Spearrin
ac7e90c0aa blacklist com.android.settings from autofill 2019-11-08 11:57:07 -05:00
Kyle Spearrin
88fccfd6cd try setting http version 1.0 2019-11-05 09:14:55 -05:00
Kyle Spearrin
5fdf8e6045 set fingerprint lock prop on login 2019-11-05 09:03:48 -05:00
Kyle Spearrin
d9907cdbeb style fixes for xamarin forms 4 2019-10-30 09:30:45 -04:00
Kyle Spearrin
d308f1ca3b update libs and to xamarin forms 4 2019-10-30 08:27:40 -04:00
Kyle Spearrin
0cdc138ba3 dont immediatly prompt biometric when locked 2019-10-30 08:08:15 -04:00
54 changed files with 42160 additions and 42128 deletions

View File

@@ -1,5 +1,5 @@
image:
- Visual Studio 2019
- Visual Studio 2019 Preview
- Ubuntu1804
branches:

View File

@@ -85,16 +85,16 @@
<Version>1.8.5</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.1.0</Version>
<Version>1.3.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Firebase.Messaging">
<Version>60.1142.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.1" />
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat" Version="28.0.0.1" />
<PackageReference Include="Xamarin.Android.Support.v4" Version="28.0.0.1" />
<PackageReference Include="Xamarin.Android.Support.v7.CardView" Version="28.0.0.1" />
<PackageReference Include="Xamarin.Android.Support.v7.MediaRouter" Version="28.0.0.1" />
<PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v4" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v7.CardView" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.v7.MediaRouter" Version="28.0.0.3" />
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
<Version>60.1142.1</Version>
</PackageReference>

View File

@@ -67,6 +67,7 @@ namespace Bit.Droid.Autofill
public static HashSet<string> BlacklistedUris = new HashSet<string>
{
"androidapp://android",
"androidapp://com.android.settings",
"androidapp://com.x8bit.bitwarden",
"androidapp://com.oneplus.applocker",
};

View File

@@ -3,7 +3,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="1"
android:versionName="2.2.6"
android:versionName="2.2.7"
package="com.x8bit.bitwarden">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="29" />

View File

@@ -3546,9 +3546,9 @@ namespace Bit.Droid
global::Xamarin.Forms.Platform.Android.Resource.Id.listMode = global::Bit.Droid.Resource.Id.listMode;
global::Xamarin.Forms.Platform.Android.Resource.Id.list_item = global::Bit.Droid.Resource.Id.list_item;
global::Xamarin.Forms.Platform.Android.Resource.Id.main_appbar = global::Bit.Droid.Resource.Id.main_appbar;
global::Xamarin.Forms.Platform.Android.Resource.Id.main_scrollview = global::Bit.Droid.Resource.Id.main_scrollview;
global::Xamarin.Forms.Platform.Android.Resource.Id.main_tablayout = global::Bit.Droid.Resource.Id.main_tablayout;
global::Xamarin.Forms.Platform.Android.Resource.Id.main_toolbar = global::Bit.Droid.Resource.Id.main_toolbar;
global::Xamarin.Forms.Platform.Android.Resource.Id.main_viewpager = global::Bit.Droid.Resource.Id.main_viewpager;
global::Xamarin.Forms.Platform.Android.Resource.Id.masked = global::Bit.Droid.Resource.Id.masked;
global::Xamarin.Forms.Platform.Android.Resource.Id.media_actions = global::Bit.Droid.Resource.Id.media_actions;
global::Xamarin.Forms.Platform.Android.Resource.Id.message = global::Bit.Droid.Resource.Id.message;
@@ -3597,7 +3597,6 @@ namespace Bit.Droid
global::Xamarin.Forms.Platform.Android.Resource.Id.select_dialog_listview = global::Bit.Droid.Resource.Id.select_dialog_listview;
global::Xamarin.Forms.Platform.Android.Resource.Id.selected = global::Bit.Droid.Resource.Id.selected;
global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_appbar = global::Bit.Droid.Resource.Id.shellcontent_appbar;
global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_scrollview = global::Bit.Droid.Resource.Id.shellcontent_scrollview;
global::Xamarin.Forms.Platform.Android.Resource.Id.shellcontent_toolbar = global::Bit.Droid.Resource.Id.shellcontent_toolbar;
global::Xamarin.Forms.Platform.Android.Resource.Id.shortcut = global::Bit.Droid.Resource.Id.shortcut;
global::Xamarin.Forms.Platform.Android.Resource.Id.showCustom = global::Bit.Droid.Resource.Id.showCustom;
@@ -4291,6 +4290,7 @@ namespace Bit.Droid
global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense = global::Bit.Droid.Resource.Style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense;
global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_MaterialComponents_Toolbar = global::Bit.Droid.Resource.Style.Widget_MaterialComponents_Toolbar;
global::Xamarin.Forms.Platform.Android.Resource.Style.Widget_Support_CoordinatorLayout = global::Bit.Droid.Resource.Style.Widget_Support_CoordinatorLayout;
global::Xamarin.Forms.Platform.Android.Resource.Style.collectionViewStyle = global::Bit.Droid.Resource.Style.collectionViewStyle;
global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar = global::Bit.Droid.Resource.Styleable.ActionBar;
global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_background = global::Bit.Droid.Resource.Styleable.ActionBar_background;
global::Xamarin.Forms.Platform.Android.Resource.Styleable.ActionBar_backgroundSplit = global::Bit.Droid.Resource.Styleable.ActionBar_backgroundSplit;
@@ -9489,13 +9489,13 @@ namespace Bit.Droid
public const int main_appbar = 2131230860;
// aapt resource value: 0x7F08008D
public const int main_scrollview = 2131230861;
public const int main_tablayout = 2131230861;
// aapt resource value: 0x7F08008E
public const int main_tablayout = 2131230862;
public const int main_toolbar = 2131230862;
// aapt resource value: 0x7F08008F
public const int main_toolbar = 2131230863;
public const int main_viewpager = 2131230863;
// aapt resource value: 0x7F080090
public const int masked = 2131230864;
@@ -9783,214 +9783,211 @@ namespace Bit.Droid
public const int shellcontent_appbar = 2131230957;
// aapt resource value: 0x7F0800EE
public const int shellcontent_scrollview = 2131230958;
// aapt resource value: 0x7F0800EF
public const int shellcontent_toolbar = 2131230959;
public const int shellcontent_toolbar = 2131230958;
// aapt resource value: 0x7F08000D
public const int SHIFT = 2131230733;
// aapt resource value: 0x7F0800EF
public const int shortcut = 2131230959;
// aapt resource value: 0x7F0800F0
public const int shortcut = 2131230960;
public const int showCustom = 2131230960;
// aapt resource value: 0x7F0800F1
public const int showCustom = 2131230961;
public const int showHome = 2131230961;
// aapt resource value: 0x7F0800F2
public const int showHome = 2131230962;
public const int showTitle = 2131230962;
// aapt resource value: 0x7F0800F3
public const int showTitle = 2131230963;
public const int sliding_tabs = 2131230963;
// aapt resource value: 0x7F0800F4
public const int sliding_tabs = 2131230964;
public const int smallLabel = 2131230964;
// aapt resource value: 0x7F0800F5
public const int smallLabel = 2131230965;
public const int snackbar_action = 2131230965;
// aapt resource value: 0x7F0800F6
public const int snackbar_action = 2131230966;
public const int snackbar_text = 2131230966;
// aapt resource value: 0x7F0800F7
public const int snackbar_text = 2131230967;
public const int snap = 2131230967;
// aapt resource value: 0x7F0800F8
public const int snap = 2131230968;
public const int snapMargins = 2131230968;
// aapt resource value: 0x7F0800F9
public const int snapMargins = 2131230969;
public const int spacer = 2131230969;
// aapt resource value: 0x7F0800FA
public const int spacer = 2131230970;
public const int split_action_bar = 2131230970;
// aapt resource value: 0x7F0800FB
public const int split_action_bar = 2131230971;
public const int src_atop = 2131230971;
// aapt resource value: 0x7F0800FC
public const int src_atop = 2131230972;
public const int src_in = 2131230972;
// aapt resource value: 0x7F0800FD
public const int src_in = 2131230973;
public const int src_over = 2131230973;
// aapt resource value: 0x7F0800FE
public const int src_over = 2131230974;
public const int standard = 2131230974;
// aapt resource value: 0x7F0800FF
public const int standard = 2131230975;
public const int start = 2131230975;
// aapt resource value: 0x7F080100
public const int start = 2131230976;
public const int status_bar_latest_event_content = 2131230976;
// aapt resource value: 0x7F080101
public const int status_bar_latest_event_content = 2131230977;
public const int stretch = 2131230977;
// aapt resource value: 0x7F080102
public const int stretch = 2131230978;
public const int submenuarrow = 2131230978;
// aapt resource value: 0x7F080103
public const int submenuarrow = 2131230979;
// aapt resource value: 0x7F080104
public const int submit_area = 2131230980;
public const int submit_area = 2131230979;
// aapt resource value: 0x7F08000E
public const int SYM = 2131230734;
// aapt resource value: 0x7F080104
public const int tabMode = 2131230980;
// aapt resource value: 0x7F080105
public const int tabMode = 2131230981;
public const int tag_transition_group = 2131230981;
// aapt resource value: 0x7F080106
public const int tag_transition_group = 2131230982;
public const int tag_unhandled_key_event_manager = 2131230982;
// aapt resource value: 0x7F080107
public const int tag_unhandled_key_event_manager = 2131230983;
public const int tag_unhandled_key_listeners = 2131230983;
// aapt resource value: 0x7F080108
public const int tag_unhandled_key_listeners = 2131230984;
public const int text = 2131230984;
// aapt resource value: 0x7F080109
public const int text = 2131230985;
public const int text1 = 2131230985;
// aapt resource value: 0x7F08010A
public const int text1 = 2131230986;
// aapt resource value: 0x7F08010B
public const int text2 = 2131230987;
// aapt resource value: 0x7F080111
public const int textinput_counter = 2131230993;
// aapt resource value: 0x7F080112
public const int textinput_error = 2131230994;
// aapt resource value: 0x7F080113
public const int textinput_helper_text = 2131230995;
// aapt resource value: 0x7F08010C
public const int textSpacerNoButtons = 2131230988;
// aapt resource value: 0x7F08010D
public const int textSpacerNoTitle = 2131230989;
// aapt resource value: 0x7F08010E
public const int textStart = 2131230990;
// aapt resource value: 0x7F08010F
public const int text_headline = 2131230991;
public const int text2 = 2131230986;
// aapt resource value: 0x7F080110
public const int text_input_password_toggle = 2131230992;
public const int textinput_counter = 2131230992;
// aapt resource value: 0x7F080111
public const int textinput_error = 2131230993;
// aapt resource value: 0x7F080112
public const int textinput_helper_text = 2131230994;
// aapt resource value: 0x7F08010B
public const int textSpacerNoButtons = 2131230987;
// aapt resource value: 0x7F08010C
public const int textSpacerNoTitle = 2131230988;
// aapt resource value: 0x7F08010D
public const int textStart = 2131230989;
// aapt resource value: 0x7F08010E
public const int text_headline = 2131230990;
// aapt resource value: 0x7F08010F
public const int text_input_password_toggle = 2131230991;
// aapt resource value: 0x7F080113
public const int time = 2131230995;
// aapt resource value: 0x7F080114
public const int time = 2131230996;
public const int title = 2131230996;
// aapt resource value: 0x7F080115
public const int title = 2131230997;
public const int titleDividerNoCustom = 2131230997;
// aapt resource value: 0x7F080116
public const int titleDividerNoCustom = 2131230998;
public const int title_template = 2131230998;
// aapt resource value: 0x7F080117
public const int title_template = 2131230999;
public const int toolbar = 2131230999;
// aapt resource value: 0x7F080118
public const int toolbar = 2131231000;
public const int top = 2131231000;
// aapt resource value: 0x7F080119
public const int top = 2131231001;
public const int topPanel = 2131231001;
// aapt resource value: 0x7F08011A
public const int topPanel = 2131231002;
public const int touch_outside = 2131231002;
// aapt resource value: 0x7F08011B
public const int touch_outside = 2131231003;
public const int transition_current_scene = 2131231003;
// aapt resource value: 0x7F08011C
public const int transition_current_scene = 2131231004;
public const int transition_layout_save = 2131231004;
// aapt resource value: 0x7F08011D
public const int transition_layout_save = 2131231005;
public const int transition_position = 2131231005;
// aapt resource value: 0x7F08011E
public const int transition_position = 2131231006;
public const int transition_scene_layoutid_cache = 2131231006;
// aapt resource value: 0x7F08011F
public const int transition_scene_layoutid_cache = 2131231007;
public const int transition_transform = 2131231007;
// aapt resource value: 0x7F080120
public const int transition_transform = 2131231008;
public const int uniform = 2131231008;
// aapt resource value: 0x7F080121
public const int uniform = 2131231009;
public const int unlabeled = 2131231009;
// aapt resource value: 0x7F080122
public const int unlabeled = 2131231010;
public const int up = 2131231010;
// aapt resource value: 0x7F080123
public const int up = 2131231011;
public const int useLogo = 2131231011;
// aapt resource value: 0x7F080124
public const int useLogo = 2131231012;
public const int view_header = 2131231012;
// aapt resource value: 0x7F080125
public const int view_header = 2131231013;
public const int view_offset_helper = 2131231013;
// aapt resource value: 0x7F080126
public const int view_offset_helper = 2131231014;
public const int visible = 2131231014;
// aapt resource value: 0x7F080127
public const int visible = 2131231015;
public const int volume_item_container = 2131231015;
// aapt resource value: 0x7F080128
public const int volume_item_container = 2131231016;
public const int web_update_details = 2131231016;
// aapt resource value: 0x7F080129
public const int web_update_details = 2131231017;
public const int wide = 2131231017;
// aapt resource value: 0x7F08012A
public const int wide = 2131231018;
// aapt resource value: 0x7F08012B
public const int withText = 2131231019;
// aapt resource value: 0x7F08012D
public const int wrapper_attachments = 2131231021;
// aapt resource value: 0x7F08012E
public const int wrapper_feedback = 2131231022;
// aapt resource value: 0x7F08012F
public const int wrapper_feedback_scroll = 2131231023;
// aapt resource value: 0x7F080130
public const int wrapper_messages = 2131231024;
// aapt resource value: 0x7F080131
public const int wrapper_messages_buttons = 2131231025;
public const int withText = 2131231018;
// aapt resource value: 0x7F08012C
public const int wrap_content = 2131231020;
public const int wrapper_attachments = 2131231020;
// aapt resource value: 0x7F08012D
public const int wrapper_feedback = 2131231021;
// aapt resource value: 0x7F08012E
public const int wrapper_feedback_scroll = 2131231022;
// aapt resource value: 0x7F08012F
public const int wrapper_messages = 2131231023;
// aapt resource value: 0x7F080130
public const int wrapper_messages_buttons = 2131231024;
// aapt resource value: 0x7F08012B
public const int wrap_content = 2131231019;
static Id()
{
@@ -11633,6 +11630,9 @@ namespace Bit.Droid
// aapt resource value: 0x7F0E00C8
public const int CardView_Light = 2131624136;
// aapt resource value: 0x7F0E0210
public const int collectionViewStyle = 2131624464;
// aapt resource value: 0x7F0E00C9
public const int DarkTheme = 2131624137;

View File

@@ -16,9 +16,9 @@
<PackageReference Include="HockeySDK.Xamarin" Version="5.2.0" />
<PackageReference Include="Plugin.Fingerprint" Version="1.4.9" />
<PackageReference Include="Refractored.FloatingActionButtonForms" Version="2.1.0" />
<PackageReference Include="Xamarin.Essentials" Version="1.1.0" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.11.982" />
<PackageReference Include="Xamarin.Forms" Version="3.6.0.709228" />
<PackageReference Include="Xamarin.Forms" Version="4.3.0.947036" />
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.1.47" />
</ItemGroup>

View File

@@ -396,6 +396,11 @@ namespace Bit.App
autoPromptFingerprint = false;
}
}
else if(autoPromptFingerprint && Device.RuntimePlatform == Device.Android &&
_deviceActionService.UseNativeBiometric())
{
autoPromptFingerprint = false;
}
PreviousPageInfo lastPageBeforeLock = null;
if(Current.MainPage is TabbedPage tabbedPage && tabbedPage.Navigation.ModalStack.Count > 0)
{

View File

@@ -563,7 +563,15 @@
IsVisible="{Binding IsHiddenType}"
IsPassword="{Binding ShowHiddenValue, Converter={StaticResource inverseBool}}"
IsSpellCheckEnabled="False"
IsTextPredictionEnabled="False" />
IsTextPredictionEnabled="False">
<Entry.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>None</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Entry.Keyboard>
</controls:MonoEntry>
<Switch
IsToggled="{Binding BooleanValue}"
Grid.Row="0"

View File

@@ -73,6 +73,8 @@ namespace Bit.App.Pages
_folderPicker.ItemDisplayBinding = new Binding("Key");
_ownershipPicker.ItemDisplayBinding = new Binding("Key");
_loginPasswordEntry.Keyboard = Keyboard.Create(KeyboardFlags.None);
_nameEntry.ReturnType = ReturnType.Next;
_nameEntry.ReturnCommand = new Command(() =>
{

View File

@@ -59,7 +59,7 @@
</controls:FaLabel>
<Label Text="{Binding Name, Mode=OneWay}"
LineBreakMode="TailTruncation"
HorizontalOptions="StartAndExpand"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
StyleClass="list-title"/>
<Label Text="{Binding ItemCount, Mode=OneWay}"

View File

@@ -7,6 +7,7 @@ using Bit.Core.Abstractions;
using Bit.Core.Enums;
using Bit.Core.Utilities;
using System;
using System.Linq;
using System.Threading.Tasks;
using Xamarin.Forms;
@@ -19,6 +20,7 @@ namespace Bit.App.Pages
private readonly IPushNotificationService _pushNotificationService;
private readonly IStorageService _storageService;
private readonly ILockService _lockService;
private readonly ICipherService _cipherService;
private readonly IDeviceActionService _deviceActionService;
private readonly GroupingsPageViewModel _vm;
private readonly string _pageName;
@@ -37,6 +39,7 @@ namespace Bit.App.Pages
_pushNotificationService = ServiceContainer.Resolve<IPushNotificationService>("pushNotificationService");
_storageService = ServiceContainer.Resolve<IStorageService>("storageService");
_lockService = ServiceContainer.Resolve<ILockService>("lockService");
_cipherService = ServiceContainer.Resolve<ICipherService>("cipherService");
_deviceActionService = ServiceContainer.Resolve<IDeviceActionService>("deviceActionService");
_vm = BindingContext as GroupingsPageViewModel;
_vm.Page = this;
@@ -97,7 +100,7 @@ namespace Bit.App.Pages
var migratedFromV1 = await _storageService.GetAsync<bool?>(Constants.MigratedFromV1);
await LoadOnAppearedAsync(_mainLayout, false, async () =>
{
if(!_syncService.SyncInProgress)
if(!_syncService.SyncInProgress || (await _cipherService.GetAllAsync()).Any())
{
try
{

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -112,7 +112,7 @@
Class="list-icon-platform"
ApplyToDerivedTypes="True">
<Setter Property="FontSize"
Value="10" />
Value="23" />
</Style>
<Style TargetType="Button"
ApplyToDerivedTypes="True"
@@ -139,6 +139,8 @@
Class="box-row-button-platform">
<Setter Property="WidthRequest"
Value="37" />
<Setter Property="HeightRequest"
Value="45" />
<Setter Property="FontSize"
Value="25" />
</Style>

View File

@@ -126,9 +126,9 @@
<Style TargetType="Label"
Class="list-header">
<Setter Property="HorizontalOptions"
Value="StartAndExpand" />
Value="FillAndExpand" />
<Setter Property="VerticalOptions"
Value="CenterAndExpand" />
Value="FillAndExpand" />
<Setter Property="VerticalTextAlignment"
Value="Center" />
</Style>

View File

@@ -48,7 +48,7 @@ namespace Bit.Core.Models.View
_subTitle = Brand;
if(Number != null && Number.Length >= 4)
{
if(string.IsNullOrWhiteSpace(_subTitle))
if(!string.IsNullOrWhiteSpace(_subTitle))
{
_subTitle += ", ";
}

View File

@@ -85,6 +85,7 @@ namespace Bit.Core.Services
{
var requestMessage = new HttpRequestMessage
{
Version = new Version(1, 0),
RequestUri = new Uri(string.Concat(IdentityBaseUrl, "/connect/token")),
Method = HttpMethod.Post,
Content = new FormUrlEncodedContent(request.ToIdentityToken(_platformUtilsService.IdentityClientId))
@@ -96,9 +97,9 @@ namespace Bit.Core.Services
{
response = await _httpClient.SendAsync(requestMessage);
}
catch
catch (Exception e)
{
throw new ApiException(HandleWebError());
throw new ApiException(HandleWebError(e));
}
JObject responseJObject = null;
if(IsJsonResponse(response))
@@ -305,6 +306,7 @@ namespace Bit.Core.Services
{
using(var requestMessage = new HttpRequestMessage())
{
requestMessage.Version = new Version(1, 0);
requestMessage.Method = HttpMethod.Post;
requestMessage.RequestUri = new Uri(string.Concat(EventsBaseUrl, "/collect"));
var authHeader = await GetActiveBearerTokenAsync();
@@ -316,9 +318,9 @@ namespace Bit.Core.Services
{
response = await _httpClient.SendAsync(requestMessage);
}
catch
catch (Exception e)
{
throw new ApiException(HandleWebError());
throw new ApiException(HandleWebError(e));
}
if(!response.IsSuccessStatusCode)
{
@@ -358,6 +360,7 @@ namespace Bit.Core.Services
{
using(var requestMessage = new HttpRequestMessage())
{
requestMessage.Version = new Version(1, 0);
requestMessage.Method = method;
requestMessage.RequestUri = new Uri(string.Concat(ApiBaseUrl, path));
if(body != null)
@@ -394,9 +397,9 @@ namespace Bit.Core.Services
{
response = await _httpClient.SendAsync(requestMessage);
}
catch
catch (Exception e)
{
throw new ApiException(HandleWebError());
throw new ApiException(HandleWebError(e));
}
if(hasResponse && response.IsSuccessStatusCode)
{
@@ -423,6 +426,7 @@ namespace Bit.Core.Services
var decodedToken = _tokenService.DecodeToken();
var requestMessage = new HttpRequestMessage
{
Version = new Version(1, 0),
RequestUri = new Uri(string.Concat(IdentityBaseUrl, "/connect/token")),
Method = HttpMethod.Post,
Content = new FormUrlEncodedContent(new Dictionary<string, string>
@@ -439,9 +443,9 @@ namespace Bit.Core.Services
{
response = await _httpClient.SendAsync(requestMessage);
}
catch
catch (Exception e)
{
throw new ApiException(HandleWebError());
throw new ApiException(HandleWebError(e));
}
if(response.IsSuccessStatusCode)
{
@@ -457,12 +461,12 @@ namespace Bit.Core.Services
}
}
private ErrorResponse HandleWebError()
private ErrorResponse HandleWebError(Exception e)
{
return new ErrorResponse
{
StatusCode = HttpStatusCode.BadGateway,
Message = "There is a problem connecting to the server."
Message = "Exception message: " + e.Message
};
}

View File

@@ -19,6 +19,7 @@ namespace Bit.Core.Services
private readonly II18nService _i18nService;
private readonly IPlatformUtilsService _platformUtilsService;
private readonly IMessagingService _messagingService;
private readonly ILockService _lockService;
private readonly bool _setCryptoKeys;
private SymmetricCryptoKey _key;
@@ -34,6 +35,7 @@ namespace Bit.Core.Services
II18nService i18nService,
IPlatformUtilsService platformUtilsService,
IMessagingService messagingService,
ILockService lockService,
bool setCryptoKeys = true)
{
_cryptoService = cryptoService;
@@ -44,6 +46,7 @@ namespace Bit.Core.Services
_i18nService = i18nService;
_platformUtilsService = platformUtilsService;
_messagingService = messagingService;
_lockService = lockService;
_setCryptoKeys = setCryptoKeys;
TwoFactorProviders = new Dictionary<TwoFactorProviderType, TwoFactorProvider>();
@@ -312,6 +315,7 @@ namespace Bit.Core.Services
await _cryptoService.SetEncPrivateKeyAsync(tokenResponse.PrivateKey);
}
_lockService.FingerprintLocked = false;
_messagingService.Send("loggedIn");
return result;
}

View File

@@ -57,7 +57,7 @@ namespace Bit.Core.Utilities
cryptoFunctionService);
var totpService = new TotpService(storageService, cryptoFunctionService);
var authService = new AuthService(cryptoService, apiService, userService, tokenService, appIdService,
i18nService, platformUtilsService, messagingService);
i18nService, platformUtilsService, messagingService, lockService);
// TODO: export service
var auditService = new AuditService(cryptoFunctionService, apiService);
var environmentService = new EnvironmentService(apiService, storageService);

View File

@@ -11,9 +11,9 @@
<key>CFBundleIdentifier</key>
<string>com.8bit.bitwarden.autofill</string>
<key>CFBundleShortVersionString</key>
<string>2.2.6</string>
<string>2.2.7</string>
<key>CFBundleVersion</key>
<string>59</string>
<string>61</string>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>

View File

@@ -70,7 +70,7 @@ namespace Bit.iOS.Core.Utilities
{
return null;
}
var uri = cipher.Login.Uris.FirstOrDefault()?.Uri;
var uri = cipher.Login.Uris.FirstOrDefault(u => u.Match != Bit.Core.Enums.UriMatchType.Never)?.Uri;
if(string.IsNullOrWhiteSpace(uri))
{
return null;

View File

@@ -11,7 +11,7 @@
<key>CFBundleIdentifier</key>
<string>com.8bit.bitwarden.find-login-action-extension</string>
<key>CFBundleShortVersionString</key>
<string>2.2.6</string>
<string>2.2.7</string>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
@@ -104,6 +104,6 @@
<string>com.apple.ui-services</string>
</dict>
<key>CFBundleVersion</key>
<string>60</string>
<string>61</string>
</dict>
</plist>

View File

@@ -11,9 +11,9 @@
<key>CFBundleIdentifier</key>
<string>com.8bit.bitwarden</string>
<key>CFBundleShortVersionString</key>
<string>2.2.6</string>
<string>2.2.7</string>
<key>CFBundleVersion</key>
<string>60</string>
<string>61</string>
<key>CFBundleIconName</key>
<string>AppIcon</string>
<key>CFBundleURLTypes</key>

View File

@@ -168,7 +168,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Essentials">
<Version>1.1.0</Version>
<Version>1.3.1</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />

View File

@@ -1,158 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Name" xml:space="preserve">
<value>مدیر گذرواژه Bitwarden</value>
<comment>Max 30 characters</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Bitwarden ساده ترین و امن ترین راه گردآوری تمام داده های ورودی و پسوردها است در حالی که به راحتی آنها را بین تمامی دستگاه ها همگام میکند.
سرقت پسورد یک مشکل جدی است. وبسایت ها و اپلیکیشن هایی که شما از آنها استفاده میکنید هر روز تحت حملات قرار دارند. نقص های امنیتی رخ میدهند و پسوردها به سرقت میروند. زمانی که شما مجدداً از همان پسورد برای تمام وبسایت ها و اپلیکیشن ها استفاده میکنید هکرها می‌توانند به راحتی به ایمیل، حساب بانکی، و سایر حسابهای کاربریتان دسترسی داشته باشند.
متخصصان امنیتی توصیه میکنند که برای هر حساب کاربری که ایجاد میکنید از پسوردهای متفاوت و تصادفی تولید شده استفاده کنید. اما چطور تمامی این پسورها را مدیریت میکنید؟ بیت واردن ساختن، نگهداری، ودسترسی به پسوردهایتان را آسان میکند.
Bitwarden تمامی داده های ورودی شما را در یک گاو صندوق رمزنگاری شده نگهداری میکند که قابل همگام سازی توسط تمامی دستگاه های شماست. از آنجا که این داده ها هر زمان قبل از ترک دستگاهتان کاملا رمزنگاری میشود، فقط شما به اطلاعاتتان دسترسی دارید. حتی اگر تیم ما در بیت واردن هم بخواهند نمیتوانند اطلاعات شما را مشاهده کنند. داده های شما توسط رمزگذاری AES-256 بیتی، هَش خرد شده، و PBKDF2SHA-256 رمزنگاری شده است.
Bitwarden ۱۰۰٪ یک برنامه متن باز است. کد منبع بیت واردن در GitHub میزبانی میشود و هر کس آزاد است برای بررسی، تفتیش و کمک به کد دسترسی داشته باشد.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="Keywords" xml:space="preserve">
<value>بیت واردن، 8bit، رمز عبور، مدیر رمز عبور رایگان، مدیر رمز عبور، مدیر ورود به سیستم</value>
<comment>Max 100 characters</comment>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>مدیریت تمام اطلاعات ورود و رمزهای عبورتان از یک گاوصندوق امن</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>به صورت خودکار کلمات عبور قوی، تصادفی و امن ایجاد کنید</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>گاوصندوق خود را با اثر انگشت، کد پین یا رمز عبور اصلی محافظت کنید</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>ورود خودکار از سافاری، کروم، و صدها برنامه دیگر</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>همگام سازی و دسترسی به گاوصندوق خود را از دستگاه های مختلف</value>
</data>
</root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Name" xml:space="preserve">
<value>مدیر گذرواژه Bitwarden</value>
<comment>Max 30 characters</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Bitwarden ساده ترین و امن ترین راه گردآوری تمام داده های ورودی و پسوردها است در حالی که به راحتی آنها را بین تمامی دستگاه ها همگام میکند.
سرقت پسورد یک مشکل جدی است. وبسایت ها و اپلیکیشن هایی که شما از آنها استفاده میکنید هر روز تحت حملات قرار دارند. نقص های امنیتی رخ میدهند و پسوردها به سرقت میروند. زمانی که شما مجدداً از همان پسورد برای تمام وبسایت ها و اپلیکیشن ها استفاده میکنید هکرها می‌توانند به راحتی به ایمیل، حساب بانکی، و سایر حسابهای کاربریتان دسترسی داشته باشند.
متخصصان امنیتی توصیه میکنند که برای هر حساب کاربری که ایجاد میکنید از پسوردهای متفاوت و تصادفی تولید شده استفاده کنید. اما چطور تمامی این پسورها را مدیریت میکنید؟ بیت واردن ساختن، نگهداری، ودسترسی به پسوردهایتان را آسان میکند.
Bitwarden تمامی داده های ورودی شما را در یک گاو صندوق رمزنگاری شده نگهداری میکند که قابل همگام سازی توسط تمامی دستگاه های شماست. از آنجا که این داده ها هر زمان قبل از ترک دستگاهتان کاملا رمزنگاری میشود، فقط شما به اطلاعاتتان دسترسی دارید. حتی اگر تیم ما در بیت واردن هم بخواهند نمیتوانند اطلاعات شما را مشاهده کنند. داده های شما توسط رمزگذاری AES-256 بیتی، هَش خرد شده، و PBKDF2SHA-256 رمزنگاری شده است.
Bitwarden ۱۰۰٪ یک برنامه متن باز است. کد منبع بیت واردن در GitHub میزبانی میشود و هر کس آزاد است برای بررسی، تفتیش و کمک به کد دسترسی داشته باشد.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="Keywords" xml:space="preserve">
<value>بیت واردن، 8bit، رمز عبور، مدیر رمز عبور رایگان، مدیر رمز عبور، مدیر ورود به سیستم</value>
<comment>Max 100 characters</comment>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>مدیریت تمام اطلاعات ورود و رمزهای عبورتان از یک گاوصندوق امن</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>به صورت خودکار کلمات عبور قوی، تصادفی و امن ایجاد کنید</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>گاوصندوق خود را با اثر انگشت، کد پین یا رمز عبور اصلی محافظت کنید</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>ورود خودکار از سافاری، کروم، و صدها برنامه دیگر</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>همگام سازی و دسترسی به گاوصندوق خود را از دستگاه های مختلف</value>
</data>
</root>

View File

@@ -1,155 +1,155 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Name" xml:space="preserve">
<value>Bitwarden - Wachtwoordbeheer</value>
<comment>Max 30 characters</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Bitwarden is de meest eenvoudige en veilige manier voor het opslaan van al je logins en wachtwoorden die ze ook nog eens synchroniseert tussen al je apparaten. Met de Bitwarden-app-extensie kun je je snel bij elke website aanmelden via Safari of Chrome en honderden andere populaire apps.
Diefstal van wachtwoorden is een ernstig probleem. De websites en apps die je gebruikt worden dagelijks aangevallen. Beveiligingslekken komen voor en wachtwoorden worden gestolen. Als je hetzelfde wachtwoord gebruikt voor meerdere apps en websites, kunnen hackers gemakkelijk toegang verkrijgen tot je e-mail, bankgegevens en andere belangrijke accounts.
Beveiligingsexperts raden aan om voor lek account een verschillend, willekeurig gegereneerd wachtwoord te gebruiken. Maar hoe beheer je al die wachtwoorden? Bitwarden maakt het je gemakkelijk om deze te genereren, op te slaan en te gebruiken.
Bitwarden slaat al jouw logins op in een versleutelde kluis en synchroniseert deze tussen al je apparaten. Omdat je kluis volledig versleuteld is voor deze zelfs maar het internet opgaat, heb alleen jij toegang tot je gegevens. Zelfs het Bitwarden-team kan het niet lezen, al zouden we dat willen. Jouw gegevens zijn beveiligd met AES-256 bit-versleuteling, salted hashing en PBKDF2 SHA-256.
Bitwarden is 100% open source software. De broncode voor Bitwarden staat op GitHub en iedereen kan het bekijken, beoordelen en een bijdrage leveren.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="Keywords" xml:space="preserve">
<value>bitwarden,bit warden,8bit,wachtwoord,login,gratis wachtwoordbeheer,wachtwoordbeheer,inlogbeheer</value>
<comment>Max 100 characters</comment>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>Beheer al je logins en wachtwoorden vanuit een beveiligde kluis</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>Automatische generatie van sterke, willekeurige en veilige wachtwoorden</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>Bescherm je kluis met Touch ID, PIN-code of hoofdwachtwoord</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>Automatisch invullen van logingegevens in Safari, Chrome en honderden andere apps</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>Synchroniseer en krijg toegang tot je kluis vanaf meerdere apparaten</value>
</data>
</root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Name" xml:space="preserve">
<value>Bitwarden - Wachtwoordbeheer</value>
<comment>Max 30 characters</comment>
</data>
<data name="Description" xml:space="preserve">
<value>Bitwarden is de meest eenvoudige en veilige manier voor het opslaan van al je logins en wachtwoorden die ze ook nog eens synchroniseert tussen al je apparaten. Met de Bitwarden-app-extensie kun je je snel bij elke website aanmelden via Safari of Chrome en honderden andere populaire apps.
Diefstal van wachtwoorden is een ernstig probleem. De websites en apps die je gebruikt worden dagelijks aangevallen. Beveiligingslekken komen voor en wachtwoorden worden gestolen. Als je hetzelfde wachtwoord gebruikt voor meerdere apps en websites, kunnen hackers gemakkelijk toegang verkrijgen tot je e-mail, bankgegevens en andere belangrijke accounts.
Beveiligingsexperts raden aan om voor lek account een verschillend, willekeurig gegereneerd wachtwoord te gebruiken. Maar hoe beheer je al die wachtwoorden? Bitwarden maakt het je gemakkelijk om deze te genereren, op te slaan en te gebruiken.
Bitwarden slaat al jouw logins op in een versleutelde kluis en synchroniseert deze tussen al je apparaten. Omdat je kluis volledig versleuteld is voor deze zelfs maar het internet opgaat, heb alleen jij toegang tot je gegevens. Zelfs het Bitwarden-team kan het niet lezen, al zouden we dat willen. Jouw gegevens zijn beveiligd met AES-256 bit-versleuteling, salted hashing en PBKDF2 SHA-256.
Bitwarden is 100% open source software. De broncode voor Bitwarden staat op GitHub en iedereen kan het bekijken, beoordelen en een bijdrage leveren.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="Keywords" xml:space="preserve">
<value>bitwarden,bit warden,8bit,wachtwoord,login,gratis wachtwoordbeheer,wachtwoordbeheer,inlogbeheer</value>
<comment>Max 100 characters</comment>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>Beheer al je logins en wachtwoorden vanuit een beveiligde kluis</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>Automatische generatie van sterke, willekeurige en veilige wachtwoorden</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>Bescherm je kluis met Touch ID, PIN-code of hoofdwachtwoord</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>Automatisch invullen van logingegevens in Safari, Chrome en honderden andere apps</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>Synchroniseer en krijg toegang tot je kluis vanaf meerdere apparaten</value>
</data>
</root>

View File

@@ -1,5 +1,5 @@
using Google.Apis.AndroidPublisher.v2;
using Google.Apis.AndroidPublisher.v2.Data;
using Google.Apis.AndroidPublisher.v3;
using Google.Apis.AndroidPublisher.v3.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using System;
@@ -104,7 +104,10 @@ namespace Bit.Publisher
var trackRequest = service.Edits.Tracks.Update(new Track
{
VersionCodes = new List<int?> { apk.VersionCode }
Releases = new List<TrackRelease>
{
new TrackRelease { VersionCodes = new List<long?> { apk.VersionCode }, Status = "completed" }
}
}, Package, edit.Id, _track);
var updatedTrack = await trackRequest.ExecuteAsync();

View File

@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Google.Apis.AndroidPublisher.v2" Version="1.40.2.1620" />
<PackageReference Include="Google.Apis.AndroidPublisher.v3" Version="1.42.0.1766" />
</ItemGroup>
</Project>

View File

@@ -1,166 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>مدیر گذرواژه Bitwarden</value>
<comment>Max 30 characters</comment>
</data>
<data name="ShortDescription" xml:space="preserve">
<value>Bitwarden یک مدیریت کننده رمز عبور و ورود است که به حفظ امنیت شما هنگام آنلاین بودن کمک میکند.</value>
<comment>Max 80 characters</comment>
</data>
<data name="FullDesciption" xml:space="preserve">
<value>Bitwarden ساده ترین و امن ترین راه گردآوری تمام داده های ورودی و پسوردها است در حالی که به راحتی آنها را بین تمامی دستگاه ها همگام میکند.
سرقت پسورد یک مشکل جدی است. وبسایت ها و اپلیکیشن هایی که شما از آنها استفاده میکنید هر روز تحت حملات قرار دارند. نقص های امنیتی رخ میدهند و پسوردها به سرقت میروند. زمانی که شما مجدداً از همان پسورد برای تمام وبسایت ها و اپلیکیشن ها استفاده میکنید هکرها می‌توانند به راحتی به ایمیل، حساب بانکی، و سایر حسابهای کاربریتان دسترسی داشته باشند.
متخصصان امنیتی توصیه میکنند که برای هر حساب کاربری که ایجاد میکنید از پسوردهای متفاوت و تصادفی تولید شده استفاده کنید. اما چطور تمامی این پسورها را مدیریت میکنید؟ بیت واردن ساختن، نگهداری، ودسترسی به پسوردهایتان را آسان میکند.
Bitwarden تمامی داده های ورودی شما را در یک گاو صندوق رمزنگاری شده نگهداری میکند که قابل همگام سازی توسط تمامی دستگاه های شماست. از آنجا که این داده ها هر زمان قبل از ترک دستگاهتان کاملا رمزنگاری میشود، فقط شما به اطلاعاتتان دسترسی دارید. حتی اگر تیم ما در بیت واردن هم بخواهند نمیتوانند اطلاعات شما را مشاهده کنند. داده های شما توسط رمزگذاری AES-256 بیتی، هَش خرد شده، و PBKDF2SHA-256 رمزنگاری شده است.
Bitwarden ۱۰۰٪ یک برنامه متن باز است. کد منبع بیت واردن در GitHub میزبانی میشود و هر کس آزاد است برای بررسی، تفتیش و کمک به کد دسترسی داشته باشد.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="FeatureGraphic" xml:space="preserve">
<value>یک مدیریت کننده رمز عبور رایگان برای تمامی دستگاههایتان</value>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>مدیریت تمام اطلاعات ورود و رمزهای عبورتان از یک گاوصندوق امن</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>به صورت خودکار کلمات عبور قوی، تصادفی و امن ایجاد کنید</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>گاوصندوق خود را با اثر انگشت، کد پین یا گذرواژه اصلی محافظت کنید</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>ورود خودکار سریع از داخل مرورگر وب و سایر برنامه هایتان</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>همگام سازی و دسترسی به گاوصندوق خود را از دستگاه های مختلف
- تلفن
- تبلت
- دسکتاپ
- وب</value>
</data>
</root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>مدیر گذرواژه Bitwarden</value>
<comment>Max 30 characters</comment>
</data>
<data name="ShortDescription" xml:space="preserve">
<value>Bitwarden یک مدیریت کننده رمز عبور و ورود است که به حفظ امنیت شما هنگام آنلاین بودن کمک میکند.</value>
<comment>Max 80 characters</comment>
</data>
<data name="FullDesciption" xml:space="preserve">
<value>Bitwarden ساده ترین و امن ترین راه گردآوری تمام داده های ورودی و پسوردها است در حالی که به راحتی آنها را بین تمامی دستگاه ها همگام میکند.
سرقت پسورد یک مشکل جدی است. وبسایت ها و اپلیکیشن هایی که شما از آنها استفاده میکنید هر روز تحت حملات قرار دارند. نقص های امنیتی رخ میدهند و پسوردها به سرقت میروند. زمانی که شما مجدداً از همان پسورد برای تمام وبسایت ها و اپلیکیشن ها استفاده میکنید هکرها می‌توانند به راحتی به ایمیل، حساب بانکی، و سایر حسابهای کاربریتان دسترسی داشته باشند.
متخصصان امنیتی توصیه میکنند که برای هر حساب کاربری که ایجاد میکنید از پسوردهای متفاوت و تصادفی تولید شده استفاده کنید. اما چطور تمامی این پسورها را مدیریت میکنید؟ بیت واردن ساختن، نگهداری، ودسترسی به پسوردهایتان را آسان میکند.
Bitwarden تمامی داده های ورودی شما را در یک گاو صندوق رمزنگاری شده نگهداری میکند که قابل همگام سازی توسط تمامی دستگاه های شماست. از آنجا که این داده ها هر زمان قبل از ترک دستگاهتان کاملا رمزنگاری میشود، فقط شما به اطلاعاتتان دسترسی دارید. حتی اگر تیم ما در بیت واردن هم بخواهند نمیتوانند اطلاعات شما را مشاهده کنند. داده های شما توسط رمزگذاری AES-256 بیتی، هَش خرد شده، و PBKDF2SHA-256 رمزنگاری شده است.
Bitwarden ۱۰۰٪ یک برنامه متن باز است. کد منبع بیت واردن در GitHub میزبانی میشود و هر کس آزاد است برای بررسی، تفتیش و کمک به کد دسترسی داشته باشد.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="FeatureGraphic" xml:space="preserve">
<value>یک مدیریت کننده رمز عبور رایگان برای تمامی دستگاههایتان</value>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>مدیریت تمام اطلاعات ورود و رمزهای عبورتان از یک گاوصندوق امن</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>به صورت خودکار کلمات عبور قوی، تصادفی و امن ایجاد کنید</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>گاوصندوق خود را با اثر انگشت، کد پین یا گذرواژه اصلی محافظت کنید</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>ورود خودکار سریع از داخل مرورگر وب و سایر برنامه هایتان</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>همگام سازی و دسترسی به گاوصندوق خود را از دستگاه های مختلف
- تلفن
- تبلت
- دسکتاپ
- وب</value>
</data>
</root>

View File

@@ -1,163 +1,163 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Bitwarden - Wachtwoordbeheer</value>
<comment>Max 30 characters</comment>
</data>
<data name="ShortDescription" xml:space="preserve">
<value>Bitwarden is een oplossing voor login- en wachtwoordbeheer waardoor je online veilig blijft.</value>
<comment>Max 80 characters</comment>
</data>
<data name="FullDesciption" xml:space="preserve">
<value>Bitwarden is de meest eenvoudige en veilige manier voor het opslaan van al je logins en wachtwoorden die ze ook nog eens synchroniseert tussen al je apparaten.
Diefstal van wachtwoorden is een ernstig probleem. De websites en apps die je gebruikt worden dagelijks aangevallen. Beveiligingslekken komen voor en wachtwoorden worden gestolen. Als je hetzelfde wachtwoord gebruikt voor meerdere apps en websites, kunnen hackers gemakkelijk toegang verkrijgen tot je e-mail, bankgegevens en andere belangrijke accounts.
Beveiligingsexperts raden aan om voor lek account een verschillend, willekeurig gegenereerd wachtwoord te gebruiken. Maar hoe beheer je al die wachtwoorden? Bitwarden maakt het je gemakkelijk om deze te genereren, op te slaan en te gebruiken.
Bitwarden slaat al jouw logins op in een versleutelde kluis en synchroniseert deze tussen al je apparaten. Omdat je kluis volledig versleuteld is voor deze zelfs maar het internet opgaat, heb alleen jij toegang tot je gegevens. Zelfs het Bitwarden-team kan het niet lezen, al zouden we dat willen. Jouw gegevens zijn beveiligd met AES-256 bit-versleuteling, salted hashing en PBKDF2 SHA-256.
Bitwarden is 100% open source software. De broncode voor Bitwarden staat op GitHub en iedereen kan het bekijken, beoordelen en een bijdrage leveren.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="FeatureGraphic" xml:space="preserve">
<value>Een veilige en gratis oplossing voor wachtwoordbeheer voor al je apparaten</value>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>Al je logins en wachtwoorden vanuit een beveiligde kluis beheren</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>Automatische sterke, willekeurige en veilige wachtwoorden genereren</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>Bescherm je kluis met een vingerafdruk, PIN-code of hoofdwachtwoord</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>Automatisch invullen van logingegevens vanuit webbrowser en andere apps</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>Synchronisatie en toegang tot je kluis op verschillende apparaten
- Smartphone
- Tablet
- Computer
- Web (internet)</value>
</data>
</root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Bitwarden - Wachtwoordbeheer</value>
<comment>Max 30 characters</comment>
</data>
<data name="ShortDescription" xml:space="preserve">
<value>Bitwarden is een wachtwoordbeheerder om je online veiligheid te vergroten.</value>
<comment>Max 80 characters</comment>
</data>
<data name="FullDesciption" xml:space="preserve">
<value>Bitwarden is de meest eenvoudige en veilige manier voor het opslaan van al je logins en wachtwoorden die ze ook nog eens synchroniseert tussen al je apparaten.
Diefstal van wachtwoorden is een ernstig probleem. De websites en apps die je gebruikt worden dagelijks aangevallen. Beveiligingslekken komen voor en wachtwoorden worden gestolen. Als je hetzelfde wachtwoord gebruikt voor meerdere apps en websites, kunnen hackers gemakkelijk toegang verkrijgen tot je e-mail, bankgegevens en andere belangrijke accounts.
Beveiligingsexperts raden aan om voor lek account een verschillend, willekeurig gegenereerd wachtwoord te gebruiken. Maar hoe beheer je al die wachtwoorden? Bitwarden maakt het je gemakkelijk om deze te genereren, op te slaan en te gebruiken.
Bitwarden slaat al jouw logins op in een versleutelde kluis en synchroniseert deze tussen al je apparaten. Omdat je kluis volledig versleuteld is voor deze zelfs maar het internet opgaat, heb alleen jij toegang tot je gegevens. Zelfs het Bitwarden-team kan het niet lezen, al zouden we dat willen. Jouw gegevens zijn beveiligd met AES-256 bit-versleuteling, salted hashing en PBKDF2 SHA-256.
Bitwarden is 100% open source software. De broncode voor Bitwarden staat op GitHub en iedereen kan het bekijken, beoordelen en een bijdrage leveren.</value>
<comment>Max 4000 characters</comment>
</data>
<data name="FeatureGraphic" xml:space="preserve">
<value>Een veilige en gratis oplossing voor wachtwoordbeheer voor al je apparaten</value>
</data>
<data name="Screenshot1" xml:space="preserve">
<value>Beheer al je logins en wachtwoorden vanuit een beveiligde kluis</value>
</data>
<data name="Screenshot2" xml:space="preserve">
<value>Automatische generatie van sterke, willekeurige en veilige wachtwoorden</value>
</data>
<data name="Screenshot3" xml:space="preserve">
<value>Bescherm je kluis met een vingerafdruk, PIN-code of hoofdwachtwoord</value>
</data>
<data name="Screenshot4" xml:space="preserve">
<value>Automatisch invullen van logingegevens vanuit webbrowser en andere apps</value>
</data>
<data name="Screenshot5" xml:space="preserve">
<value>Synchronisatie en toegang tot je kluis op verschillende apparaten
- Smartphone
- Tablet
- Computer
- Web (internet)</value>
</data>
</root>