Compare commits
	
		
			34 Commits
		
	
	
		
			main
			...
			58-migrate
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6b40c72ffd | |||
| 9fbd72c148 | |||
| b8d66a13a0 | |||
| 9e46f3054c | |||
| 123b3bebe3 | |||
| 0384026b84 | |||
| ffda46d8b1 | |||
| 5180254244 | |||
| b01d6842be | |||
| 1e159efe4b | |||
| c4e27d2550 | |||
| 002c054e11 | |||
| e7c690ac1d | |||
| 371d4e59cf | |||
| a638744b43 | |||
| 6fc441b65b | |||
| 0de99a095c | |||
| 6a67e7aff4 | |||
| 7157386bb7 | |||
| 0d05658143 | |||
| f0b58de4b9 | |||
| df997f6cc7 | |||
| 0e121e718d | |||
| 08b318b93b | |||
| 9295b6f5ec | |||
| c39be82a59 | |||
| 8f82bfbd86 | |||
| d0e6dd13cd | |||
| 144267dc9e | |||
| 9f910f5d49 | |||
| ed32764da8 | |||
| c9713cb615 | |||
| 1ee1a268f9 | |||
| 58b7c37295 | 
@ -1,5 +1,8 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<project version="4">
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="TaskProjectConfiguration">
 | 
				
			||||||
 | 
					    <server type="Gitlab" url="https://devops.tsommer.org" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
  <component name="com.jetbrains.rider.android.RiderAndroidMiscFileCreationComponent">
 | 
					  <component name="com.jetbrains.rider.android.RiderAndroidMiscFileCreationComponent">
 | 
				
			||||||
    <option name="ENSURE_MISC_FILE_EXISTS" value="true" />
 | 
					    <option name="ENSURE_MISC_FILE_EXISTS" value="true" />
 | 
				
			||||||
  </component>
 | 
					  </component>
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,4 @@
 | 
				
			|||||||
      <inspection_tool class="SubjectLimit" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					      <inspection_tool class="SubjectLimit" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    </profile>
 | 
					    </profile>
 | 
				
			||||||
  </component>
 | 
					  </component>
 | 
				
			||||||
  <component name="VcsDirectoryMappings">
 | 
					 | 
				
			||||||
    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
 | 
					 | 
				
			||||||
  </component>
 | 
					 | 
				
			||||||
</project>
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										15
									
								
								I18N Commander/.run/Editor.run.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					<component name="ProjectRunConfigurationManager">
 | 
				
			||||||
 | 
					  <configuration default="false" name="Editor" type="RunExe" factoryName=".NET Executable">
 | 
				
			||||||
 | 
					    <option name="EXE_PATH" value="/Applications/Godot.app/Contents/MacOS/Godot" />
 | 
				
			||||||
 | 
					    <option name="PROGRAM_PARAMETERS" value="--path "$PROJECT_DIR$/App" --editor" />
 | 
				
			||||||
 | 
					    <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
 | 
				
			||||||
 | 
					    <option name="PASS_PARENT_ENVS" value="1" />
 | 
				
			||||||
 | 
					    <option name="USE_EXTERNAL_CONSOLE" value="0" />
 | 
				
			||||||
 | 
					    <option name="USE_MONO" value="0" />
 | 
				
			||||||
 | 
					    <option name="RUNTIME_ARGUMENTS" value="" />
 | 
				
			||||||
 | 
					    <option name="RUNTIME_TYPE" value="coreclr" />
 | 
				
			||||||
 | 
					    <method v="2">
 | 
				
			||||||
 | 
					      <option name="Build Solution" enabled="true" />
 | 
				
			||||||
 | 
					    </method>
 | 
				
			||||||
 | 
					  </configuration>
 | 
				
			||||||
 | 
					</component>
 | 
				
			||||||
							
								
								
									
										15
									
								
								I18N Commander/.run/Player.run.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					<component name="ProjectRunConfigurationManager">
 | 
				
			||||||
 | 
					  <configuration default="false" name="Player" type="RunExe" factoryName=".NET Executable">
 | 
				
			||||||
 | 
					    <option name="EXE_PATH" value="/Applications/Godot.app/Contents/MacOS/Godot" />
 | 
				
			||||||
 | 
					    <option name="PROGRAM_PARAMETERS" value="--path "$PROJECT_DIR$/App"" />
 | 
				
			||||||
 | 
					    <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
 | 
				
			||||||
 | 
					    <option name="PASS_PARENT_ENVS" value="1" />
 | 
				
			||||||
 | 
					    <option name="USE_EXTERNAL_CONSOLE" value="0" />
 | 
				
			||||||
 | 
					    <option name="USE_MONO" value="0" />
 | 
				
			||||||
 | 
					    <option name="RUNTIME_ARGUMENTS" value="" />
 | 
				
			||||||
 | 
					    <option name="RUNTIME_TYPE" value="coreclr" />
 | 
				
			||||||
 | 
					    <method v="2">
 | 
				
			||||||
 | 
					      <option name="Build Solution" enabled="true" />
 | 
				
			||||||
 | 
					    </method>
 | 
				
			||||||
 | 
					  </configuration>
 | 
				
			||||||
 | 
					</component>
 | 
				
			||||||
							
								
								
									
										2
									
								
								I18N Commander/App/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					# Normalize EOL for all files that Git considers text files.
 | 
				
			||||||
 | 
					* text=auto eol=lf
 | 
				
			||||||
							
								
								
									
										2
									
								
								I18N Commander/App/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					# Godot 4+ specific ignores
 | 
				
			||||||
 | 
					.godot/
 | 
				
			||||||
							
								
								
									
										15
									
								
								I18N Commander/App/App.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					<Project Sdk="Godot.NET.Sdk/4.2.0">
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <TargetFramework>net8.0</TargetFramework>
 | 
				
			||||||
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
 | 
					    <EnableDynamicLoading>true</EnableDynamicLoading>
 | 
				
			||||||
 | 
					    <AssemblyName>App</AssemblyName>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Remove="obj\**" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <EmbeddedResource Remove="obj\**" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB  | 
@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://csxeqym474oxu"
 | 
				
			||||||
 | 
					path="res://.godot/imported/icons8-language-512.png-f077a2b18c06d1aaad9f9dc30a3a6ad7.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://assets/icons/icons8-language-512.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/icons8-language-512.png-f077a2b18c06d1aaad9f9dc30a3a6ad7.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB  | 
@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://cp33pga3vuk5k"
 | 
				
			||||||
 | 
					path="res://.godot/imported/icons8-new-window-512.png-a618aa4884e2d1037cb64d9a2996cda7.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://assets/icons/icons8-new-window-512.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/icons8-new-window-512.png-a618aa4884e2d1037cb64d9a2996cda7.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
							
								
								
									
										1
									
								
								I18N Commander/App/icon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="2" width="124" height="124" rx="14" fill="#363d52" stroke="#212532" stroke-width="4"/><g transform="scale(.101) translate(122 122)"><g fill="#fff"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 813 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H447l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c3 34 55 34 58 0v-86c-3-34-55-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></g></svg>
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 950 B  | 
							
								
								
									
										37
									
								
								I18N Commander/App/icon.svg.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://nydkfoij0mbk"
 | 
				
			||||||
 | 
					path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://icon.svg"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
 | 
					svg/scale=1.0
 | 
				
			||||||
 | 
					editor/scale_with_editor_scale=false
 | 
				
			||||||
 | 
					editor/convert_colors_with_editor_theme=false
 | 
				
			||||||
							
								
								
									
										33
									
								
								I18N Commander/App/project.godot
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					; Engine configuration file.
 | 
				
			||||||
 | 
					; It's best edited using the editor UI and not directly,
 | 
				
			||||||
 | 
					; since the parameters that go here are not all obvious.
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					; Format:
 | 
				
			||||||
 | 
					;   [section] ; section goes between []
 | 
				
			||||||
 | 
					;   param=value ; assign values to parameters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config_version=5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[application]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config/name="I18N Commander"
 | 
				
			||||||
 | 
					run/main_scene="res://scenes/loading_screen.tscn"
 | 
				
			||||||
 | 
					config/features=PackedStringArray("4.2", "C#", "GL Compatibility")
 | 
				
			||||||
 | 
					run/low_processor_mode=true
 | 
				
			||||||
 | 
					config/icon="res://icon.svg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[display]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					window/size/initial_position_type=3
 | 
				
			||||||
 | 
					window/stretch/aspect="ignore"
 | 
				
			||||||
 | 
					window/ios/hide_home_indicator=false
 | 
				
			||||||
 | 
					window/ios/hide_status_bar=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dotnet]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					project/assembly_name="App"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[rendering]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					renderer/rendering_method="gl_compatibility"
 | 
				
			||||||
 | 
					renderer/rendering_method.mobile="gl_compatibility"
 | 
				
			||||||
							
								
								
									
										27
									
								
								I18N Commander/App/scenes/BtnIcon.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					using Godot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace App.scenes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class BtnIcon : Control
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    [ExportGroup("Data")]
 | 
				
			||||||
 | 
					    public string Text { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    [ExportGroup("Data")]
 | 
				
			||||||
 | 
					    public Texture2D Icon { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #region Overrides of Node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void _Ready()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        var button = this.GetNode<Button>("%btn");
 | 
				
			||||||
 | 
					        button.Text = this.Text;
 | 
				
			||||||
 | 
					        button.Icon = this.Icon;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        base._Ready();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #endregion
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								I18N Commander/App/scenes/BtnIcon.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					[gd_scene load_steps=2 format=3 uid="uid://d0x0yv7nevod7"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://scenes/BtnIcon.cs" id="1_b787p"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="btn_icon" type="MarginContainer"]
 | 
				
			||||||
 | 
					theme_override_constants/margin_left = 6
 | 
				
			||||||
 | 
					theme_override_constants/margin_top = 6
 | 
				
			||||||
 | 
					theme_override_constants/margin_right = 6
 | 
				
			||||||
 | 
					theme_override_constants/margin_bottom = 6
 | 
				
			||||||
 | 
					script = ExtResource("1_b787p")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="btn" type="Button" parent="."]
 | 
				
			||||||
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
							
								
								
									
										68
									
								
								I18N Commander/App/scenes/loading_screen.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					[gd_scene load_steps=5 format=3 uid="uid://qm7ovimcfc3h"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://csxeqym474oxu" path="res://assets/icons/icons8-language-512.png" id="1_1ya62"]
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://d0x0yv7nevod7" path="res://scenes/BtnIcon.tscn" id="2_gp72s"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://cp33pga3vuk5k" path="res://assets/icons/icons8-new-window-512.png" id="3_4v5hm"]
 | 
				
			||||||
 | 
					[ext_resource type="Theme" uid="uid://uqhultm05f5a" path="res://theme/ui_theme_dark.tres" id="3_7idnl"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="frame" type="Control"]
 | 
				
			||||||
 | 
					layout_mode = 3
 | 
				
			||||||
 | 
					anchors_preset = 15
 | 
				
			||||||
 | 
					anchor_right = 1.0
 | 
				
			||||||
 | 
					anchor_bottom = 1.0
 | 
				
			||||||
 | 
					grow_horizontal = 2
 | 
				
			||||||
 | 
					grow_vertical = 2
 | 
				
			||||||
 | 
					theme = ExtResource("3_7idnl")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="center" type="CenterContainer" parent="."]
 | 
				
			||||||
 | 
					layout_mode = 1
 | 
				
			||||||
 | 
					anchors_preset = 8
 | 
				
			||||||
 | 
					anchor_left = 0.5
 | 
				
			||||||
 | 
					anchor_top = 0.5
 | 
				
			||||||
 | 
					anchor_right = 0.5
 | 
				
			||||||
 | 
					anchor_bottom = 0.5
 | 
				
			||||||
 | 
					offset_left = -152.0
 | 
				
			||||||
 | 
					offset_top = -51.5
 | 
				
			||||||
 | 
					offset_right = 152.0
 | 
				
			||||||
 | 
					offset_bottom = 51.5
 | 
				
			||||||
 | 
					grow_horizontal = 2
 | 
				
			||||||
 | 
					grow_vertical = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="vbox" type="VBoxContainer" parent="center"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="hboxHeader" type="HBoxContainer" parent="center/vbox"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="iconMargin" type="MarginContainer" parent="center/vbox/hboxHeader"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					theme_override_constants/margin_left = 6
 | 
				
			||||||
 | 
					theme_override_constants/margin_top = 6
 | 
				
			||||||
 | 
					theme_override_constants/margin_right = 6
 | 
				
			||||||
 | 
					theme_override_constants/margin_bottom = 6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="icon" type="TextureRect" parent="center/vbox/hboxHeader/iconMargin"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					texture = ExtResource("1_1ya62")
 | 
				
			||||||
 | 
					stretch_mode = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="header" type="Label" parent="center/vbox/hboxHeader"]
 | 
				
			||||||
 | 
					custom_minimum_size = Vector2(300, 2.08165e-12)
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 36
 | 
				
			||||||
 | 
					text = "I18N Commander"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					vertical_alignment = 1
 | 
				
			||||||
 | 
					autowrap_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="hboxButtons" type="HBoxContainer" parent="center/vbox"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="btn_icon" parent="center/vbox/hboxButtons" instance=ExtResource("2_gp72s")]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					Text = "Create Project"
 | 
				
			||||||
 | 
					Icon = ExtResource("3_4v5hm")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="btnRecentProjects" type="OptionButton" parent="center/vbox/hboxButtons"]
 | 
				
			||||||
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
							
								
								
									
										141
									
								
								I18N Commander/App/theme/Test UI.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,141 @@
 | 
				
			|||||||
 | 
					[gd_scene load_steps=2 format=3 uid="uid://q3mnarw6b66l"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Theme" uid="uid://uqhultm05f5a" path="res://theme/ui_theme_dark.tres" id="1_x217b"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Main" type="Control"]
 | 
				
			||||||
 | 
					layout_mode = 3
 | 
				
			||||||
 | 
					anchors_preset = 15
 | 
				
			||||||
 | 
					anchor_right = 1.0
 | 
				
			||||||
 | 
					anchor_bottom = 1.0
 | 
				
			||||||
 | 
					grow_horizontal = 2
 | 
				
			||||||
 | 
					grow_vertical = 2
 | 
				
			||||||
 | 
					theme = ExtResource("1_x217b")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="VBoxContainer" type="VBoxContainer" parent="."]
 | 
				
			||||||
 | 
					layout_mode = 1
 | 
				
			||||||
 | 
					anchors_preset = 15
 | 
				
			||||||
 | 
					anchor_right = 1.0
 | 
				
			||||||
 | 
					anchor_bottom = 1.0
 | 
				
			||||||
 | 
					grow_horizontal = 2
 | 
				
			||||||
 | 
					grow_vertical = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer/VBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button" type="Button" parent="VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					text = "Create Unit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button2" type="Button" parent="VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					text = "Delete"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CheckButton" type="CheckButton" parent="VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CheckButton2" type="CheckButton" parent="VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					text = "Auto Save"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="OptionButton" type="OptionButton" parent="VBoxContainer/MarginContainer/VBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					item_count = 3
 | 
				
			||||||
 | 
					popup/item_0/text = "Option 1"
 | 
				
			||||||
 | 
					popup/item_0/id = 0
 | 
				
			||||||
 | 
					popup/item_1/text = "Option 2"
 | 
				
			||||||
 | 
					popup/item_1/id = 1
 | 
				
			||||||
 | 
					popup/item_1/disabled = true
 | 
				
			||||||
 | 
					popup/item_2/text = "Option 3"
 | 
				
			||||||
 | 
					popup/item_2/id = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="MenuButton" type="MenuButton" parent="VBoxContainer/MarginContainer/VBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					toggle_mode = false
 | 
				
			||||||
 | 
					text = "Mein Menü"
 | 
				
			||||||
 | 
					alignment = 0
 | 
				
			||||||
 | 
					item_count = 5
 | 
				
			||||||
 | 
					popup/item_0/text = "Option 1"
 | 
				
			||||||
 | 
					popup/item_0/id = 0
 | 
				
			||||||
 | 
					popup/item_1/text = "Option 2"
 | 
				
			||||||
 | 
					popup/item_1/id = 1
 | 
				
			||||||
 | 
					popup/item_2/text = "Option 3"
 | 
				
			||||||
 | 
					popup/item_2/id = 2
 | 
				
			||||||
 | 
					popup/item_3/text = "Settings"
 | 
				
			||||||
 | 
					popup/item_3/id = 4
 | 
				
			||||||
 | 
					popup/item_3/separator = true
 | 
				
			||||||
 | 
					popup/item_4/text = "Auto Save"
 | 
				
			||||||
 | 
					popup/item_4/checkable = 1
 | 
				
			||||||
 | 
					popup/item_4/id = 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="MarginContainer2" type="MarginContainer" parent="VBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="TabContainer" type="TabContainer" parent="VBoxContainer/MarginContainer2"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Tab1" type="TabBar" parent="VBoxContainer/MarginContainer2/TabContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					clip_tabs = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer2/TabContainer/Tab1"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_right = 132.0
 | 
				
			||||||
 | 
					offset_bottom = 101.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer2/TabContainer/Tab1/MarginContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button" type="Button" parent="VBoxContainer/MarginContainer2/TabContainer/Tab1/MarginContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					text = "Load"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button2" type="Button" parent="VBoxContainer/MarginContainer2/TabContainer/Tab1/MarginContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					text = "Store"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Tab2" type="TabBar" parent="VBoxContainer/MarginContainer2/TabContainer"]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					clip_tabs = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer2/TabContainer/Tab2"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_right = 24.0
 | 
				
			||||||
 | 
					offset_bottom = 24.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer2/TabContainer/Tab2/MarginContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button" type="Button" parent="VBoxContainer/MarginContainer2/TabContainer/Tab2/MarginContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					text = "STart"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button2" type="Button" parent="VBoxContainer/MarginContainer2/TabContainer/Tab2/MarginContainer/HBoxContainer"]
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					text = "Stop"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="TabBar" type="TabBar" parent="VBoxContainer/MarginContainer2/TabContainer"]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					clip_tabs = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="TabBar2" type="TabBar" parent="VBoxContainer/MarginContainer2/TabContainer"]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					clip_tabs = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="TabBar3" type="TabBar" parent="VBoxContainer/MarginContainer2/TabContainer"]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					clip_tabs = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="TabBar4" type="TabBar" parent="VBoxContainer/MarginContainer2/TabContainer"]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					layout_mode = 2
 | 
				
			||||||
 | 
					clip_tabs = false
 | 
				
			||||||
							
								
								
									
										21
									
								
								I18N Commander/App/theme/btn/d_style_box_flat_focus.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://chaurklijlgu7"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 16.0
 | 
				
			||||||
 | 
					content_margin_top = 16.0
 | 
				
			||||||
 | 
					content_margin_right = 16.0
 | 
				
			||||||
 | 
					content_margin_bottom = 16.0
 | 
				
			||||||
 | 
					bg_color = Color(0.309804, 0.309804, 0.309804, 1)
 | 
				
			||||||
 | 
					skew = Vector2(2.08165e-12, 2.08165e-12)
 | 
				
			||||||
 | 
					border_width_left = 4
 | 
				
			||||||
 | 
					border_width_top = 4
 | 
				
			||||||
 | 
					border_width_right = 4
 | 
				
			||||||
 | 
					border_width_bottom = 4
 | 
				
			||||||
 | 
					border_color = Color(0.0509804, 0.0509804, 0.0509804, 1)
 | 
				
			||||||
 | 
					border_blend = true
 | 
				
			||||||
 | 
					corner_radius_top_left = 6
 | 
				
			||||||
 | 
					corner_radius_top_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_left = 6
 | 
				
			||||||
 | 
					shadow_size = 2
 | 
				
			||||||
 | 
					shadow_offset = Vector2(1, 1)
 | 
				
			||||||
							
								
								
									
										21
									
								
								I18N Commander/App/theme/btn/d_style_box_flat_hover.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://l1tjpnljc6c1"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 16.0
 | 
				
			||||||
 | 
					content_margin_top = 16.0
 | 
				
			||||||
 | 
					content_margin_right = 16.0
 | 
				
			||||||
 | 
					content_margin_bottom = 16.0
 | 
				
			||||||
 | 
					bg_color = Color(0.309804, 0.309804, 0.309804, 1)
 | 
				
			||||||
 | 
					skew = Vector2(2.08165e-12, 2.08165e-12)
 | 
				
			||||||
 | 
					border_width_left = 3
 | 
				
			||||||
 | 
					border_width_top = 3
 | 
				
			||||||
 | 
					border_width_right = 3
 | 
				
			||||||
 | 
					border_width_bottom = 3
 | 
				
			||||||
 | 
					border_color = Color(0.0509804, 0.0509804, 0.0509804, 1)
 | 
				
			||||||
 | 
					border_blend = true
 | 
				
			||||||
 | 
					corner_radius_top_left = 6
 | 
				
			||||||
 | 
					corner_radius_top_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_left = 6
 | 
				
			||||||
 | 
					shadow_size = 2
 | 
				
			||||||
 | 
					shadow_offset = Vector2(1, 1)
 | 
				
			||||||
							
								
								
									
										19
									
								
								I18N Commander/App/theme/btn/d_style_box_flat_norm.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://tj810ebe65el"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 16.0
 | 
				
			||||||
 | 
					content_margin_top = 16.0
 | 
				
			||||||
 | 
					content_margin_right = 16.0
 | 
				
			||||||
 | 
					content_margin_bottom = 16.0
 | 
				
			||||||
 | 
					bg_color = Color(0.239216, 0.239216, 0.239216, 1)
 | 
				
			||||||
 | 
					skew = Vector2(2.08165e-12, 2.08165e-12)
 | 
				
			||||||
 | 
					border_width_left = 2
 | 
				
			||||||
 | 
					border_width_top = 2
 | 
				
			||||||
 | 
					border_width_right = 2
 | 
				
			||||||
 | 
					border_width_bottom = 2
 | 
				
			||||||
 | 
					border_color = Color(0, 0, 0, 1)
 | 
				
			||||||
 | 
					border_blend = true
 | 
				
			||||||
 | 
					corner_radius_top_left = 6
 | 
				
			||||||
 | 
					corner_radius_top_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_left = 6
 | 
				
			||||||
							
								
								
									
										21
									
								
								I18N Commander/App/theme/btn/d_style_box_flat_press.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://he0mxms4j1q7"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 16.0
 | 
				
			||||||
 | 
					content_margin_top = 16.0
 | 
				
			||||||
 | 
					content_margin_right = 16.0
 | 
				
			||||||
 | 
					content_margin_bottom = 16.0
 | 
				
			||||||
 | 
					bg_color = Color(0.4, 0.4, 0.4, 1)
 | 
				
			||||||
 | 
					skew = Vector2(2.08165e-12, 2.08165e-12)
 | 
				
			||||||
 | 
					border_width_left = 3
 | 
				
			||||||
 | 
					border_width_top = 3
 | 
				
			||||||
 | 
					border_width_right = 3
 | 
				
			||||||
 | 
					border_width_bottom = 3
 | 
				
			||||||
 | 
					border_color = Color(0.380392, 0.380392, 0.380392, 1)
 | 
				
			||||||
 | 
					border_blend = true
 | 
				
			||||||
 | 
					corner_radius_top_left = 6
 | 
				
			||||||
 | 
					corner_radius_top_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_left = 6
 | 
				
			||||||
 | 
					shadow_size = 2
 | 
				
			||||||
 | 
					shadow_offset = Vector2(1, 1)
 | 
				
			||||||
							
								
								
									
										17
									
								
								I18N Commander/App/theme/btn/l_style_box_flat_hover.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://d0s01k14o6kda"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 16.0
 | 
				
			||||||
 | 
					content_margin_top = 16.0
 | 
				
			||||||
 | 
					content_margin_right = 16.0
 | 
				
			||||||
 | 
					content_margin_bottom = 16.0
 | 
				
			||||||
 | 
					bg_color = Color(0.980392, 0.980392, 0.980392, 1)
 | 
				
			||||||
 | 
					border_width_left = 3
 | 
				
			||||||
 | 
					border_width_top = 3
 | 
				
			||||||
 | 
					border_width_right = 3
 | 
				
			||||||
 | 
					border_width_bottom = 3
 | 
				
			||||||
 | 
					border_color = Color(0.129412, 0.129412, 0.129412, 1)
 | 
				
			||||||
 | 
					corner_radius_top_left = 6
 | 
				
			||||||
 | 
					corner_radius_top_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_left = 6
 | 
				
			||||||
							
								
								
									
										17
									
								
								I18N Commander/App/theme/btn/l_style_box_flat_norm.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://cilpphe2p81om"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 16.0
 | 
				
			||||||
 | 
					content_margin_top = 16.0
 | 
				
			||||||
 | 
					content_margin_right = 16.0
 | 
				
			||||||
 | 
					content_margin_bottom = 16.0
 | 
				
			||||||
 | 
					bg_color = Color(0.980392, 0.980392, 0.980392, 1)
 | 
				
			||||||
 | 
					border_width_left = 3
 | 
				
			||||||
 | 
					border_width_top = 3
 | 
				
			||||||
 | 
					border_width_right = 3
 | 
				
			||||||
 | 
					border_width_bottom = 3
 | 
				
			||||||
 | 
					border_color = Color(0.129412, 0.129412, 0.129412, 1)
 | 
				
			||||||
 | 
					corner_radius_top_left = 6
 | 
				
			||||||
 | 
					corner_radius_top_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_left = 6
 | 
				
			||||||
							
								
								
									
										17
									
								
								I18N Commander/App/theme/btn/l_style_box_flat_press.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://dv2hxit6cs1cx"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 16.0
 | 
				
			||||||
 | 
					content_margin_top = 16.0
 | 
				
			||||||
 | 
					content_margin_right = 16.0
 | 
				
			||||||
 | 
					content_margin_bottom = 16.0
 | 
				
			||||||
 | 
					bg_color = Color(0.878431, 0.878431, 0.878431, 1)
 | 
				
			||||||
 | 
					border_width_left = 5
 | 
				
			||||||
 | 
					border_width_top = 5
 | 
				
			||||||
 | 
					border_width_right = 5
 | 
				
			||||||
 | 
					border_width_bottom = 5
 | 
				
			||||||
 | 
					border_color = Color(0.129412, 0.129412, 0.129412, 1)
 | 
				
			||||||
 | 
					corner_radius_top_left = 6
 | 
				
			||||||
 | 
					corner_radius_top_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_right = 6
 | 
				
			||||||
 | 
					corner_radius_bottom_left = 6
 | 
				
			||||||
							
								
								
									
										3
									
								
								I18N Commander/App/theme/checkBtn/style_box_empty.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxEmpty" format=3 uid="uid://batay7mp6vfon"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
							
								
								
									
										3
									
								
								I18N Commander/App/theme/checkbox/style_box_empty.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxEmpty" format=3 uid="uid://bgka0t482q0dh"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
							
								
								
									
										4
									
								
								I18N Commander/App/theme/panel/d_style_box_flat.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://cens6ndafk28w"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					bg_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
							
								
								
									
										4
									
								
								I18N Commander/App/theme/panel/l_style_box_flat.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://b2nkgvg40j6tc"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					bg_color = Color(0.780392, 0.780392, 0.780392, 1)
 | 
				
			||||||
@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://bumfybajbkybi"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					bg_color = Color(0.2, 0.2, 0.2, 1)
 | 
				
			||||||
							
								
								
									
										13
									
								
								I18N Commander/App/theme/tabs/tab_hover_style_box_flat.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://cv1sqjb5pjrov"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 48.0
 | 
				
			||||||
 | 
					content_margin_top = 48.0
 | 
				
			||||||
 | 
					content_margin_right = 48.0
 | 
				
			||||||
 | 
					content_margin_bottom = 48.0
 | 
				
			||||||
 | 
					bg_color = Color(0.39, 0.39, 0.39, 1)
 | 
				
			||||||
 | 
					border_width_left = 6
 | 
				
			||||||
 | 
					border_width_top = 12
 | 
				
			||||||
 | 
					border_width_right = 6
 | 
				
			||||||
 | 
					border_width_bottom = 12
 | 
				
			||||||
 | 
					border_color = Color(0.2, 0.2, 0.2, 1)
 | 
				
			||||||
@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://b8v8084ty86la"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 48.0
 | 
				
			||||||
 | 
					content_margin_top = 48.0
 | 
				
			||||||
 | 
					content_margin_right = 48.0
 | 
				
			||||||
 | 
					content_margin_bottom = 48.0
 | 
				
			||||||
 | 
					bg_color = Color(0.239216, 0.239216, 0.239216, 1)
 | 
				
			||||||
 | 
					border_width_left = 6
 | 
				
			||||||
 | 
					border_width_top = 12
 | 
				
			||||||
 | 
					border_width_right = 6
 | 
				
			||||||
 | 
					border_width_bottom = 12
 | 
				
			||||||
 | 
					border_color = Color(0.2, 0.2, 0.2, 1)
 | 
				
			||||||
@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					[gd_resource type="StyleBoxFlat" format=3 uid="uid://dp37edlumlbaj"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					content_margin_left = 48.0
 | 
				
			||||||
 | 
					content_margin_top = 48.0
 | 
				
			||||||
 | 
					content_margin_right = 48.0
 | 
				
			||||||
 | 
					content_margin_bottom = 48.0
 | 
				
			||||||
 | 
					bg_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
 | 
					border_width_left = 6
 | 
				
			||||||
 | 
					border_width_top = 12
 | 
				
			||||||
 | 
					border_width_right = 6
 | 
				
			||||||
 | 
					border_width_bottom = 12
 | 
				
			||||||
 | 
					border_color = Color(0.2, 0.2, 0.2, 1)
 | 
				
			||||||
							
								
								
									
										63
									
								
								I18N Commander/App/theme/ui_theme_dark.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					[gd_resource type="Theme" load_steps=12 format=3 uid="uid://uqhultm05f5a"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://chaurklijlgu7" path="res://theme/btn/d_style_box_flat_focus.tres" id="1_uspte"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://l1tjpnljc6c1" path="res://theme/btn/d_style_box_flat_hover.tres" id="2_pm5yo"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://tj810ebe65el" path="res://theme/btn/d_style_box_flat_norm.tres" id="3_p1mf5"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://he0mxms4j1q7" path="res://theme/btn/d_style_box_flat_press.tres" id="4_a7p74"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://bgka0t482q0dh" path="res://theme/checkbox/style_box_empty.tres" id="5_1ugrl"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://batay7mp6vfon" path="res://theme/checkBtn/style_box_empty.tres" id="6_i1h00"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://cens6ndafk28w" path="res://theme/panel/d_style_box_flat.tres" id="7_3s8mj"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://dp37edlumlbaj" path="res://theme/tabs/tab_selected_style_box_flat.tres" id="8_4hym3"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://b8v8084ty86la" path="res://theme/tabs/tab_not_used_style_box_flat.tres" id="8_5xc56"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://bumfybajbkybi" path="res://theme/tabs/background_style_box_flat.tres" id="8_l6mbx"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://cv1sqjb5pjrov" path="res://theme/tabs/tab_hover_style_box_flat.tres" id="9_5ci7o"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					Button/constants/h_separation = 6
 | 
				
			||||||
 | 
					Button/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					Button/styles/focus = ExtResource("1_uspte")
 | 
				
			||||||
 | 
					Button/styles/hover = ExtResource("2_pm5yo")
 | 
				
			||||||
 | 
					Button/styles/normal = ExtResource("3_p1mf5")
 | 
				
			||||||
 | 
					Button/styles/pressed = ExtResource("4_a7p74")
 | 
				
			||||||
 | 
					CheckBox/constants/h_separation = 16
 | 
				
			||||||
 | 
					CheckBox/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					CheckBox/styles/disabled = ExtResource("5_1ugrl")
 | 
				
			||||||
 | 
					CheckBox/styles/focus = ExtResource("5_1ugrl")
 | 
				
			||||||
 | 
					CheckBox/styles/hover = ExtResource("5_1ugrl")
 | 
				
			||||||
 | 
					CheckBox/styles/hover_pressed = ExtResource("5_1ugrl")
 | 
				
			||||||
 | 
					CheckBox/styles/normal = ExtResource("5_1ugrl")
 | 
				
			||||||
 | 
					CheckBox/styles/pressed = ExtResource("5_1ugrl")
 | 
				
			||||||
 | 
					CheckButton/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					CheckButton/styles/focus = ExtResource("6_i1h00")
 | 
				
			||||||
 | 
					CheckButton/styles/hover = ExtResource("6_i1h00")
 | 
				
			||||||
 | 
					CheckButton/styles/hover_pressed = ExtResource("6_i1h00")
 | 
				
			||||||
 | 
					CheckButton/styles/normal = ExtResource("6_i1h00")
 | 
				
			||||||
 | 
					CheckButton/styles/pressed = ExtResource("6_i1h00")
 | 
				
			||||||
 | 
					Label/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					LineEdit/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_bottom = 12
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_left = 12
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_right = 12
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_top = 12
 | 
				
			||||||
 | 
					Panel/styles/panel = ExtResource("7_3s8mj")
 | 
				
			||||||
 | 
					PopupMenu/font_sizes/font_separator_size = 32
 | 
				
			||||||
 | 
					PopupMenu/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					TabBar/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					TabContainer/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					TabContainer/styles/tab_focus = ExtResource("8_4hym3")
 | 
				
			||||||
 | 
					TabContainer/styles/tab_hovered = ExtResource("9_5ci7o")
 | 
				
			||||||
 | 
					TabContainer/styles/tab_selected = ExtResource("8_4hym3")
 | 
				
			||||||
 | 
					TabContainer/styles/tab_unselected = ExtResource("8_5xc56")
 | 
				
			||||||
 | 
					TabContainer/styles/tabbar_background = ExtResource("8_l6mbx")
 | 
				
			||||||
 | 
					TextEdit/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					Tree/constants/children_hl_line_width = 4
 | 
				
			||||||
 | 
					Tree/constants/draw_guides = 0
 | 
				
			||||||
 | 
					Tree/constants/draw_relationship_lines = 1
 | 
				
			||||||
 | 
					Tree/constants/h_separation = 12
 | 
				
			||||||
 | 
					Tree/constants/inner_item_margin_left = 12
 | 
				
			||||||
 | 
					Tree/constants/parent_hl_line_width = 4
 | 
				
			||||||
 | 
					Tree/constants/relationship_line_width = 4
 | 
				
			||||||
 | 
					Tree/constants/scrollbar_h_separation = 12
 | 
				
			||||||
 | 
					Tree/constants/v_separation = 8
 | 
				
			||||||
 | 
					Tree/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					Tree/font_sizes/title_button_font_size = 32
 | 
				
			||||||
							
								
								
									
										34
									
								
								I18N Commander/App/theme/ui_theme_light.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					[gd_resource type="Theme" load_steps=5 format=3 uid="uid://w3bmkb0q753m"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://cilpphe2p81om" path="res://theme/btn/l_style_box_flat_norm.tres" id="1_21txx"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://b2nkgvg40j6tc" path="res://theme/panel/l_style_box_flat.tres" id="1_87qhj"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://d0s01k14o6kda" path="res://theme/btn/l_style_box_flat_hover.tres" id="1_apys2"]
 | 
				
			||||||
 | 
					[ext_resource type="StyleBox" uid="uid://dv2hxit6cs1cx" path="res://theme/btn/l_style_box_flat_press.tres" id="3_cpdnc"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					Button/colors/font_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
 | 
					Button/colors/font_focus_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
 | 
					Button/colors/font_hover_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
 | 
					Button/colors/font_hover_pressed_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
 | 
					Button/colors/font_pressed_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
 | 
					Button/colors/icon_disabled_color = Color(0.160784, 0.160784, 0.160784, 1)
 | 
				
			||||||
 | 
					Button/constants/h_separation = 6
 | 
				
			||||||
 | 
					Button/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					Button/styles/hover = ExtResource("1_apys2")
 | 
				
			||||||
 | 
					Button/styles/normal = ExtResource("1_21txx")
 | 
				
			||||||
 | 
					Button/styles/pressed = ExtResource("3_cpdnc")
 | 
				
			||||||
 | 
					CheckBox/constants/h_separation = 16
 | 
				
			||||||
 | 
					CheckBox/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					CheckButton/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					Label/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					LineEdit/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_bottom = 12
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_left = 12
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_right = 12
 | 
				
			||||||
 | 
					MarginContainer/constants/margin_top = 12
 | 
				
			||||||
 | 
					Panel/styles/panel = ExtResource("1_87qhj")
 | 
				
			||||||
 | 
					PopupMenu/font_sizes/font_separator_size = 32
 | 
				
			||||||
 | 
					PopupMenu/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					TabBar/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					TabContainer/font_sizes/font_size = 32
 | 
				
			||||||
 | 
					TextEdit/font_sizes/font_size = 32
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <OutputType>Library</OutputType>
 | 
					    <OutputType>Library</OutputType>
 | 
				
			||||||
    <TargetFramework>net7.0</TargetFramework>
 | 
					    <TargetFramework>net8.0</TargetFramework>
 | 
				
			||||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
					    <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
    <Nullable>enable</Nullable>
 | 
					    <Nullable>enable</Nullable>
 | 
				
			||||||
    <LangVersion>default</LangVersion>
 | 
					    <LangVersion>default</LangVersion>
 | 
				
			||||||
 | 
				
			|||||||
@ -5,11 +5,9 @@ VisualStudioVersion = 17.3.32519.111
 | 
				
			|||||||
MinimumVisualStudioVersion = 10.0.40219.1
 | 
					MinimumVisualStudioVersion = 10.0.40219.1
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Processor", "Processor\Processor.csproj", "{E24B7026-05BE-434D-9481-7CA5785BC7A8}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Processor", "Processor\Processor.csproj", "{E24B7026-05BE-434D-9481-7CA5785BC7A8}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UI WinForms", "UI WinForms\UI WinForms.csproj", "{5AE84E7C-3141-46CA-B390-4E42878B6195}"
 | 
					 | 
				
			||||||
EndProject
 | 
					 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataModel", "DataModel\DataModel.csproj", "{D18DD193-3F93-4D21-92DC-BA0E26B0342A}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataModel", "DataModel\DataModel.csproj", "{D18DD193-3F93-4D21-92DC-BA0E26B0342A}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UI MAUI", "UI MAUI\UI MAUI.csproj", "{BA8BE958-0DCC-4054-B731-DF911AECC429}"
 | 
					Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App", "App\App.csproj", "{CA2AB6BD-472A-4906-BF5A-84263EF345B6}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Global
 | 
					Global
 | 
				
			||||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
@ -21,20 +19,14 @@ Global
 | 
				
			|||||||
		{E24B7026-05BE-434D-9481-7CA5785BC7A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{E24B7026-05BE-434D-9481-7CA5785BC7A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{E24B7026-05BE-434D-9481-7CA5785BC7A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{E24B7026-05BE-434D-9481-7CA5785BC7A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{E24B7026-05BE-434D-9481-7CA5785BC7A8}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
							{E24B7026-05BE-434D-9481-7CA5785BC7A8}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{5AE84E7C-3141-46CA-B390-4E42878B6195}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
					 | 
				
			||||||
		{5AE84E7C-3141-46CA-B390-4E42878B6195}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
					 | 
				
			||||||
		{5AE84E7C-3141-46CA-B390-4E42878B6195}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
					 | 
				
			||||||
		{5AE84E7C-3141-46CA-B390-4E42878B6195}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
							{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
							{D18DD193-3F93-4D21-92DC-BA0E26B0342A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{BA8BE958-0DCC-4054-B731-DF911AECC429}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
							{CA2AB6BD-472A-4906-BF5A-84263EF345B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{BA8BE958-0DCC-4054-B731-DF911AECC429}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{CA2AB6BD-472A-4906-BF5A-84263EF345B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{BA8BE958-0DCC-4054-B731-DF911AECC429}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
							{CA2AB6BD-472A-4906-BF5A-84263EF345B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{BA8BE958-0DCC-4054-B731-DF911AECC429}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{CA2AB6BD-472A-4906-BF5A-84263EF345B6}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{BA8BE958-0DCC-4054-B731-DF911AECC429}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
					 | 
				
			||||||
		{BA8BE958-0DCC-4054-B731-DF911AECC429}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
					 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(SolutionProperties) = preSolution
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
		HideSolutionNode = FALSE
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <PropertyGroup>
 | 
					    <PropertyGroup>
 | 
				
			||||||
        <TargetFramework>net7.0</TargetFramework>
 | 
					        <TargetFramework>net8.0</TargetFramework>
 | 
				
			||||||
        <ImplicitUsings>enable</ImplicitUsings>
 | 
					        <ImplicitUsings>enable</ImplicitUsings>
 | 
				
			||||||
        <Nullable>enable</Nullable>
 | 
					        <Nullable>enable</Nullable>
 | 
				
			||||||
        <LangVersion>default</LangVersion>
 | 
					        <LangVersion>default</LangVersion>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,26 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
					 | 
				
			||||||
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
 | 
					 | 
				
			||||||
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
 | 
					 | 
				
			||||||
             xmlns:local="clr-namespace:UI_MAUI"
 | 
					 | 
				
			||||||
             x:Class="UI_MAUI.App">
 | 
					 | 
				
			||||||
    <Application.Resources>
 | 
					 | 
				
			||||||
        <ResourceDictionary>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <Color x:Key="PageBackgroundColor">#512bdf</Color>
 | 
					 | 
				
			||||||
            <Color x:Key="PrimaryTextColor">White</Color>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <Style TargetType="Label">
 | 
					 | 
				
			||||||
                <Setter Property="TextColor" Value="{DynamicResource PrimaryTextColor}" />
 | 
					 | 
				
			||||||
                <Setter Property="FontFamily" Value="OpenSansRegular" />
 | 
					 | 
				
			||||||
            </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <Style TargetType="Button">
 | 
					 | 
				
			||||||
                <Setter Property="TextColor" Value="{DynamicResource PrimaryTextColor}" />
 | 
					 | 
				
			||||||
                <Setter Property="FontFamily" Value="OpenSansRegular" />
 | 
					 | 
				
			||||||
                <Setter Property="BackgroundColor" Value="#2b0b98" />
 | 
					 | 
				
			||||||
                <Setter Property="Padding" Value="14,10" />
 | 
					 | 
				
			||||||
            </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        </ResourceDictionary>
 | 
					 | 
				
			||||||
    </Application.Resources>
 | 
					 | 
				
			||||||
</Application>
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class App : Application
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	public App()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		this.InitializeComponent();
 | 
					 | 
				
			||||||
		this.MainPage = new MainPage();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
<div class="offcanvas offcanvas-bottom" tabindex="-1" id="@this.Name" aria-labelledby="@this.Name-Header" style="@this.AssistantHeight">
 | 
					 | 
				
			||||||
    <div class="offcanvas-header">
 | 
					 | 
				
			||||||
        <h4 class="offcanvas-title d-flex align-items-center" id="@this.Name-Header">
 | 
					 | 
				
			||||||
            @if (this.IsIconAvailable)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                <Icon Filename="@this.IconName" Size="35" Classes="me-2" AltText="@this.HeaderIconAltText"/>
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            @this.HeaderText
 | 
					 | 
				
			||||||
        </h4>
 | 
					 | 
				
			||||||
        <button class="btn btn-secondary" type="button" data-bs-toggle="offcanvas" data-bs-target="#@this.Name">
 | 
					 | 
				
			||||||
            Cancel
 | 
					 | 
				
			||||||
        </button>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    <div class="offcanvas-body">
 | 
					 | 
				
			||||||
        @this.ChildContent
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
@ -1,32 +0,0 @@
 | 
				
			|||||||
using Microsoft.AspNetCore.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class Assistant : ComponentBase
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string HeaderText { get; set; } = string.Empty;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string Name { get; set; } = "Assistant";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string IconName { get; set; } = string.Empty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public Height BaseHeight { get; set; } = new(60, 40, 50);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public readonly record struct Height(int Phone, int Desktop, int Tablet);
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public RenderFragment ChildContent { get; set; }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    private string AssistantHeight =>
 | 
					 | 
				
			||||||
        DeviceInfo.Idiom == DeviceIdiom.Phone ? $"--bs-offcanvas-height: {this.BaseHeight.Phone}vh;" :
 | 
					 | 
				
			||||||
        DeviceInfo.Idiom == DeviceIdiom.Tablet ? $"--bs-offcanvas-height: {this.BaseHeight.Tablet}vh;" :
 | 
					 | 
				
			||||||
        $"--bs-offcanvas-height: {this.BaseHeight.Desktop}vh;";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private string HeaderIconAltText => $"Icon: {this.HeaderText}";
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    private bool IsIconAvailable => !string.IsNullOrWhiteSpace(this.IconName);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<img src="icons/@this.Filename" class="d-inline-block @this.Classes" width="@this.Size" height="@this.Size" alt="@this.AltText" />
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
using Microsoft.AspNetCore.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class Icon : ComponentBase
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string Filename { get; set; } = string.Empty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string AltText { get; set; } = string.Empty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public ushort Size { get; set; } = 35;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string Classes { get; set; } = string.Empty;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,22 +0,0 @@
 | 
				
			|||||||
<li class="nav-item">
 | 
					 | 
				
			||||||
    @if (DeviceInfo.Idiom == DeviceIdiom.Desktop || DeviceInfo.Idiom == DeviceIdiom.Tablet)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <a class="nav-link active" aria-current="page" href="@this.Route">
 | 
					 | 
				
			||||||
            @if (this.ShowIcon)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                <Icon Filename="@this.IconFilename" Size="25" AltText="@this.AltText" />
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            <span class="ms-1 align-middle">@this.Text</span>
 | 
					 | 
				
			||||||
        </a>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <a class="nav-link active" aria-current="page" href="@this.Route" @onclick="@this.Navigate" data-bs-toggle="collapse" data-bs-target="#navbarContent">
 | 
					 | 
				
			||||||
            @if (this.ShowIcon)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                <Icon Filename="@this.IconFilename" Size="25" AltText="@this.AltText" />
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            <span class="ms-1 align-middle">@this.Text</span>
 | 
					 | 
				
			||||||
        </a>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</li>
 | 
					 | 
				
			||||||
@ -1,25 +0,0 @@
 | 
				
			|||||||
using Microsoft.AspNetCore.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class NavItem : ComponentBase
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string Route { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string Text { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public bool ShowIcon { get; set; } = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public string IconFilename { get; set; } = string.Empty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Inject]
 | 
					 | 
				
			||||||
    public NavigationManager NavigationManager { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private string AltText => $"Navigation: {this.Text}";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void Navigate() => this.NavigationManager.NavigateTo(this.Route);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,11 +0,0 @@
 | 
				
			|||||||
<Router AppAssembly="@typeof(Main).Assembly">
 | 
					 | 
				
			||||||
	<Found Context="routeData">
 | 
					 | 
				
			||||||
		<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
 | 
					 | 
				
			||||||
        <FocusOnNavigate RouteData="@routeData" Selector="h1" />
 | 
					 | 
				
			||||||
	</Found>
 | 
					 | 
				
			||||||
	<NotFound>
 | 
					 | 
				
			||||||
		<LayoutView Layout="@typeof(MainLayout)">
 | 
					 | 
				
			||||||
			<p role="alert">Sorry, there's nothing at this address.</p>
 | 
					 | 
				
			||||||
		</LayoutView>
 | 
					 | 
				
			||||||
	</NotFound>
 | 
					 | 
				
			||||||
</Router>
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8" ?>
 | 
					 | 
				
			||||||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
 | 
					 | 
				
			||||||
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
 | 
					 | 
				
			||||||
             xmlns:local="clr-namespace:UI_MAUI"
 | 
					 | 
				
			||||||
             x:Class="UI_MAUI.MainPage"
 | 
					 | 
				
			||||||
             BackgroundColor="{DynamicResource PageBackgroundColor}">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <BlazorWebView HostPage="wwwroot/index.html">
 | 
					 | 
				
			||||||
        <BlazorWebView.RootComponents>
 | 
					 | 
				
			||||||
            <RootComponent Selector="#app" ComponentType="{x:Type local:Main}" />
 | 
					 | 
				
			||||||
        </BlazorWebView.RootComponents>
 | 
					 | 
				
			||||||
    </BlazorWebView>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</ContentPage>
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class MainPage : ContentPage
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	public MainPage()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		this.InitializeComponent();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,51 +0,0 @@
 | 
				
			|||||||
using DataModel.Database.Common;
 | 
					 | 
				
			||||||
using Microsoft.Maui.LifecycleEvents;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if WINDOWS
 | 
					 | 
				
			||||||
using Microsoft.UI;
 | 
					 | 
				
			||||||
using Microsoft.UI.Windowing;
 | 
					 | 
				
			||||||
using Windows.Graphics;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public static class MauiProgram
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	public static MauiApp CreateMauiApp()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		var builder = MauiApp.CreateBuilder();
 | 
					 | 
				
			||||||
		builder.UseMauiApp<App>();
 | 
					 | 
				
			||||||
		builder.ConfigureFonts(fonts =>
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
#if WINDOWS
 | 
					 | 
				
			||||||
        builder.ConfigureLifecycleEvents(events =>
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            events.AddWindows(wndLifeCycleBuilder =>
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                wndLifeCycleBuilder.OnWindowCreated(window =>
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    var nativeWindowHandle = WinRT.Interop.WindowNative.GetWindowHandle(window);
 | 
					 | 
				
			||||||
                    var win32WindowsId = Win32Interop.GetWindowIdFromWindow(nativeWindowHandle);
 | 
					 | 
				
			||||||
                    var appWindow = AppWindow.GetFromWindowId(win32WindowsId);    
 | 
					 | 
				
			||||||
                    
 | 
					 | 
				
			||||||
                    const int width = 1366;
 | 
					 | 
				
			||||||
                    const int height = 768;
 | 
					 | 
				
			||||||
                    appWindow.ResizeClient(new SizeInt32(width, height));
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		builder.Services.AddMauiBlazorWebView();
 | 
					 | 
				
			||||||
		builder.Services.AddSingleton<DataContextFactory>();
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
#if DEBUG
 | 
					 | 
				
			||||||
		builder.Services.AddBlazorWebViewDeveloperTools();
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return builder.Build();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public readonly record struct NavigationTarget(string Text, string Route, string IconFilename)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    private static readonly NavigationTarget SETTINGS = new("Project settings", "settings", "settings.svg");
 | 
					 | 
				
			||||||
    private static readonly NavigationTarget TRANSLATION = new("Translation", "translation", "translation.svg");
 | 
					 | 
				
			||||||
    private static readonly NavigationTarget LOAD_PROJECT = new("Load Project", "load", "load.svg");
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public static IEnumerable<NavigationTarget> GetAll()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        yield return LOAD_PROJECT;
 | 
					 | 
				
			||||||
        yield return SETTINGS;
 | 
					 | 
				
			||||||
        yield return TRANSLATION;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@ -1,42 +0,0 @@
 | 
				
			|||||||
@page "/"
 | 
					 | 
				
			||||||
@page "/load"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<h1>Load a Project</h1>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<ul>
 | 
					 | 
				
			||||||
    @foreach (var recentProject in this.recentProjects)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <li>@recentProject.Path</li>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</ul>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<div>
 | 
					 | 
				
			||||||
    <button class="btn btn-secondary me-2 mb-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#Assistant">
 | 
					 | 
				
			||||||
        <Icon Filename="add-project.svg" Size="25" AltText="Icon: Create new project"/>
 | 
					 | 
				
			||||||
        Create new project
 | 
					 | 
				
			||||||
    </button>
 | 
					 | 
				
			||||||
    <button class="btn btn-secondary me-2 mb-2" type="button">
 | 
					 | 
				
			||||||
        <Icon Filename="load.svg" Size="25" AltText="Icon: Open project"/>
 | 
					 | 
				
			||||||
        Open project
 | 
					 | 
				
			||||||
    </button>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<Assistant HeaderText="Create new project" IconName="add-project.svg" BaseHeight="new Assistant.Height(40, 55, 40)">
 | 
					 | 
				
			||||||
    <div class="mb-3">
 | 
					 | 
				
			||||||
        <label for="projectName" class="form-label fw-bold">Project Name:</label>
 | 
					 | 
				
			||||||
        <input type="text" class="form-control" id="projectName" placeholder="Type a project name" @bind="this.newProjectName" @bind:event="oninput" @onkeydown="this.ReevaluateState">
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    @if (DeviceInfo.Idiom == DeviceIdiom.Desktop)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <div class="mb-3">
 | 
					 | 
				
			||||||
            <label for="projectPath" class="form-label fw-bold">Project destination:</label>
 | 
					 | 
				
			||||||
            <div class="input-group" id="projectPath">
 | 
					 | 
				
			||||||
                <button class="btn btn-primary" type="button" @onclick="@this.ChooseProjectDestination">Choose destination</button>
 | 
					 | 
				
			||||||
                <input type="text" class="form-control" value="@this.newProjectDestination" aria-label="The chosen project path" disabled readonly>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    <button class="btn btn-secondary" type="button" @onclick="this.CreateProject" disabled="@this.CannotCreateProject()">Create project</button>
 | 
					 | 
				
			||||||
</Assistant>
 | 
					 | 
				
			||||||
@ -1,88 +0,0 @@
 | 
				
			|||||||
using System.Text;
 | 
					 | 
				
			||||||
using System.Text.Json.Serialization;
 | 
					 | 
				
			||||||
using DataModel.Database.Common;
 | 
					 | 
				
			||||||
using Microsoft.AspNetCore.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Pages;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class LoadProject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    private readonly List<RecentProject> recentProjects = new();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Inject]
 | 
					 | 
				
			||||||
    public DataContextFactory DataContextFactory { get; set; }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    private string newProjectName = string.Empty;
 | 
					 | 
				
			||||||
    private string newProjectDestination = string.Empty;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #region Overrides of ComponentBase
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    protected override async Task OnInitializedAsync()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        await base.OnInitializedAsync();
 | 
					 | 
				
			||||||
        await this.LoadRecentProjects();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private readonly record struct RecentProject(string Path, string Name, bool Available);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private async Task LoadRecentProjects()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        var appDataDirectory = FileSystem.Current.AppDataDirectory;
 | 
					 | 
				
			||||||
        var recentProjectsFile = Path.Join(appDataDirectory, "recentProjects.json");
 | 
					 | 
				
			||||||
        if (!File.Exists(recentProjectsFile))
 | 
					 | 
				
			||||||
            await File.WriteAllTextAsync(recentProjectsFile, string.Empty, Encoding.UTF8);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Read the JSON data from that file & decode it to an array of recent projects:
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private async Task WriteRecentProjects()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private Task ChooseProjectDestination()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        try
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
#if WINDOWS
 | 
					 | 
				
			||||||
            return this.ChooseProjectDestinationWindows();
 | 
					 | 
				
			||||||
#elif MACCATALYST
 | 
					 | 
				
			||||||
            return this.ChooseProjectDestinationMacOS();
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
            return Task.CompletedTask;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        finally
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            this.StateHasChanged();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private Task CreateProject()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        // TODO: Need to wait for the project to be created. Afterwards, we need to close the dialog. Meanwhile, we need to show a loading indicator.
 | 
					 | 
				
			||||||
        #warning TODO: Create project
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
#if WINDOWS
 | 
					 | 
				
			||||||
        return this.CreateProjectWindows();
 | 
					 | 
				
			||||||
#elif MACCATALYST
 | 
					 | 
				
			||||||
        return Task.CompletedTask;
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
        return Task.CompletedTask;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private bool CannotCreateProject()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (DeviceInfo.Idiom == DeviceIdiom.Desktop)
 | 
					 | 
				
			||||||
            return string.IsNullOrWhiteSpace(this.newProjectName) || string.IsNullOrWhiteSpace(this.newProjectDestination);
 | 
					 | 
				
			||||||
        else if (DeviceInfo.Idiom == DeviceIdiom.Phone || DeviceInfo.Idiom == DeviceIdiom.Tablet)
 | 
					 | 
				
			||||||
            return string.IsNullOrWhiteSpace(this.newProjectName);
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    private void ReevaluateState() => this.StateHasChanged();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					 | 
				
			||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 | 
					 | 
				
			||||||
	<application android:allowBackup="true" android:icon="@mipmap/app" android:roundIcon="@mipmap/app_round" android:supportsRtl="true"></application>
 | 
					 | 
				
			||||||
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
					 | 
				
			||||||
	<uses-permission android:name="android.permission.INTERNET" />
 | 
					 | 
				
			||||||
</manifest>
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
using Android.App;
 | 
					 | 
				
			||||||
using Android.Content.PM;
 | 
					 | 
				
			||||||
using Android.OS;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
 | 
					 | 
				
			||||||
public class MainActivity : MauiAppCompatActivity
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
using Android.App;
 | 
					 | 
				
			||||||
using Android.Runtime;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Application]
 | 
					 | 
				
			||||||
public class MainApplication : MauiApplication
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public MainApplication(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
#if ANDROID
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Pages;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class LoadProject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					 | 
				
			||||||
<resources>
 | 
					 | 
				
			||||||
    <color name="colorPrimary">#512BD4</color>
 | 
					 | 
				
			||||||
    <color name="colorPrimaryDark">#2B0B98</color>
 | 
					 | 
				
			||||||
    <color name="colorAccent">#2B0B98</color>
 | 
					 | 
				
			||||||
</resources>
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
using Foundation;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Register("AppDelegate")]
 | 
					 | 
				
			||||||
public class AppDelegate : MauiUIApplicationDelegate
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,30 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					 | 
				
			||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
					 | 
				
			||||||
<plist version="1.0">
 | 
					 | 
				
			||||||
<dict>
 | 
					 | 
				
			||||||
	<key>UIDeviceFamily</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<integer>1</integer>
 | 
					 | 
				
			||||||
		<integer>2</integer>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>UIRequiredDeviceCapabilities</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<string>arm64</string>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>UISupportedInterfaceOrientations</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationPortrait</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeRight</string>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>UISupportedInterfaceOrientations~ipad</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationPortrait</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeRight</string>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>XSAppIconAssets</key>
 | 
					 | 
				
			||||||
	<string>Assets.xcassets/appicon.appiconset</string>
 | 
					 | 
				
			||||||
</dict>
 | 
					 | 
				
			||||||
</plist>
 | 
					 | 
				
			||||||
@ -1,13 +0,0 @@
 | 
				
			|||||||
#if MACCATALYST
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Pages;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class LoadProject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    private Task ChooseProjectDestinationMacOS()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return Task.CompletedTask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
using ObjCRuntime;
 | 
					 | 
				
			||||||
using UIKit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class Program
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // This is the main entry point of the application.
 | 
					 | 
				
			||||||
    static void Main(string[] args)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        // if you want to use a different Application Delegate class from "AppDelegate"
 | 
					 | 
				
			||||||
        // you can specify it here.
 | 
					 | 
				
			||||||
        UIApplication.Main(args, null, typeof(AppDelegate));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,8 +0,0 @@
 | 
				
			|||||||
<maui:MauiWinUIApplication
 | 
					 | 
				
			||||||
    x:Class="UI_MAUI.WinUI.App"
 | 
					 | 
				
			||||||
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
					 | 
				
			||||||
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
					 | 
				
			||||||
    xmlns:maui="using:Microsoft.Maui"
 | 
					 | 
				
			||||||
    xmlns:local="using:UI_MAUI.WinUI">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</maui:MauiWinUIApplication>
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
namespace UI_MAUI.WinUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// <summary>
 | 
					 | 
				
			||||||
/// Provides application-specific behavior to supplement the default Application class.
 | 
					 | 
				
			||||||
/// </summary>
 | 
					 | 
				
			||||||
public partial class App : MauiWinUIApplication
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    /// <summary>
 | 
					 | 
				
			||||||
    /// Initializes the singleton application object. This is the first line of authored code
 | 
					 | 
				
			||||||
    /// executed, and as such is the logical equivalent of main() or WinMain().
 | 
					 | 
				
			||||||
    /// </summary>
 | 
					 | 
				
			||||||
    public App()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        this.InitializeComponent();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,43 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					 | 
				
			||||||
<Package
 | 
					 | 
				
			||||||
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
 | 
					 | 
				
			||||||
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
 | 
					 | 
				
			||||||
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
 | 
					 | 
				
			||||||
  IgnorableNamespaces="uap rescap">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <Identity Name="maui-package-name-placeholder" Publisher="CN=User Name" Version="0.0.0.0" />
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <Properties>
 | 
					 | 
				
			||||||
    <DisplayName>$placeholder$</DisplayName>
 | 
					 | 
				
			||||||
    <PublisherDisplayName>User Name</PublisherDisplayName>
 | 
					 | 
				
			||||||
    <Logo>$placeholder$.png</Logo>
 | 
					 | 
				
			||||||
  </Properties>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <Dependencies>
 | 
					 | 
				
			||||||
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
 | 
					 | 
				
			||||||
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
 | 
					 | 
				
			||||||
  </Dependencies>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <Resources>
 | 
					 | 
				
			||||||
    <Resource Language="x-generate" />
 | 
					 | 
				
			||||||
  </Resources>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <Applications>
 | 
					 | 
				
			||||||
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$">
 | 
					 | 
				
			||||||
      <uap:VisualElements
 | 
					 | 
				
			||||||
        DisplayName="$placeholder$"
 | 
					 | 
				
			||||||
        Description="$placeholder$"
 | 
					 | 
				
			||||||
        Square150x150Logo="$placeholder$.png"
 | 
					 | 
				
			||||||
        Square44x44Logo="$placeholder$.png"
 | 
					 | 
				
			||||||
        BackgroundColor="transparent">
 | 
					 | 
				
			||||||
        <uap:DefaultTile Square71x71Logo="$placeholder$.png" Wide310x150Logo="$placeholder$.png" Square310x310Logo="$placeholder$.png" />
 | 
					 | 
				
			||||||
        <uap:SplashScreen Image="$placeholder$.png" />
 | 
					 | 
				
			||||||
      </uap:VisualElements>
 | 
					 | 
				
			||||||
    </Application>
 | 
					 | 
				
			||||||
  </Applications>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <Capabilities>
 | 
					 | 
				
			||||||
    <rescap:Capability Name="runFullTrust" />
 | 
					 | 
				
			||||||
  </Capabilities>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</Package>
 | 
					 | 
				
			||||||
@ -1,38 +0,0 @@
 | 
				
			|||||||
#if WINDOWS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Pages;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using Windows.Storage.Pickers;
 | 
					 | 
				
			||||||
using WindowsSavePicker = Windows.Storage.Pickers.FileSavePicker;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class LoadProject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    private async Task ChooseProjectDestinationWindows()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        var saveDialog = new WindowsSavePicker
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            CommitButtonText = "Create the project here",
 | 
					 | 
				
			||||||
            SuggestedStartLocation = PickerLocationId.DocumentsLibrary,
 | 
					 | 
				
			||||||
            FileTypeChoices =
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                new KeyValuePair<string, IList<string>>("I18N Commander Projects", new List<string> { ".i18nc" }),
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var hwnd = ((MauiWinUIWindow)App.Current.Windows[0].Handler.PlatformView).WindowHandle;
 | 
					 | 
				
			||||||
        WinRT.Interop.InitializeWithWindow.Initialize(saveDialog, hwnd);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var result = await saveDialog.PickSaveFileAsync();
 | 
					 | 
				
			||||||
        if(result is null)
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.newProjectDestination = result.Path;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private async Task CreateProjectWindows() => await Task.Run(() =>
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        this.DataContextFactory.CreateDataContext(this.newProjectDestination);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					 | 
				
			||||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
 | 
					 | 
				
			||||||
  <assemblyIdentity version="1.0.0.0" name="UI MAUI.WinUI.app"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
 | 
					 | 
				
			||||||
    <windowsSettings>
 | 
					 | 
				
			||||||
      <!-- The combination of below two tags have the following effect:
 | 
					 | 
				
			||||||
           1) Per-Monitor for >= Windows 10 Anniversary Update
 | 
					 | 
				
			||||||
           2) System < Windows 10 Anniversary Update
 | 
					 | 
				
			||||||
      -->
 | 
					 | 
				
			||||||
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
 | 
					 | 
				
			||||||
      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
 | 
					 | 
				
			||||||
    </windowsSettings>
 | 
					 | 
				
			||||||
  </application>
 | 
					 | 
				
			||||||
</assembly>
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
using Foundation;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Register("AppDelegate")]
 | 
					 | 
				
			||||||
public class AppDelegate : MauiUIApplicationDelegate
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,32 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					 | 
				
			||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
					 | 
				
			||||||
<plist version="1.0">
 | 
					 | 
				
			||||||
<dict>
 | 
					 | 
				
			||||||
	<key>LSRequiresIPhoneOS</key>
 | 
					 | 
				
			||||||
	<true/>
 | 
					 | 
				
			||||||
	<key>UIDeviceFamily</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<integer>1</integer>
 | 
					 | 
				
			||||||
		<integer>2</integer>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>UIRequiredDeviceCapabilities</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<string>arm64</string>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>UISupportedInterfaceOrientations</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationPortrait</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeRight</string>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>UISupportedInterfaceOrientations~ipad</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationPortrait</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeRight</string>
 | 
					 | 
				
			||||||
	</array>
 | 
					 | 
				
			||||||
	<key>XSAppIconAssets</key>
 | 
					 | 
				
			||||||
	<string>Assets.xcassets/appicon.appiconset</string>
 | 
					 | 
				
			||||||
</dict>
 | 
					 | 
				
			||||||
</plist>
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
#if IOS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI.Pages;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class LoadProject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
using ObjCRuntime;
 | 
					 | 
				
			||||||
using UIKit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_MAUI;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class Program
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // This is the main entry point of the application.
 | 
					 | 
				
			||||||
    static void Main(string[] args)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        // if you want to use a different Application Delegate class from "AppDelegate"
 | 
					 | 
				
			||||||
        // you can specify it here.
 | 
					 | 
				
			||||||
        UIApplication.Main(args, null, typeof(AppDelegate));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "profiles": {
 | 
					 | 
				
			||||||
    "Windows Machine": {
 | 
					 | 
				
			||||||
      "commandName": "MsixPackage",
 | 
					 | 
				
			||||||
      "nativeDebugging": false
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 12 48 30" width="512px" height="512px"><linearGradient id="gCW9sGJUkBnBLRc40wQXGa" x1="25.447" x2="44.728" y1="4.921" y2="36.29" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#42a3f2"/><stop offset="1" stop-color="#42a4eb"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGa)" d="M42,8H19l11,30h12c1.105,0,2-0.895,2-2V10C44,8.895,43.105,8,42,8z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGb" x1="3.865" x2="23.412" y1="9.86" y2="41.663" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d59b3"/><stop offset="1" stop-color="#195bbc"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGb)" d="M19,8H6c-1.105,0-2,0.895-2,2v26c0,1.105,0.895,2,2,2h8v7.998	c0,0.891,1.077,1.337,1.707,0.707L24.412,38H30L19,8z"/><path fill="#fff" d="M12,25h6v2h-6V25z"/><path fill="#fff" d="M12.109,29L15,20l2.906,9h2.11L16,17h-2l-4,12H12.109z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGc" x1="29.064" x2="38.79" y1="23.554" y2="23.554" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGc)" d="M29.064,27.223c0.061-0.031,4.994-3.219,7.936-9.115L38.79,19	c-3.082,6.25-7.457,9.292-8.509,10L29.064,27.223z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGd" x1="28" x2="40" y1="23.5" y2="23.5" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGd)" d="M38,29c0,0-5-2.583-7.769-6.998L32,21c2.333,3.833,6.981,6.26,6.981,6.26L38,29z M28,18h12v2	H28V18z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGe" x1="33" x2="35" y1="18" y2="18" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGe)" d="M33,16h2v4h-2V16z"/></svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
@ -1,15 +0,0 @@
 | 
				
			|||||||
Any raw assets you want to be deployed with your application can be placed in
 | 
					 | 
				
			||||||
this directory (and child directories). Deployment of the asset to your application
 | 
					 | 
				
			||||||
is automatically handled by the following `MauiAsset` Build Action within your `.csproj`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
These files will be deployed with you package and will be accessible using Essentials:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	async Task LoadMauiAsset()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
 | 
					 | 
				
			||||||
		using var reader = new StreamReader(stream);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		var contents = reader.ReadToEnd();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 48 48" width="512px" height="512px"><linearGradient id="gCW9sGJUkBnBLRc40wQXGa" x1="25.447" x2="44.728" y1="4.921" y2="36.29" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#42a3f2"/><stop offset="1" stop-color="#42a4eb"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGa)" d="M42,8H19l11,30h12c1.105,0,2-0.895,2-2V10C44,8.895,43.105,8,42,8z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGb" x1="3.865" x2="23.412" y1="9.86" y2="41.663" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d59b3"/><stop offset="1" stop-color="#195bbc"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGb)" d="M19,8H6c-1.105,0-2,0.895-2,2v26c0,1.105,0.895,2,2,2h8v7.998	c0,0.891,1.077,1.337,1.707,0.707L24.412,38H30L19,8z"/><path fill="#fff" d="M12,25h6v2h-6V25z"/><path fill="#fff" d="M12.109,29L15,20l2.906,9h2.11L16,17h-2l-4,12H12.109z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGc" x1="29.064" x2="38.79" y1="23.554" y2="23.554" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGc)" d="M29.064,27.223c0.061-0.031,4.994-3.219,7.936-9.115L38.79,19	c-3.082,6.25-7.457,9.292-8.509,10L29.064,27.223z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGd" x1="28" x2="40" y1="23.5" y2="23.5" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGd)" d="M38,29c0,0-5-2.583-7.769-6.998L32,21c2.333,3.833,6.981,6.26,6.981,6.26L38,29z M28,18h12v2	H28V18z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGe" x1="33" x2="35" y1="18" y2="18" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGe)" d="M33,16h2v4h-2V16z"/></svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
@ -1,44 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
					 | 
				
			||||||
<?xaml-comp compile="true" ?>
 | 
					 | 
				
			||||||
<ResourceDictionary 
 | 
					 | 
				
			||||||
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
 | 
					 | 
				
			||||||
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Color x:Key="Primary">#512BD4</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Secondary">#DFD8F7</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Tertiary">#2B0B98</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="White">White</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Black">Black</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray100">#E1E1E1</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray200">#C8C8C8</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray300">#ACACAC</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray400">#919191</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray500">#6E6E6E</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray600">#404040</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray900">#212121</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Gray950">#141414</Color>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="PrimaryBrush" Color="{StaticResource Primary}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="SecondaryBrush" Color="{StaticResource Secondary}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="TertiaryBrush" Color="{StaticResource Tertiary}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="WhiteBrush" Color="{StaticResource White}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="BlackBrush" Color="{StaticResource Black}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray100Brush" Color="{StaticResource Gray100}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray200Brush" Color="{StaticResource Gray200}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray300Brush" Color="{StaticResource Gray300}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray400Brush" Color="{StaticResource Gray400}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray500Brush" Color="{StaticResource Gray500}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray600Brush" Color="{StaticResource Gray600}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray900Brush" Color="{StaticResource Gray900}"/>
 | 
					 | 
				
			||||||
    <SolidColorBrush x:Key="Gray950Brush" Color="{StaticResource Gray950}"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Color x:Key="Yellow100Accent">#F7B548</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Yellow200Accent">#FFD590</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Yellow300Accent">#FFE5B9</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Cyan100Accent">#28C2D1</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Cyan200Accent">#7BDDEF</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Cyan300Accent">#C3F2F4</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Blue100Accent">#3E8EED</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Blue200Accent">#72ACF1</Color>
 | 
					 | 
				
			||||||
    <Color x:Key="Blue300Accent">#A7CBF6</Color>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</ResourceDictionary>
 | 
					 | 
				
			||||||
@ -1,384 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
					 | 
				
			||||||
<?xaml-comp compile="true" ?>
 | 
					 | 
				
			||||||
<ResourceDictionary 
 | 
					 | 
				
			||||||
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
 | 
					 | 
				
			||||||
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="ActivityIndicator">
 | 
					 | 
				
			||||||
        <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="IndicatorView">
 | 
					 | 
				
			||||||
        <Setter Property="IndicatorColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}"/>
 | 
					 | 
				
			||||||
        <Setter Property="SelectedIndicatorColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray100}}"/>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Border">
 | 
					 | 
				
			||||||
        <Setter Property="Stroke" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
 | 
					 | 
				
			||||||
        <Setter Property="StrokeShape" Value="Rectangle"/>
 | 
					 | 
				
			||||||
        <Setter Property="StrokeThickness" Value="1"/>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="BoxView">
 | 
					 | 
				
			||||||
        <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Button">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Primary}}" />
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14"/>
 | 
					 | 
				
			||||||
        <Setter Property="CornerRadius" Value="8"/>
 | 
					 | 
				
			||||||
        <Setter Property="Padding" Value="14,10"/>
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
                            <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="CheckBox">
 | 
					 | 
				
			||||||
        <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="DatePicker">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="Transparent" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14"/>
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Editor">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="Transparent" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14" />
 | 
					 | 
				
			||||||
        <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Entry">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="Transparent" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14" />
 | 
					 | 
				
			||||||
        <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Frame">
 | 
					 | 
				
			||||||
        <Setter Property="HasShadow" Value="False" />
 | 
					 | 
				
			||||||
        <Setter Property="BorderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray950}}" />
 | 
					 | 
				
			||||||
        <Setter Property="CornerRadius" Value="8" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="ImageButton">
 | 
					 | 
				
			||||||
        <Setter Property="Opacity" Value="1" />
 | 
					 | 
				
			||||||
        <Setter Property="BorderColor" Value="Transparent"/>
 | 
					 | 
				
			||||||
        <Setter Property="BorderWidth" Value="0"/>
 | 
					 | 
				
			||||||
        <Setter Property="CornerRadius" Value="0"/>
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="Opacity" Value="0.5" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Label">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular" />
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="ListView">
 | 
					 | 
				
			||||||
        <Setter Property="SeparatorColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
 | 
					 | 
				
			||||||
        <Setter Property="RefreshControlColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Picker">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="TitleColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="Transparent" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14"/>
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                            <Setter Property="TitleColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="ProgressBar">
 | 
					 | 
				
			||||||
        <Setter Property="ProgressColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="ProgressColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="RadioButton">
 | 
					 | 
				
			||||||
        <Setter Property="Background" Value="Transparent"/>
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14"/>
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="RefreshView">
 | 
					 | 
				
			||||||
        <Setter Property="RefreshColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="SearchBar">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="PlaceholderColor" Value="{StaticResource Gray500}" />
 | 
					 | 
				
			||||||
        <Setter Property="CancelButtonColor" Value="{StaticResource Gray500}" />
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="Transparent" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular" />
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                            <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="SearchHandler">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="PlaceholderColor" Value="{StaticResource Gray500}" />
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="Transparent" />
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular" />
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                            <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Shadow">
 | 
					 | 
				
			||||||
        <Setter Property="Radius" Value="15" />
 | 
					 | 
				
			||||||
        <Setter Property="Opacity" Value="0.5" />
 | 
					 | 
				
			||||||
        <Setter Property="Brush" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Offset" Value="10,10" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Slider">
 | 
					 | 
				
			||||||
        <Setter Property="MinimumTrackColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="MaximumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
        <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="MinimumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/>
 | 
					 | 
				
			||||||
                            <Setter Property="MaximumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/>
 | 
					 | 
				
			||||||
                            <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/>
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="SwipeItem">
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Switch">
 | 
					 | 
				
			||||||
        <Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="ThumbColor" Value="{StaticResource White}" />
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                            <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                    <VisualState x:Name="On">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Secondary}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
                            <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Off">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray400}, Dark={StaticResource Gray500}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="TimePicker">
 | 
					 | 
				
			||||||
        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Background" Value="Transparent"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontFamily" Value="OpenSansRegular"/>
 | 
					 | 
				
			||||||
        <Setter Property="FontSize" Value="14"/>
 | 
					 | 
				
			||||||
        <Setter Property="VisualStateManager.VisualStateGroups">
 | 
					 | 
				
			||||||
            <VisualStateGroupList>
 | 
					 | 
				
			||||||
                <VisualStateGroup x:Name="CommonStates">
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Normal" />
 | 
					 | 
				
			||||||
                    <VisualState x:Name="Disabled">
 | 
					 | 
				
			||||||
                        <VisualState.Setters>
 | 
					 | 
				
			||||||
                            <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
 | 
					 | 
				
			||||||
                        </VisualState.Setters>
 | 
					 | 
				
			||||||
                    </VisualState>
 | 
					 | 
				
			||||||
                </VisualStateGroup>
 | 
					 | 
				
			||||||
            </VisualStateGroupList>
 | 
					 | 
				
			||||||
        </Setter>
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Page" ApplyToDerivedTypes="True">
 | 
					 | 
				
			||||||
        <Setter Property="Padding" Value="0"/>
 | 
					 | 
				
			||||||
        <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="Shell" ApplyToDerivedTypes="True">
 | 
					 | 
				
			||||||
        <Setter Property="Shell.BackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Gray950}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.ForegroundColor" Value="{OnPlatform WinUI={StaticResource Primary}, Default={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.TitleColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.DisabledColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray950}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.UnselectedColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.NavBarHasShadow" Value="False" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.TabBarBackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.TabBarForegroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.TabBarTitleColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="Shell.TabBarUnselectedColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="NavigationPage">
 | 
					 | 
				
			||||||
        <Setter Property="BarBackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Gray950}}" />
 | 
					 | 
				
			||||||
        <Setter Property="BarTextColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="IconColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <Style TargetType="TabbedPage">
 | 
					 | 
				
			||||||
        <Setter Property="BarBackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Gray950}}" />
 | 
					 | 
				
			||||||
        <Setter Property="BarTextColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
 | 
					 | 
				
			||||||
        <Setter Property="UnselectedTabColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray950}}" />
 | 
					 | 
				
			||||||
        <Setter Property="SelectedTabColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
 | 
					 | 
				
			||||||
    </Style>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</ResourceDictionary>
 | 
					 | 
				
			||||||
@ -1,25 +0,0 @@
 | 
				
			|||||||
@inherits LayoutComponentBase
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<nav class="navbar navbar-dark bg-dark navbar-expand-sm p-0">
 | 
					 | 
				
			||||||
    <div class="container-fluid ps-1">
 | 
					 | 
				
			||||||
        <div class="navbar-brand p-0">
 | 
					 | 
				
			||||||
            <Icon Filename="translation.svg" Size="35" AltText="App Icon" />
 | 
					 | 
				
			||||||
            <span class="fw-bold">I18N</span> <span class="fs-6">Commander</span>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
        <button class="navbar-toggler p-0 my-1" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
 | 
					 | 
				
			||||||
            <Icon Filename="nav-toggle.svg" AltText="Toggles menu" Size="35" />
 | 
					 | 
				
			||||||
        </button>
 | 
					 | 
				
			||||||
        <div class="collapse navbar-collapse" id="navbarContent">
 | 
					 | 
				
			||||||
            <ul class="navbar-nav me-auto">
 | 
					 | 
				
			||||||
                @foreach (var (text, route, iconFilename) in NavigationTarget.GetAll())
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    <NavItem Text="@text" Route="@route" ShowIcon="@(!string.IsNullOrWhiteSpace(iconFilename))" IconFilename="@iconFilename" />
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            </ul>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
</nav>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<div class="container-fluid">
 | 
					 | 
				
			||||||
    @Body
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
@ -1,52 +0,0 @@
 | 
				
			|||||||
<Project Sdk="Microsoft.NET.Sdk.Razor">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<PropertyGroup>
 | 
					 | 
				
			||||||
		<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
 | 
					 | 
				
			||||||
		<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
 | 
					 | 
				
			||||||
    	<OutputType>Exe</OutputType>
 | 
					 | 
				
			||||||
		<AssemblyName>I18N Commander</AssemblyName>
 | 
					 | 
				
			||||||
		<RootNamespace>UI_MAUI</RootNamespace>
 | 
					 | 
				
			||||||
		<UseMaui>true</UseMaui>
 | 
					 | 
				
			||||||
		<SingleProject>true</SingleProject>
 | 
					 | 
				
			||||||
		<ImplicitUsings>enable</ImplicitUsings>
 | 
					 | 
				
			||||||
		<EnableDefaultCssItems>false</EnableDefaultCssItems>
 | 
					 | 
				
			||||||
		<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<!-- Display name -->
 | 
					 | 
				
			||||||
		<ApplicationTitle>I18N Commander</ApplicationTitle>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<!-- App Identifier -->
 | 
					 | 
				
			||||||
		<ApplicationId>org.tsommer.i18n-commander</ApplicationId>
 | 
					 | 
				
			||||||
		<ApplicationIdGuid>6D8A5F75-4C32-4807-AC75-CD934671D139</ApplicationIdGuid>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<!-- Versions -->
 | 
					 | 
				
			||||||
		<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
 | 
					 | 
				
			||||||
		<ApplicationVersion>1</ApplicationVersion>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion>
 | 
					 | 
				
			||||||
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
 | 
					 | 
				
			||||||
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">23.0</SupportedOSPlatformVersion>
 | 
					 | 
				
			||||||
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
 | 
					 | 
				
			||||||
		<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
 | 
					 | 
				
			||||||
  </PropertyGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<ItemGroup>
 | 
					 | 
				
			||||||
		<!-- App Icon -->
 | 
					 | 
				
			||||||
		<MauiIcon Include="Resources\AppIcon\app.svg" />
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<!-- Splash Screen -->
 | 
					 | 
				
			||||||
		<MauiSplashScreen Include="Resources\Splash\splash.svg" BaseSize="128,128" />
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		<!-- Custom Fonts -->
 | 
					 | 
				
			||||||
		<MauiFont Include="Resources\Fonts\*" />
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<!-- Raw Assets (also remove the "Resources\Raw" prefix) -->
 | 
					 | 
				
			||||||
		<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
 | 
					 | 
				
			||||||
	</ItemGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<ItemGroup>
 | 
					 | 
				
			||||||
	  <ProjectReference Include="..\DataModel\DataModel.csproj" />
 | 
					 | 
				
			||||||
	  <ProjectReference Include="..\Processor\Processor.csproj" />
 | 
					 | 
				
			||||||
	</ItemGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</Project>
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
@using System.Net.Http
 | 
					 | 
				
			||||||
@using Microsoft.AspNetCore.Components.Forms
 | 
					 | 
				
			||||||
@using Microsoft.AspNetCore.Components.Routing
 | 
					 | 
				
			||||||
@using Microsoft.AspNetCore.Components.Web
 | 
					 | 
				
			||||||
@using Microsoft.AspNetCore.Components.Web.Virtualization
 | 
					 | 
				
			||||||
@using Microsoft.JSInterop
 | 
					 | 
				
			||||||
@using UI_MAUI
 | 
					 | 
				
			||||||
@using UI_MAUI.Shared
 | 
					 | 
				
			||||||
@using UI_MAUI.Components;
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
<svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 48 48" width="512px" height="512px"><linearGradient id="PJGLEK~gN3IlHg2NgKbnSa" x1="24" x2="24" y1="654.016" y2="645.747" gradientTransform="matrix(1 0 0 -1 0 660.724)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#eba600"/><stop offset="1" stop-color="#c28200"/></linearGradient><path fill="url(#PJGLEK~gN3IlHg2NgKbnSa)" d="M24.414,10.414l-2.536-2.536C21.316,7.316,20.553,7,19.757,7H5C3.895,7,3,7.895,3,9v30 c0,1.105,0.895,2,2,2h38c1.105,0,2-0.895,2-2V13c0-1.105-0.895-2-2-2H25.828C25.298,11,24.789,10.789,24.414,10.414z"/><linearGradient id="PJGLEK~gN3IlHg2NgKbnSb" x1="24" x2="24" y1="649.87" y2="619.741" gradientTransform="matrix(1 0 0 -1 0 660.724)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffd869"/><stop offset="1" stop-color="#fec52b"/></linearGradient><path fill="url(#PJGLEK~gN3IlHg2NgKbnSb)" d="M21.586,14.414l3.268-3.268C24.947,11.053,25.074,11,25.207,11H43c1.105,0,2,0.895,2,2v26 c0,1.105-0.895,2-2,2H5c-1.105,0-2-0.895-2-2V15.5C3,15.224,3.224,15,3.5,15h16.672C20.702,15,21.211,14.789,21.586,14.414z"/><linearGradient id="PJGLEK~gN3IlHg2NgKbnSc" x1="28" x2="48" y1="409.276" y2="409.276" gradientTransform="translate(0 -371.276)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#21ad64"/><stop offset="1" stop-color="#088242"/></linearGradient><circle cx="38" cy="38" r="10" fill="url(#PJGLEK~gN3IlHg2NgKbnSc)"/><path fill="#fff" d="M38.5,43h-1c-0.276,0-0.5-0.224-0.5-0.5v-9c0-0.276,0.224-0.5,0.5-0.5h1c0.276,0,0.5,0.224,0.5,0.5 v9C39,42.776,38.776,43,38.5,43z"/><path fill="#fff" d="M33,38.5v-1c0-0.276,0.224-0.5,0.5-0.5h9c0.276,0,0.5,0.224,0.5,0.5v1c0,0.276-0.224,0.5-0.5,0.5h-9 C33.224,39,33,38.776,33,38.5z"/></svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 1.7 KiB  | 
@ -1 +0,0 @@
 | 
				
			|||||||
<svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 48 48" width="512px" height="512px"><path fill="#ffa000" d="M40,12H22l-4-4H8c-2.199,0-4,1.801-4,4v8h40v-4C44,13.801,42.199,12,40,12z"/><path fill="#ffca28" d="M40,12H8c-2.199,0-4,1.801-4,4v20c0,2.199,1.801,4,4,4h32c2.199,0,4-1.801,4-4V16 C44,13.801,42.199,12,40,12z"/><rect width="2" height="14.142" x="28" y="22.929" fill="#616161" transform="rotate(-45.001 29 30)"/><rect width="2" height="4.243" x="31.5" y="31.379" fill="#37474f" transform="rotate(-45.001 32.5 33.5)"/><path fill="#616161" d="M31,25c0,3.866-3.134,7-7,7s-7-3.134-7-7s3.134-7,7-7S31,21.134,31,25z"/><path fill="#64b5f6" d="M29,25c0,2.761-2.239,5-5,5s-5-2.239-5-5s2.239-5,5-5S29,22.239,29,25z"/></svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 723 B  | 
@ -1 +0,0 @@
 | 
				
			|||||||
<svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 48 48" width="512px" height="512px"><path fill="#546E7A" d="M6 14H42V18H6zM6 22H42V26H6zM6 30H42V34H6z"/><path fill="#2196F3" d="M24,45l-7-6.976h14L24,45z"/></svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 217 B  | 
@ -1 +0,0 @@
 | 
				
			|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="480px" height="480px"><path fill="#607D8B" d="M39.6,27.2c0.1-0.7,0.2-1.4,0.2-2.2s-0.1-1.5-0.2-2.2l4.5-3.2c0.4-0.3,0.6-0.9,0.3-1.4L40,10.8c-0.3-0.5-0.8-0.7-1.3-0.4l-5,2.3c-1.2-0.9-2.4-1.6-3.8-2.2l-0.5-5.5c-0.1-0.5-0.5-0.9-1-0.9h-8.6c-0.5,0-1,0.4-1,0.9l-0.5,5.5c-1.4,0.6-2.7,1.3-3.8,2.2l-5-2.3c-0.5-0.2-1.1,0-1.3,0.4l-4.3,7.4c-0.3,0.5-0.1,1.1,0.3,1.4l4.5,3.2c-0.1,0.7-0.2,1.4-0.2,2.2s0.1,1.5,0.2,2.2L4,30.4c-0.4,0.3-0.6,0.9-0.3,1.4L8,39.2c0.3,0.5,0.8,0.7,1.3,0.4l5-2.3c1.2,0.9,2.4,1.6,3.8,2.2l0.5,5.5c0.1,0.5,0.5,0.9,1,0.9h8.6c0.5,0,1-0.4,1-0.9l0.5-5.5c1.4-0.6,2.7-1.3,3.8-2.2l5,2.3c0.5,0.2,1.1,0,1.3-0.4l4.3-7.4c0.3-0.5,0.1-1.1-0.3-1.4L39.6,27.2z M24,35c-5.5,0-10-4.5-10-10c0-5.5,4.5-10,10-10c5.5,0,10,4.5,10,10C34,30.5,29.5,35,24,35z"/><path fill="#455A64" d="M24,13c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C36,18.4,30.6,13,24,13z M24,30c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5s5,2.2,5,5C29,27.8,26.8,30,24,30z"/></svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 990 B  | 
@ -1 +0,0 @@
 | 
				
			|||||||
<svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 48 48" width="512px" height="512px"><linearGradient id="gCW9sGJUkBnBLRc40wQXGa" x1="25.447" x2="44.728" y1="4.921" y2="36.29" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#42a3f2"/><stop offset="1" stop-color="#42a4eb"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGa)" d="M42,8H19l11,30h12c1.105,0,2-0.895,2-2V10C44,8.895,43.105,8,42,8z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGb" x1="3.865" x2="23.412" y1="9.86" y2="41.663" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1d59b3"/><stop offset="1" stop-color="#195bbc"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGb)" d="M19,8H6c-1.105,0-2,0.895-2,2v26c0,1.105,0.895,2,2,2h8v7.998	c0,0.891,1.077,1.337,1.707,0.707L24.412,38H30L19,8z"/><path fill="#fff" d="M12,25h6v2h-6V25z"/><path fill="#fff" d="M12.109,29L15,20l2.906,9h2.11L16,17h-2l-4,12H12.109z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGc" x1="29.064" x2="38.79" y1="23.554" y2="23.554" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGc)" d="M29.064,27.223c0.061-0.031,4.994-3.219,7.936-9.115L38.79,19	c-3.082,6.25-7.457,9.292-8.509,10L29.064,27.223z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGd" x1="28" x2="40" y1="23.5" y2="23.5" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGd)" d="M38,29c0,0-5-2.583-7.769-6.998L32,21c2.333,3.833,6.981,6.26,6.981,6.26L38,29z M28,18h12v2	H28V18z"/><linearGradient id="gCW9sGJUkBnBLRc40wQXGe" x1="33" x2="35" y1="18" y2="18" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#11408a"/><stop offset="1" stop-color="#103f8f"/></linearGradient><path fill="url(#gCW9sGJUkBnBLRc40wQXGe)" d="M33,16h2v4h-2V16z"/></svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
@ -1,18 +0,0 @@
 | 
				
			|||||||
<!DOCTYPE html>
 | 
					 | 
				
			||||||
<html lang="en">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
    <meta charset="utf-8" />
 | 
					 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
 | 
					 | 
				
			||||||
	<title>I18N Commander</title>
 | 
					 | 
				
			||||||
	<base href="/" />
 | 
					 | 
				
			||||||
	<link rel="stylesheet" href="css/bootstrap.min.css" />
 | 
					 | 
				
			||||||
	<link rel="stylesheet" href="css/app.css" />
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<body>
 | 
					 | 
				
			||||||
	<div id="app">Loading...</div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<script src="js/bootstrap.bundle.min.js"></script>
 | 
					 | 
				
			||||||
	<script src="_framework/blazor.webview.js" autostart="false"></script>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
@ -1,76 +0,0 @@
 | 
				
			|||||||
using DataModel.Database;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_WinForms;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
internal static class AppEvents
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    static AppEvents()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        AppEvents.AddSomethingHandlers();   
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    internal static void ResetAllSubscriptions()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        WhenSettingsChanged = null;
 | 
					 | 
				
			||||||
        WhenSectionChanged = null;
 | 
					 | 
				
			||||||
        WhenTextElementChanged = null;
 | 
					 | 
				
			||||||
        WhenTranslationChanged = null;
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        AppEvents.AddSomethingHandlers();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    #region Event: Settings changed
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    internal static event EventHandler? WhenSettingsChanged;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    internal static void SettingsChanged() => WhenSettingsChanged?.Invoke(null, EventArgs.Empty);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #endregion
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    #region Event: Section was changed
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Section changed event which can be subscribed:
 | 
					 | 
				
			||||||
    internal static event EventHandler<Section>? WhenSectionChanged;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // Method to raise the section changed event:
 | 
					 | 
				
			||||||
    internal static void SectionChanged(Section section) => WhenSectionChanged?.Invoke(null, section);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #region Event: Text element was changed
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Text element changed event which can be subscribed:
 | 
					 | 
				
			||||||
    internal static event EventHandler<TextElement?>? WhenTextElementChanged;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // Method to raise the text element changed event:
 | 
					 | 
				
			||||||
    internal static void TextElementChanged(TextElement? textElement) => WhenTextElementChanged?.Invoke(null, textElement);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #region Translation was changed
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Translation changed event which can be subscribed:
 | 
					 | 
				
			||||||
    internal static event EventHandler<Translation?>? WhenTranslationChanged;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // Method to raise the translation changed event:
 | 
					 | 
				
			||||||
    internal static void TranslationChanged(Translation? translation) => WhenTranslationChanged?.Invoke(null, translation);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #region Event: Something was changed
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    internal static event EventHandler? WhenSomethingChanged;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    internal static void SomethingChanged() => WhenSomethingChanged?.Invoke(null, EventArgs.Empty);
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    private static void AddSomethingHandlers()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        // Raise the something event when any of the other change-events are raised:
 | 
					 | 
				
			||||||
        WhenSectionChanged += (sender, args) => WhenSomethingChanged?.Invoke(sender, EventArgs.Empty);
 | 
					 | 
				
			||||||
        WhenTextElementChanged += (sender, args) => WhenSomethingChanged?.Invoke(sender, EventArgs.Empty);
 | 
					 | 
				
			||||||
        WhenTranslationChanged += (sender, args) => WhenSomethingChanged?.Invoke(sender, EventArgs.Empty);
 | 
					 | 
				
			||||||
        WhenSettingsChanged += (sender, args) => WhenSomethingChanged?.Invoke(sender, EventArgs.Empty);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #endregion
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,185 +0,0 @@
 | 
				
			|||||||
namespace UI_WinForms.Components
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    partial class LoaderStart
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        /// <summary> 
 | 
					 | 
				
			||||||
        /// Required designer variable.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        private System.ComponentModel.IContainer components = null;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary> 
 | 
					 | 
				
			||||||
        /// Clean up any resources being used.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
 | 
					 | 
				
			||||||
        protected override void Dispose(bool disposing)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            if (disposing && (components != null))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                components.Dispose();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            base.Dispose(disposing);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #region Component Designer generated code
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary> 
 | 
					 | 
				
			||||||
        /// Required method for Designer support - do not modify 
 | 
					 | 
				
			||||||
        /// the contents of this method with the code editor.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        private void InitializeComponent()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            this.components = new System.ComponentModel.Container();
 | 
					 | 
				
			||||||
            this.tableLayout = new System.Windows.Forms.TableLayoutPanel();
 | 
					 | 
				
			||||||
            this.pictureBox = new System.Windows.Forms.PictureBox();
 | 
					 | 
				
			||||||
            this.labelTitle = new System.Windows.Forms.Label();
 | 
					 | 
				
			||||||
            this.flowLayoutButtons = new System.Windows.Forms.FlowLayoutPanel();
 | 
					 | 
				
			||||||
            this.buttonNew = new System.Windows.Forms.Button();
 | 
					 | 
				
			||||||
            this.buttonOpen = new System.Windows.Forms.Button();
 | 
					 | 
				
			||||||
            this.labelVersion = new System.Windows.Forms.Label();
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects = new System.Windows.Forms.ContextMenuStrip(this.components);
 | 
					 | 
				
			||||||
            this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
 | 
					 | 
				
			||||||
            this.tableLayout.SuspendLayout();
 | 
					 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.SuspendLayout();
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.SuspendLayout();
 | 
					 | 
				
			||||||
            this.SuspendLayout();
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // tableLayout
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.tableLayout.ColumnCount = 4;
 | 
					 | 
				
			||||||
            this.tableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
 | 
					 | 
				
			||||||
            this.tableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 128F));
 | 
					 | 
				
			||||||
            this.tableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 360F));
 | 
					 | 
				
			||||||
            this.tableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
 | 
					 | 
				
			||||||
            this.tableLayout.Controls.Add(this.pictureBox, 1, 1);
 | 
					 | 
				
			||||||
            this.tableLayout.Controls.Add(this.labelTitle, 2, 1);
 | 
					 | 
				
			||||||
            this.tableLayout.Controls.Add(this.flowLayoutButtons, 1, 2);
 | 
					 | 
				
			||||||
            this.tableLayout.Controls.Add(this.labelVersion, 1, 3);
 | 
					 | 
				
			||||||
            this.tableLayout.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.tableLayout.Location = new System.Drawing.Point(0, 0);
 | 
					 | 
				
			||||||
            this.tableLayout.Name = "tableLayout";
 | 
					 | 
				
			||||||
            this.tableLayout.RowCount = 5;
 | 
					 | 
				
			||||||
            this.tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
 | 
					 | 
				
			||||||
            this.tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 128F));
 | 
					 | 
				
			||||||
            this.tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 66F));
 | 
					 | 
				
			||||||
            this.tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));
 | 
					 | 
				
			||||||
            this.tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
 | 
					 | 
				
			||||||
            this.tableLayout.Size = new System.Drawing.Size(937, 465);
 | 
					 | 
				
			||||||
            this.tableLayout.TabIndex = 0;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // pictureBox
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.pictureBox.Image = global::UI_WinForms.Resources.Icons.icons8_language_512;
 | 
					 | 
				
			||||||
            this.pictureBox.Location = new System.Drawing.Point(227, 118);
 | 
					 | 
				
			||||||
            this.pictureBox.Name = "pictureBox";
 | 
					 | 
				
			||||||
            this.pictureBox.Size = new System.Drawing.Size(122, 122);
 | 
					 | 
				
			||||||
            this.pictureBox.TabIndex = 0;
 | 
					 | 
				
			||||||
            this.pictureBox.TabStop = false;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // labelTitle
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.labelTitle.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.labelTitle.Font = new System.Drawing.Font("Segoe UI", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.labelTitle.Location = new System.Drawing.Point(355, 115);
 | 
					 | 
				
			||||||
            this.labelTitle.Name = "labelTitle";
 | 
					 | 
				
			||||||
            this.labelTitle.Size = new System.Drawing.Size(354, 128);
 | 
					 | 
				
			||||||
            this.labelTitle.TabIndex = 1;
 | 
					 | 
				
			||||||
            this.labelTitle.Text = "I18N Commander";
 | 
					 | 
				
			||||||
            this.labelTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // flowLayoutButtons
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.tableLayout.SetColumnSpan(this.flowLayoutButtons, 2);
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.Controls.Add(this.buttonNew);
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.Controls.Add(this.buttonOpen);
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.Location = new System.Drawing.Point(224, 243);
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.Margin = new System.Windows.Forms.Padding(0);
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.Name = "flowLayoutButtons";
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.Size = new System.Drawing.Size(488, 66);
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.TabIndex = 2;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // buttonNew
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.buttonNew.Image = global::UI_WinForms.Resources.Icons.icons8_new_window_512;
 | 
					 | 
				
			||||||
            this.buttonNew.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
 | 
					 | 
				
			||||||
            this.buttonNew.Location = new System.Drawing.Point(3, 3);
 | 
					 | 
				
			||||||
            this.buttonNew.Name = "buttonNew";
 | 
					 | 
				
			||||||
            this.buttonNew.Size = new System.Drawing.Size(200, 60);
 | 
					 | 
				
			||||||
            this.buttonNew.TabIndex = 0;
 | 
					 | 
				
			||||||
            this.buttonNew.Text = "New Project";
 | 
					 | 
				
			||||||
            this.buttonNew.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
 | 
					 | 
				
			||||||
            this.buttonNew.UseVisualStyleBackColor = true;
 | 
					 | 
				
			||||||
            this.buttonNew.Click += new System.EventHandler(this.buttonNew_Click);
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // buttonOpen
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.buttonOpen.Image = global::UI_WinForms.Resources.Icons.icons8_open_file_under_cursor_512;
 | 
					 | 
				
			||||||
            this.buttonOpen.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
 | 
					 | 
				
			||||||
            this.buttonOpen.Location = new System.Drawing.Point(209, 3);
 | 
					 | 
				
			||||||
            this.buttonOpen.Name = "buttonOpen";
 | 
					 | 
				
			||||||
            this.buttonOpen.Size = new System.Drawing.Size(259, 60);
 | 
					 | 
				
			||||||
            this.buttonOpen.TabIndex = 1;
 | 
					 | 
				
			||||||
            this.buttonOpen.Text = "Open Recent Project";
 | 
					 | 
				
			||||||
            this.buttonOpen.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
 | 
					 | 
				
			||||||
            this.buttonOpen.UseVisualStyleBackColor = true;
 | 
					 | 
				
			||||||
            this.buttonOpen.Click += new System.EventHandler(this.buttonOpen_Click);
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // labelVersion
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.labelVersion.AutoSize = true;
 | 
					 | 
				
			||||||
            this.labelVersion.BackColor = System.Drawing.Color.LightGray;
 | 
					 | 
				
			||||||
            this.tableLayout.SetColumnSpan(this.labelVersion, 2);
 | 
					 | 
				
			||||||
            this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.labelVersion.Location = new System.Drawing.Point(227, 309);
 | 
					 | 
				
			||||||
            this.labelVersion.Name = "labelVersion";
 | 
					 | 
				
			||||||
            this.labelVersion.Size = new System.Drawing.Size(482, 40);
 | 
					 | 
				
			||||||
            this.labelVersion.TabIndex = 3;
 | 
					 | 
				
			||||||
            this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // contextMenuRecentProjects
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.ImageScalingSize = new System.Drawing.Size(20, 20);
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
 | 
					 | 
				
			||||||
            this.toolStripMenuItem1});
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.Name = "contextMenuRecentProjects";
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.Size = new System.Drawing.Size(73, 26);
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.Closing += new System.Windows.Forms.ToolStripDropDownClosingEventHandler(this.contextMenuRecentProjects_Closing);
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // toolStripMenuItem1
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.toolStripMenuItem1.Name = "toolStripMenuItem1";
 | 
					 | 
				
			||||||
            this.toolStripMenuItem1.Size = new System.Drawing.Size(72, 22);
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // LoaderStart
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F);
 | 
					 | 
				
			||||||
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
 | 
					 | 
				
			||||||
            this.Controls.Add(this.tableLayout);
 | 
					 | 
				
			||||||
            this.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.Name = "LoaderStart";
 | 
					 | 
				
			||||||
            this.Size = new System.Drawing.Size(937, 465);
 | 
					 | 
				
			||||||
            this.tableLayout.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.tableLayout.PerformLayout();
 | 
					 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
 | 
					 | 
				
			||||||
            this.flowLayoutButtons.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.ResumeLayout(false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        private TableLayoutPanel tableLayout;
 | 
					 | 
				
			||||||
        private PictureBox pictureBox;
 | 
					 | 
				
			||||||
        private Label labelTitle;
 | 
					 | 
				
			||||||
        private FlowLayoutPanel flowLayoutButtons;
 | 
					 | 
				
			||||||
        private Button buttonNew;
 | 
					 | 
				
			||||||
        private Button buttonOpen;
 | 
					 | 
				
			||||||
        private ContextMenuStrip contextMenuRecentProjects;
 | 
					 | 
				
			||||||
        private ToolStripMenuItem toolStripMenuItem1;
 | 
					 | 
				
			||||||
        private Label labelVersion;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,206 +0,0 @@
 | 
				
			|||||||
using System.ComponentModel;
 | 
					 | 
				
			||||||
using Microsoft.Win32;
 | 
					 | 
				
			||||||
using Version = Processor.Version;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_WinForms.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[DefaultEvent(nameof(LoadProject))]
 | 
					 | 
				
			||||||
public partial class LoaderStart : UserControl
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    private bool areRecentProjectsVisible = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public LoaderStart()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        this.InitializeComponent();
 | 
					 | 
				
			||||||
        this.labelVersion.Text = Version.Text;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #region Recent Projects
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static RegistryKey I18NCommanderKey => Registry.CurrentUser.OpenSubKey("Software", RegistryKeyPermissionCheck.ReadWriteSubTree)!.CreateSubKey("I18N Commander", RegistryKeyPermissionCheck.ReadWriteSubTree);
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    /// <summary>
 | 
					 | 
				
			||||||
    /// Gets or sets the list of recent projects without any extras e.g. it does not prune the list of projects.
 | 
					 | 
				
			||||||
    /// </summary>
 | 
					 | 
				
			||||||
    private static List<string> RecentProjects
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        get
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            using var regKey = LoaderStart.I18NCommanderKey;
 | 
					 | 
				
			||||||
            var recentProjectsValue = regKey.GetValue("recentProjects");
 | 
					 | 
				
			||||||
            return recentProjectsValue switch
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                string[] list => new List<string>(list),
 | 
					 | 
				
			||||||
                _ => new List<string>(),
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        set
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            using var regKey = LoaderStart.I18NCommanderKey;
 | 
					 | 
				
			||||||
            regKey.SetValue("recentProjects", value.ToArray(), RegistryValueKind.MultiString);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static void UpdateRecentProjectsWithPruning(string latestUsedProjectPath)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        var previousRecentList = LoaderStart.RecentProjects;
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Check, if the latest project is identical to the next project we open. In that case, we don't add it to the list.
 | 
					 | 
				
			||||||
        if (previousRecentList.Any() && previousRecentList[0] == latestUsedProjectPath)
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Add the next project to the list:
 | 
					 | 
				
			||||||
        previousRecentList.Insert(0, latestUsedProjectPath);
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Prune the list:
 | 
					 | 
				
			||||||
        if (previousRecentList.Count > 6)
 | 
					 | 
				
			||||||
            previousRecentList = previousRecentList.Take(6).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        LoaderStart.RecentProjects = previousRecentList;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Opens the recent projects dropdown menu.
 | 
					 | 
				
			||||||
    private void buttonOpen_Click(object sender, EventArgs e)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if(this.DesignMode)
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        if(this.areRecentProjectsVisible)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            this.areRecentProjectsVisible = false;
 | 
					 | 
				
			||||||
            this.contextMenuRecentProjects.Close();
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var recentProjects = LoaderStart.RecentProjects;
 | 
					 | 
				
			||||||
        this.contextMenuRecentProjects.Items.Clear();
 | 
					 | 
				
			||||||
        this.contextMenuRecentProjects.Items.Add("Browse for project...", Resources.Icons.icons8_browse_folder_512, (innerSender, args) => this.BrowseForProject());
 | 
					 | 
				
			||||||
        foreach (var recentProject in recentProjects)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var fileInfo = new FileInfo(recentProject);
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            // Split the file's path into each folder's name:
 | 
					 | 
				
			||||||
            var folderNames = fileInfo.DirectoryName!.Split(Path.DirectorySeparatorChar);
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            // Distinguish between I18N Commander projects and JSON imports:
 | 
					 | 
				
			||||||
            if (fileInfo.Extension == ".i18nc")
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                // Render this entry:
 | 
					 | 
				
			||||||
                var item = this.contextMenuRecentProjects.Items.Add($"{folderNames.Last()}: {fileInfo.Name}", Resources.Icons.icons8_document_512, (innerSender, args) => this.OpenRecentProject(innerSender, LoaderAction.LOAD_PROJECT));
 | 
					 | 
				
			||||||
                item.Tag = recentProject;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            else if (fileInfo.Extension == ".json")
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                // Render this entry:
 | 
					 | 
				
			||||||
                var item = this.contextMenuRecentProjects.Items.Add($"{folderNames.Last()}: {fileInfo.Name}", Resources.Icons.icons8_git, (innerSender, args) => this.OpenRecentProject(innerSender, LoaderAction.IMPORT_JSON));
 | 
					 | 
				
			||||||
                item.Tag = recentProject;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var button = (sender as Button)!;
 | 
					 | 
				
			||||||
        this.contextMenuRecentProjects.Show(button, 0, button.Height);
 | 
					 | 
				
			||||||
        this.areRecentProjectsVisible = true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void buttonNew_Click(object sender, EventArgs e)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if(this.DesignMode)
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        var saveDialog = new SaveFileDialog
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            AddExtension = true,
 | 
					 | 
				
			||||||
            CheckPathExists = true,
 | 
					 | 
				
			||||||
            CheckFileExists = false,
 | 
					 | 
				
			||||||
            CreatePrompt = false,
 | 
					 | 
				
			||||||
            OverwritePrompt = true,
 | 
					 | 
				
			||||||
            DereferenceLinks = true,
 | 
					 | 
				
			||||||
            DefaultExt = ".i18nc",
 | 
					 | 
				
			||||||
            Filter = "I18N Commander Files (*.i18nc)|*.i18nc",
 | 
					 | 
				
			||||||
            RestoreDirectory = true,
 | 
					 | 
				
			||||||
            Title = "Create a new I18N Commander file",
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var dialogResult = saveDialog.ShowDialog(this);
 | 
					 | 
				
			||||||
        if (dialogResult != DialogResult.OK)
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var destinationFilePath = saveDialog.FileName;
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // When the user chose an existing file, we delete it:
 | 
					 | 
				
			||||||
        // (note: the user already accepts overwriting the file)
 | 
					 | 
				
			||||||
        if (File.Exists(destinationFilePath))
 | 
					 | 
				
			||||||
            File.Delete(destinationFilePath);
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        LoaderStart.UpdateRecentProjectsWithPruning(destinationFilePath);
 | 
					 | 
				
			||||||
        this.OpenProject(LoaderAction.CREATE_NEW_PROJECT, destinationFilePath);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void BrowseForProject()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        var openDialog = new OpenFileDialog
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            AddExtension = true,
 | 
					 | 
				
			||||||
            CheckPathExists = true,
 | 
					 | 
				
			||||||
            CheckFileExists = true,
 | 
					 | 
				
			||||||
            DereferenceLinks = true,
 | 
					 | 
				
			||||||
            DefaultExt = ".i18nc",
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            // I18N Commander files (*.i18nc) or JSON files (*.json):
 | 
					 | 
				
			||||||
            Filter = "I18N Commander Files (*.i18nc)|*.i18nc|JSON Files (*.json)|*.json",
 | 
					 | 
				
			||||||
            Multiselect = false,
 | 
					 | 
				
			||||||
            RestoreDirectory = true,
 | 
					 | 
				
			||||||
            Title = "Open an I18N Commander file or Import a JSON file",
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        var dialogResult = openDialog.ShowDialog(this);
 | 
					 | 
				
			||||||
        if (dialogResult != DialogResult.OK)
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var projectFilePath = openDialog.FileName;
 | 
					 | 
				
			||||||
        LoaderStart.UpdateRecentProjectsWithPruning(projectFilePath);
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Check, if the user chose an I18N Commander file or a JSON file:
 | 
					 | 
				
			||||||
        if (projectFilePath.ToLowerInvariant().EndsWith(".i18nc", StringComparison.InvariantCulture))
 | 
					 | 
				
			||||||
            this.OpenProject(LoaderAction.LOAD_PROJECT, projectFilePath);
 | 
					 | 
				
			||||||
        else if (projectFilePath.ToLowerInvariant().EndsWith(".json", StringComparison.InvariantCulture))
 | 
					 | 
				
			||||||
            this.OpenProject(LoaderAction.IMPORT_JSON, projectFilePath);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void OpenRecentProject(object? sender, LoaderAction action)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (sender is not ToolStripItem item)
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var path = (item.Tag as string)!;
 | 
					 | 
				
			||||||
        LoaderStart.UpdateRecentProjectsWithPruning(path);
 | 
					 | 
				
			||||||
        this.OpenProject(action, path);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void OpenProject(LoaderAction action, string path)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        // Hint: the project file might or might not exist (new project vs. recent project)
 | 
					 | 
				
			||||||
        this.LoadProject?.Invoke(this, new LoaderResult(action, path));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void contextMenuRecentProjects_Closing(object sender, ToolStripDropDownClosingEventArgs e)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        this.areRecentProjectsVisible = false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Category("Settings"), Description("When the user chooses a project to load.")]
 | 
					 | 
				
			||||||
    public event EventHandler<LoaderResult>? LoadProject;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public readonly record struct LoaderResult(LoaderAction Action, string DataFile);
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public enum LoaderAction
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        NONE,
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        LOAD_PROJECT,
 | 
					 | 
				
			||||||
        CREATE_NEW_PROJECT,
 | 
					 | 
				
			||||||
        IMPORT_JSON,
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,63 +0,0 @@
 | 
				
			|||||||
<root>
 | 
					 | 
				
			||||||
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 | 
					 | 
				
			||||||
    <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>
 | 
					 | 
				
			||||||
  <metadata name="contextMenuRecentProjects.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
					 | 
				
			||||||
    <value>17, 17</value>
 | 
					 | 
				
			||||||
  </metadata>
 | 
					 | 
				
			||||||
</root>
 | 
					 | 
				
			||||||
							
								
								
									
										251
									
								
								I18N Commander/UI WinForms/Components/Main.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						@ -1,251 +0,0 @@
 | 
				
			|||||||
namespace UI_WinForms.Components
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    partial class Main
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        /// <summary> 
 | 
					 | 
				
			||||||
        /// Required designer variable.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        private System.ComponentModel.IContainer components = null;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary> 
 | 
					 | 
				
			||||||
        /// Clean up any resources being used.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
 | 
					 | 
				
			||||||
        protected override void Dispose(bool disposing)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            if (disposing && (components != null))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                components.Dispose();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            base.Dispose(disposing);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #region Component Designer generated code
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary> 
 | 
					 | 
				
			||||||
        /// Required method for Designer support - do not modify 
 | 
					 | 
				
			||||||
        /// the contents of this method with the code editor.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        private void InitializeComponent()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            this.components = new System.ComponentModel.Container();
 | 
					 | 
				
			||||||
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
 | 
					 | 
				
			||||||
            this.tableLayout = new System.Windows.Forms.TableLayoutPanel();
 | 
					 | 
				
			||||||
            this.splitContainerLR = new System.Windows.Forms.SplitContainer();
 | 
					 | 
				
			||||||
            this.sectionTree = new UI_WinForms.Components.SectionTree();
 | 
					 | 
				
			||||||
            this.splitContainerRTB = new System.Windows.Forms.SplitContainer();
 | 
					 | 
				
			||||||
            this.textElements = new UI_WinForms.Components.TextElements();
 | 
					 | 
				
			||||||
            this.translations = new UI_WinForms.Components.Translations();
 | 
					 | 
				
			||||||
            this.translationProgress = new UI_WinForms.Components.TranslationProgress();
 | 
					 | 
				
			||||||
            this.tabControl = new System.Windows.Forms.TabControl();
 | 
					 | 
				
			||||||
            this.tabTranslation = new System.Windows.Forms.TabPage();
 | 
					 | 
				
			||||||
            this.tabSettings = new System.Windows.Forms.TabPage();
 | 
					 | 
				
			||||||
            this.settings = new UI_WinForms.Components.Settings();
 | 
					 | 
				
			||||||
            this.imageList = new System.Windows.Forms.ImageList(this.components);
 | 
					 | 
				
			||||||
            this.tableLayout.SuspendLayout();
 | 
					 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.splitContainerLR)).BeginInit();
 | 
					 | 
				
			||||||
            this.splitContainerLR.Panel1.SuspendLayout();
 | 
					 | 
				
			||||||
            this.splitContainerLR.Panel2.SuspendLayout();
 | 
					 | 
				
			||||||
            this.splitContainerLR.SuspendLayout();
 | 
					 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.splitContainerRTB)).BeginInit();
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Panel1.SuspendLayout();
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Panel2.SuspendLayout();
 | 
					 | 
				
			||||||
            this.splitContainerRTB.SuspendLayout();
 | 
					 | 
				
			||||||
            this.tabControl.SuspendLayout();
 | 
					 | 
				
			||||||
            this.tabTranslation.SuspendLayout();
 | 
					 | 
				
			||||||
            this.tabSettings.SuspendLayout();
 | 
					 | 
				
			||||||
            this.SuspendLayout();
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // tableLayout
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.tableLayout.ColumnCount = 1;
 | 
					 | 
				
			||||||
            this.tableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
 | 
					 | 
				
			||||||
            this.tableLayout.Controls.Add(this.splitContainerLR, 0, 1);
 | 
					 | 
				
			||||||
            this.tableLayout.Controls.Add(this.translationProgress, 0, 0);
 | 
					 | 
				
			||||||
            this.tableLayout.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.tableLayout.Location = new System.Drawing.Point(3, 3);
 | 
					 | 
				
			||||||
            this.tableLayout.Name = "tableLayout";
 | 
					 | 
				
			||||||
            this.tableLayout.RowCount = 2;
 | 
					 | 
				
			||||||
            this.tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
 | 
					 | 
				
			||||||
            this.tableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
 | 
					 | 
				
			||||||
            this.tableLayout.Size = new System.Drawing.Size(1237, 709);
 | 
					 | 
				
			||||||
            this.tableLayout.TabIndex = 0;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // splitContainerLR
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.splitContainerLR.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 | 
					 | 
				
			||||||
            this.splitContainerLR.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.splitContainerLR.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
 | 
					 | 
				
			||||||
            this.splitContainerLR.Location = new System.Drawing.Point(3, 23);
 | 
					 | 
				
			||||||
            this.splitContainerLR.Name = "splitContainerLR";
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // splitContainerLR.Panel1
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.splitContainerLR.Panel1.Controls.Add(this.sectionTree);
 | 
					 | 
				
			||||||
            this.splitContainerLR.Panel1MinSize = 300;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // splitContainerLR.Panel2
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.splitContainerLR.Panel2.Controls.Add(this.splitContainerRTB);
 | 
					 | 
				
			||||||
            this.splitContainerLR.Size = new System.Drawing.Size(1231, 683);
 | 
					 | 
				
			||||||
            this.splitContainerLR.SplitterDistance = 319;
 | 
					 | 
				
			||||||
            this.splitContainerLR.TabIndex = 1;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // sectionTree
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.sectionTree.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.sectionTree.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.sectionTree.Location = new System.Drawing.Point(0, 0);
 | 
					 | 
				
			||||||
            this.sectionTree.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
 | 
					 | 
				
			||||||
            this.sectionTree.Name = "sectionTree";
 | 
					 | 
				
			||||||
            this.sectionTree.Size = new System.Drawing.Size(317, 681);
 | 
					 | 
				
			||||||
            this.sectionTree.TabIndex = 0;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // splitContainerRTB
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.splitContainerRTB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.splitContainerRTB.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Location = new System.Drawing.Point(0, 0);
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Name = "splitContainerRTB";
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Orientation = System.Windows.Forms.Orientation.Horizontal;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // splitContainerRTB.Panel1
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Panel1.Controls.Add(this.textElements);
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Panel1MinSize = 376;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // splitContainerRTB.Panel2
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Panel2.Controls.Add(this.translations);
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Size = new System.Drawing.Size(908, 683);
 | 
					 | 
				
			||||||
            this.splitContainerRTB.SplitterDistance = 376;
 | 
					 | 
				
			||||||
            this.splitContainerRTB.TabIndex = 0;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // textElements
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.textElements.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.textElements.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.textElements.Location = new System.Drawing.Point(0, 0);
 | 
					 | 
				
			||||||
            this.textElements.Name = "textElements";
 | 
					 | 
				
			||||||
            this.textElements.Size = new System.Drawing.Size(906, 374);
 | 
					 | 
				
			||||||
            this.textElements.TabIndex = 0;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // translations
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.translations.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.translations.Enabled = false;
 | 
					 | 
				
			||||||
            this.translations.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.translations.Location = new System.Drawing.Point(0, 0);
 | 
					 | 
				
			||||||
            this.translations.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
 | 
					 | 
				
			||||||
            this.translations.Name = "translations";
 | 
					 | 
				
			||||||
            this.translations.Size = new System.Drawing.Size(906, 301);
 | 
					 | 
				
			||||||
            this.translations.TabIndex = 0;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // translationProgress
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.translationProgress.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.translationProgress.Location = new System.Drawing.Point(0, 0);
 | 
					 | 
				
			||||||
            this.translationProgress.Margin = new System.Windows.Forms.Padding(0);
 | 
					 | 
				
			||||||
            this.translationProgress.Name = "translationProgress";
 | 
					 | 
				
			||||||
            this.translationProgress.Size = new System.Drawing.Size(1237, 20);
 | 
					 | 
				
			||||||
            this.translationProgress.TabIndex = 2;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // tabControl
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.tabControl.Alignment = System.Windows.Forms.TabAlignment.Left;
 | 
					 | 
				
			||||||
            this.tabControl.Controls.Add(this.tabTranslation);
 | 
					 | 
				
			||||||
            this.tabControl.Controls.Add(this.tabSettings);
 | 
					 | 
				
			||||||
            this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.tabControl.ImageList = this.imageList;
 | 
					 | 
				
			||||||
            this.tabControl.Location = new System.Drawing.Point(0, 0);
 | 
					 | 
				
			||||||
            this.tabControl.Multiline = true;
 | 
					 | 
				
			||||||
            this.tabControl.Name = "tabControl";
 | 
					 | 
				
			||||||
            this.tabControl.Padding = new System.Drawing.Point(12, 12);
 | 
					 | 
				
			||||||
            this.tabControl.SelectedIndex = 0;
 | 
					 | 
				
			||||||
            this.tabControl.Size = new System.Drawing.Size(1317, 723);
 | 
					 | 
				
			||||||
            this.tabControl.TabIndex = 1;
 | 
					 | 
				
			||||||
            this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged);
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // tabTranslation
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.tabTranslation.Controls.Add(this.tableLayout);
 | 
					 | 
				
			||||||
            this.tabTranslation.ImageIndex = 1;
 | 
					 | 
				
			||||||
            this.tabTranslation.Location = new System.Drawing.Point(70, 4);
 | 
					 | 
				
			||||||
            this.tabTranslation.Name = "tabTranslation";
 | 
					 | 
				
			||||||
            this.tabTranslation.Padding = new System.Windows.Forms.Padding(3);
 | 
					 | 
				
			||||||
            this.tabTranslation.Size = new System.Drawing.Size(1243, 715);
 | 
					 | 
				
			||||||
            this.tabTranslation.TabIndex = 0;
 | 
					 | 
				
			||||||
            this.tabTranslation.Text = "Translation";
 | 
					 | 
				
			||||||
            this.tabTranslation.UseVisualStyleBackColor = true;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // tabSettings
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.tabSettings.Controls.Add(this.settings);
 | 
					 | 
				
			||||||
            this.tabSettings.ImageIndex = 0;
 | 
					 | 
				
			||||||
            this.tabSettings.Location = new System.Drawing.Point(70, 4);
 | 
					 | 
				
			||||||
            this.tabSettings.Name = "tabSettings";
 | 
					 | 
				
			||||||
            this.tabSettings.Padding = new System.Windows.Forms.Padding(3);
 | 
					 | 
				
			||||||
            this.tabSettings.Size = new System.Drawing.Size(1243, 715);
 | 
					 | 
				
			||||||
            this.tabSettings.TabIndex = 1;
 | 
					 | 
				
			||||||
            this.tabSettings.Text = "Settings";
 | 
					 | 
				
			||||||
            this.tabSettings.UseVisualStyleBackColor = true;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // settings
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.settings.Dock = System.Windows.Forms.DockStyle.Fill;
 | 
					 | 
				
			||||||
            this.settings.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.settings.Location = new System.Drawing.Point(3, 3);
 | 
					 | 
				
			||||||
            this.settings.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
 | 
					 | 
				
			||||||
            this.settings.Name = "settings";
 | 
					 | 
				
			||||||
            this.settings.Size = new System.Drawing.Size(1237, 709);
 | 
					 | 
				
			||||||
            this.settings.TabIndex = 0;
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // imageList
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
 | 
					 | 
				
			||||||
            this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
 | 
					 | 
				
			||||||
            this.imageList.TransparentColor = System.Drawing.Color.Transparent;
 | 
					 | 
				
			||||||
            this.imageList.Images.SetKeyName(0, "icons8-settings.svg.png");
 | 
					 | 
				
			||||||
            this.imageList.Images.SetKeyName(1, "icons8-language-45.png");
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            // Main
 | 
					 | 
				
			||||||
            // 
 | 
					 | 
				
			||||||
            this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
 | 
					 | 
				
			||||||
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
 | 
					 | 
				
			||||||
            this.Controls.Add(this.tabControl);
 | 
					 | 
				
			||||||
            this.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
 | 
					 | 
				
			||||||
            this.Name = "Main";
 | 
					 | 
				
			||||||
            this.Size = new System.Drawing.Size(1317, 723);
 | 
					 | 
				
			||||||
            this.tableLayout.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.splitContainerLR.Panel1.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.splitContainerLR.Panel2.ResumeLayout(false);
 | 
					 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.splitContainerLR)).EndInit();
 | 
					 | 
				
			||||||
            this.splitContainerLR.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Panel1.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.splitContainerRTB.Panel2.ResumeLayout(false);
 | 
					 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.splitContainerRTB)).EndInit();
 | 
					 | 
				
			||||||
            this.splitContainerRTB.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.tabControl.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.tabTranslation.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.tabSettings.ResumeLayout(false);
 | 
					 | 
				
			||||||
            this.ResumeLayout(false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        private TableLayoutPanel tableLayout;
 | 
					 | 
				
			||||||
        private SplitContainer splitContainerLR;
 | 
					 | 
				
			||||||
        private SplitContainer splitContainerRTB;
 | 
					 | 
				
			||||||
        private SectionTree sectionTree;
 | 
					 | 
				
			||||||
        private TextElements textElements;
 | 
					 | 
				
			||||||
        private TabControl tabControl;
 | 
					 | 
				
			||||||
        private TabPage tabTranslation;
 | 
					 | 
				
			||||||
        private TabPage tabSettings;
 | 
					 | 
				
			||||||
        private ImageList imageList;
 | 
					 | 
				
			||||||
        private Settings settings;
 | 
					 | 
				
			||||||
        private Translations translations;
 | 
					 | 
				
			||||||
        private TranslationProgress translationProgress;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,56 +0,0 @@
 | 
				
			|||||||
using DataModel.Database;
 | 
					 | 
				
			||||||
using Processor;
 | 
					 | 
				
			||||||
using UI_WinForms.Dialogs;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace UI_WinForms.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class Main : UserControl
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public Main()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        this.InitializeComponent();
 | 
					 | 
				
			||||||
        Program.RestartMainApp = false;
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Register the something changed event to trigger the export:
 | 
					 | 
				
			||||||
        AppEvents.WhenSomethingChanged += async (_, _) => await ExportProcessor.TriggerExport();
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        // Check, if the DeepL integration is enabled, but no API key is set:
 | 
					 | 
				
			||||||
        this.Load += async (sender, args) =>
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var deepLAPIKey = await AppSettings.GetDeepLAPIKey();
 | 
					 | 
				
			||||||
            var deepLMode = await AppSettings.GetDeepLMode();
 | 
					 | 
				
			||||||
            if (deepLMode is not SettingDeepLMode.DISABLED && string.IsNullOrWhiteSpace(deepLAPIKey))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                // Show the input dialog to ask the user for the DeepL API key:
 | 
					 | 
				
			||||||
                var inputDialog = InputDialog.Show(new InputDialog.Options
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    Title = "I18NCommander - DeepL API Key",
 | 
					 | 
				
			||||||
                    Message = "The DeepL integration is enabled, but there is no API key set. Do you want to set one now?",
 | 
					 | 
				
			||||||
                    OkButtonText = "Set API key",
 | 
					 | 
				
			||||||
                    CancelButtonText = "No, thanks",
 | 
					 | 
				
			||||||
                    ShowQuestionCheckbox = false,
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (inputDialog.DialogResult == DialogResult.OK)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    await AppSettings.SetDeepLAPIKey(inputDialog.Text);
 | 
					 | 
				
			||||||
                    AppEvents.SettingsChanged();
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (this.settings.NeedRestart())
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var result = MessageBox.Show("You need to restart the app for the changes to take effect. Do you want to restart?", "Restart required", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
 | 
					 | 
				
			||||||
            if(result == DialogResult.Yes)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                Program.RestartMainApp = true;
 | 
					 | 
				
			||||||
                AppEvents.ResetAllSubscriptions();
 | 
					 | 
				
			||||||
                this.ParentForm!.Close();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,386 +0,0 @@
 | 
				
			|||||||
<root>
 | 
					 | 
				
			||||||
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 | 
					 | 
				
			||||||
    <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>
 | 
					 | 
				
			||||||
  <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
					 | 
				
			||||||
    <value>17, 17</value>
 | 
					 | 
				
			||||||
  </metadata>
 | 
					 | 
				
			||||||
  <data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
 | 
					 | 
				
			||||||
    <value>
 | 
					 | 
				
			||||||
        AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
 | 
					 | 
				
			||||||
        LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
 | 
					 | 
				
			||||||
        SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAHEoAAAJNU0Z0AUkBTAIBAQIB
 | 
					 | 
				
			||||||
        AAFgAQABYAEAAS0BAAEtAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABtAMAAS0DAAEBAQABIAUAAZAB
 | 
					 | 
				
			||||||
        fvoAAw8BFAMTARkEAf8A/wAqAAMnATkDTgGWA1EBoQNRAaEDUQGhA04BlgMnATp8AAMLAQ4CUwFRAaIB
 | 
					 | 
				
			||||||
        XQFbAVoBxwMlATb/AP8AJgADEQEWA1EB8wE6AjkB/wE9ATwBOwH/AT0BPAE7Af8BPQE8ATsB/wE6AjkB
 | 
					 | 
				
			||||||
        /wNSAfQDEQEWeAADEgEYA10BzAG8AVsBGQH/AWICXgHXAxABFf8A/wAiAAM/AW4BRgFDAUIB/wHEAa8B
 | 
					 | 
				
			||||||
        pgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AcQBrgGmAf8BRgFDAUIB/wNAAXB4AAMSARgDXQHMAbwB
 | 
					 | 
				
			||||||
        WwEZAf8BvAFbARkB/wFhAV8BWwHYAyUBNwQB/wD/ABoAA1gBtwFXAVIBUAH/Ad4BxQG7Af8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AecBzQHCAf8B3gHFAbsB/wFXAVIBTwH/A1gBugQBdAADEgEYA10BzAG7AVsBGQH/AbwB
 | 
					 | 
				
			||||||
        WwEZAf8BvAFbARkB/wFjAl8B1QIaARkBI/8A8QADAwEEAyIBMQMpAT4DEgEYFAADEgEYA2AB2wF7AXAB
 | 
					 | 
				
			||||||
        bAH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wF6AXABawH/A2AB2wMTARoU
 | 
					 | 
				
			||||||
        AAMSARcDKQE+AyIBMQMDAQRQAAMSARgDXQHMAbsBWwEZAf8BuwFbARkB/wG7AVsBGQH/AbwBWwEZAf8B
 | 
					 | 
				
			||||||
        YQJdAdQDIQEvBAH/AOUAAwIBAwM9AWkDWwHkA1cB7wNbAdADNgFZAwQBBQwAAygBOwNdAewBqwGaAZMB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8BqgGZAZIB/wNcAe0DKQE9DAAD
 | 
					 | 
				
			||||||
        AwEEAzYBVwNdAc8DVwHvA18B5QM+AWoDAgEDTAADEgEYA10BzAG7AVsBGgH/AbsBWwEZAf8BuwFbARkB
 | 
					 | 
				
			||||||
        /wG7AVsBGQH/AbsBWwEZAf8BXwFcAVsB0wMiATH/AOEAAwIBAwM0AVMDWAHxAW8BaQFmAf8BtwGrAaQB
 | 
					 | 
				
			||||||
        /wFdAVkBVwH/AzoB+wNRAaQDGQEiAwQBBQMJAQwDPwFuATgCNwH7AdwByAG+Af8B5wHOAcMB/wHnAc0B
 | 
					 | 
				
			||||||
        wgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AdgBwAG2Af8DKwH8A0ABcQMKAQ0DAwEEAxgBIANRAaIB
 | 
					 | 
				
			||||||
        OwE6ATkB+wFeAVcBVAH/AbYBowGbAf8BcAFnAWMB/wNZAfIDNQFVAwIBA0gAAxIBGANdAcwBuwFbARoB
 | 
					 | 
				
			||||||
        /wG7AVsBGgH/AbsBWwEZAf8BuwFbARkB/wG7AVsBGQH/AbsBWwEZAf8BYQJdAdQDGAEg/wDZAAMDAQQD
 | 
					 | 
				
			||||||
        PQFoA1gB8QF/AXQBbwH/AeMBzAHBAf8B7AHaAdAB/wHkAdUBywH/AacBnQGXAf8BUwFQAU8B/wNbAeQD
 | 
					 | 
				
			||||||
        TgGYA1UBtANdAewBeAFyAW4B/wHtAdwB0gH/AeoB1QHLAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AXUBawFnAf8DXAHtA1YBtQNOAZcDXgHiAVMBTgFMAf8BpAGUAY0B/wHfAcYB
 | 
					 | 
				
			||||||
        uwH/AecBzQHCAf8B4wHJAb4B/wGAAXUBcAH/A1kB8gM+AWoDAwEERAADEgEYA10BzAG6AVsBGgH/AbsB
 | 
					 | 
				
			||||||
        WwEaAf8BuwFbARoB/wG7AVsBGgH/AbsBWwEZAf8BuwFbARkB/wG7AVsBGQH/AWECXAHWAyUBN/8A1QAD
 | 
					 | 
				
			||||||
        IQEvA14B4wFvAWoBZgH/AeMBzAHCAf8B5wHNAcIB/wHoAdABxQH/Ae0B3AHSAf8B7QHdAdMB/wHoAdkB
 | 
					 | 
				
			||||||
        zwH/AYQBfgF5Af8DNwH/AU4BTAFLAf8BtwGrAaUB/wHqAdsB0QH/Ae0B3QHTAf8B7QHdAdMB/wHrAdUB
 | 
					 | 
				
			||||||
        ywH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5QHLAcAB/wGzAaABmAH/AU0BSgFIAf8B
 | 
					 | 
				
			||||||
        NwI2Af8BgQF1AXEB/wHjAckBvwH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B4wHJAb4B
 | 
					 | 
				
			||||||
        /wFwAWcBYwH/A18B5QMiATEkAAMhATADUgGgAlYBVAGrAlYBVAGrAlYBVAGrAlYBVAGrAlYBVAGrAlYB
 | 
					 | 
				
			||||||
        VAGrAlgBVgGzAXQBYgFVAe4BugFbARoB/wG6AVsBGgH/AbsBWwEaAf8BuwFbARoB/wG7AVsBGgH/AbsB
 | 
					 | 
				
			||||||
        WwEaAf8BuwFbARkB/wG7AVsBGQH/AWwCXwHlA1UBrQJWAVQBqwJWAVQBqwJWAVQBqwJUAVMBqQJWAVQB
 | 
					 | 
				
			||||||
        qwJWAVQBqwJWAVQBqwJWAVQBqwJWAVQBqwJWAVQBqwJWAVQBqwJWAVQBqwJWAVQBqwJWAVQBqwJWAVQB
 | 
					 | 
				
			||||||
        qwNSAaADIQEw/wCNAAMoATwDXAHtAbcBqwGkAf8B7AHbAdAB/wHpAdEBxgH/AecBzQHCAf8B6AHRAcYB
 | 
					 | 
				
			||||||
        /wHsAdoB0AH/Ae0B3QHTAf8B7AHcAdIB/wHeAc8BxgH/AewB3AHSAf8B7QHdAdMB/wHtAd0B0wH/Ae0B
 | 
					 | 
				
			||||||
        3QHTAf8B7QHdAdMB/wHtAd0B0wH/AeoB1QHLAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AeYBzAHBAf8B2AHAAbYB/wHmAcwBwQH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wHnAc0BwgH/AbEBngGXAf8DVwHvAykBPSAAAyABLgFxAV0BWgHsAbkBWgEaAf8B
 | 
					 | 
				
			||||||
        uQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BuQFaARoB/wG6AVoBGgH/AboBWgEaAf8BugFbARoB/wG6AVsB
 | 
					 | 
				
			||||||
        GgH/AboBWwEaAf8BugFbARoB/wG6AVsBGgH/AboBWwEaAf8BuwFbARoB/wG7AVsBGgH/AbsBWwEaAf8B
 | 
					 | 
				
			||||||
        uwFbARkB/wG7AVsBGQH/AbsBWwEZAf8BuwFbARkB/wG7AVsBGQH/AbwBWwEZAf8BtQF1ASsB/AHsAaQB
 | 
					 | 
				
			||||||
        QgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8B
 | 
					 | 
				
			||||||
        6wGkAUIB/wHrAaQBQgH/AesBpAFCAf8B6wGkAUIB/wF3AW8BYQHrAyABLf8AiQADEAEVA1sBzQFcAVkB
 | 
					 | 
				
			||||||
        VgH/AeMB1AHLAf8B7QHcAdIB/wHpAdEBxgH/AecBzQHCAf8B6AHQAcUB/wHsAdsB0QH/Ae0B3QHTAf8B
 | 
					 | 
				
			||||||
        7QHdAdMB/wHtAd0B0wH/Ae0B3QHTAf8B7QHdAdMB/wHtAd0B0wH/Ae0B3QHTAf8B7QHdAdMB/wHtAdwB
 | 
					 | 
				
			||||||
        0gH/AesB1QHKAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B3QHFAboB/wFaAVUB
 | 
					 | 
				
			||||||
        UgH/A10BzgMRARYgAAMzAVABgwFgAT8B9gG5AVoBGwH/AbkBWgEaAf8BuQFaARoB/wG5AVoBGgH/AbkB
 | 
					 | 
				
			||||||
        WgEaAf8BuQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BugFaARoB/wG6AVsBGgH/AboBWwEaAf8BugFbARoB
 | 
					 | 
				
			||||||
        /wG6AVsBGgH/AboBWwEaAf8BugFbARoB/wG7AVsBGgH/AbsBWwEaAf8BuwFbARoB/wG7AVsBGQH/AbsB
 | 
					 | 
				
			||||||
        WwEZAf8BuwFbARkB/wGlAWkBJgH+Ab4BigFAAf0B7QGkAUIB/wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB
 | 
					 | 
				
			||||||
        /wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AesB
 | 
					 | 
				
			||||||
        pAFCAf8BlwF6AUgB9gMzAVD/AI0AAzMBUgNNAfoBpgGbAZUB/wHtAd0B0wH/AewB2wHQAf8B6QHRAcYB
 | 
					 | 
				
			||||||
        /wHrAdcB0AH/AewB2gHTAf8B7AHbAdEB/wHtAd0B0wH/Ae0B3QHTAf8B7QHdAdMB/wHtAd0B0wH/Ae0B
 | 
					 | 
				
			||||||
        3QHTAf8B7QHdAdMB/wHqAdoB0AH/AcYBuQGxAf8B6gHaAdAB/wHqAdUBygH/AecBzgHDAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wGhAZEBiwH/AToCOQH7AzUBViQAAzMBUQGMAVsBQAH3AbgBWgEbAf8BuQFaARsB
 | 
					 | 
				
			||||||
        /wG5AVoBGwH/AbkBWgEaAf8BuQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BuQFaARoB/wG6AVoBGgH/AboB
 | 
					 | 
				
			||||||
        WgEaAf8BugFaARoB/wG6AVsBGgH/AboBWwEaAf8BugFbARoB/wG6AVsBGgH/AboBWwEaAf8BuwFbARoB
 | 
					 | 
				
			||||||
        /wG7AVsBGgH/AbsBWwEaAf8BuwFbARkB/wG7AVsBGQH/AaoBbwEqAf4BwwGZAUAB/QHtAaQBQgH/Ae0B
 | 
					 | 
				
			||||||
        pAFCAf8B7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB
 | 
					 | 
				
			||||||
        /wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wGXAXoBSAH2AzMBUf8AjQADAwEEA1ABnQFSAU8BTQH/AecB
 | 
					 | 
				
			||||||
        1wHNAf8B7QHdAdMB/wHwAeQB3wH/AfYB8gH3Af8B9QHxAfUB/wHtAdsB1QH/AewB2gHQAf8B7QHdAdMB
 | 
					 | 
				
			||||||
        /wHYAcoBwQH/AcYBuQGxAf8B6AHWAcwB/wHfAcsBwQH/Ac8BuwGxAf8BQQI/Af8BzwG6AbEB/wHfAcoB
 | 
					 | 
				
			||||||
        wAH/AaQBlgGPAf8BjwGCAXwB/wHmAcwBwQH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B4QHIAb4B/wFQAUwBSgH/A1EBogMDAQQkAAMzAVEBjAFbAUAB
 | 
					 | 
				
			||||||
        9wG4AVoBGwH/AbgBWgEbAf8BuAFaARsB/wG5AVoBGwH/AbkBWgEbAf8BuQFaARoB/wG5AVoBGgH/AbkB
 | 
					 | 
				
			||||||
        WgEaAf8BuQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BugFaARoB/wG6AVsBGgH/AboBWwEaAf8BugFbARoB
 | 
					 | 
				
			||||||
        /wG6AVsBGgH/AboBWwEaAf8BugFbARoB/wG7AVsBGgH/AbsBWwEaAf8BuwFbARoB/wGzAXMBKwH8AewB
 | 
					 | 
				
			||||||
        owFBAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB/wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB
 | 
					 | 
				
			||||||
        /wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8BlwF6AUgB9gMzAVH/AJEAAxcB
 | 
					 | 
				
			||||||
        HwNdAd8BfwF5AXQB/wHsAdwB0gH/Ae0B3QHUAf8B9ALtAf8B8AHkAeIB/wHnAc0BwgH/AeUBzgHDAf8B
 | 
					 | 
				
			||||||
        uwGvAagB/wFGAUQBQwH/AU8BSwFJAf8B0AG3AawB/wHQAbcBrAH/AcQBrQGjAf8BOAI3Af8BxAGtAaMB
 | 
					 | 
				
			||||||
        /wHDAawBogH/AU8BSwFJAf8BZAFcAVkB/wHiAcgBvQH/AeYBzAHBAf8B5gHMAcEB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wHnAc0BwgH/AeYBzAHBAf8BfgF0AW4B/wNeAeIDGAEgKAADMwFRAYwBWwFAAfcB
 | 
					 | 
				
			||||||
        uAFaARsB/wG4AVoBGwH/AbgBWgEbAf8BuAFaARsB/wG4AVoBGwH/AbkBWgEbAf8BuQFaARoB/wG5AVoB
 | 
					 | 
				
			||||||
        GgH/AbkBWgEaAf8BuQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BugFaARoB/wG6AVoBGgH/AboBWwEaAf8B
 | 
					 | 
				
			||||||
        ugFbARoB/wG6AVsBGgH/AboBWwEaAf8BugFbARoB/wG6AVsBGgH/AbsBWwEaAf8BugGEATgB+wHtAaQB
 | 
					 | 
				
			||||||
        QgH/Ae0BpAFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB/wHtAaQBQgH/AewBpAFCAf8B
 | 
					 | 
				
			||||||
        7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AZcBegFIAfYDMwFR/wCRAAMDAQQD
 | 
					 | 
				
			||||||
        TQGTAzYB/wHaAcoBwQH/Ae0B3QHTAf8B7gHfAdYB/wHtAd0B1AH/AeUBzgHDAf8BlgGIAYIB/wE4AjcB
 | 
					 | 
				
			||||||
        /wFsAWMBXwH/AbYBoQGYAf8B0AG3AawB/wHQAbcBrAH/AcwBtAGpAf8BnAGLAYQB/wHMAbQBqQH/AbYB
 | 
					 | 
				
			||||||
        ogGYAf8BVAFPAUwB/wGqAZcBjwH/Ac8BtgGsAf8BlAGFAYAB/wGvAZ4BlgH/AeYBzAHBAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AecBzQHCAf8B2QHAAbYB/wE3AjYB/wNOAZYDAwEEKAADMwFRAYwBWwFAAfcBuAFaARsB
 | 
					 | 
				
			||||||
        /wG4AVoBGwH/AbgBWgEbAf8BuAFaARsB/wG4AVoBGwH/AbgBWgEbAf8BuAFaARsB/wG5AVoBGwH/AbkB
 | 
					 | 
				
			||||||
        WgEaAf8BuQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BuQFaARoB/wG5AVoBGgH/AboBWgEaAf8BugFaARoB
 | 
					 | 
				
			||||||
        /wG6AVsBGgH/AboBWwEaAf8BugFbARoB/wG6AVsBGgH/AaoBZgErAfwB1gGMAU0B/gHtAaQBQgH/Ae0B
 | 
					 | 
				
			||||||
        pAFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB
 | 
					 | 
				
			||||||
        /wHsAaQBQgH/AewBpAFCAf8B7AGkAUIB/wHsAaQBQgH/AZcBegFIAfYDMwFR/wCRAAMJAQwDVgGyAUkB
 | 
					 | 
				
			||||||
        RgFFAf8B5gHPAcQB/wHtAdwB0gH/Ae0B3QHTAf8B7QHdAdMB/wG8AbABqAH/AjgBNwH/AXsBcAFrAf8B
 | 
					 | 
				
			||||||
        zgG1AaoB/wHQAbcBrAH/AdABtwGsAf8B0AG3AawB/wHQAbcBrAH/AdABtwGsAf8B0AG3AawB/wHPAbYB
 | 
					 | 
				
			||||||
        qwH/AcwBtAGpAf8BzwG2AasB/wGEAXcBcgH/AzUB/wGTAYUBfwH/AeYBzAHBAf8B5wHNAcIB/wHnAc0B
 | 
					 | 
				
			||||||
        wgH/AecBzQHCAf8B5gHMAcEB/wFQAUsBSgH/A1UBtAMJAQwoAAMzAVEBiwFbAUAB9wG3AVoBGwH/AbgB
 | 
					 | 
				
			||||||
        WgEbAf8BuAFaARsB/wG4AVoBGwH/AbgBWgEbAf8BuAFaARsB/wG4AVoBGwH/AbgBWgEbAf8BuQFaARsB
 | 
					 | 
				
			||||||
        /wG5AVoBGgH/AbkBWgEaAf8BuQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BuQFaARoB/wG6AVoBGgH/AboB
 | 
					 | 
				
			||||||
        WgEaAf8BugFbARoB/wG6AVsBGgH/AboBWwEaAf8BrgFtATEB+wHuAaQBQgH/Ae0BpAFCAf8B7QGkAUIB
 | 
					 | 
				
			||||||
        /wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0B
 | 
					 | 
				
			||||||
        pAFCAf8B7AGkAUIB/wHsAaQBQgH/AewBpAFCAf8BlwF6AUgB9gMzAVH/AIkAAxMBGgMpAT0DQAFwA14B
 | 
					 | 
				
			||||||
        6wGvAZ8BmAH/AecBzQHCAf8B6QHRAcYB/wHsAdsB0AH/AdYByAG/Af8BRgFEAUMB/wFrAWIBXgH/Ac4B
 | 
					 | 
				
			||||||
        tQGqAf8B0AG3AawB/wHOAbYBqwH/AaIBkQGJAf8BaAFgAVwB/wFBAT8BPgH/AzUB/wFBAT4BPQH/AWgB
 | 
					 | 
				
			||||||
        XwFbAf8BogGQAYgB/wHNAbQBqgH/AZQBhQF+Af8BhAF3AXEB/wHPAbYBrAH/AeMByQG+Af8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wG0AaIBmgH/A14B6wM/AW4DKAE8AxMBGSAAAzMBUQGLAVsB
 | 
					 | 
				
			||||||
        QAH3AbcBWgEbAf8BtwFaARsB/wG4AVoBGwH/AbgBWgEbAf8BwwFyATwB/wHLAYUBVgH/Ab8BaQEwAf8B
 | 
					 | 
				
			||||||
        uAFaARsB/wG4AVoBGwH/AbkBWgEbAf8BuQFaARsB/wG9AWQBKAH/AcsBhQFWAf8BxQF2AUEB/wG5AVoB
 | 
					 | 
				
			||||||
        GgH/AbkBWgEaAf8BuQFaARoB/wG6AVoBGgH/AboBWwEaAf8BvgFVATUB/QHCAZcBQAH9Ae4BpAFCAf8B
 | 
					 | 
				
			||||||
        7gGkAUIB/wHeAZQBOgH/Ae0BowFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB/wHrAaIB
 | 
					 | 
				
			||||||
        QQH/Ad0BkwE6Af8B7QGkAUIB/wHtAaQBQgH/AewBpAFCAf8B7AGkAUIB/wGXAXoBSAH2AzMBUf8AfQAD
 | 
					 | 
				
			||||||
        EQEWA0ABcANYAboDYAHbA1wB7QMrAfwBdgFwAW0B/wHpAdkBzwH/AekB0QHHAf8B5wHNAcIB/wHoAdAB
 | 
					 | 
				
			||||||
        xQH/AYUBfQF3Af8BPgE8ATsB/wGxAZ0BlAH/AdABtwGsAf8BzgG2AasB/wGCAXUBcAH/AT0CPAH/AUsB
 | 
					 | 
				
			||||||
        YAFnAf8BcgGnAboB/wF9AbsB0gH/AXIBqAG8Af8BTAFhAWgB/wE9AjwB/wGBAXQBbwH/Ac0BtQGqAf8B
 | 
					 | 
				
			||||||
        zwG2AasB/wHAAakBnwH/AYUBeAFzAf8BoAGQAYkB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHlAcsB
 | 
					 | 
				
			||||||
        wAH/AXkBbwFqAf8COAE3AfsDXQHsA2AB2wNYAbgDQAFvAxEBFhQAAzMBUQGLAVsBQAH3AbcBWgEbAf8B
 | 
					 | 
				
			||||||
        twFaARsB/wG3AVoBGwH/AbcBWgEbAf8BzgGMAWEB/wH7AfUB8QH/Ad0BsQGTAf8BuAFaARsB/wG4AVoB
 | 
					 | 
				
			||||||
        GwH/AbgBWgEbAf8BuAFaARsB/wHWAaABfAH/AfsB9QHxAf8B1wGhAX4B/wG5AVoBGgH/AbkBWgEaAf8B
 | 
					 | 
				
			||||||
        uQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BvgFiATwB/QHUAYkBTAH+Ae4BpAFCAf8B2QGPATgB/wGWAUwB
 | 
					 | 
				
			||||||
        FwH/AcUBegEuAf8B7AGjAUEB/wHtAaQBQgH/Ae0BpAFCAf8B6QGgAUAB/wG5AW0BJwH/AZgBSgEVAf8B
 | 
					 | 
				
			||||||
        3gGUAToB/wHtAaQBQgH/Ae0BpAFCAf8B7QGkAUIB/wGXAXoBSAH2AzMBUf8AeQADJgE4A1EB8wFGAUMB
 | 
					 | 
				
			||||||
        QgH/AVcBUgFPAf8BeQFvAWoB/wGqAZkBkgH/AdoBxgG9Af8B7QHcAdIB/wHtAd0B0wH/AewB2wHRAf8B
 | 
					 | 
				
			||||||
        6AHQAcYB/wHWAb4BtAH/AVcBUQFPAf8BZAFcAVgB/wHQAbcBrAH/AdABtwGsAf8BowGRAYkB/wE9AjwB
 | 
					 | 
				
			||||||
        /wFaAXsBiAH/AYsB1gHwAf8BjwHdAfkB/wGPAd0B+QH/AY8B3QH5Af8BiwHWAfEB/wFbAXwBiQH/AT0C
 | 
					 | 
				
			||||||
        PAH/AaIBkAGJAf8BzAG0AakB/wFNAUkBRwH/AUcBRAFCAf8BiwF/AXoB/wHmAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B3QHEAboB/wGvAZ0BlgH/AX4BcwFvAf8BWQFUAVEB/wFHAUQB
 | 
					 | 
				
			||||||
        QwH/A1EB8wMnATkQAAMzAVEBiwFbAUAB9wG3AVoBGwH/AbcBWgEbAf8BtwFaARsB/wG3AVoBGwH/AbgB
 | 
					 | 
				
			||||||
        XgEgAf8B+QHxAewB/wH4Ae4B5wH/AckBgQFQAf8ByQGBAVAB/wHJAYEBUAH/AckBgQFQAf8B9AHlAdwB
 | 
					 | 
				
			||||||
        /wH7AfYB8wH/AcYBeAFEAf8BuQFaARoB/wG5AVoBGgH/AbkBWgEaAf8BuQFaARoB/wG5AVoBGgH/AasB
 | 
					 | 
				
			||||||
        awEwAfsB7gGkAUIB/wHtAaMBQgH/AbwBcgEqAf8BjQFCARIB/wGOAUIBEgH/Ab8BdAErAf8B6AGeAT8B
 | 
					 | 
				
			||||||
        /wHbAZEBOQH/AaMBVQEbAf8BjgE/ARAB/wGYAUoBFgH/AcwBggExAf8B7QGkAUIB/wHtAaQBQgH/Ae0B
 | 
					 | 
				
			||||||
        pAFCAf8BlwF6AUgB9gMzAVH/AHkAA04BlAE6AjkB/wHCAa0BpAH/Ad4BxQG7Af8B5wHNAcIB/wHnAc0B
 | 
					 | 
				
			||||||
        wgH/AecBzQHCAf8B6gHUAcoB/wHtAd0B0wH/Ae0B3QHTAf8B7AHbAdEB/wHFAbMBqgH/AUMBQAE/Af8B
 | 
					 | 
				
			||||||
        oAGOAYcB/wHQAbcBrAH/AdABtwGsAf8BagFhAV0B/wFKAV4BZQH/AYsB1gHwAf8BjwHdAfkB/wGPAd0B
 | 
					 | 
				
			||||||
        +QH/AY8B3QH5Af8BjwHdAfkB/wGPAd0B+QH/AYsB1gHxAf8BSwFgAWgB/wFoAWABXAH/Ac8BtgGrAf8B
 | 
					 | 
				
			||||||
        qAGWAY0B/wG4AaMBmQH/Ad0ByQG/Af8B6gHVAcoB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0B
 | 
					 | 
				
			||||||
        wgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AeABxwG9Af8BxgGxAacB/wE7AjkB/wNOAZYQAAMzAVEB
 | 
					 | 
				
			||||||
        iwFbAUAB9wG3AVoBGwH/AbcBWgEbAf8BtwFaARsB/wG3AVoBGwH/AbcBWwEcAf8B5gHGAbEZ/wHvAdkB
 | 
					 | 
				
			||||||
        ywH/Ab4BZwEtAf8BuAFaARsB/wG5AVoBGwH/AbkBWgEaAf8BuQFaARoB/wGiAWcBJgH+AcQBfgExAfwB
 | 
					 | 
				
			||||||
        7gGkAUIB/wHuAaQBQgH/AekBnwE/Af8BxwF9AS8B/wGTAUcBFQH/AY0BQQESAf8BpwFbAR4B/wGZAUwB
 | 
					 | 
				
			||||||
        FgH/AY4BQAERAf8BrwFhASEB/wHbAZEBOQH/AewBowFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B
 | 
					 | 
				
			||||||
        lwF6AUgB9gMzAVH/AHkAA1EBogE9ATwBOwH/AeYBzAHBAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AeoB1AHJAf8B7QHdAdMB/wHtAd0B0wH/Ab0BsQGpAf8BNwI2Af8BxAGtAaMB
 | 
					 | 
				
			||||||
        /wHQAbcBrAH/AdABtwGsAf8BQwFAAT8B/wFwAaUBtwH/AY8B3QH5Af8BjwHdAfkB/wFsAZwBrQH/AToB
 | 
					 | 
				
			||||||
        QQFEAf8BagGaAasB/wGPAd0B+QH/AY8B3QH5Af8BcgGnAboB/wFBAT8BPgH/AdABtwGsAf8BzAGzAakB
 | 
					 | 
				
			||||||
        /wHEAa0BowH/Ac8BuwGxAf8B6gHaAdAB/wHrAdUBygH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wE9ATwBOwH/A1EBoRAAAzMBUQGLAVsB
 | 
					 | 
				
			||||||
        QQH3AbYBWgEcAf8BtwFaARsB/wG3AVoBGwH/AbcBWgEbAf8BtwFaARsB/wHUAZwBdgH/Af4B/QH8Af8B
 | 
					 | 
				
			||||||
        9gHqAeMB/wHjAcABqAH/AeQBwAGnAf8B8gHgAdQF/wHhAbgBnAH/AbgBWwEcAf8BuAFaARsB/wG4AVoB
 | 
					 | 
				
			||||||
        GwH/AbkBWgEbAf8BuQFaARsB/wGiAW4BMgH6Ae8BowFCAf8B7wGjAUIB/wHuAaQBQgH/Ae4BpAFCAf8B
 | 
					 | 
				
			||||||
        7gGkAUIB/wHNAYMBMgH/AZABRAETAf8BjAFAAREB/wGNAT8BEAH/AbgBbAEmAf8B7AGiAUEB/wHuAaQB
 | 
					 | 
				
			||||||
        QgH/Ae0BpAFCAf8B7QGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8BlwF6AUgB9gMzAVH/AHkAA1EBogE9ATwB
 | 
					 | 
				
			||||||
        OwH/AeYBzAHBAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        6gHUAcoB/wHtAdwB0gH/AbgBrAGlAf8DMwH/Ac4BtQGqAf8B0AG3AawB/wHQAbcBrAH/ATgCNwH/AXwB
 | 
					 | 
				
			||||||
        uQHQAf8BjwHdAfkB/wGPAd0B+QH/AT0BRgFJAf8DMwH/ATsBQwFFAf8BjwHdAfkB/wGPAd0B+QH/AXwB
 | 
					 | 
				
			||||||
        uwHRAf8BNgI1Af8B0AG3AawB/wGcAYsBgwH/ATgCNwH/AUEBQAE/Af8BxwG6AbIB/wHtAdwB0gH/AeoB
 | 
					 | 
				
			||||||
        1QHKAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wE9ATwBOwH/A1EBoRAAAzMBUQGLAVsBQQH3AbYBWgEcAf8BtgFaARwB/wG3AVoBGwH/AbcBWgEbAf8B
 | 
					 | 
				
			||||||
        twFaARsB/wHFAXoBRwH/AfkB8gHtAf8B8QHeAdIB/wG9AWgBLwH/AboBYAEjAf8B6AHJAbQF/wHMAYgB
 | 
					 | 
				
			||||||
        WwH/AbgBWgEbAf8BuAFaARsB/wG4AVoBGwH/AbgBWgEbAf8BogFnAScB/gG6AYUBOQH7Ae8BowFCAf8B
 | 
					 | 
				
			||||||
        7wGjAUIB/wHvAaMBQgH/Ae8BpAFCAf8B7gGkAUIB/wHOAYMBMgH/AZEBRQETAf8BjAFAAREB/wGOAUAB
 | 
					 | 
				
			||||||
        EQH/AcUBeQEtAf8B7QGjAUIB/wHuAaQBQgH/Ae4BpAFCAf8B7gGkAUIB/wHtAaQBQgH/Ae0BpAFCAf8B
 | 
					 | 
				
			||||||
        lwF6AUgB9gMzAVH/AHkAA1EBogE9ATwBOwH/AeYBzAHBAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHqAdQBygH/Ab0BsQGqAf8CNwE2Af8BwwGsAaIB
 | 
					 | 
				
			||||||
        /wHQAbcBrAH/AdABtwGsAf8BQwFBAUAB/wFvAaMBtgH/AY8B3QH5Af8BjwHdAfkB/wFuAaABsQH/AT4B
 | 
					 | 
				
			||||||
        SAFLAf8BbQGeAa8B/wGPAd0B+QH/AY8B3QH5Af8BcQGmAbgB/wFCAUABPgH/AdABtwGsAf8BzAG0AakB
 | 
					 | 
				
			||||||
        /wHEAa0BowH/Ac8BuwGxAf8B6gHaAdAB/wHtAd0B0wH/Ae0B3QHTAf8B6wHVAcoB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wE9ATwBOwH/A1EBoRAAAzMBUQGLAVsB
 | 
					 | 
				
			||||||
        QQH3AbYBWgEcAf8BtgFaARwB/wG2AVoBHAH/AbYBWgEcAf8BtgFaARsB/wG4AV0BHwH/AfEB3wHSAf8B
 | 
					 | 
				
			||||||
        +gHzAe8B/wHHAX8BTgH/Ab4BaQEwAf8B9gHrAeQB/wH7AfUB8gH/AboBXwEhAf8BuAFaARsB/wG4AVoB
 | 
					 | 
				
			||||||
        GwH/AbgBWgEbAf8BuAFaARsB/wG+AVwBOgH9AdUBiAFMAf4B7wGjAUIB/wHvAaMBQgH/Ae8BowFCAf8B
 | 
					 | 
				
			||||||
        7wGjAUIB/wHpAZ0BPwH/AZcBSwEWAf8BjAFAAREB/wGsAWABIAH/AZEBQwESAf8BlQFGARQB/wHWAYsB
 | 
					 | 
				
			||||||
        NgH/Ae4BpAFCAf8B7gGkAUIB/wHuAaQBQgH/Ae4BpAFCAf8B7QGkAUIB/wGXAXoBSAH2AzMBUf8AeQAD
 | 
					 | 
				
			||||||
        TQGSAToCOQH/AcIBrQGkAf8B3QHFAboB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wHnAc0BwgH/AcYBtAGrAf8BRAFCAUEB/wGeAY0BhQH/AdABtwGsAf8B0AG3AawB
 | 
					 | 
				
			||||||
        /wFrAWIBXgH/AUkBXAFkAf8BiwHVAe8B/wGPAd0B+QH/AY8B3QH5Af8BjwHdAfkB/wGPAd0B+QH/AY8B
 | 
					 | 
				
			||||||
        3QH5Af8BiwHVAfAB/wFKAV4BZQH/AWkBYQFdAf8BzwG2AasB/wG2AaEBmAH/AcIBqwGhAf8B4AHMAcEB
 | 
					 | 
				
			||||||
        /wHtAd0B0wH/Ae0B3QHTAf8B7QHdAdMB/wHtAd0B0wH/AeoB1QHKAf8B5wHOAcMB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B2wHDAbkB/wHBAawBpAH/AToCOQH/A04BlRAAAzMBUQGLAVsBQQH3AbYBWgEcAf8BtgFaARwB
 | 
					 | 
				
			||||||
        /wG2AVoBHAH/AbYBWgEcAf8BtgFaARwB/wG2AVoBGwH/AdYBoAF8Bf8B1wGjAYAB/wHNAYwBXwP/Af4B
 | 
					 | 
				
			||||||
        /wHdAbABkwH/AbcBWgEbAf8BuAFaARsB/wG4AVoBGwH/AbgBWgEbAf8BuAFaARsB/wG4AXoBKwH8Ae4B
 | 
					 | 
				
			||||||
        ogFBAf8B7wGjAUIB/wHvAaMBQgH/Ae8BowFCAf8B7wGjAUIB/wHRAYUBMwH/AZsBUAEZAf8BuQFtASgB
 | 
					 | 
				
			||||||
        /wHrAaABQQH/AbgBbAEmAf8BjgE/ARAB/wGoAVsBHgH/AewBoQFBAf8B7gGkAUIB/wHuAaQBQgH/Ae4B
 | 
					 | 
				
			||||||
        pAFCAf8B7gGkAUIB/wGXAXoBSAH2AzMBUf8AeQADIwEzA1gB7gFFAUMBQQH/AVYBUQFPAf8BeAFuAWoB
 | 
					 | 
				
			||||||
        /wGpAZgBkQH/AdgBwAG2Af8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHXAb8BtQH/AVgB
 | 
					 | 
				
			||||||
        UgFQAf8BYgFbAVcB/wHPAbcBrAH/AdABtwGsAf8BpAGSAYoB/wE+AjwB/wFZAXgBhAH/AYoB1QHvAf8B
 | 
					 | 
				
			||||||
        jwHdAfkB/wGPAd0B+QH/AY8B3QH5Af8BiwHVAfAB/wFZAXoBhgH/AT0CPAH/AaMBkQGKAf8BzQG0AakB
 | 
					 | 
				
			||||||
        /wFWAVEBTgH/AU4BSgFIAf8BqAGdAZYB/wHtAd0B0wH/Ae0B3QHTAf8B7QHdAdMB/wHtAd0B0wH/Ae0B
 | 
					 | 
				
			||||||
        3AHSAf8B1wHDAboB/wGlAZUBjgH/AXUBawFnAf8BVQFQAU4B/wFEAUIBQQH/AlgBVwHxAyUBNhAAAzMB
 | 
					 | 
				
			||||||
        UQGLAVsBQQH3AbUBWgEcAf8BtgFaARwB/wG2AVoBHAH/AbYBWgEcAf8BtgFaARwB/wG2AVoBHAH/AbwB
 | 
					 | 
				
			||||||
        ZQErAf8B/AH4AfYB/wHuAdgByAH/AekBzQG6Af8B/QH6AfgB/wG/AW0BNQH/AbcBWgEbAf8BtwFaARsB
 | 
					 | 
				
			||||||
        /wG3AVoBGwH/AbgBWgEbAf8BugFcARwB/wHAAX4BKwH8AfABowFCAf8B7wGjAUIB/wHvAaMBQgH/Ae8B
 | 
					 | 
				
			||||||
        owFCAf8B7wGjAUIB/wHvAaMBQgH/AeMBlwE8Af8B6wGfAUAB/wHvAaMBQgH/AekBngE/Af8BpQFXARwB
 | 
					 | 
				
			||||||
        /wGPAUABEQH/AcQBeAEsAf8B7gGkAUIB/wHuAaQBQgH/Ae4BpAFCAf8B7gGkAUIB/wGYAXoBSAH2AzMB
 | 
					 | 
				
			||||||
        Uf8AfQADDAEQAzwBZgNWAbADXAHZA1oB6gNMAfoBcgFpAWUB/wHkAcoBvwH/AecBzQHCAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AYUBeQF1Af8BPgE8ATsB/wGvAZsBkgH/AdABtwGsAf8BzwG2AasB/wGFAXgBcgH/AT4B
 | 
					 | 
				
			||||||
        PQE8Af8BSQFcAWMB/wFvAaIBtQH/AXsBuQHPAf8BbwGjAbUB/wFKAV0BZAH/AT4CPAH/AYQBdwFxAf8B
 | 
					 | 
				
			||||||
        zAG0AakB/wHOAbYBqwH/Aa0BmgGRAf8BZwFgAV0B/wGgAZYBkQH/Ae0B3QHTAf8B7QHdAdMB/wHtAd0B
 | 
					 | 
				
			||||||
        0wH/AeoB2gHQAf8BcwFtAWoB/wE3AjYB+wNeAesDXwHaA1UBtAM9AWkDDgESFAADMwFRAYsBWgFBAfcB
 | 
					 | 
				
			||||||
        tQFaARwB/wG1AVoBHAH/AbYBWgEcAf8BtgFaARwB/wG2AVoBHAH/AbYBWgEcAf8BtgFaARwB/wHoAckB
 | 
					 | 
				
			||||||
        tQH/Af4C/QH/Af4B/QH8Af8B7gHXAcgB/wG4AV0BHwH/AbcBWgEbAf8BtwFaARsB/wG3AVoBGwH/AbcB
 | 
					 | 
				
			||||||
        WgEbAf8BpgFuASsB/gHKAZ8BQAH9AfABowFCAf8B8AGjAUIB/wHvAaMBQgH/AboBbgEpAf8BpgFbAR8B
 | 
					 | 
				
			||||||
        /wGnAVsBHwH/AacBWwEfAf8BpwFbAR8B/wGlAVgBHQH/AacBWQEdAf8BoAFSARkB/wGOAT8BEAH/AZAB
 | 
					 | 
				
			||||||
        QQERAf8BqAFbAR0B/wHPAYQBMgH/Ae4BpAFCAf8B7gGkAUIB/wGYAXoBSAH2AzMBUf8AiQADDwEUAyUB
 | 
					 | 
				
			||||||
        NwM9AWkDWgHpAa0BnAGUAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B0wG8AbIB/wFIAUUBRAH/AWgB
 | 
					 | 
				
			||||||
        YAFcAf8BzgG1AaoB/wHQAbcBrAH/Ac8BtgGrAf8BpQGTAYsB/wFrAWIBXgH/AUQBQgFAAf8COQE4Af8B
 | 
					 | 
				
			||||||
        RAFBAUAB/wFrAWIBXgH/AaQBkgGKAf8BzQG0AaoB/wGNAX8BeAH/AYABcwFuAf8BzgG3Aa0B/wHoAdYB
 | 
					 | 
				
			||||||
        zAH/Ae0B3QHTAf8B7QHdAdMB/wHtAd0B0wH/Ae0B3QHTAf8BtAGpAaIB/wNeAesDPwFtAycBOgMRARYg
 | 
					 | 
				
			||||||
        AAMzAVEBiwFaAUEB9wG1AVkBHAH/AbUBWQEcAf8BtQFaARwB/wG1AVoBHAH/AbYBWgEcAf8BtgFaARwB
 | 
					 | 
				
			||||||
        /wG2AVoBHAH/AdABlAFsAf8B/gH9AfwC/wL+Af8B2wGtAY4B/wG3AVsBHAH/AbcBWgEbAf8BtwFaARsB
 | 
					 | 
				
			||||||
        /wG3AVoBGwH/AbcBWgEbAf8BpwF9AUIB+gHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AaYB
 | 
					 | 
				
			||||||
        WwEfAf8BiwFAAREB/wGLAUABEQH/AYsBQAERAf8BjAFAAREB/wGNAUABEQH/AY8BPwEQAf8BjQE/ARAB
 | 
					 | 
				
			||||||
        /wGOAT8BEAH/AY4BPwEQAf8BjwE/ARAB/wHEAXgBLAH/Ae4BpAFCAf8B7gGkAUIB/wGYAXoBSAH2AzMB
 | 
					 | 
				
			||||||
        Uf8AkQADCAEKA1UBrwFJAUYBRAH/AeUBywHAAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8BuwGnAZ8B
 | 
					 | 
				
			||||||
        /wE5AjgB/wF0AWoBZQH/Ac4BtQGqAf8B0AG3AawB/wHQAbcBrAH/AdABtwGsAf8B0AG3AawB/wHQAbcB
 | 
					 | 
				
			||||||
        rAH/AdABtwGsAf8B0AG3AawB/wHQAbcBrAH/Ac8BtgGrAf8BhQF4AXMB/wM1Af8BkgGGAYEB/wHsAdsB
 | 
					 | 
				
			||||||
        0QH/Ae0B3QHTAf8B7QHdAdMB/wHtAd0B0wH/AesB2wHRAf8BSwFJAUgB/wNWAbMDCQEMKAADMwFRAYsB
 | 
					 | 
				
			||||||
        WgFBAfcBtQFZARwB/wG1AVkBHAH/AbUBWQEcAf8BtQFaARwB/wG1AVoBHAH/AbYBWgEcAf8BtgFaARwB
 | 
					 | 
				
			||||||
        /wHCAXUBQgH/AfUB6AHgAf8B+gH0Ae8B/wHKAYcBWgH/AbYBWgEcAf8BtgFaARsB/wG3AVoBGwH/AbcB
 | 
					 | 
				
			||||||
        WgEbAf8BoQFnASgB/gHBAZIBSwH7AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB
 | 
					 | 
				
			||||||
        /wHwAaMBQgH/Ae8BowFCAf8B7wGjAUIB/wHvAaMBQgH/AY0BQAERAf8BpgFYARwB/wHvAaMBQgH/Ae8B
 | 
					 | 
				
			||||||
        owFCAf8B7wGjAUIB/wHvAaMBQgH/Ae8BpAFCAf8B7gGkAUIB/wHuAaQBQgH/AZgBegFIAfYDMwFR/wCR
 | 
					 | 
				
			||||||
        AAMDAQQDTgGUAzYB/wHWAb4BtAH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AeQBygG/Af8BmwGMAYUB
 | 
					 | 
				
			||||||
        /wE6AjkB/wFoAWABXAH/Aa8BmwGSAf8BzwG2AawB/wHQAbcBrAH/AdABtwGsAf8B0AG3AawB/wHQAbcB
 | 
					 | 
				
			||||||
        rAH/AdABtwGsAf8B0AG3AawB/wHQAbcBrAH/AdABuQGuAf8BmQGMAYYB/wGyAaABmAH/AegB0AHFAf8B
 | 
					 | 
				
			||||||
        7AHbAdEB/wHxAeUB4QH/Ae0B3QHUAf8B3QHOAcUB/wM3Af8DTgGXAwMBBCgAAzMBUQGLAVoBQQH3AbUB
 | 
					 | 
				
			||||||
        WQEcAf8BtQFZARwB/wG1AVkBHAH/AbUBWQEcAf8BtQFaARwB/wG1AVoBHAH/AbUBWgEcAf8BtwFdASEB
 | 
					 | 
				
			||||||
        /wHBAXMBPgH/AcMBdgFCAf8BuAFfASMB/wG2AVoBHAH/AbYBWgEcAf8BtgFaARwB/wG3AVoBGwH/AZ0B
 | 
					 | 
				
			||||||
        XwEoAfsB8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB
 | 
					 | 
				
			||||||
        /wHwAaMBQgH/AfABowFCAf8B7wGjAUIB/wGbAU8BGQH/AbEBYwEiAf8B7wGjAUIB/wHvAaMBQgH/Ae8B
 | 
					 | 
				
			||||||
        owFCAf8B7wGjAUIB/wHvAaMBQgH/Ae8BowFCAf8B7gGkAUIB/wGYAXoBSAH2AzMBUf8AkQADGAEgA14B
 | 
					 | 
				
			||||||
        4gF/AXQBbwH/AeYBzAHBAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHkAcoBvwH/Ab4B
 | 
					 | 
				
			||||||
        qQGhAf8BSgFHAUUB/wE+ATwBOwH/AWIBWgFXAf8BpgGUAYwB/wHQAbcBrAH/AdABtwGsAf8BxQGuAaQB
 | 
					 | 
				
			||||||
        /wGeAY0BhgH/AZMBhAF9Af8B2QHDAbgB/wHoAdYBzAH/AewB3AHRAf8B6QHRAcYB/wHnAc0BwgH/AewB
 | 
					 | 
				
			||||||
        2AHSAf8B9wH0AfkB/wHyAegB5AH/AewB3AHSAf8BhgF+AXoB/wNeAeMDGAEhKAADMwFRAYsBWgFBAfcB
 | 
					 | 
				
			||||||
        tAFZARwB/wG1AVkBHAH/AbUBWQEcAf8BtQFZARwB/wG1AVkBHAH/AbUBWQEcAf8BtQFZARwB/wG1AVoB
 | 
					 | 
				
			||||||
        HAH/AbYBWgEcAf8BtgFaARwB/wG2AVoBHAH/AbYBWgEcAf8BtgFaARwB/wG2AVoBHAH/AaABZwEoAf4B
 | 
					 | 
				
			||||||
        vwF+ASsB/AHxAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMB
 | 
					 | 
				
			||||||
        QgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AegBmwE+Af8B6QGdAT8B/wHvAaMBQgH/Ae8BowFCAf8B
 | 
					 | 
				
			||||||
        7wGjAUIB/wHvAaMBQgH/Ae8BowFCAf8B7wGjAUIB/wHvAaMBQgH/AZoBegFIAfYDMwFR/wCNAAMDAQQD
 | 
					 | 
				
			||||||
        UQGiAVEBTAFKAf8B4QHIAb4B/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AdUBvgG0Af8BiwF+AXgB/wFaAVUBUgH/AV8BWgFXAf8B2wHGAbsB/wHRAbwB
 | 
					 | 
				
			||||||
        sgH/AU8BTAFKAf8BRgFDAUIB/wFiAVsBWAH/AewB2wHRAf8B7QHdAdMB/wHtAd0B0wH/AewB2wHQAf8B
 | 
					 | 
				
			||||||
        6QHRAcYB/wHnAc0BwgH/AewB2gHUAf8B7AHbAdEB/wHtAd0B0wH/AekB2QHQAf8BVAFSAVAB/wNRAaQD
 | 
					 | 
				
			||||||
        BAEFJAADMwFRAYsBWgFBAfcBtAFZARwB/wG0AVkBHAH/AbUBWQEcAf8BtQFZARwB/wG1AVkBHAH/AbUB
 | 
					 | 
				
			||||||
        WQEcAf8BtQFZARwB/wG1AVkBHAH/AbUBWgEcAf8BtQFaARwB/wG2AVoBHAH/AbYBWgEcAf8BtgFaARwB
 | 
					 | 
				
			||||||
        /wG2AVoBHAH/AaYBbwEtAf4BxAGXAUAB/QHxAaMBQgH/AfEBowFCAf8B8AGjAUIB/wHwAaMBQgH/AfAB
 | 
					 | 
				
			||||||
        owFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB
 | 
					 | 
				
			||||||
        /wHvAaMBQgH/Ae8BowFCAf8B7wGjAUIB/wHvAaMBQgH/Ae8BowFCAf8B7wGjAUIB/wHvAaMBQgH/AZoB
 | 
					 | 
				
			||||||
        egFIAfYDMwFR/wCNAAM1AVYBOgI5AfsBoQGRAYsB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0B
 | 
					 | 
				
			||||||
        wgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AdkBwgG3Af8B
 | 
					 | 
				
			||||||
        1gHCAbkB/wHtAd0B0wH/AesB3AHSAf8ByQG9AbQB/wHJAbYBrQH/AdoBwgG4Af8B6AHRAcYB/wHsAdsB
 | 
					 | 
				
			||||||
        0AH/Ae0B3QHTAf8B7QHdAdMB/wHtAdsB0QH/AekB0gHHAf8B5wHNAcIB/wHoAdABxQH/AewB2gHQAf8B
 | 
					 | 
				
			||||||
        7QHdAdMB/wGpAZ4BmAH/ATsCOgH7AzYBWCQAAzMBUQGLAVoBQQH3AbQBWQEdAf8BtAFZAR0B/wG0AVkB
 | 
					 | 
				
			||||||
        HAH/AbQBWQEcAf8BtAFZARwB/wG1AVkBHAH/AbUBWQEcAf8BtQFZARwB/wG1AVkBHAH/AbUBWQEcAf8B
 | 
					 | 
				
			||||||
        tQFaARwB/wG1AVoBHAH/AbYBWgEcAf8BtgFaARwB/wGvAXABKwH8AfABogFBAf8B8QGjAUIB/wHxAaMB
 | 
					 | 
				
			||||||
        QgH/AfEBowFCAf8B8QGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B
 | 
					 | 
				
			||||||
        8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/Ae8BowFCAf8B7wGjAUIB/wHvAaMB
 | 
					 | 
				
			||||||
        QgH/Ae8BowFCAf8B7wGjAUIB/wGaAXoBSAH2AzMBUf8AiQADEQEWA10BzgFaAVUBUgH/Ad0BxQG6Af8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0B
 | 
					 | 
				
			||||||
        wgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B6gHUAcoB/wHtAd4B1AH/Ae0B3QHTAf8B
 | 
					 | 
				
			||||||
        7AHbAdEB/wHoAdABxQH/AecBzQHCAf8B6QHRAcYB/wHtAdwB0gH/Ae0B3QHTAf8B7QHdAdMB/wHsAdsB
 | 
					 | 
				
			||||||
        0QH/AekB0QHGAf8B5wHNAcIB/wHoAdEBxgH/Ae0B3AHSAf8B5QHWAcwB/wFgAVwBWQH/A1sB0AMSARcg
 | 
					 | 
				
			||||||
        AAMzAVEBiwFaAUEB9wG0AVkBHQH/AbQBWQEdAf8BtAFZAR0B/wG0AVkBHAH/AbQBWQEcAf8BtAFZARwB
 | 
					 | 
				
			||||||
        /wG1AVkBHAH/AbUBWQEcAf8BtQFZARwB/wG1AVkBHAH/AbUBWQEcAf8BtQFaARwB/wG1AVoBHAH/AbYB
 | 
					 | 
				
			||||||
        WgEcAf8BuQF/ATcB+wHxAaMBQgH/AfEBowFCAf8B8QGjAUIB/wHxAaMBQgH/AfEBowFCAf8B8QGjAUIB
 | 
					 | 
				
			||||||
        /wHxAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfAB
 | 
					 | 
				
			||||||
        owFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B7wGjAUIB/wHvAaMBQgH/Ae8BowFCAf8BmgF6AUgB
 | 
					 | 
				
			||||||
        9gMzAVH/AIkAAygBPANcAe0BrgGcAZUB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wHmAcwBwQH/AdUBvQGzAf8B5AHKAcAB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHnAc0BwgH/AecBzgHDAf8B8QHmAeQB/wHwAeQB3gH/Ae0B3QHTAf8B7AHbAdAB/wHpAdEBxgH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHPAcQB/wHbAcsBwgH/AewB3AHSAf8B7QHdAdMB/wHsAdsB0AH/AekB0QHGAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHoAdABxQH/AewB2gHQAf8BugGuAaYB/wNXAe8DKQE+IAADMwFRAYsBWgFBAfcBtAFZAR0B/wG0AVkB
 | 
					 | 
				
			||||||
        HQH/AbQBWQEdAf8BtAFZAR0B/wG0AVkBHQH/AbQBWQEcAf8BtAFZARwB/wG0AVkBHAH/AbUBWQEcAf8B
 | 
					 | 
				
			||||||
        tQFZARwB/wG1AVkBHAH/AbUBWQEcAf8BtQFZARwB/wGhAWIBKwH8AdgBiQFNAf4B8QGjAUIB/wHxAaMB
 | 
					 | 
				
			||||||
        QgH/AfEBowFCAf8B8QGjAUIB/wHxAaMBQgH/AfEBowFCAf8B8QGjAUIB/wHxAaMBQgH/AfEBowFCAf8B
 | 
					 | 
				
			||||||
        8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMB
 | 
					 | 
				
			||||||
        QgH/AfABowFCAf8B7wGjAUIB/wHvAaMBQgH/AZoBegFIAfYDMwFR/wCJAAMgAS4DXgHiAWkBYgFeAf8B
 | 
					 | 
				
			||||||
        4QHIAb0B/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wHnAc0BwgH/AeEByAG9Af8BfgFzAW4B/wM2Af8B
 | 
					 | 
				
			||||||
        RwFEAUMB/wGrAZoBkwH/AeMBygG/Af8B5wHNAcIB/wHnAc0BwgH/Ae4B3gHZAf8B9wH2AfwB/wH3AfYB
 | 
					 | 
				
			||||||
        +wH/AfAB4wHdAf8B7QHdAdMB/wHqAdkBzwH/AbEBoQGaAf8BSwFIAUYB/wE3AjYB/wF+AXcBcwH/AeYB
 | 
					 | 
				
			||||||
        1wHNAf8B7QHdAdMB/wHtAdwB0gH/AekB0QHGAf8B5wHNAcIB/wHjAcsBwQH/AW0BZwFjAf8DWwHkAyEB
 | 
					 | 
				
			||||||
        MCAAAzMBUQF/AWABQAH2AbMBWQEdAf8BswFZAR0B/wG0AVkBHQH/AbQBWQEdAf8BtAFZAR0B/wG0AVkB
 | 
					 | 
				
			||||||
        HQH/AbQBWQEdAf8BtAFZARwB/wG0AVkBHAH/AbUBWQEcAf8BtQFZARwB/wG1AVkBHAH/AbUBWQEcAf8B
 | 
					 | 
				
			||||||
        qgFnAS8B+wHyAaMBQgH/AfIBowFCAf8B8QGjAUIB/wHxAaMBQgH/AfEBowFCAf8B8QGjAUIB/wHxAaMB
 | 
					 | 
				
			||||||
        QgH/AfEBowFCAf8B8QGjAUIB/wHxAaMBQgH/AfEBowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B
 | 
					 | 
				
			||||||
        8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B7wGjAUIB/wGaAXoB
 | 
					 | 
				
			||||||
        SAH2AzMBUf8AiQADAgEDAzsBZANZAe8BewFxAW0B/wHhAcgBvQH/AecBzQHCAf8B3gHFAbsB/wGiAZIB
 | 
					 | 
				
			||||||
        iwH/AVEBTAFLAf8DYAHgA00BkwNWAbADWgHpAW8BZgFiAf8B5wHNAcIB/wHqAdYBzwH/AfMB7AHuAf8B
 | 
					 | 
				
			||||||
        +AH3Af4B/wH3AfYB/QH/AfIB6QHoAf8B7gHeAdYB/wF8AXUBcQH/A1wB6gNWAbADTQGSA10B3wFQAU0B
 | 
					 | 
				
			||||||
        TAH/AaMBmQGTAf8B4QHSAckB/wHsAdsB0AH/AeMBzAHBAf8BfQFyAW0B/wNYAfEDPQFoAwMBBCAAAx0B
 | 
					 | 
				
			||||||
        KAFlAl4B3QGzAVkBHQH/AbMBWQEdAf8BswFZAR0B/wG0AVkBHQH/AbQBWQEdAf8BtAFZAR0B/wG0AVkB
 | 
					 | 
				
			||||||
        HQH/AbQBWQEdAf8BtAFZARwB/wG0AVkBHAH/AbQBWQEcAf8BtQFZARwB/wGiAWoBKgH+AcQBlQFAAf0B
 | 
					 | 
				
			||||||
        8gGjAUIB/wHyAaMBQgH/AfIBowFCAf8B8QGjAUIB/wHxAaMBQgH/AfEBowFCAf8B8QGjAUIB/wHxAaMB
 | 
					 | 
				
			||||||
        QgH/AfEBowFCAf8B8QGjAUIB/wHxAaMBQgH/AfEBowFCAf8B8QGjAUIB/wHwAaMBQgH/AfABowFCAf8B
 | 
					 | 
				
			||||||
        8AGjAUIB/wHwAaMBQgH/AfABowFCAf8B8AGjAUIB/wHwAaMBQgH/AfABowFCAf8CZQFeAd0DHQEo/wCN
 | 
					 | 
				
			||||||
        AAQCAzIBTwNZAe8BaQFiAV4B/wGxAZ4BlgH/AVsBVQFTAf8DTQH6A1EBngMYASADAwEEAwkBCwM/AWwD
 | 
					 | 
				
			||||||
        NgH7AdQBvQGzAf8B5wHNAcIB/wHoAdABxwH/AfMB6wHtAf8B7wHhAd8B/wHoAc8BxQH/AeABzAHCAf8D
 | 
					 | 
				
			||||||
        LQH8Az8BbgMJAQsDAwEEAxYBHgNQAZoDQQH5AVkBVgFUAf8BsAGlAZ4B/wFsAWcBYwH/A1QB8AMzAVID
 | 
					 | 
				
			||||||
        AgEDJAAEAQMaASQDPQFoAkEBQAFxAkEBQAFxAkEBQAFxAkEBQAFxAkEBQAFxAkEBQAFxAkEBQAFxAkEB
 | 
					 | 
				
			||||||
        QAFxAkEBQAFxAkEBQAFxAkEBQAFxAkEBQAFwAkEBQAFxA0EBcQNBAXEDQQFxA0EBcQNBAXEDQQFxA0EB
 | 
					 | 
				
			||||||
        cQNBAXEDQQFxA0EBcQNBAXEDQQFxA0EBcQNBAXEDQQFxA0EBcQNBAXEDQQFxA0EBcQNBAXEDPQFoAxoB
 | 
					 | 
				
			||||||
        JAQB/wCRAAQCAzsBZANeAeIDXAHtA1sBzQM0AVQDAwEEDAADJwE6A14B6wGlAZQBjgH/AecBzQHCAf8B
 | 
					 | 
				
			||||||
        5wHNAcIB/wHqAdYBzgH/AegBzgHEAf8B5wHNAcIB/wGxAZ8BlwH/A10B7AMpAT0MAAMCAQMDMwFRA1wB
 | 
					 | 
				
			||||||
        ywNcAe0DXgHjAz0BZwMCAQP/AP8AWgADAgEDAyABLQMoATsDEAEVFAADEgEXA18B2gF0AWsBZwH/AecB
 | 
					 | 
				
			||||||
        zQHCAf8B5wHNAcIB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB/wGAAXUBcAH/A2AB2wMTARkUAAMPARQD
 | 
					 | 
				
			||||||
        KAE7AyABLgMCAQP/AP8AhgADVgGzAVUBUAFOAf8B3AHDAbkB/wHnAc0BwgH/AecBzQHCAf8B5wHNAcIB
 | 
					 | 
				
			||||||
        /wHhAcgBvQH/AVoBVAFSAf8DWAG6/wD/AK4AAz0BaQFEAUIBQQH/AcABqwGjAf8B5QHMAcEB/wHlAcwB
 | 
					 | 
				
			||||||
        wQH/AeUBzAHBAf8BxQGwAacB/wFIAUUBQwH/A0ABcf8A/wCuAAMNAREDUwHwAToCOQH/AT0COwH/AT0C
 | 
					 | 
				
			||||||
        OwH/AT0COwH/AToCOQH/A1EB8wMRARb/AP8AsgADJAE0A00BkgNRAaIDUQGiA1EBogNNAZMDJQE3/wD/
 | 
					 | 
				
			||||||
        AP8A/wD/AD0AAUIBTQE+BwABPgMAASgDAAG0AwABLQMAAQEBAAEBBQABOAEEFgAD/wEAB/8BxwP/AcAM
 | 
					 | 
				
			||||||
        AAL/AeABPwP/AYcD/wHADAAC/wHAAR8D/wGDA/8BwAwAAv8BwAEfA/8BgAP/AcAMAAL/AcABDwP/AYAD
 | 
					 | 
				
			||||||
        /wHADAAB/wEPAYABDwGHAv8BgAE/Av8BwAwAAf4BAwGAAQ4BAwL/AYABPwL/AcAMAAH8AwABAQL/AYAB
 | 
					 | 
				
			||||||
        HwL/AcAMAAH4BAAC/wGAAQ8C/wHADAAB+AQAAf8BgAMAAQMBwAwAAfgEAAH/BAABAQHADAAB+AQAAf8E
 | 
					 | 
				
			||||||
        AAEBAcAMAAH8AwABAQH/BAABAQHADAAB/AMAAQEB/wQAAQEBwAwAAf4DAAEDAf8EAAEBAcAMAAH+AwAB
 | 
					 | 
				
			||||||
        AwH/BAABAQHADAAB/gMAAQMB/wQAAQEBwAwAAfgEAAH/BAABAQHADAABwAQAAR8EAAEBAcAMAAGABAAB
 | 
					 | 
				
			||||||
        DwQAAQEBwAwAAYAEAAEPBAABAQHADAABgAQAAQ8EAAEBAcAMAAGABAABDwQAAQEBwAwAAYAEAAEPBAAB
 | 
					 | 
				
			||||||
        AQHADAABgAQAAQ8EAAEBAcAMAAGABAABDwQAAQEBwAwAAcAEAAEfBAABAQHADAAB+AQAAf8EAAEBAcAM
 | 
					 | 
				
			||||||
        AAH+AwABAwH/BAABAQHADAAB/gMAAQMB/wQAAQEBwAwAAf4DAAEDAf8EAAEBAcAMAAH8AwABAQH/BAAB
 | 
					 | 
				
			||||||
        AQHADAAB/AMAAQEB/wQAAQEBwAwAAfgEAAH/BAABAQHADAAB+AQAAf8EAAEBAcAMAAH4BAAB/wQAAQEB
 | 
					 | 
				
			||||||
        wAwAAfgEAAH/BAABAQHADAAB/AMAAQEB/wQAAQEBwAwAAf4BAwGAAQ4BAwb/AcAMAAH/AQ8BgAEPAYcG
 | 
					 | 
				
			||||||
        /wHADAAC/wHAAR8H/wHADAAC/wHAAR8H/wHADAAC/wHAAR8H/wHADAAC/wHgAT8H/wHADAAL/wHADAAL
 | 
					 | 
				
			||||||
</value>
 | 
					 | 
				
			||||||
  </data>
 | 
					 | 
				
			||||||
</root>
 | 
					 | 
				
			||||||