From 4d77e0e2fb53e240a5c208522082bf0907c5c475 Mon Sep 17 00:00:00 2001 From: Augustin Popa Date: Fri, 4 Aug 2017 11:27:59 -0700 Subject: [PATCH 01/92] Updated language in the README Converted the README to describe this particular fork of the project. --- README.md | 46 +++++++++++++++++----------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 8eeea343a..991818247 100644 --- a/README.md +++ b/README.md @@ -4,16 +4,15 @@ [![NuGet downloads](https://img.shields.io/nuget/dt/GoogleTestAdapter.svg?colorB=0c7dbe&label=nuget)](https://www.nuget.org/packages/GoogleTestAdapter) -### Google Test Adapter +### Test Adapter for Google Test -Google Test Adapter (GTA) is a Visual Studio extension providing test discovery and execution of C++ tests written with the [Google Test](https://github.com/google/googletest) framework. - -**Update:** We proudly announce the [collaboration with Microsoft](https://blogs.msdn.microsoft.com/vcblog/2017/05/10/unit-testing-and-the-future-announcing-the-test-adapter-for-google-test/) with the aim of further improving the Google Test experience in Visual Studio! More details of our collaboration can be found at our [wiki pages](https://github.com/csoltenborn/GoogleTestAdapter/wiki) (soon). +The Test Adapter for Google Test is a Visual Studio extension providing test discovery and execution of C++ tests written with the [Google Test](https://github.com/google/googletest) framework. This is a fork of the ![original project](https://github.com/csoltenborn/GoogleTestAdapter) by Christian Soltenborn and Jonas Gefele ![Screenshot of Test Explorer](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/GoogleTestAdapter/VsPackage/Resources/Screenshot.png "Screenshot of Test Explorer") #### Features +* Project and item templates for setting up unit tests based on the Google Test framework; the project template provides automatic acquisition and setup of the Google Test framework, making it easy to get started with writing unit tests * Sequential and [parallel](#parallelization) test execution * [Traits](http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part-1-using-traits-in-the-unit-test-explorer.aspx) support by means of [custom C++ macros](#trait_macros) and/or [trait assignment by regexes](#trait_regexes) * Support for [value-parameterized](https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#value-parameterized-tests), [typed](https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#typed-tests), and [type-parameterized](https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#type-parameterized-tests) tests @@ -32,7 +31,7 @@ Google Test Adapter (GTA) is a Visual Studio extension providing test discovery #### History -* See [releases](https://github.com/csoltenborn/GoogleTestAdapter/releases) +* See [releases](https://github.com/Microsoft/TestAdapterForGoogleTest/blob/dev15/GoogleTestAdapter/Packaging.TAfGT/ReleaseNotes.txt) ### Usage @@ -43,19 +42,18 @@ Google Test Adapter (GTA) is a Visual Studio extension providing test discovery [![Download from NuGet](https://img.shields.io/nuget/vpre/GoogleTestAdapter.svg?colorB=0c7dbe&label=nuget)](https://www.nuget.org/packages/GoogleTestAdapter) [![Download at GitHub](https://img.shields.io/github/release/csoltenborn/GoogleTestAdapter/all.svg?colorB=0c7dbe&label=github)](https://github.com/csoltenborn/GoogleTestAdapter/releases) -Google Test Adapter can be installed in three ways: +The Test Adapter for Google Test can be installed in several ways: * Install through the Visual Studio Marketplace at *Tools/Extensions and Updates* - search for *Google Test Adapter*. -* Download and launch the VSIX installer from either the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ChristianSoltenborn.GoogleTestAdapter) or [GitHub](https://github.com/csoltenborn/GoogleTestAdapter/releases/download/v0.10.1/GoogleTestAdapter-0.10.1.vsix) -* Add a NuGet dependency to the [Google test adapter nuget package](https://www.nuget.org/packages/GoogleTestAdapter/) to your Google Test projects. Note, however, that Visual Studio integration is limited this way: VS can discover and run tests, but no debugging, options or toolbar will be available; configuration is only possible through solution config files (see below). +* Download and launch the VSIX installer from either the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.TestAdapterforGoogleTest) or [GitHub](https://github.com/Microsoft/TestAdapterForGoogleTest/releases) After restarting VS, your tests will be displayed in the Test Explorer at build completion time. If no or not all tests show up, have a look at the [trouble shooting section](#trouble_shooting). #### Configuration -GTA provides different ways of configuration: -* The *Google Test Adapter* section of Visual Studio's *Tools/Options* (not available if installed via NuGet). These options are referred to as *global options* in the following. -* The GTA toolbar (not available if installed via NuGet). The most important runtime options (i.e., *Parallel test execution*, *Break on failure*, *Catch exceptions*, and *Print test output*) can also be set via a toolbar; this is equivalent to setting the according options via *Tools/Options/Google Test Adapter*. +There are several different ways to configure the adapter: +* The *Test Adapter for Google Test* section of Visual Studio's *Tools/Options*. These options are referred to as *global options* in the following. +* The toolbar. The most important runtime options (i.e., *Parallel test execution*, *Break on failure*, *Catch exceptions*, and *Print test output*) can also be set via a toolbar; this is equivalent to setting the according options via *Tools/Options/Test Adapter for Google Test*. * Solution settings files (not available if run via [VsTest.Console.exe](https://msdn.microsoft.com/en-us/library/jj155800.aspx)). They are provided by means of an XML configuration file; this allows sharing of settings via source control. The configuration file must be placed in the same folder as the solution's `.sln` file, and must have the same name as that file, but with extension `.gta.runsettings`. E.g., if the solution file's name is `Foo.sln`, the settings file must be named `Foo.gta.runsettings`. * Visual Studio user settings files. VS allows for the selection of [test settings](https://msdn.microsoft.com/en-us/library/jj635153.aspx) files via the *Test/Test Settings* menu, and to pass such settings files to `VsTest.Console.exe` via the `/Settings` parameter. @@ -72,7 +70,7 @@ Overall, given a test executable `mytests.exe`, the following settings apply to 4. Solution settings of a solution settings file. 5. Global settings. -Note that due to the overriding hierarchy described above, you probably want to provide only a subset of the nodes in your configuration files. For instance, providing the node `true` in a shared solution settings file will make sure that all sharing developers will run GTA with debug output, no matter what the developer's individual settings at *Tools/Options/Google Test Adapter* are (and unless the developer has selected a test settings file via VS, which would override the solution setting). +Note that due to the overriding hierarchy described above, you probably want to provide only a subset of the nodes in your configuration files. For instance, providing the node `true` in a shared solution settings file will make sure that all sharing developers will run GTA with debug output, no matter what the developer's individual settings at *Tools/Options/Test Adapter for Google Test* are (and unless the developer has selected a test settings file via VS, which would override the solution setting). For reference, see a settings file [AllTestSettings.gta.runsettings](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings) containing all available settings, a more realistic solution settings file [SampleTests.gta.runsettings](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/SampleTests/SampleTests.gta.runsettings) as delivered with the SampleTests solution, and a user settings file [NonDeterministic.runsettings](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/SampleTests/NonDeterministic.runsettings) as used by GTA's end-to-end tests. @@ -129,18 +127,18 @@ If you need to perform some setup or teardown tasks in addition to the setup/tea ### External resources -* [Basic tutorial](https://usingcpp.wordpress.com/2016/07/23/google-test-and-visual-studio/) for using Google Test with GTA in Visual Studio +* [Basic tutorial](https://usingcpp.wordpress.com/2016/07/23/google-test-and-visual-studio/) for using Google Test with the Google Test Adapter in Visual Studio -### Trouble shooting +### Troubleshooting ##### None or not all of my tests show up * Switch on *Debug mode* at *Tools/Options/Google Test Adapter/General*, which will show on the test console whether your test executables are found by GTA. If they are not, you have two options: - * Configure a *Test discovery regex* at the same place. In case of GTA installation via NuGet, do not forget to add the regex to the solution config file (which might be a good idea anyways). + * Configure a *Test discovery regex* at the same place. * If your test executable is `..\FooTests.exe`, make sure that a file `..\FooTests.exe.is_google_test` exists. * Your test executable can not run with command line option `--gtest_list_tests`, e.g. because it crashes. Make sure that your tests can be listed via command line; if they do not, debug your test executable, e.g. by making the according test project the startup project of your solution, and placing a breakpoint at the main method of your test executable. * If your project configuration contains references to DLLs which do not end up in the build directory (e.g. through *Project/Properties/Linker/Input/Additional Dependencies*), these DLLs will not be found when running your tests. Use option *PATH extension* to add the directories containing these DLLs to the test executables' PATH variable. -* If your project happens to be a makefile project, there's a pitfall which will prevent GTA from discovering your tests: It appears that when importing a makefile project into VS, the *Output* setting of the project is populated from the makefile's content. However, if the makefile is edited later on such that the location of the generated test executable changes, VS does not find the test executable any more. One symptom of this is that your project can not be launched any more with `F5`. Make sure that the *Output* setting of the project is consistent with its makefile to avoid this problem. +* If your project happens to be a makefile project, there's a pitfall which will prevent the adapter from discovering your tests: It appears that when importing a makefile project into VS, the *Output* setting of the project is populated from the makefile's content. However, if the makefile is edited later on such that the location of the generated test executable changes, VS does not find the test executable any more. One symptom of this is that your project can not be launched any more with `F5`. Make sure that the *Output* setting of the project is consistent with its makefile to avoid this problem. ##### No source locations and traits are found for my tests * The test adapter is not able to find the pdb of your test executable, e.g. because it has been deleted or moved (and indicates that with a warning in the test output window). Rebuilding your solution should regenerate the pdb at an appropriate location. @@ -149,7 +147,7 @@ If you need to perform some setup or teardown tasks in addition to the setup/tea * VS 2017: `Generate debug information optimized for sharing and publishing (/DEBUG:FULL)` * Option *Parse symbol information* is set to `false`, making GTA not parse that information out of the pdb file intentionally. The actual set of options used is potentially composed from VS options, a solution settings file, and a user settings file; the resulting set of options will be logged to the test output window if the *Print debug info* option is set to `true`. -##### The Google Test Adapter extension is disabled when I start Visual Studio +##### The extension is disabled when I start Visual Studio * Your MEF cache might have been corrupted. Please refer to [this issue](https://github.com/csoltenborn/GoogleTestAdapter/issues/98) for help. @@ -162,20 +160,10 @@ Please refer to our [wiki](https://github.com/csoltenborn/GoogleTestAdapter/wiki #### People -Google Test Adapter is written and maintained by [Christian Soltenborn](https://github.com/csoltenborn) (main author) and [Jonas Gefele](https://github.com/jgefele) (regular contributor). +The original Google Test Adapter is written and maintained by [Christian Soltenborn](https://github.com/csoltenborn) (main author) and [Jonas Gefele](https://github.com/jgefele) (regular contributor). The first version of GTA was a slightly enhanced C# port of the F# [Google Test Runner](https://github.com/markusl/GoogleTestRunner), written by [Markus Lindqvist](https://github.com/markusl). We have also learned a lot from the JavaScript test runner [Chutzpah](https://github.com/mmanela/chutzpah), written by [Matthew Manela](https://github.com/mmanela). GTA has benefited from all kinds of contributions, be it feature requests, bug reports, code snippets, testing of new features and bugfixes, or even pull requests. Most (hopefully all) contributors are mentioned in the according [release notes](https://github.com/csoltenborn/GoogleTestAdapter/releases). - -#### Tools -* [ReSharper](https://www.jetbrains.com/resharper/) - awesome VS extension for .NET development, including refactoring, static analysis etc. - * thanks to [JetBrains](https://www.jetbrains.com/) for providing free licenses for our developers! - * note that JetBrains' [Resharper C++](https://www.jetbrains.com/resharper-cpp/) can also run tests written using Google Test -* [AppVeyor](http://www.appveyor.com/) - awesome .NET CI build services - * thanks for providing free services and great support for open source projects! -* [Codecov](https://codecov.io/) - code coverage visualization facilities - * thanks for providing free services for open source projects! -* [CommonMark.NET](https://github.com/Knagis/CommonMark.NET) - open source Markdown to HTML converter -* [OpenCover](https://github.com/OpenCover/opencover) - open source .NET code coverage +This particular fork of the project is maintained by the Visual C++ team at Microsoft. From 4baf798129da15dfdf5eed2d2ed0d9c64cd8cba3 Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Wed, 9 Aug 2017 14:35:36 -0700 Subject: [PATCH 02/92] Quote path in CreateProcess --- GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs b/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs index ebdb6baff..953f58ff4 100644 --- a/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs +++ b/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; @@ -171,13 +173,12 @@ private static PROCESS_INFORMATION CreateProcess(string command, string paramete } }; - string commandLine = command; + string commandLine = $"\"{command}\""; if (!string.IsNullOrEmpty(parameters)) commandLine += $" {parameters}"; if (string.IsNullOrEmpty(workingDir)) workingDir = null; - PROCESS_INFORMATION processInfo; // ReSharper disable ArgumentsStyleNamedExpression // ReSharper disable ArgumentsStyleLiteral From 0237d0c6ddc3456bba2ac24d63265c675c540875 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Tue, 15 Aug 2017 14:55:11 -0700 Subject: [PATCH 03/92] add a message popup when project creation fails due to sdk not found (#22) * add a message popup when project creation fails due to sdk not found * use sdk version as string when sdk is pre-win10 --- .../NewProjectWizard/WizardImplementation.cs | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index 98b023f2b..fb1d7d386 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -152,21 +152,32 @@ public void RunStarted(object automationObject, if (latestSdk == null) { + MessageBox.Show(Resources.WinSDKNotFound); throw new WizardCancelledException(Resources.WinSDKNotFound); } - List allPlatformsForLatestSdk = ToolLocationHelper.GetPlatformsForSDK("Windows", latestSdk.TargetPlatformVersion) - .Select(moniker => TryParsePlatformVersion(moniker)) - .Where(name => name != null) - .OrderByDescending(p => p.Version).ToList(); - Platform latestPlatform = allPlatformsForLatestSdk.FirstOrDefault(); + string versionString; - if (latestPlatform == null) + if (latestSdk.TargetPlatformVersion.Revision >= 10) { - throw new WizardCancelledException(Resources.WinSDKNotFound); - } + List allPlatformsForLatestSdk = ToolLocationHelper.GetPlatformsForSDK("Windows", latestSdk.TargetPlatformVersion) + .Select(moniker => TryParsePlatformVersion(moniker)) + .Where(name => name != null) + .OrderByDescending(p => p.Version).ToList(); + Platform latestPlatform = allPlatformsForLatestSdk.FirstOrDefault(); + + if (latestPlatform == null) + { + MessageBox.Show(Resources.WinSDKNotFound); + throw new WizardCancelledException(Resources.WinSDKNotFound); + } - string versionString = latestPlatform.Version.ToString(); + versionString = latestPlatform.Version.ToString(); + } + else + { + versionString = latestSdk.TargetPlatformVersion.ToString(); + } replacementsDictionary[TargetPlatformVersion] = versionString; } From f4d42c59035fe7bbf8f9e82effbd1660662d18a5 Mon Sep 17 00:00:00 2001 From: rashidsarwar Date: Wed, 23 Aug 2017 22:21:16 -0700 Subject: [PATCH 04/92] Make the adapter localizable (#23) * addressing feedback * Assorted fit-and-finish * Undo unfinished work for BatchFile resource * Fix some resources comments * Remove unused resources * Additional fixes --- .../Common.Dynamic.GTA/Strings.cs | 2 +- .../Common.Dynamic.TAfGT.csproj | 12 + .../Resources.Designer.cs | 99 +++ .../Common.Dynamic.TAfGT/Resources.resx | 133 +++ .../Common.Dynamic.TAfGT/Strings.cs | 8 +- .../Core.Tests/GoogleTestDiscovererTests.cs | 6 +- GoogleTestAdapter/Core/Core.csproj | 10 + .../Core/GoogleTestDiscoverer.cs | 28 +- GoogleTestAdapter/Core/GoogleTestExecutor.cs | 10 +- .../Core/Helpers/ProcessLauncher.cs | 11 +- .../Core/Helpers/RegexTraitParser.cs | 4 +- .../Core/Helpers/TestProcessLauncher.cs | 10 +- GoogleTestAdapter/Core/Helpers/Utils.cs | 4 +- GoogleTestAdapter/Core/Resources.Designer.cs | 792 ++++++++++++++++++ GoogleTestAdapter/Core/Resources.resx | 434 ++++++++++ .../Core/Runners/CommandLineGenerator.cs | 7 +- .../Core/Runners/ParallelTestRunner.cs | 15 +- .../Core/Runners/PreparingTestRunner.cs | 41 +- .../Core/Runners/SequentialTestRunner.cs | 31 +- .../Core/Runners/TestResultCollector.cs | 13 +- .../Core/Scheduling/SchedulingAnalyzer.cs | 22 +- .../Core/Scheduling/TestDurationSerializer.cs | 4 +- .../Core/Settings/SettingsWrapper.cs | 16 +- .../Core/TestCases/MethodSignatureCreator.cs | 6 +- .../Core/TestCases/NewTestCaseResolver.cs | 8 +- .../Core/TestCases/TestCaseFactory.cs | 23 +- .../Core/TestCases/TestCaseResolver.cs | 6 +- .../StandardOutputTestResultParser.cs | 8 +- ...StreamingStandardOutputTestResultParser.cs | 6 +- .../Core/TestResults/XmlTestResultParser.cs | 14 +- .../DiaResolver.Tests/DiaResolverTests.cs | 6 +- GoogleTestAdapter/DiaResolver/DiaFactory.cs | 2 +- GoogleTestAdapter/DiaResolver/DiaResolver.cs | 18 +- .../DiaResolver/DiaResolver.csproj | 12 + GoogleTestAdapter/DiaResolver/PeParser.cs | 6 +- .../DiaResolver/Resources.Designer.cs | 144 ++++ GoogleTestAdapter/DiaResolver/Resources.resx | 152 ++++ .../TestAdapter.Tests/TestDiscovererTests.cs | 8 +- .../TestExecutorTestsBase.cs | 29 +- .../TestAdapter/CommonFunctions.cs | 21 +- .../TestAdapter/DataConversionExtensions.cs | 6 +- .../Framework/MessageBasedDebuggerAttacher.cs | 10 +- .../Framework/VsTestFrameworkLogger.cs | 10 +- .../TestAdapter/Framework/VsVersion.cs | 10 +- .../TestAdapter/Helpers/TestCaseFilter.cs | 16 +- .../TestAdapter/Resources.Designer.cs | 351 ++++++++ GoogleTestAdapter/TestAdapter/Resources.resx | 241 ++++++ .../Settings/RunSettingsContainer.cs | 4 +- .../TestAdapter/TestAdapter.csproj | 10 + .../TestAdapter/TestDiscoverer.cs | 14 +- GoogleTestAdapter/TestAdapter/TestExecutor.cs | 20 +- 51 files changed, 2649 insertions(+), 224 deletions(-) create mode 100644 GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs create mode 100644 GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.resx create mode 100644 GoogleTestAdapter/Core/Resources.Designer.cs create mode 100644 GoogleTestAdapter/Core/Resources.resx create mode 100644 GoogleTestAdapter/DiaResolver/Resources.Designer.cs create mode 100644 GoogleTestAdapter/DiaResolver/Resources.resx create mode 100644 GoogleTestAdapter/TestAdapter/Resources.Designer.cs create mode 100644 GoogleTestAdapter/TestAdapter/Resources.resx diff --git a/GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs b/GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs index 596147fd5..811c23b9f 100644 --- a/GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs +++ b/GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs @@ -6,7 +6,7 @@ namespace GoogleTestAdapter.Common public class Strings : IStrings { public string ExtensionName => "Google Test Adapter"; - public string TroubleShootingLink => "Check out Google Test Adapter's trouble shooting section at https://github.com/csoltenborn/GoogleTestAdapter#trouble_shooting"; + public string TroubleShootingLink => "{0}Check out Google Test Adapter's trouble shooting section at https://github.com/csoltenborn/GoogleTestAdapter#trouble_shooting"; public string TestDiscoveryStarting => "Google Test Adapter: Test discovery starting..."; public string TestExecutionStarting => "Google Test Adapter: Test execution starting..."; } diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj index f203e790d..06d569892 100644 --- a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj @@ -50,6 +50,11 @@ + + True + True + Resources.resx + @@ -61,6 +66,13 @@ Common + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs b/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs new file mode 100644 index 000000000..1e990c292 --- /dev/null +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GoogleTestAdapter.Common { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GoogleTestAdapter.Common.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Test Adapter for Google Test. + /// + internal static string ExtensionName { + get { + return ResourceManager.GetString("ExtensionName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test Adapter for Google Test: Test discovery starting.... + /// + internal static string TestDiscoveryStarting { + get { + return ResourceManager.GetString("TestDiscoveryStarting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test Adapter for Google Test: Test execution starting.... + /// + internal static string TestExecutionStarting { + get { + return ResourceManager.GetString("TestExecutionStarting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Check out Test Adapter for Google Test's trouble shooting section at https://go.microsoft.com/fwlink/?linkid=848168. + /// + internal static string TroubleShootingLink { + get { + return ResourceManager.GetString("TroubleShootingLink", resourceCulture); + } + } + } +} diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.resx b/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.resx new file mode 100644 index 000000000..28ecd4c11 --- /dev/null +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test Adapter for Google Test + + + Test Adapter for Google Test: Test discovery starting... + + + Test Adapter for Google Test: Test execution starting... + + + {0}Check out Test Adapter for Google Test's trouble shooting section at https://go.microsoft.com/fwlink/?linkid=848168 + {0} is empty or a name of a thread followed by space (e.g. "[T0] ") + + \ No newline at end of file diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs b/GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs index 339711d38..6908f7ea9 100644 --- a/GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs @@ -5,9 +5,9 @@ namespace GoogleTestAdapter.Common { public class Strings : IStrings { - public string ExtensionName => "Test Adapter for Google Test"; - public string TroubleShootingLink => "Check out Test Adapter for Google Test's trouble shooting section at https://go.microsoft.com/fwlink/?linkid=848168"; - public string TestDiscoveryStarting => "Test Adapter for Google Test: Test discovery starting..."; - public string TestExecutionStarting => "Test Adapter for Google Test: Test execution starting..."; + public string ExtensionName => Resources.ExtensionName; + public string TroubleShootingLink => Resources.TroubleShootingLink; + public string TestDiscoveryStarting => Resources.TestDiscoveryStarting; + public string TestExecutionStarting => Resources.TestExecutionStarting; } } diff --git a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs index c5911754f..f14924f9c 100644 --- a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs +++ b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -163,7 +165,7 @@ public void GetTestsFromExecutable_WithoutPathExtension_ProducesWarning() IList testCases = discoverer.GetTestsFromExecutable(targetExe); testCases.Count.Should().Be(0); - MockLogger.Verify(l => l.LogError(It.Is(s => s.StartsWith("Could not list test cases of executable")))); + MockLogger.Verify(l => l.LogError(It.Is(s => s.StartsWith("Could not list test cases for executable")))); } finally { diff --git a/GoogleTestAdapter/Core/Core.csproj b/GoogleTestAdapter/Core/Core.csproj index 9669590d8..784f6c73a 100644 --- a/GoogleTestAdapter/Core/Core.csproj +++ b/GoogleTestAdapter/Core/Core.csproj @@ -67,6 +67,11 @@ + + True + True + Resources.resx + @@ -108,6 +113,11 @@ Designer GtaTestDurations.xsd + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + diff --git a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs index 589800837..c6559e381 100644 --- a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs +++ b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 8/2017. using GoogleTestAdapter.Common; using GoogleTestAdapter.DiaResolver; @@ -70,12 +70,12 @@ private static void DiscoverTests(string executable, ITestFrameworkReporter repo Action reportTestCases = tc => { reporter.ReportTestsFound(tc.Yield()); - logger.DebugInfo("Added testcase " + tc.DisplayName); + logger.DebugInfo(String.Format(Resources.AddedTestCase, tc.DisplayName)); nrOfTestCases++; }; var factory = new TestCaseFactory(executable, logger, settings, diaResolverFactory); factory.CreateTestCases(reportTestCases); - logger.LogInfo("Found " + nrOfTestCases + " tests in executable " + executable); + logger.LogInfo(String.Format(Resources.NumberOfTestsMessage, nrOfTestCases, executable)); }, logger); } @@ -86,9 +86,9 @@ public IList GetTestsFromExecutable(string executable) foreach (TestCase testCase in testCases) { - _logger.DebugInfo("Added testcase " + testCase.DisplayName); + _logger.DebugInfo(String.Format(Resources.AddedTestCase, testCase.DisplayName)); } - _logger.LogInfo("Found " + testCases.Count + " tests in executable " + executable); + _logger.LogInfo(String.Format(Resources.NumberOfTestsMessage, testCases.Count, executable)); return testCases; } @@ -98,27 +98,25 @@ public bool IsGoogleTestExecutable(string executable, string customRegex = "") string googleTestIndicatorFile = $"{executable}{GoogleTestIndicator}"; if (File.Exists(googleTestIndicatorFile)) { - _logger.DebugInfo($"Google Test indicator file found for executable {executable}"); + _logger.DebugInfo(String.Format(Resources.FileFound, executable)); return true; } - _logger.DebugInfo($"No Google Test indicator file found for executable {executable}"); + _logger.DebugInfo(String.Format(Resources.FileNotFound, executable)); bool matches; - string regexSource, regex; + string regex; if (string.IsNullOrWhiteSpace(customRegex)) { - regexSource = "default"; regex = SettingsWrapper.TestFinderRegex; matches = CompiledTestFinderRegex.IsMatch(executable); + _logger.DebugInfo(String.Format(matches ? Resources.MatchesDefault : Resources.DoesntMatchDefault, executable, regex)); } else { - regexSource = "custom"; regex = customRegex; matches = SafeMatches(executable, customRegex); + _logger.DebugInfo(String.Format(matches ? Resources.MatchesCustom : Resources.DoesntMatchCustom, executable, regex)); } - _logger.DebugInfo( - $"'{executable}' {(matches ? "matches" : "does not match")} {regexSource} regex '{regex}'"); return matches; } @@ -146,11 +144,11 @@ private bool SafeMatches(string executable, string regex) } catch (ArgumentException e) { - _logger.LogError($"Regex '{regex}' can not be parsed: {e.Message}"); + _logger.LogError(String.Format(Resources.RegexParseError, regex, e.Message)); } catch (RegexMatchTimeoutException e) { - _logger.LogError($"Regex '{regex}' timed out: {e.Message}"); + _logger.LogError(String.Format(Resources.RegexTimedOut, regex, e.Message)); } return matches; } @@ -160,7 +158,7 @@ private static bool VerifyExecutableTrust(string executable, ILogger logger) var zone = Zone.CreateFromUrl(executable); if (zone.SecurityZone != System.Security.SecurityZone.MyComputer) { - logger.LogError("Executable " + executable + " came from another computer and was blocked to help protect this computer."); + logger.LogError(String.Format(Resources.ExecutableError, executable)); return false; } return true; diff --git a/GoogleTestAdapter/Core/GoogleTestExecutor.cs b/GoogleTestAdapter/Core/GoogleTestExecutor.cs index 54146b140..2480f7b73 100644 --- a/GoogleTestAdapter/Core/GoogleTestExecutor.cs +++ b/GoogleTestAdapter/Core/GoogleTestExecutor.cs @@ -1,4 +1,7 @@ -using System.Linq; +// This file has been modified by Microsoft on 8/2017. + +using System; +using System.Linq; using System.Collections.Generic; using GoogleTestAdapter.Common; using GoogleTestAdapter.Model; @@ -31,7 +34,7 @@ public GoogleTestExecutor(ILogger logger, SettingsWrapper settings) public void RunTests(IEnumerable testCasesToRun, ITestFrameworkReporter reporter, IDebuggedProcessLauncher launcher, bool isBeingDebugged, string solutionDirectory, IProcessExecutor executor) { TestCase[] testCasesToRunAsArray = testCasesToRun as TestCase[] ?? testCasesToRun.ToArray(); - _logger.LogInfo("Running " + testCasesToRunAsArray.Length + " tests..."); + _logger.LogInfo(String.Format(Resources.NumberOfTestsRunningMessage, testCasesToRunAsArray.Length)); lock (this) { @@ -68,8 +71,7 @@ private void ComputeTestRunner(ITestFrameworkReporter reporter, bool isBeingDebu _runner = new PreparingTestRunner(solutionDirectory, reporter, _logger, _settings, _schedulingAnalyzer); if (_settings.ParallelTestExecution && isBeingDebugged) { - _logger.DebugInfo( - "Parallel execution is selected in options, but tests are executed sequentially because debugger is attached."); + _logger.DebugInfo(Resources.ParallelExecution); } } } diff --git a/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs b/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs index ea0f21eef..2f231f411 100644 --- a/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs +++ b/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; @@ -70,13 +72,12 @@ private int LaunchProcess(string workingDirectory, string command, string param, var waiter = new ProcessWaiter(process); if (printTestOutput) { - _logger.LogInfo( - ">>>>>>>>>>>>>>> Output of command '" + command + " " + param + "'"); + _logger.LogInfo(String.Format(Resources.OutputOfCommandMessage, "", command, param)); } ReadTheStream(process, output, printTestOutput, throwIfError); if (printTestOutput) { - _logger.LogInfo("<<<<<<<<<<<<<<< End of Output"); + _logger.LogInfo(String.Format(Resources.EndOfOutputMessage, "")); } return waiter.WaitForExit(); } @@ -100,7 +101,7 @@ private void ReadTheStream(Process process, List streamContent, bool pri } if (throwIfError && process.ExitCode != 0) { - throw new Exception("Process exited with return code " + process.ExitCode); + throw new Exception(String.Format(Resources.ProcessExitCode, process.ExitCode)); } } diff --git a/GoogleTestAdapter/Core/Helpers/RegexTraitParser.cs b/GoogleTestAdapter/Core/Helpers/RegexTraitParser.cs index 155cca335..fcd7045b9 100644 --- a/GoogleTestAdapter/Core/Helpers/RegexTraitParser.cs +++ b/GoogleTestAdapter/Core/Helpers/RegexTraitParser.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using GoogleTestAdapter.Common; using GoogleTestAdapter.Settings; @@ -31,7 +31,7 @@ public List ParseTraitsRegexesString(string option, bool ignoreE } catch (Exception e) { - string message = "Could not parse pair '" + pair + "', exception message: " + e.Message; + string message = String.Format(Resources.ParsePair, pair, e.Message); if (ignoreErrors) _logger?.LogError(message); else diff --git a/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs b/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs index 3d3825312..5869ea951 100644 --- a/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs +++ b/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Diagnostics; using GoogleTestAdapter.Common; @@ -61,11 +63,11 @@ public static void KillProcess(int processId, ILogger logger) try { process.Kill(); - logger.DebugInfo($"Killed process {process} with startTime={startTime.ToShortTimeString()}"); + logger.DebugInfo(String.Format(Resources.TerminatedProcess, process, startTime.ToShortTimeString())); } catch (Exception e) { - logger.DebugWarning($"Could not kill process {process} with startTime={startTime.ToShortTimeString()}: {e.Message}"); + logger.DebugWarning(String.Format(Resources.CouldNotTerminate, process, startTime.ToShortTimeString(), e.Message)); } } catch (Exception) @@ -78,7 +80,7 @@ public static void KillProcess(int processId, ILogger logger) private int LaunchProcessWithDebuggerAttached(string workingDirectory, string command, string param, bool printTestOutput, IDebuggedProcessLauncher handle) { - _logger.LogInfo("Attaching debugger to " + command); + _logger.LogInfo(String.Format(Resources.AttachDebuggerMessage, command)); if (printTestOutput) { _logger.DebugInfo( diff --git a/GoogleTestAdapter/Core/Helpers/Utils.cs b/GoogleTestAdapter/Core/Helpers/Utils.cs index a23f45da5..8158d2d93 100644 --- a/GoogleTestAdapter/Core/Helpers/Utils.cs +++ b/GoogleTestAdapter/Core/Helpers/Utils.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Globalization; @@ -73,7 +73,7 @@ public static void ValidateRegex(string pattern) } catch (ArgumentException e) { - throw new Exception($"Invalid regular expression \"{pattern}\", exception message: {e.Message}"); + throw new Exception(String.Format(Resources.InvalidRegularExpression, pattern, e.Message)); } } diff --git a/GoogleTestAdapter/Core/Resources.Designer.cs b/GoogleTestAdapter/Core/Resources.Designer.cs new file mode 100644 index 000000000..eb49339e7 --- /dev/null +++ b/GoogleTestAdapter/Core/Resources.Designer.cs @@ -0,0 +1,792 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GoogleTestAdapter { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GoogleTestAdapter.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Number of actual test case durations: {0}. + /// + internal static string ActualTestCase { + get { + return ResourceManager.GetString("ActualTestCase", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Added test case '{0}'. + /// + internal static string AddedTestCase { + get { + return ResourceManager.GetString("AddedTestCase", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Test case already in analyzer: {1}. + /// + internal static string AlreadyInAnalyzer { + get { + return ResourceManager.GetString("AlreadyInAnalyzer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Attaching debugger to {0}. + /// + internal static string AttachDebuggerMessage { + get { + return ResourceManager.GetString("AttachDebuggerMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Average difference between expected and actual duration: {0} ms. + /// + internal static string AvgDifference { + get { + return ResourceManager.GetString("AvgDifference", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}{1}: Did not find file: {2}. + /// + internal static string BatchFileMissing { + get { + return ResourceManager.GetString("BatchFileMissing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}{1}: Exited with code {2}, executed command: '{3}'. + /// + internal static string BatchReturnedExitCode { + get { + return ResourceManager.GetString("BatchReturnedExitCode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Collected {1} test result(s) from result XML file {2}. + /// + internal static string CollectedResults { + get { + return ResourceManager.GetString("CollectedResults", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Collected {1} test results from console output. + /// + internal static string CollectedResultsFromConsole { + get { + return ResourceManager.GetString("CollectedResultsFromConsole", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Command executed: '{0} {1}', working directory: '{2}'. + /// + internal static string CommandExecuted { + get { + return ResourceManager.GetString("CommandExecuted", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exceeded maximum allowed command line length ({0}) after including {1} tests (next string length is {2}). + /// + internal static string CommandLineGeneratorError { + get { + return ResourceManager.GetString("CommandLineGeneratorError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not list test cases for executable '{0}': process execution failed with exit code {1}. + /// + internal static string CouldNotListTestCases { + get { + return ResourceManager.GetString("CouldNotListTestCases", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not terminate process {0} started at {1}: {2}. + /// + internal static string CouldNotTerminate { + get { + return ResourceManager.GetString("CouldNotTerminate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to reason is probably a crash of test {0}. + /// + internal static string CrashTest { + get { + return ResourceManager.GetString("CrashTest", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Created {1} test results for tests which were neither found in result XML file nor in console output. + /// + internal static string CreatedTestResults { + get { + return ResourceManager.GetString("CreatedTestResults", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Could not delete test directory '{1}': {2}. + /// + internal static string DeleteTestDir { + get { + return ResourceManager.GetString("DeleteTestDir", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} does not match custom regex {1}. + /// + internal static string DoesntMatchCustom { + get { + return ResourceManager.GetString("DoesntMatchCustom", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} does not match default regex {1}. + /// + internal static string DoesntMatchDefault { + get { + return ResourceManager.GetString("DoesntMatchDefault", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}<<<<<<<<<<<<<<< End of Output. + /// + internal static string EndOfOutputMessage { + get { + return ResourceManager.GetString("EndOfOutputMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Exception while running tests: {1}. + /// + internal static string ExceptionMessage { + get { + return ResourceManager.GetString("ExceptionMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exception while resolving test locations and traits in {0}\n{1}. + /// + internal static string ExceptionResolving { + get { + return ResourceManager.GetString("ExceptionResolving", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Executable {0} came from another computer and was blocked to help protect this computer.. + /// + internal static string ExecutableError { + get { + return ResourceManager.GetString("ExecutableError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}In particular: launch command prompt, change into directory '{1}', and execute the following command to make sure your tests can be run in general.{2}{3} {4}. + /// + internal static string ExecuteSteps { + get { + return ResourceManager.GetString("ExecuteSteps", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Execution has been cancelled: {1}. + /// + internal static string ExecutionCancelled { + get { + return ResourceManager.GetString("ExecutionCancelled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Execution is already running with settings for executable {0}, cannot switch to settings for {1}. + /// + internal static string ExecutionString { + get { + return ResourceManager.GetString("ExecutionString", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Execution took {1}. + /// + internal static string ExecutionTime { + get { + return ResourceManager.GetString("ExecutionTime", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} expected durations have been found in actual durations. + /// + internal static string ExpectedDurations { + get { + return ResourceManager.GetString("ExpectedDurations", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Number of expected test case durations: {0}. + /// + internal static string ExpectedTestCase { + get { + return ResourceManager.GetString("ExpectedTestCase", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Google Test indicator file found for executable {0}. + /// + internal static string FileFound { + get { + return ResourceManager.GetString("FileFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No Google Test indicator file found for executable {0}. + /// + internal static string FileNotFound { + get { + return ResourceManager.GetString("FileNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Found {0} test method symbols and {1} trait symbols in binary {2}. + /// + internal static string FoundTestMethod { + get { + return ResourceManager.GetString("FoundTestMethod", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid file {0}. {1}. + /// + internal static string InvalidFile { + get { + return ResourceManager.GetString("InvalidFile", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid regular expression "{0}", exception message: {1}. + /// + internal static string InvalidRegularExpression { + get { + return ResourceManager.GetString("InvalidRegularExpression", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not find source location for test {0}. + /// + internal static string LocationNotFoundError { + get { + return ResourceManager.GetString("LocationNotFoundError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} matches custom regex {1}. + /// + internal static string MatchesCustom { + get { + return ResourceManager.GetString("MatchesCustom", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} matches default regex {1}. + /// + internal static string MatchesDefault { + get { + return ResourceManager.GetString("MatchesDefault", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} must never be < 0. + /// + internal static string NeverBeZero { + get { + return ResourceManager.GetString("NeverBeZero", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No known test case for test result of line '{0}' - are you repeating a test run, but tests have changed in the meantime?. + /// + internal static string NoKnownTestCaseMessage { + get { + return ResourceManager.GetString("NoKnownTestCaseMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Command produced no output. + /// + internal static string NoOutput { + get { + return ResourceManager.GetString("NoOutput", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No settings configured for test executable '{0}'; running with solution settings: {1}. + /// + internal static string NoSettingConfigured { + get { + return ResourceManager.GetString("NoSettingConfigured", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Note that no test output will be shown on the test console when executing tests concurrently!. + /// + internal static string NoTestOutputShown { + get { + return ResourceManager.GetString("NoTestOutputShown", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nothing to report.. + /// + internal static string NothingToReport { + get { + return ResourceManager.GetString("NothingToReport", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Found {0} tests in executable {1}. + /// + internal static string NumberOfTestsMessage { + get { + return ResourceManager.GetString("NumberOfTestsMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Running {0} tests.... + /// + internal static string NumberOfTestsRunningMessage { + get { + return ResourceManager.GetString("NumberOfTestsRunningMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Output file does not exist, did your tests crash?. + /// + internal static string OutputFileMissing { + get { + return ResourceManager.GetString("OutputFileMissing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Output of command:. + /// + internal static string OutputOfCommand { + get { + return ResourceManager.GetString("OutputOfCommand", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}>>>>>>>>>>>>>>> Output of command '{1} {2}'. + /// + internal static string OutputOfCommandMessage { + get { + return ResourceManager.GetString("OutputOfCommandMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parallel execution is selected in options, but tests are executed sequentially because debugger is attached.. + /// + internal static string ParallelExecution { + get { + return ResourceManager.GetString("ParallelExecution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not parse duration in line '{0}'. + /// + internal static string ParseDurationMessage { + get { + return ResourceManager.GetString("ParseDurationMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not parse pair '{0}', exception message: {1}. + /// + internal static string ParsePair { + get { + return ResourceManager.GetString("ParsePair", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Process has exited with code {0}. + /// + internal static string ProcessExitCode { + get { + return ResourceManager.GetString("ProcessExitCode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not read test durations: {0}. + /// + internal static string ReadTestDurationError { + get { + return ResourceManager.GetString("ReadTestDurationError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Regex '{0}' cannot be parsed: {1}. + /// + internal static string RegexParseError { + get { + return ResourceManager.GetString("RegexParseError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Regex '{0}' timed out: {1}. + /// + internal static string RegexTimedOut { + get { + return ResourceManager.GetString("RegexTimedOut", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Reported {1} test results to Visual Studio during test execution, executable: '{2}'. + /// + internal static string ReportedResultsToVS { + get { + return ResourceManager.GetString("ReportedResultsToVS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Reported {1} test results to Visual Studio, executable: '{2}', duration: {3}. + /// + internal static string ReportedTestResults { + get { + return ResourceManager.GetString("ReportedTestResults", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Restoring solution settings: {0}. + /// + internal static string RestoringSolutionSettings { + get { + return ResourceManager.GetString("RestoringSolutionSettings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test {0}: Expected {1} ms, actual {2} ms. + /// + internal static string Results { + get { + return ResourceManager.GetString("Results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}{1}: Exception caught, message: '{2}', executed command: '{3}'. + /// + internal static string RunBatchException { + get { + return ResourceManager.GetString("RunBatchException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Failed to run test executable '{1}': {2}. + /// + internal static string RunExecutableError { + get { + return ResourceManager.GetString("RunExecutableError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to >>> Scheduling statistics <<<. + /// + internal static string SchedulingStats { + get { + return ResourceManager.GetString("SchedulingStats", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Settings for test executable '{0}': {1}. + /// + internal static string SettingsMessage { + get { + return ResourceManager.GetString("SettingsMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to SettingsWrapper is already running with settings for an executable on thread '{0}', cannot also be used by thread '{1}'. + /// + internal static string SettingsWrapperString { + get { + return ResourceManager.GetString("SettingsWrapperString", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Stack trace:{1}{2}. + /// + internal static string StackTrace { + get { + return ResourceManager.GetString("StackTrace", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Standard deviation: {0} ms. + /// + internal static string StandardDeviation { + get { + return ResourceManager.GetString("StandardDeviation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}{1}: Successfully ran '{2}'. + /// + internal static string SuccessfullyRun { + get { + return ResourceManager.GetString("SuccessfullyRun", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Terminated process {0} started at {1}. + /// + internal static string TerminatedProcess { + get { + return ResourceManager.GetString("TerminatedProcess", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test case already in analyzer: {0}. + /// + internal static string TestCaseInAnalyzer { + get { + return ResourceManager.GetString("TestCaseInAnalyzer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}{1} test cases seem to not have been run - are you repeating a test run, but tests have changed in the meantime? Test cases:{2}{3}. + /// + internal static string TestCaseNotRun { + get { + return ResourceManager.GetString("TestCaseNotRun", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test whether the following commands can be executed sucessfully on the command line (make sure all required binaries are on the PATH):{0}{1}. + /// + internal static string TestCommandCanBeRun { + get { + return ResourceManager.GetString("TestCommandCanBeRun", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test discovery was cancelled after {0} s for executable {1}. + /// + internal static string TestDiscoveryCancelled { + get { + return ResourceManager.GetString("TestDiscoveryCancelled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test result file {0} could not be parsed (completely) - your test executable has probably crashed. Exception message: {1}. + /// + internal static string TestResultParse { + get { + return ResourceManager.GetString("TestResultParse", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test setup batch file. + /// + internal static string TestSetupBatchFile { + get { + return ResourceManager.GetString("TestSetupBatchFile", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test teardown batch file. + /// + internal static string TestTeardownBatchFile { + get { + return ResourceManager.GetString("TestTeardownBatchFile", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Executing tests on {0} threads. + /// + internal static string ThreadExecutionMessage { + get { + return ResourceManager.GetString("ThreadExecutionMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unknown literal: {0}. + /// + internal static string UnknownLiteral { + get { + return ResourceManager.GetString("UnknownLiteral", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unknown test case status: {0}. + /// + internal static string UnknownTestCase { + get { + return ResourceManager.GetString("UnknownTestCase", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Using splitter based on test durations. + /// + internal static string UsingSplitterOnDuration { + get { + return ResourceManager.GetString("UsingSplitterOnDuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Using splitter based on number of tests. + /// + internal static string UsingSplitterOnNumber { + get { + return ResourceManager.GetString("UsingSplitterOnNumber", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} worst differences:. + /// + internal static string WorstDifferences { + get { + return ResourceManager.GetString("WorstDifferences", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to XmlNode could not be parsed: '{0}'. Exception message: {1}. + /// + internal static string XmlNodeParse { + get { + return ResourceManager.GetString("XmlNodeParse", resourceCulture); + } + } + } +} diff --git a/GoogleTestAdapter/Core/Resources.resx b/GoogleTestAdapter/Core/Resources.resx new file mode 100644 index 000000000..dbccca410 --- /dev/null +++ b/GoogleTestAdapter/Core/Resources.resx @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Number of actual test case durations: {0} + {0} represents a number (e.g. 5) + + + Added test case '{0}' + {0} represents an unlocalized test name (e.g. "TestSuite1.Test2") + + + {0}Test case already in analyzer: {1} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents an unlocalized test name (e.g. "TestSuite1.Test2") + + + Attaching debugger to {0} + {0} represents an unlocalized command to which debugger attaches (e.g. cmd.exe) + + + Average difference between expected and actual duration: {0} ms + {0} represents a number (e.g. 5) + + + {0}{1}: Did not find file: {2} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} is TestSetupBatchFile or TestTeardownBatchFile string, {2} represents unlocalized file path (e.g c:\test\foo.bat) + + + {0}{1}: Exited with code {2}, executed command: '{3}' + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} is TestSetupBatchFile or TestTeardownBatchFile string, {2} represents a number (e.g. 5), {3} represents unlocalized file path (e.g c:\test\foo.bat) + + + {0}Collected {1} test result(s) from result XML file {2} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5), {2} represents unlocalized file path (e.g c:\test\results.xml) + + + {0}Collected {1} test results from console output + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5) + + + Command executed: '{0} {1}', working directory: '{2}' + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents unlocalized options to test (e.g. "gtest_list_tests"), {2} represents unlocalized directory path (e.g c:\test\dir) + + + Exceeded maximum allowed command line length ({0}) after including {1} tests (next string length is {2}) + {0} represents a number (e.g. 5), {1} represents a number (e.g. 5), {2} represents a number (e.g. 5) + + + Could not list test cases for executable '{0}': process execution failed with exit code {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} is a number + + + Could not terminate process {0} started at {1}: {2} + {0} represents an unlocalized process name (e.g notepad.exe), {1} represents unlocalized string for time (e.g. "3/1/2008 7:00:00 AM"), {2} represents localized exception message (e.g. "Cannot load file") + + + reason is probably a crash of test {0} + {0} represents an unlocalized name of test (e.g. foo) + + + {0}Created {1} test results for tests which were neither found in result XML file nor in console output + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5) + + + {0}Could not delete test directory '{1}': {2} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents unlocalized directory path (e.g c:\test\dir), {2} represents localized exception message (e.g. "Cannot load file") + + + {0} does not match custom regex {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents unlocalized string for regular expression (e.g ".*a.exe") + + + {0} does not match default regex {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents unlocalized string for regular expression (e.g ".*a.exe") + + + {0}<<<<<<<<<<<<<<< End of Output + {0} is empty or a name of a thread followed by space (e.g. "[T0] ") + + + {0}Exception while running tests: {1} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents localized exception message (e.g. "Cannot load file") + + + Exception while resolving test locations and traits in {0}\n{1} + {0} represents an unlocalized binary name (e.g notepad.exe), {1} represents localized exception message (e.g. "Cannot load file") + + + Executable {0} came from another computer and was blocked to help protect this computer. + {0} represents an unlocalized name of executable (e.g. cmd.exe) file + + + {0}In particular: launch command prompt, change into directory '{1}', and execute the following command to make sure your tests can be run in general.{2}{3} {4} + This sentence is continuation of TroubleShootingLink string from Common.Dynamic.TAfGT resources file. {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents unlocalized directory path (e.g c:\test\dir), {2} represents an unlocalized new line string (e.g "\n"), {3} is a name of an executable (e.g. foo.exe), {4} are parameters passed to the executable (e.g. /bar) + + + {0}Execution has been cancelled: {1} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents localized exception message (e.g. "Cannot load file") + + + Execution is already running with settings for executable {0}, cannot switch to settings for {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents an unlocalized name of executable (e.g. cmd.exe) file + + + {0}Execution took {1} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents unlocalized string for time it took (e.g. "0:00:02.0504161") + + + {0} expected durations have been found in actual durations + {0} represents a number (e.g. 5) + + + Number of expected test case durations: {0} + {0} represents a number (e.g. 5) + + + Google Test indicator file found for executable {0} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file + + + No Google Test indicator file found for executable {0} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file + + + Found {0} test method symbols and {1} trait symbols in binary {2} + {0} represents a number (e.g. 5), {1} represents a number (e.g. 5), {2} represents an unlocalized binary name (e.g notepad.exe) + + + Invalid file {0}. {1} + {0} represents an unlocalized file name (e.g. c:\foo.exe.gta.testdurations), {1} represents localized exception message (e.g. "Cannot load file") + + + Invalid regular expression "{0}", exception message: {1} + {0} represents an unlocalized regex (e.g. "abc*d+e*"), {1} represents localized exception message (e.g. "Cannot load file") + + + Could not find source location for test {0} + {0} represents an unlocalized test name (e.g. "TestSuite1.Test2") + + + {0} matches custom regex {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents unlocalized string for regular expression (e.g ".*a.exe") + + + {0} matches default regex {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents unlocalized string for regular expression (e.g ".*a.exe") + + + {0} must never be < 0 + {0} represents an unlocalized string for name of variable (e.g. _nrOfRunningExecutions) + + + No known test case for test result of line '{0}' - are you repeating a test run, but tests have changed in the meantime? + {0} represents an unlocalized string for line in test + + + Command produced no output + + + No settings configured for test executable '{0}'; running with solution settings: {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents a comma-separated list of setting properties + + + Note that no test output will be shown on the test console when executing tests concurrently! + + + Nothing to report. + + + Found {0} tests in executable {1} + {0} represents a number (e.g. 5), {1} represents an unlocalized binary name (e.g notepad.exe) + + + Running {0} tests... + {0} represents a number (e.g. 5) + + + Output file does not exist, did your tests crash? + + + Output of command: + Followed by standard output from the command ran + + + {0}>>>>>>>>>>>>>>> Output of command '{1} {2}' + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents unlocalized command (e.g. cmd.exe), {2} represents unlocalized paramaters to executable (e.g. "/C exit 2") + + + Parallel execution is selected in options, but tests are executed sequentially because debugger is attached. + + + Could not parse duration in line '{0}' + {0} represents the line text + + + Could not parse pair '{0}', exception message: {1} + {0} is regex pair, {1} represents localized exception message (e.g. "Cannot load file") + + + Process has exited with code {0} + {0} represents a number (e.g. 5) + + + Could not read test durations: {0} + {0} represents localized exception message (e.g. "Cannot load file") + + + Regex '{0}' cannot be parsed: {1} + {0} represents unlocalized regex pattern used (e.g. ab*d+), {1} represents localized exception message (e.g. "Cannot load file") + + + Regex '{0}' timed out: {1} + {0} represents unlocalized regex pattern used (e.g. ab*d+), {1} represents localized exception message (e.g. "Cannot load file") + + + {0}Reported {1} test results to Visual Studio during test execution, executable: '{2}' + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5), {2} represents an unlocalized name of executable (e.g. cmd.exe) file + + + {0}Reported {1} test results to Visual Studio, executable: '{2}', duration: {3} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5), {2} represents an unlocalized name of executable (e.g. cmd.exe) file, {3} means stopwatch time + + + Restoring solution settings: {0} + {0} represents a comma-separated list of setting properties + + + Test {0}: Expected {1} ms, actual {2} ms + {0} represents an unlocalized name of a test (e.g. foo), {1} represents a number (e.g. 5), {2} represents a number (e.g. 5) + + + {0}{1}: Exception caught, message: '{2}', executed command: '{3}' + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} is TestSetupBatchFile or TestTeardownBatchFile string, {2} represents localized exception message (e.g. "Cannot load file"), {3} represents unlocalized file path (e.g c:\test\foo.bat) + + + {0}Failed to run test executable '{1}': {2} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents an unlocalized name of executable (e.g. cmd.exe) file, {2} represents localized exception message (e.g. "Cannot load file") + + + >>> Scheduling statistics <<< + + + Settings for test executable '{0}': {1} + {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents an unlocalized settings string + + + SettingsWrapper is already running with settings for an executable on thread '{0}', cannot also be used by thread '{1}' + {0} is a name of a thread (e.g. "T0"), {1} is a name of a thread (e.g. "T0") + + + {0}Stack trace:{1}{2} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} means new line string, {2} represents unlocalized exception stack trace + + + Standard deviation: {0} ms + {0} represents the standardDeviation for statistics to debug output + + + {0}{1}: Successfully ran '{2}' + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} is TestSetupBatchFile or TestTeardownBatchFile string, {2} represents unlocalized file path (e.g c:\test\foo.bat) + + + Terminated process {0} started at {1} + {0} represents an unlocalized process name (e.g notepad.exe), {1} represents unlocalized string for time (e.g. "3/1/2008 7:00:00 AM") + + + Test case already in analyzer: {0} + {0} represents an unlocalized string for test name (e.g. "TestSuite1.Test2") + + + {0}{1} test cases seem to not have been run - are you repeating a test run, but tests have changed in the meantime? Test cases:{2}{3} + {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5), {2} represents an unlocalized new line string (e.g "\n"), {3} is a new-line separated list of unlocalized test case names + + + Test whether the following commands can be executed sucessfully on the command line (make sure all required binaries are on the PATH):{0}{1} + {0} represents an unlocalized new line string (e.g "\n"), {1} is a new-line separated sequence of commands + + + Test discovery was cancelled after {0} s for executable {1} + {0} represents a number (e.g. 5), {1} represents an unlocalized name of executable (e.g. cmd.exe) file + + + Test result file {0} could not be parsed (completely) - your test executable has probably crashed. Exception message: {1} + {0} represents unlocalized file path (e.g c:\test\results.xml), {1} represents localized exception message (e.g. "Cannot load file") + + + Test setup batch file + + + Test teardown batch file + + + Executing tests on {0} threads + {0} represents a number (e.g. 5) + + + Unknown literal: {0} + {0} is a name of enum literal + + + Unknown test case status: {0} + {0} represents an unlocalized status of test (e.g. "run" or "notrun") + + + Using splitter based on test durations + + + Using splitter based on number of tests + + + {0} worst differences: + {0} represents a number (e.g. 5) + + + XmlNode could not be parsed: '{0}'. Exception message: {1} + {0} represents an unlocalized name of an XML node, {1} represents localized exception message (e.g. "Cannot load file") + + \ No newline at end of file diff --git a/GoogleTestAdapter/Core/Runners/CommandLineGenerator.cs b/GoogleTestAdapter/Core/Runners/CommandLineGenerator.cs index 4623a4562..f999094e7 100644 --- a/GoogleTestAdapter/Core/Runners/CommandLineGenerator.cs +++ b/GoogleTestAdapter/Core/Runners/CommandLineGenerator.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Linq; using GoogleTestAdapter.Helpers; @@ -117,8 +119,7 @@ private string JoinTestsUpToMaxLength(List testCases, int maxLength, o string nextTest = testCases[0].FullyQualifiedName; if (nextTest.Length > maxLength) { - throw new Exception("CommandLineGenerator: I can not deal with this case :-( - maxLength=" + maxLength + - ", includedTestCases.Count=" + includedTestCases.Count + ", nextTest.Length=" + nextTest.Length); + throw new Exception(String.Format(Resources.CommandLineGeneratorError, maxLength, includedTestCases.Count, nextTest.Length)); } while (result.Length + nextTest.Length <= maxLength && testCases.Count > 0) diff --git a/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs b/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs index 75a2164aa..74e934153 100644 --- a/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs @@ -1,5 +1,6 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -70,8 +71,8 @@ private void RunTests(IEnumerable testCasesToRun, string baseDir, List ITestsSplitter splitter = GetTestsSplitter(testCasesToRunAsArray); List> splittedTestCasesToRun = splitter.SplitTestcases(); - _logger.LogInfo("Executing tests on " + splittedTestCasesToRun.Count + " threads"); - _logger.DebugInfo("Note that no test output will be shown on the test console when executing tests concurrently!"); + _logger.LogInfo(string.Format(Resources.ThreadExecutionMessage, splittedTestCasesToRun.Count)); + _logger.DebugInfo(Resources.NoTestOutputShown); int threadId = 0; foreach (List testcases in splittedTestCasesToRun) @@ -97,24 +98,24 @@ private ITestsSplitter GetTestsSplitter(TestCase[] testCasesToRun) foreach (KeyValuePair duration in durations) { if (!_schedulingAnalyzer.AddExpectedDuration(duration.Key, duration.Value)) - _logger.DebugWarning("TestCase already in analyzer: " + duration.Key.FullyQualifiedName); + _logger.DebugWarning(String.Format(Resources.TestCaseInAnalyzer, duration.Key.FullyQualifiedName)); } } catch (InvalidTestDurationsException e) { - _logger.LogWarning($"Could not read test durations: {e.Message}"); + _logger.LogWarning(string.Format(Resources.ReadTestDurationError, e.Message)); } ITestsSplitter splitter; if (durations == null || durations.Count < testCasesToRun.Length) { splitter = new NumberBasedTestsSplitter(testCasesToRun, _settings); - _logger.DebugInfo("Using splitter based on number of tests"); + _logger.DebugInfo(Resources.UsingSplitterOnNumber); } else { splitter = new DurationBasedTestsSplitter(durations, _settings); - _logger.DebugInfo("Using splitter based on test durations"); + _logger.DebugInfo(Resources.UsingSplitterOnDuration); } return splitter; diff --git a/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs b/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs index cfe469099..10025237f 100644 --- a/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.IO; using System.Collections.Generic; using System.Diagnostics; @@ -13,8 +15,11 @@ namespace GoogleTestAdapter.Runners { public class PreparingTestRunner : ITestRunner { - public const string TestSetup = "Test setup"; - public const string TestTeardown = "Test teardown"; + private enum BatchType + { + TestSetup, + TestTeardown + } private readonly ILogger _logger; private readonly SettingsWrapper _settings; @@ -57,27 +62,26 @@ public void RunTests(IEnumerable testCasesToRun, string baseDir, string batch = _settings.GetBatchForTestSetup(_solutionDirectory, testDirectory, _threadId); batch = batch == "" ? "" : _solutionDirectory + batch; - SafeRunBatch(TestSetup, _solutionDirectory, batch, isBeingDebugged); + SafeRunBatch(BatchType.TestSetup, _solutionDirectory, batch, isBeingDebugged); _innerTestRunner.RunTests(testCasesToRun, baseDir, workingDir, userParameters, isBeingDebugged, debuggedLauncher, executor); batch = _settings.GetBatchForTestTeardown(_solutionDirectory, testDirectory, _threadId); batch = batch == "" ? "" : _solutionDirectory + batch; - SafeRunBatch(TestTeardown, _solutionDirectory, batch, isBeingDebugged); + SafeRunBatch(BatchType.TestTeardown, _solutionDirectory, batch, isBeingDebugged); stopwatch.Stop(); - _logger.DebugInfo($"{_threadName}Execution took {stopwatch.Elapsed}"); + _logger.DebugInfo(String.Format(Resources.ExecutionTime, _threadName, stopwatch.Elapsed)); string errorMessage; if (!Utils.DeleteDirectory(testDirectory, out errorMessage)) { - _logger.DebugWarning( - $"{_threadName}Could not delete test directory '" + testDirectory + "': " + errorMessage); + _logger.DebugWarning(String.Format(Resources.DeleteTestDir, _threadName, testDirectory, errorMessage)); } } catch (Exception e) { - _logger.LogError($"{_threadName}Exception while running tests: " + e); + _logger.LogError(String.Format(Resources.ExceptionMessage, _threadName, e)); } } @@ -87,15 +91,17 @@ public void Cancel() } - private void SafeRunBatch(string batchType, string workingDirectory, string batch, bool isBeingDebugged) + private void SafeRunBatch(BatchType batchType, string workingDirectory, string batch, bool isBeingDebugged) { + string batchTypeString = (batchType == BatchType.TestSetup) ? Resources.TestSetupBatchFile : Resources.TestTeardownBatchFile; + if (string.IsNullOrEmpty(batch)) { return; } if (!File.Exists(batch)) { - _logger.LogError($"{_threadName}Did not find " + batchType.ToLower() + " batch file: " + batch); + _logger.LogError(String.Format(Resources.BatchFileMissing, _threadName, batchTypeString, batch)); return; } @@ -105,13 +111,14 @@ private void SafeRunBatch(string batchType, string workingDirectory, string batc } catch (Exception e) { - _logger.LogError( - $"{_threadName}{batchType} batch caused exception, msg: \'{e.Message}\', executed command: \'{batch}\'"); + _logger.LogError(String.Format(Resources.RunBatchException, _threadName, batchTypeString, e.Message, batch)); } } - private void RunBatch(string batchType, string workingDirectory, string batch, bool isBeingDebugged) + private void RunBatch(BatchType batchType, string workingDirectory, string batch, bool isBeingDebugged) { + string batchTypeString = (batchType == BatchType.TestSetup) ? Resources.TestSetupBatchFile : Resources.TestTeardownBatchFile; + int batchExitCode; if (_settings.UseNewTestExecutionFramework) { @@ -126,13 +133,11 @@ private void RunBatch(string batchType, string workingDirectory, string batch, b if (batchExitCode == 0) { - _logger.DebugInfo( - $"{_threadName}Successfully ran {batchType} batch \'{batch}\'"); + _logger.DebugInfo(String.Format(Resources.SuccessfullyRun, _threadName, batchTypeString, batch)); } else { - _logger.LogWarning( - $"{_threadName}{batchType} batch returned exit code {batchExitCode}, executed command: \'{batch}\'"); + _logger.LogWarning(String.Format(Resources.BatchReturnedExitCode, _threadName, batchTypeString, batchExitCode, batch)); } } diff --git a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs index f6d78563e..2ae691019 100644 --- a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Collections.Generic; @@ -104,11 +104,11 @@ private void RunTestsFromExecutable(string executable, string workingDir, _frameworkReporter.ReportTestResults(results); stopwatch.Stop(); if (results.Length > 0) - _logger.DebugInfo($"{_threadName}Reported {results.Length} test results to VS, executable: '{executable}', duration: {stopwatch.Elapsed}"); + _logger.DebugInfo(String.Format(Resources.ReportedTestResults, _threadName, results.Length, executable, stopwatch.Elapsed)); } catch (TestRunCanceledException e) { - _logger.DebugInfo($"{_threadName}Execution has been canceled: {e.InnerException?.Message ?? e.Message}"); + _logger.DebugInfo(String.Format(Resources.ExecutionCancelled, _threadName, e.InnerException?.Message ?? e.Message)); Cancel(); } @@ -116,7 +116,7 @@ private void RunTestsFromExecutable(string executable, string workingDir, foreach (TestResult result in results) { if (!_schedulingAnalyzer.AddActualDuration(result.TestCase, (int)result.Duration.TotalMilliseconds)) - _logger.DebugWarning("TestCase already in analyzer: " + result.TestCase.FullyQualifiedName); + _logger.DebugWarning(String.Format(Resources.TestCaseInAnalyzer, result.TestCase.FullyQualifiedName)); } } } @@ -137,12 +137,10 @@ private IEnumerable RunTests(string executable, string workingDir, b public static void LogExecutionError(ILogger logger, string executable, string workingDir, string arguments, Exception exception, string threadName = "") { - logger.LogError($"{threadName}Failed to run test executable '{executable}': {exception.Message}"); - logger.DebugError($@"{threadName}Stacktrace:{Environment.NewLine}{exception.StackTrace}"); - logger.LogError( - $"{threadName}{Strings.Instance.TroubleShootingLink}"); - logger.LogError( - $"{threadName}In particular: launch command prompt, change into directory '{workingDir}', and execute the following command to make sure your tests can be run in general.{Environment.NewLine}{executable} {arguments}"); + logger.LogError(String.Format(Resources.RunExecutableError, threadName, executable, exception.Message)); + logger.DebugError(String.Format(Resources.StackTrace, threadName, Environment.NewLine, exception.StackTrace)); + logger.LogError(String.Format(Strings.Instance.TroubleShootingLink, threadName)); + logger.LogError(String.Format(Resources.ExecuteSteps, threadName, workingDir, Environment.NewLine, executable, arguments)); } private IEnumerable TryRunTests(string executable, string workingDir, bool isBeingDebugged, @@ -181,8 +179,7 @@ private List RunTestExecutableWithNewFramework(string executable, string !_settings.ParallelTestExecution; if (printTestOutput) - _logger.LogInfo( - $"{_threadName}>>>>>>>>>>>>>>> Output of command '" + executable + " " + arguments.CommandLine + "'"); + _logger.LogInfo(String.Format(Resources.OutputOfCommandMessage, _threadName, executable, arguments.CommandLine)); Action reportOutputAction = line => { @@ -196,7 +193,7 @@ private List RunTestExecutableWithNewFramework(string executable, string } catch (TestRunCanceledException e) { - _logger.DebugInfo($"{_threadName}Execution has been canceled: {e.InnerException?.Message ?? e.Message}"); + _logger.DebugInfo(String.Format(Resources.ExecutionCancelled, _threadName, e.InnerException?.Message ?? e.Message)); Cancel(); } }; @@ -207,16 +204,16 @@ private List RunTestExecutableWithNewFramework(string executable, string streamingParser.Flush(); if (printTestOutput) - _logger.LogInfo($"{_threadName}<<<<<<<<<<<<<<< End of Output"); + _logger.LogInfo(String.Format(Resources.EndOfOutputMessage, _threadName)); var consoleOutput = new List(); new TestDurationSerializer().UpdateTestDurations(streamingParser.TestResults); - _logger.DebugInfo( - $"{_threadName}Reported {streamingParser.TestResults.Count} test results to VS during test execution, executable: '{executable}'"); + _logger.DebugInfo(String.Format(Resources.ReportedResultsToVS, _threadName, streamingParser.TestResults.Count, executable)); + foreach (TestResult result in streamingParser.TestResults) { if (!_schedulingAnalyzer.AddActualDuration(result.TestCase, (int) result.Duration.TotalMilliseconds)) - _logger.LogWarning($"{_threadName}TestCase already in analyzer: {result.TestCase.FullyQualifiedName}"); + _logger.LogWarning(String.Format(Resources.AlreadyInAnalyzer, _threadName, result.TestCase.FullyQualifiedName)); } return consoleOutput; } diff --git a/GoogleTestAdapter/Core/Runners/TestResultCollector.cs b/GoogleTestAdapter/Core/Runners/TestResultCollector.cs index 3ac00fff5..cdf7929f7 100644 --- a/GoogleTestAdapter/Core/Runners/TestResultCollector.cs +++ b/GoogleTestAdapter/Core/Runners/TestResultCollector.cs @@ -1,3 +1,5 @@ +// This file has been modified by Microsoft on 8/2017. + using System; using System.Collections.Generic; using System.Linq; @@ -61,7 +63,7 @@ private void CollectResultsFromXmlFile(TestCase[] testCasesRun, string resultXml } if (nrOfCollectedTestResults > 0) _logger.DebugInfo( - $"{_threadName}Collected {nrOfCollectedTestResults} test results from result XML file {resultXmlFile}"); + String.Format(Resources.CollectedResults, _threadName, nrOfCollectedTestResults, resultXmlFile)); } private void CollectResultsFromConsoleOutput(StandardOutputTestResultParser consoleParser, List testResults) @@ -75,12 +77,12 @@ private void CollectResultsFromConsoleOutput(StandardOutputTestResultParser cons nrOfCollectedTestResults++; } if (nrOfCollectedTestResults > 0) - _logger.DebugInfo($"{_threadName}Collected {nrOfCollectedTestResults} test results from console output"); + _logger.DebugInfo(String.Format(Resources.CollectedResultsFromConsole, _threadName, nrOfCollectedTestResults)); } private void CreateMissingResults(TestCase[] testCases, TestCase crashedTestCase, List testResults) { - var errorMessage = $"reason is probably a crash of test {crashedTestCase.DisplayName}"; + var errorMessage = String.Format(Resources.CrashTest, crashedTestCase.DisplayName); var errorStackTrace = ErrorMessageParser.CreateStackTraceEntry("crash suspect", crashedTestCase.CodeFilePath, crashedTestCase.LineNumber.ToString()); @@ -95,14 +97,13 @@ private void CreateMissingResults(TestCase[] testCases, TestCase crashedTestCase }); } if (testCases.Length > 0) - _logger.DebugInfo($"{_threadName}Created {testCases.Length} test results for tests which were neither found in result XML file nor in console output"); + _logger.DebugInfo(String.Format(Resources.CreatedTestResults, _threadName, testCases.Length)); } private void ReportSuspiciousTestCases(TestCase[] testCases) { string testCasesAsString = string.Join(Environment.NewLine, testCases.Select(tc => tc.DisplayName)); - _logger.DebugWarning( - $"{_threadName}{testCases.Length} test cases seem to not have been run - are you repeating a test run, but tests have changed in the meantime? Test cases:{Environment.NewLine}{testCasesAsString}"); + _logger.DebugWarning(String.Format(Resources.TestCaseNotRun, _threadName, testCases.Length, Environment.NewLine, testCasesAsString)); } } diff --git a/GoogleTestAdapter/Core/Scheduling/SchedulingAnalyzer.cs b/GoogleTestAdapter/Core/Scheduling/SchedulingAnalyzer.cs index 7986ee279..5b709b02b 100644 --- a/GoogleTestAdapter/Core/Scheduling/SchedulingAnalyzer.cs +++ b/GoogleTestAdapter/Core/Scheduling/SchedulingAnalyzer.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Globalization; @@ -39,12 +41,12 @@ public bool AddActualDuration(TestCase testCase, int duration) public void PrintStatisticsToDebugOutput() { - _logger.DebugInfo(">>> Scheduling statistics <<<"); - _logger.DebugInfo($"# of expected test case durations: {ExpectedTestcaseDurations.Count}"); - _logger.DebugInfo($"# of actual test case durations: {ActualTestcaseDurations.Count}"); + _logger.DebugInfo(Resources.SchedulingStats); + _logger.DebugInfo(String.Format(Resources.ExpectedTestCase, ExpectedTestcaseDurations.Count)); + _logger.DebugInfo(String.Format(Resources.ActualTestCase, ActualTestcaseDurations.Count)); if (ExpectedTestcaseDurations.Count == 0 || ActualTestcaseDurations.Count == 0) { - _logger.DebugInfo("Nothing to report."); + _logger.DebugInfo(Resources.NothingToReport); return; } @@ -63,15 +65,15 @@ public void PrintStatisticsToDebugOutput() double sumOfSquaresOfDifferences = differences.Select(d => (d.DifferenceInMs - avgDifference) * (d.DifferenceInMs - avgDifference)).Sum(); double standardDeviation = Math.Sqrt(sumOfSquaresOfDifferences / differences.Count); - _logger.DebugInfo($"{differences.Count} expected durations have been found in actual durations"); - _logger.DebugInfo($"Avg difference between expected and actual duration: {avgDifference.ToString("F1", CultureInfo.InvariantCulture)}ms"); - _logger.DebugInfo($"Standard deviation: {standardDeviation.ToString("F1", CultureInfo.InvariantCulture)}ms"); + _logger.DebugInfo(String.Format(Resources.ExpectedDurations, differences.Count)); + _logger.DebugInfo(String.Format(Resources.AvgDifference, avgDifference.ToString("F1", CultureInfo.InvariantCulture))); + _logger.DebugInfo(String.Format(Resources.StandardDeviation, standardDeviation.ToString("F1", CultureInfo.InvariantCulture))); int nrOfWorstDifferences = Math.Min(10, differences.Count); - _logger.DebugInfo($"{nrOfWorstDifferences} worst differences:"); + _logger.DebugInfo(String.Format(Resources.WorstDifferences, nrOfWorstDifferences)); for (int i = 0; i < nrOfWorstDifferences; i++) { - _logger.DebugInfo($"Test {differences[i].TestCase.FullyQualifiedName}: Expected {ExpectedTestcaseDurations[differences[i].TestCase]}ms, actual {ActualTestcaseDurations[differences[i].TestCase]}ms"); + _logger.DebugInfo(String.Format(Resources.Results, differences[i].TestCase.FullyQualifiedName, ExpectedTestcaseDurations[differences[i].TestCase], ActualTestcaseDurations[differences[i].TestCase])); } } diff --git a/GoogleTestAdapter/Core/Scheduling/TestDurationSerializer.cs b/GoogleTestAdapter/Core/Scheduling/TestDurationSerializer.cs index f565356ec..069b91519 100644 --- a/GoogleTestAdapter/Core/Scheduling/TestDurationSerializer.cs +++ b/GoogleTestAdapter/Core/Scheduling/TestDurationSerializer.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using GoogleTestAdapter.Helpers; using GoogleTestAdapter.Model; @@ -163,7 +163,7 @@ private GtaTestDurations LoadTestDurations(string durationsFile) } catch (InvalidOperationException e) when (e.InnerException is XmlSchemaValidationException) { - throw new InvalidTestDurationsException($"Invalid file {durationsFile}. {e.InnerException.Message}", e.InnerException); + throw new InvalidTestDurationsException(String.Format(Resources.InvalidFile, durationsFile, e.InnerException.Message), e.InnerException); } } } diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index 97eb2329e..7156a3dc9 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Collections.Generic; @@ -88,13 +88,13 @@ public void ExecuteWithSettingsForExecutable(string executable, Action action, I _currentSettings = projectSettings; string settingsString = ToString(); _currentSettings = _settingsContainer.SolutionSettings; - logger.DebugInfo($"Settings for test executable '{executable}': {settingsString}"); + logger.DebugInfo(String.Format(Resources.SettingsMessage, executable, settingsString)); _currentSettings = projectSettings; } else { - logger.DebugInfo($"No settings configured for test executable '{executable}'; running with solution settings: {this}"); + logger.DebugInfo(String.Format(Resources.NoSettingConfigured, executable, this)); } } @@ -116,7 +116,7 @@ public void ExecuteWithSettingsForExecutable(string executable, Action action, I if (_currentSettings != _settingsContainer.SolutionSettings) { _currentSettings = _settingsContainer.SolutionSettings; - logger.DebugInfo($"Back to solution settings: {this}"); + logger.DebugInfo(String.Format(Resources.RestoringSolutionSettings, this)); } } } @@ -129,15 +129,13 @@ public virtual void CheckCorrectUsage(string executable) if (_nrOfRunningExecutions == 0) return; if (_nrOfRunningExecutions < 0) - throw new InvalidOperationException($"{nameof(_nrOfRunningExecutions)} must never be < 0"); + throw new InvalidOperationException(String.Format(Resources.NeverBeZero, nameof(_nrOfRunningExecutions))); if (_currentThread != Thread.CurrentThread) - throw new InvalidOperationException( - $"SettingsWrapper is already running with settings for an executable on thread '{_currentThread.Name}', can not also be used by thread {Thread.CurrentThread.Name}"); + throw new InvalidOperationException(String.Format(Resources.SettingsWrapperString, _currentThread.Name, Thread.CurrentThread.Name)); if (executable != _currentExecutable) - throw new InvalidOperationException( - $"Execution is already running with settings for executable {_currentExecutable}, can not switch to settings for {executable}"); + throw new InvalidOperationException(String.Format(Resources.ExecutionString, _currentExecutable, executable)); } public override string ToString() diff --git a/GoogleTestAdapter/Core/TestCases/MethodSignatureCreator.cs b/GoogleTestAdapter/Core/TestCases/MethodSignatureCreator.cs index 6fec42a4c..50aa83a7d 100644 --- a/GoogleTestAdapter/Core/TestCases/MethodSignatureCreator.cs +++ b/GoogleTestAdapter/Core/TestCases/MethodSignatureCreator.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using GoogleTestAdapter.Helpers; @@ -19,7 +21,7 @@ internal IEnumerable GetTestMethodSignatures(TestCaseDescriptor descript case TestCaseDescriptor.TestTypes.Simple: return GetTestMethodSignature(descriptor.Suite, descriptor.Name).Yield(); default: - throw new InvalidOperationException($"Unknown literal {descriptor.TestType}"); + throw new InvalidOperationException(String.Format(Resources.UnknownLiteral, descriptor.TestType)); } } diff --git a/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs b/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs index a128fe4ea..9a937c24a 100644 --- a/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs +++ b/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -73,11 +75,11 @@ private void AddSymbolsFromBinary(string binary) _allTestMethodSymbols.AddRange(diaResolver.GetFunctions("*" + GoogleTestConstants.TestBodySignature)); _allTraitSymbols.AddRange(diaResolver.GetFunctions("*" + TraitAppendix)); - _logger.DebugInfo($"Found {_allTestMethodSymbols.Count} test method symbols and {_allTraitSymbols.Count} trait symbols in binary {binary}"); + _logger.DebugInfo(String.Format(Resources.FoundTestMethod, _allTestMethodSymbols.Count, _allTraitSymbols.Count, binary)); } catch (Exception e) { - _logger.DebugError($"Exception while resolving test locations and traits in {binary}\n{e}"); + _logger.DebugError(String.Format(Resources.ExceptionResolving, binary, e)); } } } diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs index fb15aa08d..ca2fdc79a 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Collections.Generic; @@ -149,12 +149,11 @@ private IList NewCreateTestcases(Action reportTestCase, List string dir = Path.GetDirectoryName(_executable); string file = Path.GetFileName(_executable); - string cdToWorkingDir = $@"cd ""{dir}"""; - string listTestsCommand = $"{file} {GoogleTestConstants.ListTestsOption.Trim()}"; - - _logger.LogError($"Test discovery was cancelled after {_settings.TestDiscoveryTimeoutInSeconds}s for executable {_executable}"); - _logger.DebugError($"Test whether the following commands can be executed sucessfully on the command line (make sure all required binaries are on the PATH):{Environment.NewLine}{cdToWorkingDir}{Environment.NewLine}{listTestsCommand}"); + string command = $@"cd ""{dir}""{Environment.NewLine}{file} {GoogleTestConstants.ListTestsOption.Trim()}"; + _logger.LogError(String.Format(Resources.TestDiscoveryCancelled, _settings.TestDiscoveryTimeoutInSeconds, _executable)); + _logger.DebugError(String.Format(Resources.TestCommandCanBeRun, Environment.NewLine, command)); + return new List(); } @@ -183,14 +182,12 @@ private bool CheckProcessExitCode(int processExitCode, ICollection stand { if (processExitCode != 0) { - string messsage = - $"Could not list test cases of executable '{_executable}': executing process failed with return code {processExitCode}"; - messsage += - $"\nCommand executed: '{_executable} {GoogleTestConstants.ListTestsOption.Trim()}', working directory: '{Path.GetDirectoryName(_executable)}'"; + string messsage = String.Format(Resources.CouldNotListTestCases, _executable, processExitCode); + messsage += Environment.NewLine + String.Format(Resources.CommandExecuted, _executable, GoogleTestConstants.ListTestsOption.Trim(), Path.GetDirectoryName(_executable)); if (standardOutput.Count(s => !string.IsNullOrEmpty(s)) > 0) - messsage += $"\nOutput of command:\n{string.Join("\n", standardOutput)}"; + messsage += Environment.NewLine + Resources.OutputOfCommand + Environment.NewLine + string.Join(Environment.NewLine, standardOutput); else - messsage += "\nCommand produced no output"; + messsage += Environment.NewLine + Resources.NoOutput; _logger.LogError(messsage); return false; @@ -244,7 +241,7 @@ private TestCase CreateTestCase(TestCaseDescriptor descriptor, TestCaseLocation return testCase; } - _logger.LogWarning($"Could not find source location for test {descriptor.FullyQualifiedName}"); + _logger.LogWarning(String.Format(Resources.LocationNotFoundError, descriptor.FullyQualifiedName)); return new TestCase( descriptor.FullyQualifiedName, _executable, descriptor.DisplayName, "", 0); } diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs b/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs index 3c4f8ba14..7de4f0659 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Collections.Generic; @@ -62,7 +62,7 @@ private Dictionary FindTestCaseLocationsInBinary( { IList allTestMethodSymbols = diaResolver.GetFunctions(symbolFilterString); IList allTraitSymbols = diaResolver.GetFunctions("*" + TraitAppendix); - _logger.DebugInfo($"Found {allTestMethodSymbols.Count} test method symbols and {allTraitSymbols.Count} trait symbols in binary {binary}"); + _logger.DebugInfo(String.Format(Resources.FoundTestMethod, allTestMethodSymbols.Count, allTraitSymbols.Count, binary)); return allTestMethodSymbols .Where(nsfl => testMethodSignatures.Contains(TestCaseFactory.StripTestSymbolNamespace(nsfl.Symbol))) @@ -71,7 +71,7 @@ private Dictionary FindTestCaseLocationsInBinary( } catch (Exception e) { - _logger.DebugError($"Exception while resolving test locations and traits in {binary}\n{e}"); + _logger.DebugError(String.Format(Resources.ExceptionResolving, binary, e)); return new Dictionary(); } } diff --git a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs index b6a75cdf7..15c4b79f8 100644 --- a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs +++ b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -61,7 +63,7 @@ private TestResult CreateTestResult(int indexOfTestcase) TestCase testCase = FindTestcase(qualifiedTestname); if (testCase == null) { - _logger.DebugWarning($"No known test case for test result of line '{line}' - are you repeating a test run, but tests have changed in the meantime?"); + _logger.DebugWarning(String.Format(Resources.NoKnownTestCaseMessage, line)); return null; } @@ -136,7 +138,7 @@ public static TimeSpan ParseDuration(string line, ILogger logger) } catch (Exception) { - logger.LogWarning("Could not parse duration in line '" + line + "'"); + logger.LogWarning(String.Format(Resources.ParseDurationMessage, line)); } return NormalizeDuration(TimeSpan.FromMilliseconds(durationInMs)); diff --git a/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs b/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs index ac24f08d0..e4bdc5526 100644 --- a/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs +++ b/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; @@ -111,7 +113,7 @@ private TestResult CreateTestResult() TestCase testCase = StandardOutputTestResultParser.FindTestcase(qualifiedTestname, _testCasesRun); if (testCase == null) { - _logger.DebugWarning($"No known test case for test result of line '{line}'' - are you repeating a test run, but tests have changed in the meantime?"); + _logger.DebugWarning(String.Format(Resources.NoKnownTestCaseMessage, line)); return null; } diff --git a/GoogleTestAdapter/Core/TestResults/XmlTestResultParser.cs b/GoogleTestAdapter/Core/TestResults/XmlTestResultParser.cs index 7fc2ddc8b..70744539a 100644 --- a/GoogleTestAdapter/Core/TestResults/XmlTestResultParser.cs +++ b/GoogleTestAdapter/Core/TestResults/XmlTestResultParser.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Collections.Generic; @@ -14,8 +14,6 @@ namespace GoogleTestAdapter.TestResults { public class XmlTestResultParser { - private const string ErrorMsgNoXmlFile = "Output file does not exist, did your tests crash?"; - private static readonly NumberFormatInfo NumberFormatInfo = new CultureInfo("en-US").NumberFormat; @@ -39,7 +37,7 @@ public List GetTestResults() return ParseTestResults(); } - _logger.LogWarning(ErrorMsgNoXmlFile); + _logger.LogWarning(Resources.OutputFileMissing); return new List(); } @@ -72,8 +70,7 @@ private List ParseTestResults() } catch (XmlException e) { - _logger.DebugWarning( - $"Test result file {_xmlResultFile} could not be parsed (completely) - your test executable has probably crashed. Exception message: {e.Message}"); + _logger.DebugWarning(String.Format(Resources.TestResultParse, _xmlResultFile, e.Message)); } return testResults; @@ -87,8 +84,7 @@ private TestResult TryParseTestResult(XmlNode testcaseNode) } catch (Exception e) { - _logger.DebugWarning( - $"XmlNode could not be parsed: \'{GetQualifiedName(testcaseNode)}\'. Exception message: {e.Message}"); + _logger.DebugWarning(String.Format(Resources.XmlNodeParse, GetQualifiedName(testcaseNode), e.Message)); return null; } } @@ -133,7 +129,7 @@ private TestResult ParseTestResult(XmlNode testcaseNode) testResult.Outcome = TestOutcome.Skipped; break; default: - string msg = "Unknown testcase status: " + testCaseStatus; + string msg = String.Format(Resources.UnknownTestCase, testCaseStatus); _logger.LogError(msg); throw new Exception(msg); } diff --git a/GoogleTestAdapter/DiaResolver.Tests/DiaResolverTests.cs b/GoogleTestAdapter/DiaResolver.Tests/DiaResolverTests.cs index 4a9afec2f..bb9fe6ba5 100644 --- a/GoogleTestAdapter/DiaResolver.Tests/DiaResolverTests.cs +++ b/GoogleTestAdapter/DiaResolver.Tests/DiaResolverTests.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +// This file has been modified by Microsoft on 8/2017. + +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using FluentAssertions; @@ -100,7 +102,7 @@ public void GetFunctions_ExeWithoutPdb_AttemptsToFindPdbAreLogged() .Contain(msg => msg.Contains("Couldn't find the .pdb file")); fakeLogger.Infos .Should() - .Contain(msg => msg.Contains("Attempts to find pdb:")); + .Contain(msg => msg.Contains("Attempts to find PDB")); } private void DoResolveTest(string executable, string filter, int expectedLocations, int expectedErrorMessages, bool disposeResolver = true) diff --git a/GoogleTestAdapter/DiaResolver/DiaFactory.cs b/GoogleTestAdapter/DiaResolver/DiaFactory.cs index f9f8460d4..4e8753e8f 100644 --- a/GoogleTestAdapter/DiaResolver/DiaFactory.cs +++ b/GoogleTestAdapter/DiaResolver/DiaFactory.cs @@ -19,7 +19,7 @@ static DiaFactory() string path = Path.Combine(GetAssemblyBaseDir(), Is32Bit() ? "x86" : "x64", DiaDll); var ptrDll = LoadLibrary(path); if (ptrDll == IntPtr.Zero) - throw new Exception($"Cannot load {path}."); + throw new Exception(String.Format(Resources.LoadError, path)); } public static IDiaDataSource CreateInstance() diff --git a/GoogleTestAdapter/DiaResolver/DiaResolver.cs b/GoogleTestAdapter/DiaResolver/DiaResolver.cs index fd2b4dac6..ee958f54d 100644 --- a/GoogleTestAdapter/DiaResolver/DiaResolver.cs +++ b/GoogleTestAdapter/DiaResolver/DiaResolver.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using GoogleTestAdapter.Common; using Microsoft.Dia; @@ -53,17 +53,17 @@ internal DiaResolver(string binary, string pathExtension, ILogger logger) string pdb = FindPdbFile(binary, pathExtension); if (pdb == null) { - _logger.LogWarning($"Couldn't find the .pdb file of file '{binary}'. You will not get any source locations for your tests."); + _logger.LogWarning(String.Format(Resources.PdbFileNotFoundError, binary)); return; } if (!TryCreateDiaInstance()) { - _logger.LogError("Couldn't find the msdia.dll to parse *.pdb files. You will not get any source locations for your tests."); + _logger.LogError(Resources.msdiaError); return; } - _logger.DebugInfo($"Parsing pdb file \"{pdb}\""); + _logger.DebugInfo(String.Format(Resources.ParsingFile, pdb)); _fileStream = File.Open(pdb, FileMode.Open, FileAccess.Read, FileShare.Read); _diaDataSource.loadDataFromIStream(new DiaMemoryStream(_fileStream)); @@ -93,7 +93,7 @@ private string FindPdbFile(string binary, string pathExtension) string pdb = PeParser.ExtractPdbPath(binary, _logger); if (pdb != null && File.Exists(pdb)) return pdb; - attempts.Add("parsing from executable"); + attempts.Add($"\"{binary}\""); pdb = Path.ChangeExtension(binary, ".pdb"); if (File.Exists(pdb)) @@ -120,7 +120,7 @@ private string FindPdbFile(string binary, string pathExtension) } } - _logger.DebugInfo("Attempts to find pdb: " + string.Join("::", attempts)); + _logger.DebugInfo(String.Format(Resources.AttemptsToFind, string.Join("::", attempts))); return null; } @@ -147,7 +147,7 @@ private SourceFileLocation ToSourceFileLocation(NativeSourceFileLocation nativeS IDiaEnumLineNumbers lineNumbers = GetLineNumbers(nativeSymbol.AddressSection, nativeSymbol.AddressOffset, nativeSymbol.Length); if (lineNumbers.count <= 0) { - _logger.LogWarning("Failed to locate line number for " + nativeSymbol); + _logger.LogWarning(String.Format(Resources.LineNumberError, nativeSymbol)); return new SourceFileLocation(_binary, "", 0); } @@ -186,8 +186,8 @@ private IDiaEnumSymbols FindFunctionsByRegex(string pattern) catch (NotImplementedException) { // https://developercommunity.visualstudio.com/content/problem/4631/dia-sdk-still-doesnt-support-debugfastlink.html - _logger.LogWarning("In order to get source locations for your tests, please ensure to generate *full* PDBs for your test executables."); - _logger.LogWarning("Use linker option /DEBUG:FULL (VS2017) or /DEBUG (VS2015 and older) - do not use /DEBUG:FASTLINK!"); + _logger.LogWarning(Resources.GenerateFullPDBMessage); + _logger.LogWarning(Resources.UseLinkerOption); } return result; } diff --git a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj index a623939ae..0d8cc81d5 100644 --- a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj +++ b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj @@ -66,6 +66,11 @@ + + True + True + Resources.resx + @@ -85,6 +90,13 @@ PreserveNewest + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + diff --git a/GoogleTestAdapter/DiaResolver/PeParser.cs b/GoogleTestAdapter/DiaResolver/PeParser.cs index 1a1104417..0b19215d6 100644 --- a/GoogleTestAdapter/DiaResolver/PeParser.cs +++ b/GoogleTestAdapter/DiaResolver/PeParser.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Runtime.InteropServices; using GoogleTestAdapter.Common; @@ -127,7 +129,7 @@ private static void ParsePeFile(string executable, ILogger logger, Action +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GoogleTestAdapter.DiaResolver { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GoogleTestAdapter.DiaResolver.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Attempts to find PDB: {0}. + /// + internal static string AttemptsToFind { + get { + return ResourceManager.GetString("AttemptsToFind", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to In order to get source locations for your tests, please ensure to generate *full* PDBs for your test executables.. + /// + internal static string GenerateFullPDBMessage { + get { + return ResourceManager.GetString("GenerateFullPDBMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to locate line number for {0}. + /// + internal static string LineNumberError { + get { + return ResourceManager.GetString("LineNumberError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot load {0}.. + /// + internal static string LoadError { + get { + return ResourceManager.GetString("LoadError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Couldn't find the msdia.dll to parse *.pdb files. You will not get any source locations for your tests.. + /// + internal static string msdiaError { + get { + return ResourceManager.GetString("msdiaError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parsing PDB file {0}. + /// + internal static string ParsingFile { + get { + return ResourceManager.GetString("ParsingFile", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Couldn't find the .pdb file of file '{0}'. You will not get any source locations for your tests.. + /// + internal static string PdbFileNotFoundError { + get { + return ResourceManager.GetString("PdbFileNotFoundError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to UnMapAndLoad failed!. + /// + internal static string UnMapLoad { + get { + return ResourceManager.GetString("UnMapLoad", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Use linker option /DEBUG:FULL (Visual Studio 2017) or /DEBUG (Visual Studio 2015 and older) - do not use /DEBUG:FASTLINK!. + /// + internal static string UseLinkerOption { + get { + return ResourceManager.GetString("UseLinkerOption", resourceCulture); + } + } + } +} diff --git a/GoogleTestAdapter/DiaResolver/Resources.resx b/GoogleTestAdapter/DiaResolver/Resources.resx new file mode 100644 index 000000000..4508571f7 --- /dev/null +++ b/GoogleTestAdapter/DiaResolver/Resources.resx @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + In order to get source locations for your tests, please ensure to generate *full* PDBs for your test executables. + + + Failed to locate line number for {0} + {0} represents an unlocalized symbol name (e.g. "foo") + + + Couldn't find the msdia.dll to parse *.pdb files. You will not get any source locations for your tests. + + + Couldn't find the .pdb file of file '{0}'. You will not get any source locations for your tests. + {0} represents unlocalized file path (e.g c:\test\foo.exe) + + + Use linker option /DEBUG:FULL (Visual Studio 2017) or /DEBUG (Visual Studio 2015 and older) - do not use /DEBUG:FASTLINK! + + + UnMapAndLoad failed! + + + Attempts to find PDB: {0} + {0} is a list of locations attempted + + + Parsing PDB file {0} + {0} represents unlocalized file path (e.g c:\test\foo.pdb) + + + Cannot load {0}. + {0} represents unlocalized file path (e.g c:\test\foo.pdb) + + \ No newline at end of file diff --git a/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs b/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs index 14d4d71e5..a7e240953 100644 --- a/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs +++ b/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 8/2017. using FluentAssertions; using GoogleTestAdapter.Helpers; @@ -40,7 +40,7 @@ public void DiscoverTests_WithCustomNonMatchingRegex_DoesNotFindTests() public void DiscoverTests_CrashingExecutable_CrashIsLogged() { RunExecutableAndCheckLogging(TestResources.AlwaysCrashingExe, - () => MockLogger.Verify(l => l.LogError(It.Is(s => s.Contains("Could not list test cases of executable"))), + () => MockLogger.Verify(l => l.LogError(It.Is(s => s.Contains("Could not list test cases for executable"))), Times.Once)); } @@ -49,7 +49,7 @@ public void DiscoverTests_CrashingExecutable_CrashIsLogged() public void DiscoverTests_FailingExecutable_ExitCodeIsLogged() { RunExecutableAndCheckLogging(TestResources.AlwaysFailingExe, - () => MockLogger.Verify(l => l.LogError(It.Is(s => s.Contains("executing process failed with return code 4711"))), + () => MockLogger.Verify(l => l.LogError(It.Is(s => s.Contains("process execution failed with exit code 4711"))), Times.Once)); } @@ -85,7 +85,7 @@ public void DiscoverTests_UntrustedExecutable_IsNotRun() File.Copy(TestResources.SemaphoreExe, Temp1Exe); File.Exists(SemPath).Should().BeFalse(); RunExecutableAndCheckLogging(Temp1Exe, - () => MockLogger.Verify(l => l.LogError(It.Is(s => s.Contains("executing process failed with return code 143"))), + () => MockLogger.Verify(l => l.LogError(It.Is(s => s.Contains("process execution failed with exit code 143"))), Times.Once)); File.Exists(SemPath).Should().BeTrue("because exe should have been run"); } diff --git a/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs b/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs index ff92c6e84..6b8e9a917 100644 --- a/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs +++ b/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Linq; using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -17,8 +19,9 @@ namespace GoogleTestAdapter.TestAdapter { public abstract class TestExecutorTestsBase : TestAdapterTestsBase { + private const string TestSetup = "Test setup"; + private const string TestTeardown = "Test teardown"; private readonly bool _parallelTestExecution; - private readonly int _maxNrOfThreads; @@ -147,10 +150,10 @@ public virtual void RunTests_WithSetupAndTeardownBatchesWhereTeardownFails_LogsW RunAndVerifyTests(TestResources.DllTests_ReleaseX86, 1, 1, 0); MockLogger.Verify(l => l.LogWarning( - It.Is(s => s.Contains(PreparingTestRunner.TestSetup))), + It.Is(s => s.Contains(TestSetup))), Times.Never); MockLogger.Verify(l => l.LogWarning( - It.Is(s => s.Contains(PreparingTestRunner.TestTeardown))), + It.Is(s => s.Contains(TestTeardown))), Times.AtLeastOnce()); } @@ -164,10 +167,10 @@ public virtual void RunTests_WithSetupAndTeardownBatchesWhereSetupFails_LogsWarn RunAndVerifyTests(TestResources.DllTests_ReleaseX86, 1, 1, 0); MockLogger.Verify(l => l.LogWarning( - It.Is(s => s.Contains(PreparingTestRunner.TestSetup))), + It.Is(s => s.Contains(TestSetup))), Times.AtLeastOnce()); MockLogger.Verify(l => l.LogWarning( - It.Is(s => s.Contains(PreparingTestRunner.TestTeardown))), + It.Is(s => s.Contains(TestTeardown))), Times.Never); } @@ -178,22 +181,22 @@ public virtual void RunTests_WithoutBatches_NoLogging() RunAndVerifyTests(TestResources.DllTests_ReleaseX86, 1, 1, 0); MockLogger.Verify(l => l.LogInfo( - It.Is(s => s.Contains(PreparingTestRunner.TestSetup))), + It.Is(s => s.Contains(TestSetup))), Times.Never); MockLogger.Verify(l => l.LogWarning( - It.Is(s => s.Contains(PreparingTestRunner.TestSetup))), + It.Is(s => s.Contains(TestSetup))), Times.Never); MockLogger.Verify(l => l.LogError( - It.Is(s => s.Contains(PreparingTestRunner.TestSetup))), + It.Is(s => s.Contains(TestSetup))), Times.Never); MockLogger.Verify(l => l.LogInfo( - It.Is(s => s.Contains(PreparingTestRunner.TestTeardown))), + It.Is(s => s.Contains(TestTeardown))), Times.Never); MockLogger.Verify(l => l.LogWarning( - It.Is(s => s.Contains(PreparingTestRunner.TestTeardown))), + It.Is(s => s.Contains(TestTeardown))), Times.Never); MockLogger.Verify(l => l.LogError( - It.Is(s => s.Contains(PreparingTestRunner.TestTeardown))), + It.Is(s => s.Contains(TestTeardown))), Times.Never); } @@ -206,7 +209,7 @@ public virtual void RunTests_WithNonexistingSetupBatch_LogsError() RunAndVerifyTests(TestResources.DllTests_ReleaseX86, 1, 1, 0); MockLogger.Verify(l => l.LogError( - It.Is(s => s.Contains(PreparingTestRunner.TestSetup.ToLower()))), + It.Is(s => s.Contains(TestSetup))), Times.AtLeastOnce()); } diff --git a/GoogleTestAdapter/TestAdapter/CommonFunctions.cs b/GoogleTestAdapter/TestAdapter/CommonFunctions.cs index f9fd74be0..85875176e 100644 --- a/GoogleTestAdapter/TestAdapter/CommonFunctions.cs +++ b/GoogleTestAdapter/TestAdapter/CommonFunctions.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using GoogleTestAdapter.Common; using GoogleTestAdapter.Helpers; @@ -10,22 +12,29 @@ namespace GoogleTestAdapter.TestAdapter { + public enum TestPhase + { + TestDiscovery, + TestExecution + } + public static class CommonFunctions { - public static void ReportErrors(ILogger logger, string phase, bool isDebugModeEnabled) + public static void ReportErrors(ILogger logger, TestPhase phase, bool isDebugModeEnabled) { IList errors = logger.GetMessages(Severity.Error, Severity.Warning); if (errors.Count == 0) return; bool hasErrors = logger.GetMessages(Severity.Error).Count > 0; + string phaseString = (phase == TestPhase.TestDiscovery) ? Resources.TestDiscovery : Resources.TestExecution; string hint = isDebugModeEnabled ? "" - : " (enable debug mode for more information)"; + : Resources.EnableDebugMode; string jointErrors = string.Join(Environment.NewLine, errors); - string message = $"{Environment.NewLine}================{Environment.NewLine}" - + $"The following errors and warnings occured during {phase}{hint}:{Environment.NewLine}" + string message = $"{Environment.NewLine}================{Environment.NewLine}" + + String.Format(Resources.ErrorAndWarning, phaseString, hint, Environment.NewLine) + jointErrors; if (hasErrors) @@ -64,7 +73,7 @@ public static void LogVisualStudioVersion(ILogger logger) case VsVersion.VS2012: return; default: - logger.DebugInfo($"Visual Studio Version: {version}"); + logger.DebugInfo(String.Format(Resources.VSVersion, version)); break; } } diff --git a/GoogleTestAdapter/TestAdapter/DataConversionExtensions.cs b/GoogleTestAdapter/TestAdapter/DataConversionExtensions.cs index 661b1f504..cbf7eebe3 100644 --- a/GoogleTestAdapter/TestAdapter/DataConversionExtensions.cs +++ b/GoogleTestAdapter/TestAdapter/DataConversionExtensions.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Linq; using GoogleTestAdapter.Common; using GoogleTestAdapter.Model; @@ -113,7 +115,7 @@ public static Severity GetSeverity(this TestMessageLevel level) case TestMessageLevel.Error: return Severity.Error; default: - throw new InvalidOperationException($"Unknown enum literal: {level}"); + throw new InvalidOperationException(String.Format(Resources.UnknownEnum, level)); } } diff --git a/GoogleTestAdapter/TestAdapter/Framework/MessageBasedDebuggerAttacher.cs b/GoogleTestAdapter/TestAdapter/Framework/MessageBasedDebuggerAttacher.cs index 0ff083c89..7a4248cd4 100644 --- a/GoogleTestAdapter/TestAdapter/Framework/MessageBasedDebuggerAttacher.cs +++ b/GoogleTestAdapter/TestAdapter/Framework/MessageBasedDebuggerAttacher.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 8/2017. using GoogleTestAdapter.Common; using GoogleTestAdapter.Framework; @@ -43,7 +43,7 @@ public bool AttachDebugger(int processId) { client.Service.AttachDebugger(processId); stopWatch.Stop(); - _logger.DebugInfo($"Debugger attached to process {processId}, took {stopWatch.ElapsedMilliseconds} ms"); + _logger.DebugInfo(String.Format(Resources.DebuggerAttachTime, processId, stopWatch.ElapsedMilliseconds)); return true; } } @@ -51,15 +51,15 @@ public bool AttachDebugger(int processId) { var errorMessage = serviceFault.Detail.Message; if (string.IsNullOrWhiteSpace(errorMessage)) - errorMessage = $"Could not attach debugger to process {processId}, no error message available"; + errorMessage = String.Format(Resources.DebuggerAttachMessage, processId); - errorMessage += $"{Environment.NewLine}There might be more information on the problem in Visual Studio's ActivityLog.xml (see e.g. https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/)"; + errorMessage += $"{Environment.NewLine}{Resources.MoreInformationMessage}"; _logger.LogError(errorMessage); } catch (Exception e) { - _logger.LogError($"Could not attach debugger to process {processId}:{Environment.NewLine}{e}"); + _logger.LogError(String.Format(Resources.CouldNotAttachMessage, processId, Environment.NewLine, e)); } return false; } diff --git a/GoogleTestAdapter/TestAdapter/Framework/VsTestFrameworkLogger.cs b/GoogleTestAdapter/TestAdapter/Framework/VsTestFrameworkLogger.cs index d6711b5ca..12ba6dfdf 100644 --- a/GoogleTestAdapter/TestAdapter/Framework/VsTestFrameworkLogger.cs +++ b/GoogleTestAdapter/TestAdapter/Framework/VsTestFrameworkLogger.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using GoogleTestAdapter.Common; using GoogleTestAdapter.Helpers; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; @@ -27,13 +29,13 @@ public override void Log(Severity severity, string message) LogSafe(TestMessageLevel.Informational, message); break; case Severity.Warning: - LogSafe(TestMessageLevel.Warning, $"Warning: {message}"); + LogSafe(TestMessageLevel.Warning, String.Format(Resources.WarningMessage, message)); break; case Severity.Error: - LogSafe(TestMessageLevel.Error, $"ERROR: {message}"); + LogSafe(TestMessageLevel.Error, String.Format(Resources.ErrorMessage, message)); break; default: - throw new Exception($"Unknown enum literal: {severity}"); + throw new Exception(String.Format(Resources.UnknownLiteral, severity)); } } diff --git a/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs b/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs index fb101cafe..2a2b6b7d5 100644 --- a/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs +++ b/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; @@ -63,7 +65,7 @@ public static VsVersion GetVisualStudioVersion(ILogger logger) } catch (Exception e) { - logger?.LogError($"Could not find out VisualStudio version: {e.Message}"); + logger?.LogError(String.Format(Resources.VSVersionMessage, e.Message)); _version = VsVersion.Unknown; } return _version.Value; @@ -75,7 +77,7 @@ private static VsVersion GetVsVersionFromProcess() { string pathToBinary = FindVsOrVsTestConsoleExe()?.MainModule.FileName; if (pathToBinary == null) - throw new InvalidOperationException("Could not find process"); + throw new InvalidOperationException(Resources.ProcessNotFound); FileVersionInfo binaryVersionInfo = FileVersionInfo.GetVersionInfo(pathToBinary); @@ -114,7 +116,7 @@ private static VsVersion GetVsVersionFromVersionString(string versionString) return VsVersion.VS2012; if (version.Major < (int) FirstSupportedVersion || version.Major > (int) LastSupportedVersion) - throw new InvalidOperationException($"Unknown VisualStudio version: {versionString}"); + throw new InvalidOperationException(String.Format(Resources.UnknownVisualStudioVersion, versionString)); return (VsVersion) version.Major; } diff --git a/GoogleTestAdapter/TestAdapter/Helpers/TestCaseFilter.cs b/GoogleTestAdapter/TestAdapter/Helpers/TestCaseFilter.cs index 8747f1fa9..0d3378417 100644 --- a/GoogleTestAdapter/TestAdapter/Helpers/TestCaseFilter.cs +++ b/GoogleTestAdapter/TestAdapter/Helpers/TestCaseFilter.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 8/2017. + +using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; @@ -60,7 +62,7 @@ private void InitProperties(ISet traitNames) { if (_testPropertiesMap.Keys.Contains(traitName)) { - _logger.LogWarning($"Trait has same name as base test property and will thus be ignored for test case filtering: {traitName}"); + _logger.LogWarning(String.Format(Resources.TraitIgnoreMessage, traitName)); continue; } @@ -105,15 +107,15 @@ private ITestCaseFilterExpression GetFilterExpression() ITestCaseFilterExpression filterExpression = _runContext.GetTestCaseFilter(_allPropertyNames, PropertyProvider); string message = filterExpression == null - ? "No test case filter provided" - : $"Test case filter: {filterExpression.TestCaseFilterValue}"; + ? Resources.NoTestCaseFilter + : String.Format(Resources.TestCaseFilter, filterExpression.TestCaseFilterValue); _logger.DebugInfo(message); return filterExpression; } catch (TestPlatformFormatException e) { - _logger.LogError($"Test case filter is invalid: {e.Message}"); + _logger.LogError(String.Format(Resources.FilterInvalid, e.Message)); return null; } } @@ -137,8 +139,8 @@ private bool Matches(TestCase testCase, ITestCaseFilterExpression filterExpressi filterExpression.MatchTestCase(testCase, propertyName => PropertyValueProvider(testCase, propertyName)); string message = matches - ? $"{testCase.DisplayName} matches {filterExpression.TestCaseFilterValue}" - : $"{testCase.DisplayName} does not match {filterExpression.TestCaseFilterValue}"; + ? String.Format(Resources.Matches, testCase.DisplayName, filterExpression.TestCaseFilterValue) + : String.Format(Resources.DoesntMatch, testCase.DisplayName, filterExpression.TestCaseFilterValue); _logger.DebugInfo(message); return matches; diff --git a/GoogleTestAdapter/TestAdapter/Resources.Designer.cs b/GoogleTestAdapter/TestAdapter/Resources.Designer.cs new file mode 100644 index 000000000..47df7c58f --- /dev/null +++ b/GoogleTestAdapter/TestAdapter/Resources.Designer.cs @@ -0,0 +1,351 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GoogleTestAdapter.TestAdapter { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GoogleTestAdapter.TestAdapter.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Could not attach debugger to process {0}:{1}{2}. + /// + internal static string CouldNotAttachMessage { + get { + return ResourceManager.GetString("CouldNotAttachMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not attach debugger to process {0}, no error message available. + /// + internal static string DebuggerAttachMessage { + get { + return ResourceManager.GetString("DebuggerAttachMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Debugger attached to process {0}, took {1} ms. + /// + internal static string DebuggerAttachTime { + get { + return ResourceManager.GetString("DebuggerAttachTime", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Debugging is only possible if GoogleTestAdapter has been installed into Visual Studio - NuGet installation does not support this (and other features such as Visual Studio Options, toolbar, and solution settings).. + /// + internal static string DebuggingMessage { + get { + return ResourceManager.GetString("DebuggingMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} does not match {1}. + /// + internal static string DoesntMatch { + get { + return ResourceManager.GetString("DoesntMatch", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to (enable debug mode for more information). + /// + internal static string EnableDebugMode { + get { + return ResourceManager.GetString("EnableDebugMode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The following errors and warnings have occured during {0} {1}:{2}. + /// + internal static string ErrorAndWarning { + get { + return ResourceManager.GetString("ErrorAndWarning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ERROR: {0}. + /// + internal static string ErrorMessage { + get { + return ResourceManager.GetString("ErrorMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test case filter is invalid: {0}. + /// + internal static string FilterInvalid { + get { + return ResourceManager.GetString("FilterInvalid", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not identify Visual Studio version. {0} requires at least Visual Studio 2012 Update 1.. + /// + internal static string IdentifyVSError { + get { + return ResourceManager.GetString("IdentifyVSError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid {0}. + /// + internal static string Invalid { + get { + return ResourceManager.GetString("Invalid", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} matches {1}. + /// + internal static string Matches { + get { + return ResourceManager.GetString("Matches", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to There might be more information on the problem in Visual Studio's ActivityLog.xml (see e.g. https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/). + /// + internal static string MoreInformationMessage { + get { + return ResourceManager.GetString("MoreInformationMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No test case filter provided. + /// + internal static string NoTestCaseFilter { + get { + return ResourceManager.GetString("NoTestCaseFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not find process. + /// + internal static string ProcessNotFound { + get { + return ResourceManager.GetString("ProcessNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Solution settings: {0}. + /// + internal static string Settings { + get { + return ResourceManager.GetString("Settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test case filter: {0}. + /// + internal static string TestCaseFilter { + get { + return ResourceManager.GetString("TestCaseFilter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to test discovery. + /// + internal static string TestDiscovery { + get { + return ResourceManager.GetString("TestDiscovery", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test discovery completed, overall duration: {0}. + /// + internal static string TestDiscoveryCompleted { + get { + return ResourceManager.GetString("TestDiscoveryCompleted", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exception while discovering tests: {0}. + /// + internal static string TestDiscoveryExceptionError { + get { + return ResourceManager.GetString("TestDiscoveryExceptionError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to test execution. + /// + internal static string TestExecution { + get { + return ResourceManager.GetString("TestExecution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test execution canceled.. + /// + internal static string TestExecutionCancelled { + get { + return ResourceManager.GetString("TestExecutionCancelled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Google Test execution completed, overall duration: {0}. + /// + internal static string TestExecutionCompleted { + get { + return ResourceManager.GetString("TestExecutionCompleted", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exception while running tests: {0}. + /// + internal static string TestRunningException { + get { + return ResourceManager.GetString("TestRunningException", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Trait has same name as base test property and will thus be ignored for test case filtering: {0}. + /// + internal static string TraitIgnoreMessage { + get { + return ResourceManager.GetString("TraitIgnoreMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unknown enum literal: {0}. + /// + internal static string UnknownEnum { + get { + return ResourceManager.GetString("UnknownEnum", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unknown enum literal: {0}. + /// + internal static string UnknownLiteral { + get { + return ResourceManager.GetString("UnknownLiteral", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unknown Visual Studio version: {0}. + /// + internal static string UnknownVisualStudioVersion { + get { + return ResourceManager.GetString("UnknownVisualStudioVersion", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} requires at least Visual Studio 2012 Update 1 - please update your Visual Studio installation.. + /// + internal static string VS2012Error { + get { + return ResourceManager.GetString("VS2012Error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Visual Studio version: {0}. + /// + internal static string VSVersion { + get { + return ResourceManager.GetString("VSVersion", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Could not find out Visual Studio version: {0}. + /// + internal static string VSVersionMessage { + get { + return ResourceManager.GetString("VSVersionMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warning: {0}. + /// + internal static string WarningMessage { + get { + return ResourceManager.GetString("WarningMessage", resourceCulture); + } + } + } +} diff --git a/GoogleTestAdapter/TestAdapter/Resources.resx b/GoogleTestAdapter/TestAdapter/Resources.resx new file mode 100644 index 000000000..fe6cb3ab7 --- /dev/null +++ b/GoogleTestAdapter/TestAdapter/Resources.resx @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test discovery completed, overall duration: {0} + {0} represents unlocalized duration (e.g. "02:14:18") + + + Exception while discovering tests: {0} + {0} represents localized exception message (e.g. "Cannot load file") + + + Test execution canceled. + + + Google Test execution completed, overall duration: {0} + {0} represents unlocalized duration (e.g. "02:14:18") + + + Exception while running tests: {0} + {0} represents localized exception message (e.g. "Cannot load file") + + + Could not find out Visual Studio version: {0} + {0} represents localized exception message (e.g. "Cannot load file") + + + (enable debug mode for more information) + Optionally used in ErrorAndWarning string + + + The following errors and warnings have occured during {0} {1}:{2} + {0} is TestDiscovery or TestExecution string, {1} is empty or EnableDebugMode string, {2} is line break + + + {0} does not match {1} + {0} represents an unlocalized test name (e.g. "TestSuite1.Test2"), {1} represents an unlocalized test filter value (e.g. "TestCategory=Nightly") + + + {0} matches {1} + {0} represents an unlocalized test name (e.g. "TestSuite1.Test2"), {1} represents an unlocalized test filter value (e.g. "TestCategory=Nightly") + + + No test case filter provided + + + Solution settings: {0} + {0} is unlocalized list of settings + + + Test case filter: {0} + {0} is the user-specified filter + + + Visual Studio version: {0} + {0} represents a number (e.g. "12" or "14") + + + test discovery + + + test execution + + + ERROR: {0} + {0} is the error message + + + Unknown enum literal: {0} + {0} represents a number (e.g. "0" or "1") + + + Warning: {0} + {0} is the warning message + + + Could not identify Visual Studio version. {0} requires at least Visual Studio 2012 Update 1. + {0} is ExtensionName string from Common.Dynamic.TAfGT resources file + + + {0} requires at least Visual Studio 2012 Update 1 - please update your Visual Studio installation. + {0} is ExtensionName string from Common.Dynamic.TAfGT resources file + + + Debugging is only possible if GoogleTestAdapter has been installed into Visual Studio - NuGet installation does not support this (and other features such as Visual Studio Options, toolbar, and solution settings). + + + Test case filter is invalid: {0} + {0} represents localized exception message (e.g. "Cannot load file") + + + Trait has same name as base test property and will thus be ignored for test case filtering: {0} + {0} represents unlocalized name for trait (e.g. "Test") + + + Could not attach debugger to process {0}:{1}{2} + {0} represents a process id (e.g. "10480"), {1} is a line break, {2} is an exception message + + + Could not attach debugger to process {0}, no error message available + {0} represents a process id (e.g. "10480") + + + Debugger attached to process {0}, took {1} ms + {0} represents a process id (e.g. "10480"), {1} represents a number (e.g. "12" or "14") + + + There might be more information on the problem in Visual Studio's ActivityLog.xml (see e.g. https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/) + + + Invalid {0} + {0} represents unlocalized settings name (e.g. "GoogleTestAdapterSettings") + + + Could not find process + + + Unknown enum literal: {0} + {0} represents a number (e.g. "0" or "1") + + + Unknown Visual Studio version: {0} + {0} is version number (e.g. "15.0") + + \ No newline at end of file diff --git a/GoogleTestAdapter/TestAdapter/Settings/RunSettingsContainer.cs b/GoogleTestAdapter/TestAdapter/Settings/RunSettingsContainer.cs index 4e76d672f..26075ab06 100644 --- a/GoogleTestAdapter/TestAdapter/Settings/RunSettingsContainer.cs +++ b/GoogleTestAdapter/TestAdapter/Settings/RunSettingsContainer.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using GoogleTestAdapter.Helpers; using GoogleTestAdapter.Settings; @@ -106,7 +106,7 @@ public static RunSettingsContainer LoadFromXml(XPathNavigator rootElement) } catch (InvalidOperationException e) when (e.InnerException is XmlSchemaValidationException) { - throw new InvalidRunSettingsException($"Invalid {GoogleTestConstants.SettingsName}", e.InnerException); + throw new InvalidRunSettingsException(String.Format(Resources.Invalid, GoogleTestConstants.SettingsName), e.InnerException); } catch (Exception e) { diff --git a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj index 090cbcc37..fe7bd3752 100644 --- a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj +++ b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj @@ -195,6 +195,11 @@ + + True + True + Resources.resx + @@ -212,6 +217,11 @@ Designer GoogleTestAdapterSettings.xsd + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + Designer diff --git a/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs b/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs index 1c0745f15..0d1c792b9 100644 --- a/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs +++ b/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Collections.Generic; @@ -47,7 +47,7 @@ public void DiscoverTests(IEnumerable executables, IDiscoveryContext dis CommonFunctions.LogVisualStudioVersion(_logger); _logger.LogInfo(Strings.Instance.TestDiscoveryStarting); - _logger.DebugInfo($"Solution settings: {_settings}"); + _logger.DebugInfo(String.Format(Resources.Settings, _settings)); try { @@ -55,14 +55,14 @@ public void DiscoverTests(IEnumerable executables, IDiscoveryContext dis _discoverer.DiscoverTests(executables, reporter); stopwatch.Stop(); - _logger.LogInfo($"Test discovery completed, overall duration: {stopwatch.Elapsed}"); + _logger.LogInfo(String.Format(Resources.TestDiscoveryCompleted, stopwatch.Elapsed)); } catch (Exception e) { - _logger.LogError($"Exception while discovering tests: {e}"); + _logger.LogError(String.Format(Resources.TestDiscoveryExceptionError, e)); } - CommonFunctions.ReportErrors(_logger, "test discovery", _settings.DebugMode); + CommonFunctions.ReportErrors(_logger, TestPhase.TestDiscovery, _settings.DebugMode); } private bool IsSupportedVisualStudioVersion() @@ -71,10 +71,10 @@ private bool IsSupportedVisualStudioVersion() switch (version) { case VsVersion.Unknown: - _logger.LogWarning($"Could not identify Visual Studio version. {Strings.Instance.ExtensionName} requires at least Visual Studio 2012 Update 1."); + _logger.LogWarning(String.Format(Resources.IdentifyVSError, Strings.Instance.ExtensionName)); return true; case VsVersion.VS2012: - _logger.LogError($"{Strings.Instance.ExtensionName} requires at least Visual Studio 2012 Update 1 - please update your Visual Studio installation."); + _logger.LogError(String.Format(Resources.VS2012Error, Strings.Instance.ExtensionName)); return false; default: return true; diff --git a/GoogleTestAdapter/TestAdapter/TestExecutor.cs b/GoogleTestAdapter/TestAdapter/TestExecutor.cs index 804601d83..fcb60e541 100644 --- a/GoogleTestAdapter/TestAdapter/TestExecutor.cs +++ b/GoogleTestAdapter/TestAdapter/TestExecutor.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 8/2017. using System; using System.Linq; @@ -50,10 +50,10 @@ public void RunTests(IEnumerable executables, IRunContext runContext, IF } catch (Exception e) { - _logger.LogError($"Exception while running tests: {e}"); + _logger.LogError(String.Format(Resources.TestRunningException, e)); } - CommonFunctions.ReportErrors(_logger, "test execution", _settings.DebugMode); + CommonFunctions.ReportErrors(_logger, TestPhase.TestExecution, _settings.DebugMode); } public void RunTests(IEnumerable vsTestCasesToRun, IRunContext runContext, IFrameworkHandle frameworkHandle) @@ -64,10 +64,10 @@ public void RunTests(IEnumerable vsTestCasesToRun, IRunContext runCo } catch (Exception e) { - _logger.LogError("Exception while running tests: " + e); + _logger.LogError(String.Format(Resources.TestRunningException, e)); } - CommonFunctions.ReportErrors(_logger, "test execution", _settings.DebugMode); + CommonFunctions.ReportErrors(_logger, TestPhase.TestExecution, _settings.DebugMode); } public void Cancel() @@ -79,7 +79,7 @@ public void Cancel() _canceled = true; _executor?.Cancel(); - _logger.LogInfo("Test execution canceled."); + _logger.LogInfo(Resources.TestExecutionCancelled); } } @@ -103,7 +103,7 @@ private void TryRunTests(IEnumerable executables, IRunContext runContext DoRunTests(testCasesToRun, runContext, frameworkHandle); stopwatch.Stop(); - _logger.LogInfo($"Google Test execution completed, overall duration: {stopwatch.Elapsed}."); + _logger.LogInfo(String.Format(Resources.TestExecutionCompleted, stopwatch.Elapsed)); } private void TryRunTests(IEnumerable vsTestCasesToRun, IRunContext runContext, IFrameworkHandle frameworkHandle) @@ -122,7 +122,7 @@ private void TryRunTests(IEnumerable vsTestCasesToRun, IRunContext r DoRunTests(testCasesToRun, runContext, frameworkHandle); stopwatch.Stop(); - _logger.LogInfo($"Google Test execution completed, overall duration: {stopwatch.Elapsed}."); + _logger.LogInfo(String.Format(Resources.TestExecutionCompleted, stopwatch.Elapsed)); } private Stopwatch StartStopWatchAndInitEnvironment(IRunContext runContext, IFrameworkHandle frameworkHandle) @@ -134,7 +134,7 @@ private Stopwatch StartStopWatchAndInitEnvironment(IRunContext runContext, IFram CommonFunctions.LogVisualStudioVersion(_logger); _logger.LogInfo(Strings.Instance.TestExecutionStarting); - _logger.DebugInfo($"Solution settings: {_settings}"); + _logger.DebugInfo(String.Format(Resources.Settings, _settings)); return stopwatch; } @@ -149,7 +149,7 @@ private bool AbleToRun(IRunContext runContext) { if (!IsVisualStudioProcessAvailable() && runContext.IsBeingDebugged) { - _logger.LogError("Debugging is only possible if GoogleTestAdapter has been installed into Visual Studio - NuGet installation does not support this (and other features such as Visual Studio Options, toolbar, and solution settings)."); + _logger.LogError(Resources.DebuggingMessage); return false; } From 385c15bbdbf5bd17f1c25d74f2b1c318bc6cd2f8 Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Wed, 23 Aug 2017 23:02:30 -0700 Subject: [PATCH 05/92] Uniquify GoogleTestExtensionOptionsPage GUID between GTA/TAfGT --- .../VsPackage.GTA/GoogleTestExtensionOptionsPage.cs | 1 + .../VsPackage.Shared/GoogleTestExtensionOptionsPage.cs | 2 -- .../VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs | 1 + .../VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs index 49dacaa96..e866667b5 100644 --- a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs @@ -9,6 +9,7 @@ namespace GoogleTestAdapter.VsPackage { public partial class GoogleTestExtensionOptionsPage { + private const string PackageGuidString = "e7c90fcb-0943-4908-9ae8-3b6a9d22ec9e"; private const string OptionsCategoryName = "Google Test Adapter"; private void DisplayReleaseNotesIfNecessary() diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index 2dddff8f0..c08efb52f 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -30,8 +30,6 @@ namespace GoogleTestAdapter.VsPackage [ProvideMenuResource("Menus.ctmenu", 1)] public sealed partial class GoogleTestExtensionOptionsPage : Package, IGoogleTestExtensionOptionsPage, IDisposable { - private const string PackageGuidString = "e7c90fcb-0943-4908-9ae8-3b6a9d22ec9e"; - private readonly string _debuggingNamedPipeId = Guid.NewGuid().ToString(); private IGlobalRunSettingsInternal _globalRunSettings; diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs index a81ade04f..b89e50381 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs @@ -5,6 +5,7 @@ namespace GoogleTestAdapter.VsPackage { public partial class GoogleTestExtensionOptionsPage { + private const string PackageGuidString = "1db31773-234b-424b-a887-b451fb1ba837"; private const string OptionsCategoryName = "Test Adapter for Google Test"; private void DisplayReleaseNotesIfNecessary() diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct index c405156d0..c7f1cac51 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct @@ -98,7 +98,7 @@ - + From dd95a771108fe18e8eadaca0a171ff4b798ee850 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Mon, 28 Aug 2017 12:08:40 -0700 Subject: [PATCH 06/92] Fix tests when GTA isnt built with the sln (#24) * add nuget command line to a tafgt projects packages config so it gets restored on the build server * change gta to tafgt to see if it fixes tets runs * template abstract console integration tests to work when only tafgt is in sln --- ...ionTests.cs => AbstractConsoleIntegrationTests.cs.tt} | 9 ++++++++- GoogleTestAdapter/VsPackage.TAfGT/packages.config | 1 + ResolveTTs.proj | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) rename GoogleTestAdapter/Tests.Common/{AbstractConsoleIntegrationTests.cs => AbstractConsoleIntegrationTests.cs.tt} (94%) diff --git a/GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs b/GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs.tt similarity index 94% rename from GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs rename to GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs.tt index 9a5bae340..9eaf4416a 100644 --- a/GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs +++ b/GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs.tt @@ -1,4 +1,7 @@ -// This file has been modified by Microsoft on 6/2017. +<#@ template language="c#" hostspecific="true" #> +<#@ output extension=".cs" #> +<#@ parameter type="System.String" name="TestAdapterFlavor" #> +// This file has been modified by Microsoft on 8/2017. using System.Collections.Generic; using System.IO; @@ -44,7 +47,11 @@ public static void GetDirectories(out string testAdapterDir, out string testSolu match.Success.Should().BeTrue(); string binariesPath = match.Groups[1].Value; string debugOrRelease = match.Groups[2].Value; +<# if (TestAdapterFlavor == "GTA") { #> testAdapterDir = Path.Combine(binariesPath, "GoogleTestAdapter", debugOrRelease, "Packaging.GTA"); +<# } else if (TestAdapterFlavor == "TAfGT") { #> + testAdapterDir = Path.Combine(binariesPath, "GoogleTestAdapter", debugOrRelease, "Packaging.TAfGT"); +<# } #> testSolutionFile = Path.Combine(binariesPath, @"..\..\SampleTests\SampleTests.sln"); } diff --git a/GoogleTestAdapter/VsPackage.TAfGT/packages.config b/GoogleTestAdapter/VsPackage.TAfGT/packages.config index c5ddcac55..832b99531 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/packages.config +++ b/GoogleTestAdapter/VsPackage.TAfGT/packages.config @@ -3,4 +3,5 @@ + \ No newline at end of file diff --git a/ResolveTTs.proj b/ResolveTTs.proj index c4565d503..eb309dde8 100644 --- a/ResolveTTs.proj +++ b/ResolveTTs.proj @@ -31,6 +31,10 @@ TextTemplatingFileGenerator app.config + + TextTemplatingFileGenerator + AbstractConsoleIntegrationTests.cs + TextTemplatingFileGenerator app.config From bf415d0f7abcf09cb08782e47672cd086ec961bc Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Fri, 1 Sep 2017 12:51:57 -0700 Subject: [PATCH 07/92] Add localization targets in projects with resources to be localized (#27) * Add loc targets in proj files * only real sign when we need to --- .../Common.Dynamic.TAfGT.csproj | 15 +++++++++++++++ GoogleTestAdapter/Core/Core.csproj | 15 +++++++++++++++ GoogleTestAdapter/DiaResolver/DiaResolver.csproj | 15 +++++++++++++++ .../NewProjectWizard/NewProjectWizard.csproj | 15 +++++++++++++++ GoogleTestAdapter/TestAdapter/TestAdapter.csproj | 15 +++++++++++++++ .../VsPackage.TAfGT/VsPackage.TAfGT.csproj | 15 +++++++++++++++ 6 files changed, 90 insertions(+) diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj index 06d569892..8645dc620 100644 --- a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj @@ -39,10 +39,17 @@ 4 + + $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.Common.Dynamic.lcl + Microsoft StrongName + + + false + @@ -84,4 +91,12 @@ copy "$(SolutionDir)Keys\Key_Debug.snk" "$(ProjectDir)Key.snk" ) + + + + Microsoft + StrongName + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Core/Core.csproj b/GoogleTestAdapter/Core/Core.csproj index 784f6c73a..70a98ea32 100644 --- a/GoogleTestAdapter/Core/Core.csproj +++ b/GoogleTestAdapter/Core/Core.csproj @@ -41,10 +41,17 @@ true + + $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.Core.lcl + Microsoft StrongName + + + false + @@ -152,4 +159,12 @@ --> + + + + Microsoft + StrongName + + + \ No newline at end of file diff --git a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj index 0d8cc81d5..e088ecb45 100644 --- a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj +++ b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj @@ -43,10 +43,17 @@ true + + $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.DiaResolver.lcl + Microsoft StrongName + + + false + @@ -118,4 +125,12 @@ --> + + + + Microsoft + StrongName + + + \ No newline at end of file diff --git a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj index f099d26d6..3191578d3 100644 --- a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj +++ b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj @@ -43,10 +43,17 @@ true + + $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\NewProjectWizard.lcl + Microsoft StrongName + + + false + @@ -170,4 +177,12 @@ + + + + Microsoft + StrongName + + + \ No newline at end of file diff --git a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj index fe7bd3752..4b5d254fd 100644 --- a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj +++ b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj @@ -43,10 +43,17 @@ true + + $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.TestAdapter.lcl + Microsoft StrongName + + + false + @@ -264,4 +271,12 @@ $(DevEnvDir)CommonExtensions\Microsoft\TestWindow\vstest.console.exe "$(SolutionDir)..\SampleTests\Debug\Tests_gta.exe" /Settings:"$(SolutionDir)..\SampleTests\SampleTests.gta.runsettings" /TestCaseFilter:"DisplayName=TestMath.AddPasses" /TestAdapterPath:"$(TargetDir)" + + + + Microsoft + StrongName + + + \ No newline at end of file diff --git a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj index 32a382fa0..008709c5d 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj +++ b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj @@ -210,10 +210,17 @@ + + $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.lcl + Microsoft StrongName + + + false + @@ -267,4 +274,12 @@ + + + + Microsoft + StrongName + + + \ No newline at end of file From afe7ef94e417c5c0a5e0b668c195317ac1ea44ea Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Thu, 7 Sep 2017 13:31:32 -0700 Subject: [PATCH 08/92] Deploy only one extension --- GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj | 1 + GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj b/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj index 487fd76bb..74cbe5529 100644 --- a/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj +++ b/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj @@ -25,6 +25,7 @@ true true true + false true diff --git a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj index 7ee623383..0b68cf812 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj +++ b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj @@ -25,6 +25,7 @@ true true true + false true From 8246518dff2af2cbd02ac5ff95637936e3341ff2 Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Thu, 7 Sep 2017 13:32:00 -0700 Subject: [PATCH 09/92] Update .gitignore --- GoogleTestAdapter/Tests.Common/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/GoogleTestAdapter/Tests.Common/.gitignore b/GoogleTestAdapter/Tests.Common/.gitignore index 2cd8da244..ee3f5a46f 100644 --- a/GoogleTestAdapter/Tests.Common/.gitignore +++ b/GoogleTestAdapter/Tests.Common/.gitignore @@ -1 +1,2 @@ +AbstractConsoleIntegrationTests.cs app.config \ No newline at end of file From b97cb7f0788ce02323fa0e16ef21c70e06d4d64f Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Thu, 7 Sep 2017 13:48:41 -0700 Subject: [PATCH 10/92] Remove x86 and x64 solution configurations --- GoogleTestAdapter/GoogleTestAdapter.sln | 254 +----------------------- 1 file changed, 1 insertion(+), 253 deletions(-) diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index 7dcc3e168..609eda422 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26717.1 +VisualStudioVersion = 15.0.26823.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1F754A4D-BD42-4368-8B90-F3C03F24A2F3}" ProjectSection(SolutionItems) = preProject @@ -138,369 +138,117 @@ Global EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|x64.ActiveCfg = Debug|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|x64.Build.0 = Debug|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|x86.ActiveCfg = Debug|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|x86.Build.0 = Debug|Any CPU {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|Any CPU.Build.0 = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x64.ActiveCfg = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x64.Build.0 = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x86.ActiveCfg = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x86.Build.0 = Release|Any CPU {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|Any CPU.Build.0 = Debug|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|x64.ActiveCfg = Debug|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|x64.Build.0 = Debug|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|x86.ActiveCfg = Debug|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|x86.Build.0 = Debug|Any CPU {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|Any CPU.ActiveCfg = Release|Any CPU {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|Any CPU.Build.0 = Release|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|x64.ActiveCfg = Release|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|x64.Build.0 = Release|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|x86.ActiveCfg = Release|Any CPU - {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|x86.Build.0 = Release|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|x64.ActiveCfg = Debug|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|x64.Build.0 = Debug|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|x86.ActiveCfg = Debug|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|x86.Build.0 = Debug|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|Any CPU.ActiveCfg = Release|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|Any CPU.Build.0 = Release|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|x64.ActiveCfg = Release|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|x64.Build.0 = Release|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|x86.ActiveCfg = Release|Any CPU - {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|x86.Build.0 = Release|Any CPU {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Debug|x64.ActiveCfg = Debug|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Debug|x64.Build.0 = Debug|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Debug|x86.ActiveCfg = Debug|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Debug|x86.Build.0 = Debug|Any CPU {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Release|Any CPU.ActiveCfg = Release|Any CPU {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Release|Any CPU.Build.0 = Release|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Release|x64.ActiveCfg = Release|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Release|x64.Build.0 = Release|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Release|x86.ActiveCfg = Release|Any CPU - {B06C696E-E458-490A-AC44-9E4F460DBAFE}.Release|x86.Build.0 = Release|Any CPU {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Debug|x64.ActiveCfg = Debug|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Debug|x64.Build.0 = Debug|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Debug|x86.ActiveCfg = Debug|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Debug|x86.Build.0 = Debug|Any CPU {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Release|Any CPU.ActiveCfg = Release|Any CPU {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Release|Any CPU.Build.0 = Release|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Release|x64.ActiveCfg = Release|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Release|x64.Build.0 = Release|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Release|x86.ActiveCfg = Release|Any CPU - {FDC95D92-5E1E-4BDF-AA35-181851FCE755}.Release|x86.Build.0 = Release|Any CPU {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Debug|x64.ActiveCfg = Debug|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Debug|x64.Build.0 = Debug|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Debug|x86.ActiveCfg = Debug|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Debug|x86.Build.0 = Debug|Any CPU {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Release|Any CPU.ActiveCfg = Release|Any CPU {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Release|Any CPU.Build.0 = Release|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Release|x64.ActiveCfg = Release|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Release|x64.Build.0 = Release|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Release|x86.ActiveCfg = Release|Any CPU - {A3ADB538-F3DF-4C5F-960D-11B6DF66A1A3}.Release|x86.Build.0 = Release|Any CPU {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Debug|Any CPU.Build.0 = Debug|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Debug|x64.ActiveCfg = Debug|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Debug|x64.Build.0 = Debug|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Debug|x86.ActiveCfg = Debug|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Debug|x86.Build.0 = Debug|Any CPU {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Release|Any CPU.ActiveCfg = Release|Any CPU {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Release|Any CPU.Build.0 = Release|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Release|x64.ActiveCfg = Release|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Release|x64.Build.0 = Release|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Release|x86.ActiveCfg = Release|Any CPU - {941BA1B7-2CF4-4D5C-8680-5C73CD6FE197}.Release|x86.Build.0 = Release|Any CPU {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Debug|x64.Build.0 = Debug|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Debug|x86.ActiveCfg = Debug|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Debug|x86.Build.0 = Debug|Any CPU {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Release|Any CPU.ActiveCfg = Release|Any CPU {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Release|Any CPU.Build.0 = Release|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Release|x64.ActiveCfg = Release|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Release|x64.Build.0 = Release|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Release|x86.ActiveCfg = Release|Any CPU - {7F4372DA-70E2-48D0-BEE2-8043528428D0}.Release|x86.Build.0 = Release|Any CPU {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Debug|x64.ActiveCfg = Debug|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Debug|x64.Build.0 = Debug|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Debug|x86.ActiveCfg = Debug|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Debug|x86.Build.0 = Debug|Any CPU {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Release|Any CPU.Build.0 = Release|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Release|x64.ActiveCfg = Release|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Release|x64.Build.0 = Release|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Release|x86.ActiveCfg = Release|Any CPU - {B9C827B5-DC90-4A78-B477-852EAE1196AF}.Release|x86.Build.0 = Release|Any CPU {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Debug|x64.ActiveCfg = Debug|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Debug|x64.Build.0 = Debug|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Debug|x86.ActiveCfg = Debug|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Debug|x86.Build.0 = Debug|Any CPU {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Release|Any CPU.ActiveCfg = Release|Any CPU {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Release|Any CPU.Build.0 = Release|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Release|x64.ActiveCfg = Release|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Release|x64.Build.0 = Release|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Release|x86.ActiveCfg = Release|Any CPU - {032BEBF7-2D2B-4CFD-B53D-E3D21B3AC9D6}.Release|x86.Build.0 = Release|Any CPU {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Debug|x64.ActiveCfg = Debug|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Debug|x64.Build.0 = Debug|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Debug|x86.ActiveCfg = Debug|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Debug|x86.Build.0 = Debug|Any CPU {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Release|Any CPU.Build.0 = Release|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Release|x64.ActiveCfg = Release|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Release|x64.Build.0 = Release|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Release|x86.ActiveCfg = Release|Any CPU - {BC05D210-68CD-47D0-AE8C-0F3168D1BE73}.Release|x86.Build.0 = Release|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|Any CPU.Build.0 = Debug|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|x64.ActiveCfg = Debug|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|x64.Build.0 = Debug|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|x86.ActiveCfg = Debug|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|x86.Build.0 = Debug|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|Any CPU.ActiveCfg = Release|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|Any CPU.Build.0 = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x64.ActiveCfg = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x64.Build.0 = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x86.ActiveCfg = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x86.Build.0 = Release|Any CPU {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|x64.ActiveCfg = Debug|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|x64.Build.0 = Debug|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|x86.ActiveCfg = Debug|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|x86.Build.0 = Debug|Any CPU {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|Any CPU.ActiveCfg = Release|Any CPU {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|Any CPU.Build.0 = Release|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|x64.ActiveCfg = Release|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|x64.Build.0 = Release|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|x86.ActiveCfg = Release|Any CPU - {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|x86.Build.0 = Release|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|x64.ActiveCfg = Debug|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|x64.Build.0 = Debug|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|x86.ActiveCfg = Debug|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|x86.Build.0 = Debug|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|Any CPU.ActiveCfg = Release|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|Any CPU.Build.0 = Release|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|x64.ActiveCfg = Release|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|x64.Build.0 = Release|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|x86.ActiveCfg = Release|Any CPU - {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|x86.Build.0 = Release|Any CPU {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Debug|x64.ActiveCfg = Debug|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Debug|x64.Build.0 = Debug|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Debug|x86.ActiveCfg = Debug|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Debug|x86.Build.0 = Debug|Any CPU {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Release|Any CPU.ActiveCfg = Release|Any CPU {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Release|Any CPU.Build.0 = Release|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Release|x64.ActiveCfg = Release|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Release|x64.Build.0 = Release|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Release|x86.ActiveCfg = Release|Any CPU - {12952B24-C70B-4A26-839A-EE4183BE8CC0}.Release|x86.Build.0 = Release|Any CPU {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Debug|x64.ActiveCfg = Debug|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Debug|x64.Build.0 = Debug|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Debug|x86.ActiveCfg = Debug|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Debug|x86.Build.0 = Debug|Any CPU {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Release|Any CPU.ActiveCfg = Release|Any CPU {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Release|Any CPU.Build.0 = Release|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Release|x64.ActiveCfg = Release|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Release|x64.Build.0 = Release|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Release|x86.ActiveCfg = Release|Any CPU - {2F0E4458-6C1C-461F-A60A-B731AD97E839}.Release|x86.Build.0 = Release|Any CPU {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Debug|x64.ActiveCfg = Debug|x64 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Debug|x64.Build.0 = Debug|x64 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Debug|x86.ActiveCfg = Debug|Win32 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Debug|x86.Build.0 = Debug|Win32 {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Release|Any CPU.ActiveCfg = Release|Win32 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Release|x64.ActiveCfg = Release|x64 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Release|x64.Build.0 = Release|x64 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Release|x86.ActiveCfg = Release|Win32 - {04990B2A-C7B5-40DA-A856-230E1E062FF1}.Release|x86.Build.0 = Release|Win32 {A5AA0879-9511-420A-9025-1AB87FAB7348}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Debug|x64.ActiveCfg = Debug|x64 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Debug|x64.Build.0 = Debug|x64 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Debug|x86.ActiveCfg = Debug|Win32 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Debug|x86.Build.0 = Debug|Win32 {A5AA0879-9511-420A-9025-1AB87FAB7348}.Release|Any CPU.ActiveCfg = Release|Win32 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Release|x64.ActiveCfg = Release|x64 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Release|x64.Build.0 = Release|x64 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Release|x86.ActiveCfg = Release|Win32 - {A5AA0879-9511-420A-9025-1AB87FAB7348}.Release|x86.Build.0 = Release|Win32 {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Debug|x64.ActiveCfg = Debug|x64 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Debug|x64.Build.0 = Debug|x64 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Debug|x86.ActiveCfg = Debug|Win32 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Debug|x86.Build.0 = Debug|Win32 {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Release|Any CPU.ActiveCfg = Release|Win32 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Release|x64.ActiveCfg = Release|x64 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Release|x64.Build.0 = Release|x64 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Release|x86.ActiveCfg = Release|Win32 - {446DA549-6EEF-4C48-A73C-F35B79C0BDE9}.Release|x86.Build.0 = Release|Win32 {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Debug|x64.ActiveCfg = Debug|x64 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Debug|x64.Build.0 = Debug|x64 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Debug|x86.ActiveCfg = Debug|Win32 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Debug|x86.Build.0 = Debug|Win32 {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Release|Any CPU.ActiveCfg = Release|Win32 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Release|x64.ActiveCfg = Release|x64 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Release|x64.Build.0 = Release|x64 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Release|x86.ActiveCfg = Release|Win32 - {1F2C133F-B7BD-4446-A65C-3F7EF9A22CE0}.Release|x86.Build.0 = Release|Win32 {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Debug|x64.ActiveCfg = Debug|x64 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Debug|x64.Build.0 = Debug|x64 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Debug|x86.ActiveCfg = Debug|Win32 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Debug|x86.Build.0 = Debug|Win32 {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Release|Any CPU.ActiveCfg = Release|Win32 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Release|x64.ActiveCfg = Release|x64 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Release|x64.Build.0 = Release|x64 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Release|x86.ActiveCfg = Release|Win32 - {4A4606CD-6D7B-4F76-8981-46D3C74E18BD}.Release|x86.Build.0 = Release|Win32 {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Debug|x64.ActiveCfg = Debug|x64 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Debug|x64.Build.0 = Debug|x64 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Debug|x86.ActiveCfg = Debug|Win32 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Debug|x86.Build.0 = Debug|Win32 {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Release|Any CPU.ActiveCfg = Release|Win32 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Release|x64.ActiveCfg = Release|x64 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Release|x64.Build.0 = Release|x64 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Release|x86.ActiveCfg = Release|Win32 - {7F98DAED-D035-4DFB-9E78-10D1C8FA3A32}.Release|x86.Build.0 = Release|Win32 {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Debug|Any CPU.ActiveCfg = Debug|Win32 {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Debug|Any CPU.Build.0 = Debug|Win32 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Debug|x64.ActiveCfg = Debug|x64 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Debug|x64.Build.0 = Debug|x64 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Debug|x86.ActiveCfg = Debug|Win32 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Debug|x86.Build.0 = Debug|Win32 {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Release|Any CPU.ActiveCfg = Release|Win32 {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Release|Any CPU.Build.0 = Release|Win32 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Release|x64.ActiveCfg = Release|x64 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Release|x64.Build.0 = Release|x64 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Release|x86.ActiveCfg = Release|Win32 - {6EFFF365-F626-4BBA-A255-38468E4DF6E0}.Release|x86.Build.0 = Release|Win32 {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Debug|x64.ActiveCfg = Debug|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Debug|x64.Build.0 = Debug|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Debug|x86.ActiveCfg = Debug|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Debug|x86.Build.0 = Debug|Any CPU {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Release|Any CPU.ActiveCfg = Release|Any CPU {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Release|Any CPU.Build.0 = Release|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Release|x64.ActiveCfg = Release|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Release|x64.Build.0 = Release|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Release|x86.ActiveCfg = Release|Any CPU - {F4B47B1D-41B2-4C7A-804D-4664B590A4F7}.Release|x86.Build.0 = Release|Any CPU {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Debug|Any CPU.ActiveCfg = Debug|Win32 {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Debug|Any CPU.Build.0 = Debug|Win32 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Debug|x64.ActiveCfg = Debug|x64 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Debug|x64.Build.0 = Debug|x64 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Debug|x86.ActiveCfg = Debug|Win32 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Debug|x86.Build.0 = Debug|Win32 {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Release|Any CPU.ActiveCfg = Release|Win32 {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Release|Any CPU.Build.0 = Release|Win32 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Release|x64.ActiveCfg = Release|x64 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Release|x64.Build.0 = Release|x64 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Release|x86.ActiveCfg = Release|Win32 - {72AEA89D-FA32-4E4F-BA04-9C670B53F746}.Release|x86.Build.0 = Release|Win32 {BAB53542-85AA-4780-9F48-2984C036189A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {BAB53542-85AA-4780-9F48-2984C036189A}.Debug|x64.ActiveCfg = Debug|x64 - {BAB53542-85AA-4780-9F48-2984C036189A}.Debug|x64.Build.0 = Debug|x64 - {BAB53542-85AA-4780-9F48-2984C036189A}.Debug|x86.ActiveCfg = Debug|Win32 - {BAB53542-85AA-4780-9F48-2984C036189A}.Debug|x86.Build.0 = Debug|Win32 {BAB53542-85AA-4780-9F48-2984C036189A}.Release|Any CPU.ActiveCfg = Release|Win32 - {BAB53542-85AA-4780-9F48-2984C036189A}.Release|x64.ActiveCfg = Release|x64 - {BAB53542-85AA-4780-9F48-2984C036189A}.Release|x64.Build.0 = Release|x64 - {BAB53542-85AA-4780-9F48-2984C036189A}.Release|x86.ActiveCfg = Release|Win32 - {BAB53542-85AA-4780-9F48-2984C036189A}.Release|x86.Build.0 = Release|Win32 {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Debug|x64.ActiveCfg = Debug|x64 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Debug|x64.Build.0 = Debug|x64 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Debug|x86.ActiveCfg = Debug|Win32 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Debug|x86.Build.0 = Debug|Win32 {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|Any CPU.ActiveCfg = Release|Win32 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x64.ActiveCfg = Release|x64 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x64.Build.0 = Release|x64 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x86.ActiveCfg = Release|Win32 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x86.Build.0 = Release|Win32 {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|x64.ActiveCfg = Debug|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|x64.Build.0 = Debug|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|x86.ActiveCfg = Debug|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|x86.Build.0 = Debug|Any CPU {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|Any CPU.ActiveCfg = Release|Any CPU {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|Any CPU.Build.0 = Release|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|x64.ActiveCfg = Release|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|x64.Build.0 = Release|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|x86.ActiveCfg = Release|Any CPU - {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|x86.Build.0 = Release|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|x64.ActiveCfg = Debug|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|x64.Build.0 = Debug|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|x86.ActiveCfg = Debug|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|x86.Build.0 = Debug|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|Any CPU.Build.0 = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x64.ActiveCfg = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x64.Build.0 = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x86.ActiveCfg = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x86.Build.0 = Release|Any CPU {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|x64.ActiveCfg = Debug|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|x64.Build.0 = Debug|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|x86.ActiveCfg = Debug|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|x86.Build.0 = Debug|Any CPU {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|Any CPU.ActiveCfg = Release|Any CPU {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|Any CPU.Build.0 = Release|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|x64.ActiveCfg = Release|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|x64.Build.0 = Release|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|x86.ActiveCfg = Release|Any CPU - {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|x86.Build.0 = Release|Any CPU {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.ActiveCfg = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.Build.0 = Debug|Win32 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|x64.ActiveCfg = Debug|x64 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|x64.Build.0 = Debug|x64 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|x86.ActiveCfg = Debug|Win32 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|x86.Build.0 = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.ActiveCfg = Release|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.Build.0 = Release|Win32 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x64.ActiveCfg = Release|x64 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x64.Build.0 = Release|x64 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x86.ActiveCfg = Release|Win32 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From f86744a1221aa2329ca7f9a2077cf01371479255 Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Thu, 7 Sep 2017 14:57:00 -0700 Subject: [PATCH 11/92] Handle non-ASCII characters in PeParser correctly --- .../DiaResolver.Tests/PeParserTests.cs | 13 +- GoogleTestAdapter/DiaResolver/PeParser.cs | 246 +++++++++++++----- GoogleTestAdapter/GoogleTestAdapter.sln | 7 + .../TestAdapter.Tests/TestDiscovererTests.cs | 16 +- .../Tests.Common/TestResources.cs | 1 + .../main.cpp" | 3 + ...4\270\202\347\213\233\347\213\234.vcxproj" | 92 +++++++ ...2\347\213\233\347\213\234.vcxproj.filters" | 6 + 8 files changed, 316 insertions(+), 68 deletions(-) create mode 100644 "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/main.cpp" create mode 100644 "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" create mode 100644 "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj.filters" diff --git a/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs b/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs index e167b00ad..e6174e1a7 100644 --- a/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs +++ b/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs @@ -1,4 +1,6 @@ -using System.IO; +// This file has been modified by Microsoft on 9/2017. + +using System.IO; using FluentAssertions; using GoogleTestAdapter.Tests.Common; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -45,6 +47,15 @@ public void PeParser_X86StaticallyLinked_FindsEmbeddedPdbPath() pdb.Should().Be(expectedPdb); } + [TestMethod] + [TestCategory(Unit)] + public void PeParser_X86UnicodeName_FindsEmbeddedPdbPath() + { + string pdb = PeParser.ExtractPdbPath(TestResources.UnicodeExe, MockLogger.Object); + string expectedPdb = Path.GetFullPath(Path.ChangeExtension(TestResources.UnicodeExe, ".pdb")); + pdb.Should().Be(expectedPdb); + } + } } \ No newline at end of file diff --git a/GoogleTestAdapter/DiaResolver/PeParser.cs b/GoogleTestAdapter/DiaResolver/PeParser.cs index 0b19215d6..794e45123 100644 --- a/GoogleTestAdapter/DiaResolver/PeParser.cs +++ b/GoogleTestAdapter/DiaResolver/PeParser.cs @@ -1,56 +1,14 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. +using GoogleTestAdapter.Common; +using Microsoft.Win32.SafeHandles; using System; using System.Collections.Generic; using System.Runtime.InteropServices; -using GoogleTestAdapter.Common; +using System.Text; namespace GoogleTestAdapter.DiaResolver { - - [StructLayout(LayoutKind.Sequential)] - // ReSharper disable once InconsistentNaming - struct LOADED_IMAGE - { - public IntPtr ModuleName; - public IntPtr hFile; - public IntPtr MappedAddress; - public IntPtr FileHeader; - public IntPtr LastRvaSection; - public uint NumbOfSections; - public IntPtr FirstRvaSection; - public uint charachteristics; - public ushort systemImage; - public ushort dosImage; - public ushort readOnly; - public ushort version; - public IntPtr links_1; - public IntPtr links_2; - public uint sizeOfImage; - public IntPtr links_3; - public IntPtr links_4; - public IntPtr links_5; - } - - [StructLayout(LayoutKind.Explicit)] - // ReSharper disable once InconsistentNaming - struct IMAGE_IMPORT_DESCRIPTOR - { - [FieldOffset(0)] - public uint Characteristics; - [FieldOffset(0)] - public uint OriginalFirstThunk; - - [FieldOffset(4)] - public uint TimeDateStamp; - [FieldOffset(8)] - public uint ForwarderChain; - [FieldOffset(12)] - public uint Name; - [FieldOffset(16)] - public uint FirstThunk; - } - [StructLayout(LayoutKind.Explicit)] // ReSharper disable once InconsistentNaming struct IMAGE_DEBUG_DIRECTORY @@ -80,6 +38,57 @@ struct IMAGE_DEBUG_DIRECTORY public uint PointerToRawData; } + [StructLayout(LayoutKind.Sequential)] + unsafe struct IMAGE_DOS_HEADER + { + public ushort e_magic; + public ushort e_cblp; + public ushort e_cp; + public ushort e_crlc; + public ushort e_cparhdr; + public ushort e_minalloc; + public ushort e_maxalloc; + public ushort e_ss; + public ushort e_sp; + public ushort e_csum; + public ushort e_ip; + public ushort e_cs; + public ushort e_lfarlc; + public ushort e_ovno; + public fixed ushort e_res1[4]; + public ushort e_oemid; + public ushort e_oeminfo; + public fixed ushort e_res2[10]; + public int e_lfanew; + } + + [StructLayout(LayoutKind.Explicit)] + // ReSharper disable once InconsistentNaming + struct IMAGE_IMPORT_DESCRIPTOR + { + [FieldOffset(0)] + public uint Characteristics; + [FieldOffset(0)] + public uint OriginalFirstThunk; + + [FieldOffset(4)] + public uint TimeDateStamp; + [FieldOffset(8)] + public uint ForwarderChain; + [FieldOffset(12)] + public uint Name; + [FieldOffset(16)] + public uint FirstThunk; + } + + [StructLayout(LayoutKind.Sequential)] + unsafe struct IMAGE_NT_HEADERS + { + public int Signature; + public fixed byte FileHeader[20]; + public fixed byte OptionalHeader[224]; + } + [StructLayout(LayoutKind.Explicit)] struct PdbInfo { @@ -99,36 +108,140 @@ struct PdbInfo public byte PdbFileName; } + struct LoadedImage + { + public IntPtr MappedAddress; + public IntPtr FileHeader; + } + unsafe public static class PeParser { private static class NativeMethods { - [DllImport("imageHlp.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Ansi, BestFitMapping = false, ThrowOnUnmappableChar = true)] - public static extern bool MapAndLoad(string imageName, string dllPath, LOADED_IMAGE* loadedImage, bool dotDll, bool readOnly); + public const ushort IMAGE_DOS_SIGNATURE = 0x5A4D; + public const ushort IMAGE_NT_SIGNATURE = 0x00004550; + + public const uint GENERIC_READ = unchecked(0x80000000); + public const uint FILE_MAP_READ = 0x0004; + public const uint FILE_SHARE_READ = 0x00000001; + public const uint OPEN_EXISTING = 3; + public const uint PAGE_READONLY = 0x02; + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern SafeFileHandle CreateFile( + string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, + uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern SafeFileHandle CreateFileMapping( + SafeFileHandle hFile, IntPtr lpFileMappingAttributes, uint flProtect, + uint dwMaximumSizeHigh, uint dwMaximumSizeLow, string lpName); - [DllImport("imageHlp.dll", CallingConvention = CallingConvention.Winapi)] - public static extern bool UnMapAndLoad(ref LOADED_IMAGE loadedImage); + [DllImport("kernel32.dll", SetLastError = true)] + public static extern bool GetFileSizeEx(SafeFileHandle hFile, out long lpFileSize); - [DllImport("dbghelp.dll", CallingConvention = CallingConvention.Winapi)] + [DllImport("kernel32.dll", SetLastError = true)] + public static extern IntPtr MapViewOfFile( + SafeFileHandle hFileMappingObject, uint dwDesiredAccess, uint dwFileOffsetHigh, + uint dwFileOffsetLow, UIntPtr dwNumberOfBytesToMap); + + [DllImport("kernel32.dll", SetLastError = true)] + public static extern bool UnmapViewOfFile(IntPtr lpBaseAddress); + + [DllImport("dbghelp.dll")] public static extern void* ImageDirectoryEntryToData(IntPtr pBase, byte mappedAsImage, ushort directoryEntry, uint* size); - [DllImport("dbghelp.dll", CallingConvention = CallingConvention.Winapi)] + [DllImport("dbghelp.dll")] public static extern IntPtr ImageRvaToVa(IntPtr pNtHeaders, IntPtr pBase, uint rva, IntPtr pLastRvaSection); } - private static void ParsePeFile(string executable, ILogger logger, Action action) + private static bool MapAndLoad(string imageName, out LoadedImage loadedImage) { - LOADED_IMAGE image = new LOADED_IMAGE(); + loadedImage = new LoadedImage(); + + long fileSize; + IntPtr mapAddr; + using (var hFile = NativeMethods.CreateFile(imageName, NativeMethods.GENERIC_READ, + NativeMethods.FILE_SHARE_READ, IntPtr.Zero, NativeMethods.OPEN_EXISTING, 0, IntPtr.Zero)) + { + if (hFile.IsInvalid) + return false; + + if (!NativeMethods.GetFileSizeEx(hFile, out fileSize)) + return false; + + using (var hMapping = NativeMethods.CreateFileMapping(hFile, IntPtr.Zero, NativeMethods.PAGE_READONLY, 0, 0, null)) + { + if (hMapping.IsInvalid) + return false; + + mapAddr = NativeMethods.MapViewOfFile(hMapping, NativeMethods.FILE_MAP_READ, 0, 0, UIntPtr.Zero); + if (mapAddr == IntPtr.Zero) + return false; + } + } + + unsafe + { + if (fileSize < Marshal.SizeOf()) + return false; + + var dosHeader = (IMAGE_DOS_HEADER*)mapAddr; + IMAGE_NT_HEADERS* rawFileHeader; + if (dosHeader->e_magic == NativeMethods.IMAGE_DOS_SIGNATURE) + { + if (dosHeader->e_lfanew <= 0 + || fileSize < dosHeader->e_lfanew + Marshal.SizeOf()) + { + return false; + } + + rawFileHeader = (IMAGE_NT_HEADERS*)((byte*)mapAddr + dosHeader->e_lfanew); + } + else if (dosHeader->e_magic == NativeMethods.IMAGE_NT_SIGNATURE) + { + if (fileSize < Marshal.SizeOf()) + return false; + + rawFileHeader = (IMAGE_NT_HEADERS*)mapAddr; + } + else + { + return false; + } + + if (rawFileHeader->Signature != NativeMethods.IMAGE_NT_SIGNATURE) + return false; + + loadedImage.MappedAddress = mapAddr; + loadedImage.FileHeader = (IntPtr)rawFileHeader; + return true; + } + } + + private static bool UnMapAndLoad(ref LoadedImage loadedImage) + { + if (NativeMethods.UnmapViewOfFile(loadedImage.MappedAddress)) + { + loadedImage = new LoadedImage(); + return true; + } + return false; + } + + private static void ParsePeFile(string executable, ILogger logger, Action action) + { + LoadedImage image = new LoadedImage(); bool loaded = false; try { - loaded = NativeMethods.MapAndLoad(executable, null, &image, true, true); + loaded = MapAndLoad(executable, out image); if(loaded) action(image); } finally { - if (loaded && !NativeMethods.UnMapAndLoad(ref image)) + if (loaded && !UnMapAndLoad(ref image)) logger.LogError(Resources.UnMapLoad); } } @@ -149,10 +262,25 @@ public static List ParseImports(string executable, ILogger logger) return imports; } - private static string GetString(LOADED_IMAGE image, uint offset) + private static string PtrToStringUtf8(IntPtr ptr) + { + if (ptr == IntPtr.Zero) + return null; + + int size = 0; + while (Marshal.ReadByte(ptr, size) != 0) + ++size; + + byte[] buffer = new byte[size]; + Marshal.Copy(ptr, buffer, 0, buffer.Length); + + return Encoding.UTF8.GetString(buffer); + } + + private static string GetString(LoadedImage image, uint offset) { IntPtr stringPtr = NativeMethods.ImageRvaToVa(image.FileHeader, image.MappedAddress, offset, IntPtr.Zero); - return Marshal.PtrToStringAnsi(stringPtr); + return PtrToStringUtf8(stringPtr); } // Most windows executables contain the path to their PDB @@ -172,7 +300,7 @@ public static string ExtractPdbPath(string executable, ILogger logger) if (dbgDir->SizeOfData > 0) { var pdbInfo = (PdbInfo*)NativeMethods.ImageRvaToVa(image.FileHeader, image.MappedAddress, dbgDir->AddressOfRawData, IntPtr.Zero); - pdbPath = Marshal.PtrToStringAnsi(new IntPtr(&pdbInfo->PdbFileName)); + pdbPath = PtrToStringUtf8(new IntPtr(&pdbInfo->PdbFileName)); } }); diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index 609eda422..95ab440ef 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -130,6 +130,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packaging.TAfGT", "Packagin EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SemaphoreExe", "SemaphoreExe\SemaphoreExe.vcxproj", "{F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "㐀㕵ExtAxCP936丂狛狜", "㐀㕵ExtAxCP936丂狛狜\㐀㕵ExtAxCP936丂狛狜.vcxproj", "{8B27FD59-F03C-468E-B878-CFFC7484B7F7}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution VsPackage.Shared\VsPackage.Shared.projitems*{55294b5f-a075-43f2-b0e9-2b11925e8b91}*SharedItemsImports = 4 @@ -249,6 +251,10 @@ Global {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.Build.0 = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.ActiveCfg = Release|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.Build.0 = Release|Win32 + {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Debug|Any CPU.Build.0 = Debug|Win32 + {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Release|Any CPU.ActiveCfg = Release|Win32 + {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Release|Any CPU.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -277,6 +283,7 @@ Global {BAB53542-85AA-4780-9F48-2984C036189A} = {1FF56AF6-0ACE-4FE8-B802-4832703EC2DC} {2E3221EB-86DA-427D-84EC-DEFD3F966D9A} = {1FF56AF6-0ACE-4FE8-B802-4832703EC2DC} {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43} = {475245AA-A07D-41D8-BC84-959C5E12A52C} + {8B27FD59-F03C-468E-B878-CFFC7484B7F7} = {475245AA-A07D-41D8-BC84-959C5E12A52C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C942DDD5-B04E-4D57-BA9F-A444392C9480} diff --git a/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs b/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs index a7e240953..b922a77f3 100644 --- a/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs +++ b/GoogleTestAdapter/TestAdapter.Tests/TestDiscovererTests.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using FluentAssertions; using GoogleTestAdapter.Helpers; @@ -55,7 +55,7 @@ public void DiscoverTests_FailingExecutable_ExitCodeIsLogged() private void MarkUntrusted(string path) { - using (var handle = NativeMethods.CreateFileW(path + ":Zone.Identifier", NativeMethods.GENERIC_WRITE, 0, IntPtr.Zero, + using (var handle = NativeMethods.CreateFile(path + ":Zone.Identifier", NativeMethods.GENERIC_WRITE, 0, IntPtr.Zero, NativeMethods.CREATE_NEW, 0, IntPtr.Zero)) { if (handle.IsInvalid) @@ -155,13 +155,13 @@ private void CheckForDiscoverySinkCalls(int expectedNrOfTests, string customRege static class NativeMethods { - public const int GENERIC_WRITE = 1073741824; - public const int CREATE_NEW = 1; + public const uint GENERIC_WRITE = 0x40000000; + public const uint CREATE_NEW = 1; - [DllImport("kernel32.dll")] - public static extern SafeFileHandle CreateFileW( - [MarshalAs(UnmanagedType.LPWStr)] string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, - uint dwCreationDisposition,uint dwFlagsAndAttributes, IntPtr hTemplateFile); + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern SafeFileHandle CreateFile( + string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, + uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile); } } \ No newline at end of file diff --git a/GoogleTestAdapter/Tests.Common/TestResources.cs b/GoogleTestAdapter/Tests.Common/TestResources.cs index cbc65cc16..3b65ecf90 100644 --- a/GoogleTestAdapter/Tests.Common/TestResources.cs +++ b/GoogleTestAdapter/Tests.Common/TestResources.cs @@ -29,6 +29,7 @@ public static class TestResources public const string AlwaysCrashingExe = GoogleTestAdapterBuildDir + @"CrashingExe\CrashingExe.exe"; public const string AlwaysFailingExe = GoogleTestAdapterBuildDir + @"FailingExe\FailingExe.exe"; public const string SemaphoreExe = GoogleTestAdapterBuildDir + @"SemaphoreExe\SemaphoreExe.exe"; + public const string UnicodeExe = GoogleTestAdapterBuildDir + @"㐀㕵ExtAxCP936丂狛狜\㐀㕵ExtAxCP936丂狛狜.exe"; public const string Tests_DebugX86 = SampleTestsBuildDir + @"Debug\Tests_gta.exe"; public const string Tests_ReleaseX86 = SampleTestsBuildDir + @"Release\Tests_gta.exe"; diff --git "a/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/main.cpp" "b/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/main.cpp" new file mode 100644 index 000000000..0eefc1c8c --- /dev/null +++ "b/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/main.cpp" @@ -0,0 +1,3 @@ +int main() +{ +} \ No newline at end of file diff --git "a/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" "b/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" new file mode 100644 index 000000000..e4579e225 --- /dev/null +++ "b/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" @@ -0,0 +1,92 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {8B27FD59-F03C-468E-B878-CFFC7484B7F7} + Win32Proj + 㐀㕵ExtAxCP936丂狛狜 + 8.1 + + + + + Application + true + v100 + v110 + v120 + v140 + v141 + Unicode + + + Application + false + v100 + v110 + v120 + v140 + v141 + true + Unicode + + + + + + + + + + + + + + + true + + + false + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Console + true + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Console + true + + + + + + + + + \ No newline at end of file diff --git "a/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj.filters" "b/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj.filters" new file mode 100644 index 000000000..4327830c9 --- /dev/null +++ "b/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj.filters" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 38e7afc07b274f38789227f11e797047b94f48b3 Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Thu, 7 Sep 2017 22:00:52 -0700 Subject: [PATCH 12/92] Avoid Unicode path to project to satisfy the build system --- GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs | 4 ++-- GoogleTestAdapter/GoogleTestAdapter.sln | 2 +- GoogleTestAdapter/Tests.Common/TestResources.cs | 2 +- .../UnicodeNameExe/UnicodeNameExe.vcxproj | 2 ++ .../UnicodeNameExe/UnicodeNameExe.vcxproj.filters | 0 .../main.cpp" => GoogleTestAdapter/UnicodeNameExe/main.cpp | 0 6 files changed, 6 insertions(+), 4 deletions(-) rename "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" => GoogleTestAdapter/UnicodeNameExe/UnicodeNameExe.vcxproj (97%) rename "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj.filters" => GoogleTestAdapter/UnicodeNameExe/UnicodeNameExe.vcxproj.filters (100%) rename "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/main.cpp" => GoogleTestAdapter/UnicodeNameExe/main.cpp (100%) diff --git a/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs b/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs index e6174e1a7..1fa306166 100644 --- a/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs +++ b/GoogleTestAdapter/DiaResolver.Tests/PeParserTests.cs @@ -51,8 +51,8 @@ public void PeParser_X86StaticallyLinked_FindsEmbeddedPdbPath() [TestCategory(Unit)] public void PeParser_X86UnicodeName_FindsEmbeddedPdbPath() { - string pdb = PeParser.ExtractPdbPath(TestResources.UnicodeExe, MockLogger.Object); - string expectedPdb = Path.GetFullPath(Path.ChangeExtension(TestResources.UnicodeExe, ".pdb")); + string pdb = PeParser.ExtractPdbPath(TestResources.UnicodeNameExe, MockLogger.Object); + string expectedPdb = Path.GetFullPath(Path.ChangeExtension(TestResources.UnicodeNameExe, ".pdb")); pdb.Should().Be(expectedPdb); } diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index 95ab440ef..7a4a8f57b 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -130,7 +130,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packaging.TAfGT", "Packagin EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SemaphoreExe", "SemaphoreExe\SemaphoreExe.vcxproj", "{F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "㐀㕵ExtAxCP936丂狛狜", "㐀㕵ExtAxCP936丂狛狜\㐀㕵ExtAxCP936丂狛狜.vcxproj", "{8B27FD59-F03C-468E-B878-CFFC7484B7F7}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnicodeNameExe", "UnicodeNameExe\UnicodeNameExe.vcxproj", "{8B27FD59-F03C-468E-B878-CFFC7484B7F7}" EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution diff --git a/GoogleTestAdapter/Tests.Common/TestResources.cs b/GoogleTestAdapter/Tests.Common/TestResources.cs index 3b65ecf90..fcd50d4bc 100644 --- a/GoogleTestAdapter/Tests.Common/TestResources.cs +++ b/GoogleTestAdapter/Tests.Common/TestResources.cs @@ -29,7 +29,7 @@ public static class TestResources public const string AlwaysCrashingExe = GoogleTestAdapterBuildDir + @"CrashingExe\CrashingExe.exe"; public const string AlwaysFailingExe = GoogleTestAdapterBuildDir + @"FailingExe\FailingExe.exe"; public const string SemaphoreExe = GoogleTestAdapterBuildDir + @"SemaphoreExe\SemaphoreExe.exe"; - public const string UnicodeExe = GoogleTestAdapterBuildDir + @"㐀㕵ExtAxCP936丂狛狜\㐀㕵ExtAxCP936丂狛狜.exe"; + public const string UnicodeNameExe = GoogleTestAdapterBuildDir + @"UnicodeNameExe\㐀㕵ExtAxCP936丂狛狜.exe"; public const string Tests_DebugX86 = SampleTestsBuildDir + @"Debug\Tests_gta.exe"; public const string Tests_ReleaseX86 = SampleTestsBuildDir + @"Release\Tests_gta.exe"; diff --git "a/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" b/GoogleTestAdapter/UnicodeNameExe/UnicodeNameExe.vcxproj similarity index 97% rename from "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" rename to GoogleTestAdapter/UnicodeNameExe/UnicodeNameExe.vcxproj index e4579e225..8b5cf4a5f 100644 --- "a/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj" +++ b/GoogleTestAdapter/UnicodeNameExe/UnicodeNameExe.vcxproj @@ -53,9 +53,11 @@ true + 㐀㕵ExtAxCP936丂狛狜 false + 㐀㕵ExtAxCP936丂狛狜 diff --git "a/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj.filters" b/GoogleTestAdapter/UnicodeNameExe/UnicodeNameExe.vcxproj.filters similarity index 100% rename from "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234.vcxproj.filters" rename to GoogleTestAdapter/UnicodeNameExe/UnicodeNameExe.vcxproj.filters diff --git "a/GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/main.cpp" b/GoogleTestAdapter/UnicodeNameExe/main.cpp similarity index 100% rename from "GoogleTestAdapter/\343\220\200\343\225\265ExtAxCP936\344\270\202\347\213\233\347\213\234/main.cpp" rename to GoogleTestAdapter/UnicodeNameExe/main.cpp From 09a2ddbc195ae63b7e6c074d1fb819dca063ef09 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Tue, 12 Sep 2017 15:09:32 -0700 Subject: [PATCH 13/92] Localize XAML in wizard --- .../Properties/Resources.Designer.cs | 72 +++++++++++++++++++ .../Properties/Resources.resx | 27 +++++++ .../SinglePageWizardDialog.xaml | 16 +++-- .../SinglePageWizardDialog.xaml.cs | 3 +- 4 files changed, 110 insertions(+), 8 deletions(-) diff --git a/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs b/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs index 4f8aed5e9..2fa959039 100644 --- a/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs +++ b/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs @@ -60,6 +60,51 @@ internal Resources() { } } + /// + /// Looks up a localized string similar to Consume Google Test as:. + /// + internal static string ConsumeAs { + get { + return ResourceManager.GetString("ConsumeAs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dynamic Library (.dll). + /// + internal static string DynamicLib { + get { + return ResourceManager.GetString("DynamicLib", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Link dynamically (Recommended). + /// + internal static string LinkDynamic { + get { + return ResourceManager.GetString("LinkDynamic", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Link statically. + /// + internal static string LinkStatic { + get { + return ResourceManager.GetString("LinkStatic", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <No project>. + /// + internal static string NoProject { + get { + return ResourceManager.GetString("NoProject", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cannot find NuGet.VisualStudio.Interop.dll. Wizard cannot continue.. /// @@ -69,6 +114,33 @@ internal static string NuGetInteropNotFound { } } + /// + /// Looks up a localized string similar to C++ runtime libraries:. + /// + internal static string RuntimeLibs { + get { + return ResourceManager.GetString("RuntimeLibs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Select project to test (Optional):. + /// + internal static string SelectProject { + get { + return ResourceManager.GetString("SelectProject", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Static Library (.lib). + /// + internal static string StaticLib { + get { + return ResourceManager.GetString("StaticLib", resourceCulture); + } + } + /// /// Looks up a localized string similar to Windows SDK not found.. /// diff --git a/GoogleTestAdapter/NewProjectWizard/Properties/Resources.resx b/GoogleTestAdapter/NewProjectWizard/Properties/Resources.resx index da4bc6f5e..4dd9cb9b4 100644 --- a/GoogleTestAdapter/NewProjectWizard/Properties/Resources.resx +++ b/GoogleTestAdapter/NewProjectWizard/Properties/Resources.resx @@ -117,9 +117,36 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Consume Google Test as: + Followed by radio buttons to select a static or dynamic library + + + Dynamic Library (.dll) + + + Link dynamically (Recommended) + + + Link statically + + + <No project> + Default selection in a project selection dropdown + Cannot find NuGet.VisualStudio.Interop.dll. Wizard cannot continue. + + C++ runtime libraries: + Followed by radio buttons to "link statically" or "link dynamically" + + + Select project to test (Optional): + + + Static Library (.lib) + Windows SDK not found. diff --git a/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml b/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml index 473d6f772..28f40b637 100644 --- a/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml +++ b/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml @@ -6,6 +6,7 @@ xmlns:vsui="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.15.0" xmlns:vsimaging="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.Imaging" xmlns:vsimagecatalog="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.ImageCatalog" + xmlns:resx="clr-namespace:NewProjectWizard.Properties" DataContext="{Binding RelativeSource={RelativeSource Self}}" Height="350" MinHeight="350" @@ -76,6 +77,7 @@ Margin="24,8,24,24"> + - $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\NewProjectWizard.lcl + $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\NewProjectWizard.lcl + $(LSBuildRoot)\MCP_excludeBaml.lss Microsoft StrongName - - - false + + + false @@ -177,12 +178,12 @@ - - - - Microsoft - StrongName - - + + + + Microsoft + StrongName + + \ No newline at end of file From 236114475e7948983db915e68ff98bedc20e7e98 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 13 Sep 2017 15:40:44 -0700 Subject: [PATCH 15/92] Fix new project wizard to look at major version number not revision number (#33) --- GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index fb1d7d386..daf9ce783 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -158,7 +158,7 @@ public void RunStarted(object automationObject, string versionString; - if (latestSdk.TargetPlatformVersion.Revision >= 10) + if (latestSdk.TargetPlatformVersion.Major >= 10) { List allPlatformsForLatestSdk = ToolLocationHelper.GetPlatformsForSDK("Windows", latestSdk.TargetPlatformVersion) .Select(moniker => TryParsePlatformVersion(moniker)) From b651eafdc077a39aefe526f65914313d414b7c84 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Wed, 13 Sep 2017 16:06:24 -0700 Subject: [PATCH 16/92] Localize option strings --- GoogleTestAdapter/Core/Resources.Designer.cs | 536 ++++++++++++++++++ GoogleTestAdapter/Core/Resources.resx | 208 +++++++ .../Core/Settings/SettingsWrapper.cs | 237 ++++---- .../OptionsPages/GeneralOptionsDialogPage.cs | 9 +- .../GoogleTestExtensionOptionsPage.cs | 8 +- .../OptionsPages/GeneralOptionsDialogPage.cs | 99 ++-- .../GoogleTestOptionsDialogPage.cs | 39 +- .../LocalizedCategoryAttribute.cs | 24 + .../LocalizedDescriptionAttribute.cs | 24 + .../LocalizedDisplayNameAttribute.cs | 24 + .../ParallelizationOptionsDialogPage.cs | 15 +- .../VsPackage.Shared.projitems | 3 + .../VsPackage.TAfGT/Resources/VSPackage.resx | 71 ++- 13 files changed, 1086 insertions(+), 211 deletions(-) create mode 100644 GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedCategoryAttribute.cs create mode 100644 GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDescriptionAttribute.cs create mode 100644 GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDisplayNameAttribute.cs diff --git a/GoogleTestAdapter/Core/Resources.Designer.cs b/GoogleTestAdapter/Core/Resources.Designer.cs index eb49339e7..ddb06da4d 100644 --- a/GoogleTestAdapter/Core/Resources.Designer.cs +++ b/GoogleTestAdapter/Core/Resources.Designer.cs @@ -123,6 +123,51 @@ internal static string BatchReturnedExitCode { } } + /// + /// Looks up a localized string similar to Misc. + /// + internal static string CategoryMiscName { + get { + return ResourceManager.GetString("CategoryMiscName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parallelization. + /// + internal static string CategoryParallelizationName { + get { + return ResourceManager.GetString("CategoryParallelizationName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Runtime behavior. + /// + internal static string CategoryRuntimeBehaviorName { + get { + return ResourceManager.GetString("CategoryRuntimeBehaviorName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test execution. + /// + internal static string CategoryTestExecutionName { + get { + return ResourceManager.GetString("CategoryTestExecutionName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Regexes for trait assignment. + /// + internal static string CategoryTraitsName { + get { + return ResourceManager.GetString("CategoryTraitsName", resourceCulture); + } + } + /// /// Looks up a localized string similar to {0}Collected {1} test result(s) from result XML file {2}. /// @@ -204,6 +249,43 @@ internal static string DeleteTestDir { } } + /// + /// Looks up a localized string similar to {0} - directory containing the test executable. + /// + internal static string DescriptionOfExecutableDirPlaceHolder { + get { + return ResourceManager.GetString("DescriptionOfExecutableDirPlaceHolder", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - path of a directory which can be used by the tests + ///{1} - id of thread executing the current tests. + /// + internal static string DescriptionOfPlaceholdersForBatches { + get { + return ResourceManager.GetString("DescriptionOfPlaceholdersForBatches", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - executable containing the tests. + /// + internal static string DescriptionOfPlaceholdersForExecutables { + get { + return ResourceManager.GetString("DescriptionOfPlaceholdersForExecutables", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - directory of the solution (only available inside VS). + /// + internal static string DescriptionOfSolutionDirPlaceHolder { + get { + return ResourceManager.GetString("DescriptionOfSolutionDirPlaceHolder", resourceCulture); + } + } + /// /// Looks up a localized string similar to {0} does not match custom regex {1}. /// @@ -456,6 +538,460 @@ internal static string NumberOfTestsRunningMessage { } } + /// + /// Looks up a localized string similar to Additional test execution parameters. + /// + internal static string OptionAdditionalTestExecutionParams { + get { + return ResourceManager.GetString("OptionAdditionalTestExecutionParams", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Additional parameters for Google Test executable. Placeholders:. + /// + internal static string OptionAdditionalTestExecutionParamsDescription { + get { + return ResourceManager.GetString("OptionAdditionalTestExecutionParamsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test setup batch file. + /// + internal static string OptionBatchForTestSetup { + get { + return ResourceManager.GetString("OptionBatchForTestSetup", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Batch file to be executed before test execution. If tests are executed in parallel, the batch file will be executed once per thread. Placeholders:. + /// + internal static string OptionBatchForTestSetupDescription { + get { + return ResourceManager.GetString("OptionBatchForTestSetupDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test teardown batch file. + /// + internal static string OptionBatchForTestTeardown { + get { + return ResourceManager.GetString("OptionBatchForTestTeardown", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Batch file to be executed after test execution. If tests are executed in parallel, the batch file will be executed once per thread. Placeholders:. + /// + internal static string OptionBatchForTestTeardownDescription { + get { + return ResourceManager.GetString("OptionBatchForTestTeardownDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Break on failure. + /// + internal static string OptionBreakOnFailure { + get { + return ResourceManager.GetString("OptionBreakOnFailure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If enabled, a potentially attached debugger will catch assertion failures and automatically drop into interactive mode. + ///Google Test option: {0}. + /// + internal static string OptionBreakOnFailureDescription { + get { + return ResourceManager.GetString("OptionBreakOnFailureDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Catch exceptions. + /// + internal static string OptionCatchExceptions { + get { + return ResourceManager.GetString("OptionCatchExceptions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Google Test catches exceptions by default; the according test fails and test execution continues. Choosing false lets exceptions pass through, allowing the debugger to catch them. + ///Google Test option: {0}. + /// + internal static string OptionCatchExceptionsDescription { + get { + return ResourceManager.GetString("OptionCatchExceptionsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Print debug info. + /// + internal static string OptionDebugMode { + get { + return ResourceManager.GetString("OptionDebugMode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If true, debug output will be printed to the test console.. + /// + internal static string OptionDebugModeDescription { + get { + return ResourceManager.GetString("OptionDebugModeDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parallel test execution. + /// + internal static string OptionEnableParallelTestExecution { + get { + return ResourceManager.GetString("OptionEnableParallelTestExecution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parallel test execution is achieved by means of different threads, each of which is assigned a number of tests to be executed. The threads will then sequentially invoke the necessary executables to produce the according test results.. + /// + internal static string OptionEnableParallelTestExecutionDescription { + get { + return ResourceManager.GetString("OptionEnableParallelTestExecutionDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kill processes on cancel. + /// + internal static string OptionKillProcessesOnCancel { + get { + return ResourceManager.GetString("OptionKillProcessesOnCancel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If true, running test executables are actively killed if the test execution is canceled. Note that killing a test process might have all kinds of side effects; in particular, Google Test will not be able to perform any shutdown tasks.. + /// + internal static string OptionKillProcessesOnCancelDescription { + get { + return ResourceManager.GetString("OptionKillProcessesOnCancelDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Maximum number of threads. + /// + internal static string OptionMaxNrOfThreads { + get { + return ResourceManager.GetString("OptionMaxNrOfThreads", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Maximum number of threads to be used for test execution (0: one thread for each processor).. + /// + internal static string OptionMaxNrOfThreadsDescription { + get { + return ResourceManager.GetString("OptionMaxNrOfThreadsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Number of test repetitions. + /// + internal static string OptionNrOfTestRepetitions { + get { + return ResourceManager.GetString("OptionNrOfTestRepetitions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tests will be run for the selected number of times (-1: infinite). + ///Google Test option: {0}. + /// + internal static string OptionNrOfTestRepetitionsDescription { + get { + return ResourceManager.GetString("OptionNrOfTestRepetitionsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parse symbol information. + /// + internal static string OptionParseSymbolInformation { + get { + return ResourceManager.GetString("OptionParseSymbolInformation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parse debug symbol information for test executables to obtain source location information and traits (defined via the macros in GTA_Traits.h). + ///If this is set to false step 2 of traits discovery will be left out and only traits regexes will be effective.. + /// + internal static string OptionParseSymbolInformationDescription { + get { + return ResourceManager.GetString("OptionParseSymbolInformationDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to PATH extension. + /// + internal static string OptionPathExtension { + get { + return ResourceManager.GetString("OptionPathExtension", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If non-empty, the content will be appended to the PATH variable of the test execution and discovery processes. + ///Example: C:\MyBins;{0}\MyOtherBins; + ///Placeholders:. + /// + internal static string OptionPathExtensionDescription { + get { + return ResourceManager.GetString("OptionPathExtensionDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Print test output. + /// + internal static string OptionPrintTestOutput { + get { + return ResourceManager.GetString("OptionPrintTestOutput", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Print the output of the Google Test executable(s) to the Tests Output window.. + /// + internal static string OptionPrintTestOutputDescription { + get { + return ResourceManager.GetString("OptionPrintTestOutputDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Also run disabled tests. + /// + internal static string OptionRunDisabledTests { + get { + return ResourceManager.GetString("OptionRunDisabledTests", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If true, all (selected) tests will be run, even if they have been disabled. + ///Google Test option: {0}. + /// + internal static string OptionRunDisabledTestsDescription { + get { + return ResourceManager.GetString("OptionRunDisabledTestsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Show release notes after update. + /// + internal static string OptionShowReleaseNotes { + get { + return ResourceManager.GetString("OptionShowReleaseNotes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If true, a dialog with release notes is shown after the extension has been updated.. + /// + internal static string OptionShowReleaseNotesDescription { + get { + return ResourceManager.GetString("OptionShowReleaseNotesDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shuffle tests per execution. + /// + internal static string OptionShuffleTests { + get { + return ResourceManager.GetString("OptionShuffleTests", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If true, tests will be executed in random order. Note that a true randomized order is only given when executing all tests in non-parallel fashion. Otherwise, the test excutables will most likely be executed more than once - random order is than restricted to the according executions. + ///Google Test option: {0}. + /// + internal static string OptionShuffleTestsDescription { + get { + return ResourceManager.GetString("OptionShuffleTestsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shuffle tests: Seed. + /// + internal static string OptionShuffleTestsSeed { + get { + return ResourceManager.GetString("OptionShuffleTestsSeed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to 0: Seed is computed from system time, 1<=n<={0}: The given seed is used. See note of option '{1}'. + ///Google Test option: {2}. + /// + internal static string OptionShuffleTestsSeedDescription { + get { + return ResourceManager.GetString("OptionShuffleTestsSeedDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Regex for test discovery. + /// + internal static string OptionTestDiscoveryRegex { + get { + return ResourceManager.GetString("OptionTestDiscoveryRegex", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If non-empty, this regex will be used to discover the Google Test executables containing your tests. + ///Default regex:. + /// + internal static string OptionTestDiscoveryRegexDescription { + get { + return ResourceManager.GetString("OptionTestDiscoveryRegexDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test discovery timeout in s. + /// + internal static string OptionTestDiscoveryTimeoutInSeconds { + get { + return ResourceManager.GetString("OptionTestDiscoveryTimeoutInSeconds", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Number of seconds after which test discovery will be assumed to have failed. 0: Infinite timeout. + /// + internal static string OptionTestDiscoveryTimeoutInSecondsDescription { + get { + return ResourceManager.GetString("OptionTestDiscoveryTimeoutInSecondsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test name separator. + /// + internal static string OptionTestNameSeparator { + get { + return ResourceManager.GetString("OptionTestNameSeparator", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test names produced by Google Test might contain the character '/', which makes VS cut the name after the '/' if the test explorer window is not wide enough. This option's value, if non-empty, will replace the '/' character to avoid that behavior. Note that '\', ' ', '|', and '-' produce the same behavior ('.', '_', ':', and '::' are known to work - there might be more). Note also that traits regexes are evaluated against the tests' display names (and must thus be consistent with this option).. + /// + internal static string OptionTestNameSeparatorDescription { + get { + return ResourceManager.GetString("OptionTestNameSeparatorDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Timestamp output. + /// + internal static string OptionTimestampOutput { + get { + return ResourceManager.GetString("OptionTimestampOutput", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If true, a timestamp is added to test and debug output.. + /// + internal static string OptionTimestampOutputDescription { + get { + return ResourceManager.GetString("OptionTimestampOutputDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Allows to override/add traits for testcases matching a regex. Traits are build up in 3 phases: 1st, traits are assigned to tests according to the 'Traits before' option. 2nd, the tests' traits (defined via the macros in GTA_Traits.h) are added to the tests, overriding traits from phase 1 with new values. 3rd, the 'Traits after' option is evaluated, again in an overriding manner. + ///Syntax: {0} separates the regex from the traits, the trait's name and value are separated by {1} and each pair of regex and trait [rest of string was truncated]";. + /// + internal static string OptionTraitsDescription { + get { + return ResourceManager.GetString("OptionTraitsDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to After test discovery. + /// + internal static string OptionTraitsRegexesAfter { + get { + return ResourceManager.GetString("OptionTraitsRegexesAfter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Before test discovery. + /// + internal static string OptionTraitsRegexesBefore { + get { + return ResourceManager.GetString("OptionTraitsRegexesBefore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Use new test execution framework (experimental). + /// + internal static string OptionUseNewTestExecutionFramework { + get { + return ResourceManager.GetString("OptionUseNewTestExecutionFramework", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Make use of the new test execution framework. Advantages: test crash detection and test output printing also work in debug mode.. + /// + internal static string OptionUseNewTestExecutionFrameworkDescription { + get { + return ResourceManager.GetString("OptionUseNewTestExecutionFrameworkDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Working directory. + /// + internal static string OptionWorkingDir { + get { + return ResourceManager.GetString("OptionWorkingDir", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to If non-empty, will set the working directory for running the tests (default: {0}) + ///Example: {1}\MyTestDir + ///Placeholders:. + /// + internal static string OptionWorkingDirDescription { + get { + return ResourceManager.GetString("OptionWorkingDirDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Output file does not exist, did your tests crash?. /// diff --git a/GoogleTestAdapter/Core/Resources.resx b/GoogleTestAdapter/Core/Resources.resx index dbccca410..b2665cec3 100644 --- a/GoogleTestAdapter/Core/Resources.resx +++ b/GoogleTestAdapter/Core/Resources.resx @@ -145,6 +145,21 @@ {0}{1}: Exited with code {2}, executed command: '{3}' {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} is TestSetupBatchFile or TestTeardownBatchFile string, {2} represents a number (e.g. 5), {3} represents unlocalized file path (e.g c:\test\foo.bat) + + Misc + + + Parallelization + + + Runtime behavior + + + Test execution + + + Regexes for trait assignment + {0}Collected {1} test result(s) from result XML file {2} {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5), {2} represents unlocalized file path (e.g c:\test\results.xml) @@ -181,6 +196,23 @@ {0}Could not delete test directory '{1}': {2} {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents unlocalized directory path (e.g c:\test\dir), {2} represents localized exception message (e.g. "Cannot load file") + + {0} - directory containing the test executable + {0} represents a directory containing a test executable + + + {0} - path of a directory which can be used by the tests +{1} - id of thread executing the current tests + {0} represents a directory. {1} represents a thread id. + + + {0} - executable containing the tests + {0} represents the path of a test executable + + + {0} - directory of the solution (only available inside VS) + {0} represents a directory containing a solution file + {0} does not match custom regex {1} {0} represents an unlocalized name of executable (e.g. cmd.exe) file, {1} represents unlocalized string for regular expression (e.g ".*a.exe") @@ -290,6 +322,182 @@ Running {0} tests... {0} represents a number (e.g. 5) + + Additional test execution parameters + + + Additional parameters for Google Test executable. Placeholders: + Followed by a list of placeholders. + + + Test setup batch file + + + Batch file to be executed before test execution. If tests are executed in parallel, the batch file will be executed once per thread. Placeholders: + Followed by a list of placeholders. + + + Test teardown batch file + + + Batch file to be executed after test execution. If tests are executed in parallel, the batch file will be executed once per thread. Placeholders: + Followed by a list of placeholders. + + + Break on failure + + + If enabled, a potentially attached debugger will catch assertion failures and automatically drop into interactive mode. +Google Test option: {0} + {0} represents a command-line flag. + + + Catch exceptions + + + Google Test catches exceptions by default; the according test fails and test execution continues. Choosing false lets exceptions pass through, allowing the debugger to catch them. +Google Test option: {0} + {0} represents a command-line flag. + + + Print debug info + + + If true, debug output will be printed to the test console. + + + Parallel test execution + + + Parallel test execution is achieved by means of different threads, each of which is assigned a number of tests to be executed. The threads will then sequentially invoke the necessary executables to produce the according test results. + + + Kill processes on cancel + + + If true, running test executables are actively killed if the test execution is canceled. Note that killing a test process might have all kinds of side effects; in particular, Google Test will not be able to perform any shutdown tasks. + + + Maximum number of threads + + + Maximum number of threads to be used for test execution (0: one thread for each processor). + + + Number of test repetitions + + + Tests will be run for the selected number of times (-1: infinite). +Google Test option: {0} + {0} represents a command-line flag. + + + Parse symbol information + + + Parse debug symbol information for test executables to obtain source location information and traits (defined via the macros in GTA_Traits.h). +If this is set to false step 2 of traits discovery will be left out and only traits regexes will be effective. + + + PATH extension + PATH represents an environment variable and should not be localized + + + If non-empty, the content will be appended to the PATH variable of the test execution and discovery processes. +Example: C:\MyBins;{0}\MyOtherBins; +Placeholders: + {0} represents a directory. Followed by a list of placeholders. + + + Print test output + + + Print the output of the Google Test executable(s) to the Tests Output window. + + + Also run disabled tests + + + If true, all (selected) tests will be run, even if they have been disabled. +Google Test option: {0} + {0} represents a command-line flag. + + + Show release notes after update + + + If true, a dialog with release notes is shown after the extension has been updated. + + + Shuffle tests per execution + + + If true, tests will be executed in random order. Note that a true randomized order is only given when executing all tests in non-parallel fashion. Otherwise, the test excutables will most likely be executed more than once - random order is than restricted to the according executions. +Google Test option: {0} + {0} represents a command-line flag. + + + Shuffle tests: Seed + + + 0: Seed is computed from system time, 1<=n<={0}: The given seed is used. See note of option '{1}'. +Google Test option: {2} + {0} is an integer representing the maximum value of a seed. {1} represents the localized name of another option. {2} represents a command-line flag. + + + Regex for test discovery + + + If non-empty, this regex will be used to discover the Google Test executables containing your tests. +Default regex: + Followed by a regular expression + + + Test discovery timeout in s + "s" stands for seconds + + + Number of seconds after which test discovery will be assumed to have failed. 0: Infinite timeout + + + Test name separator + + + Test names produced by Google Test might contain the character '/', which makes VS cut the name after the '/' if the test explorer window is not wide enough. This option's value, if non-empty, will replace the '/' character to avoid that behavior. Note that '\', ' ', '|', and '-' produce the same behavior ('.', '_', ':', and '::' are known to work - there might be more). Note also that traits regexes are evaluated against the tests' display names (and must thus be consistent with this option). + + + Timestamp output + + + If true, a timestamp is added to test and debug output. + + + Allows to override/add traits for testcases matching a regex. Traits are build up in 3 phases: 1st, traits are assigned to tests according to the 'Traits before' option. 2nd, the tests' traits (defined via the macros in GTA_Traits.h) are added to the tests, overriding traits from phase 1 with new values. 3rd, the 'Traits after' option is evaluated, again in an overriding manner. +Syntax: {0} separates the regex from the traits, the trait's name and value are separated by {1} and each pair of regex and trait is separated by {2}. +Example: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + {0} represents a string used to separate a regex from its traits. {1} represents a string used to separate names and values. {2} represents a string used to separate regexs. + + + After test discovery + + + Before test discovery + + + Use new test execution framework (experimental) + + + Make use of the new test execution framework. Advantages: test crash detection and test output printing also work in debug mode. + + + Working directory + + + If non-empty, will set the working directory for running the tests (default: {0}) +Example: {1}\MyTestDir +Placeholders: + {0} represents the default value of the working directory. {1} represents the directory containing the solution file. Followed by a list of placeholders. + Output file does not exist, did your tests crash? diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index 7156a3dc9..3ba7ae5cd 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -55,6 +55,38 @@ public class SettingsWrapper private Thread _currentThread; private IGoogleTestAdapterSettings _currentSettings; + static SettingsWrapper() + { + DescriptionOfPlaceholdersForBatches = + string.Format(Resources.DescriptionOfPlaceholdersForBatches, TestDirPlaceholder, ThreadIdPlaceholder) + + "\n" + DescriptionOfSolutionDirPlaceHolder; + + DescriptionOfPlaceholdersForExecutables = + DescriptionOfPlaceholdersForBatches + "\n" + + string.Format(Resources.DescriptionOfPlaceholdersForExecutables, ExecutablePlaceholder) + + "\n" + DescriptionOfExecutableDirPlaceHolder; + + OptionWorkingDirDescription = + string.Format(Resources.OptionWorkingDirDescription, DescriptionOfExecutableDirPlaceHolder, SolutionDirPlaceholder) + + "\n" + DescriptionOfExecutableDirPlaceHolder + "\n" + DescriptionOfSolutionDirPlaceHolder; + + OptionPathExtensionDescription = + string.Format(Resources.OptionPathExtensionDescription, ExecutableDirPlaceholder) + + "\n" + DescriptionOfExecutableDirPlaceHolder; + + OptionAdditionalTestExecutionParamsDescription = + Resources.OptionAdditionalTestExecutionParamsDescription + + "\n" + DescriptionOfPlaceholdersForExecutables; + + OptionBatchForTestSetupDescription = + Resources.OptionBatchForTestSetupDescription + + "\n" + DescriptionOfPlaceholdersForBatches; + + OptionBatchForTestTeardownDescription = + Resources.OptionBatchForTestTeardownDescription + + "\n" + DescriptionOfPlaceholdersForBatches; + } + public SettingsWrapper(IGoogleTestAdapterSettingsContainer settingsContainer) { _settingsContainer = settingsContainer; @@ -198,15 +230,11 @@ public static string ReplacePlaceholders(string userParameters, string executabl } - public const string CategoryTestExecutionName = "Test execution"; - public const string CategoryTraitsName = "Regexes for trait assignment"; - public const string CategoryRuntimeBehaviorName = "Runtime behavior"; - public const string CategoryParallelizationName = "Parallelization"; - public const string CategoryMiscName = "Misc"; - - public const string PageGeneralName = "General"; - public const string PageParallelizationName = CategoryParallelizationName; - public const string PageGoogleTestName = "Google Test"; + public static string CategoryTestExecutionName = Resources.CategoryTestExecutionName; + public static string CategoryTraitsName = Resources.CategoryTraitsName; + public static string CategoryRuntimeBehaviorName = Resources.CategoryRuntimeBehaviorName; + public static string CategoryParallelizationName = Resources.CategoryParallelizationName; + public static string CategoryMiscName = Resources.CategoryMiscName; public const string SolutionDirPlaceholder = "$(SolutionDir)"; public const string TestDirPlaceholder = "$(TestDir)"; @@ -214,55 +242,46 @@ public static string ReplacePlaceholders(string userParameters, string executabl public const string ExecutablePlaceholder = "$(Executable)"; public const string ExecutableDirPlaceholder = "$(ExecutableDir)"; - private const string DescriptionOfSolutionDirPlaceHolder = - SolutionDirPlaceholder + " - directory of the solution (only available inside VS)"; + private static string DescriptionOfSolutionDirPlaceHolder = + string.Format(Resources.DescriptionOfSolutionDirPlaceHolder, SolutionDirPlaceholder); - private const string DescriptionOfExecutableDirPlaceHolder = - ExecutableDirPlaceholder + " - directory containing the test executable"; + private static string DescriptionOfExecutableDirPlaceHolder = + string.Format(Resources.DescriptionOfExecutableDirPlaceHolder, ExecutableDirPlaceholder); - private const string DescriptionOfPlaceholdersForBatches = - TestDirPlaceholder + " - path of a directory which can be used by the tests\n" + - ThreadIdPlaceholder + " - id of thread executing the current tests\n" + - DescriptionOfSolutionDirPlaceHolder; + // Set in constructor because it depends on other strings + private static string DescriptionOfPlaceholdersForBatches; - private const string DescriptionOfPlaceholdersForExecutables = - DescriptionOfPlaceholdersForBatches + "\n" + - ExecutablePlaceholder + " - executable containing the tests\n" + - DescriptionOfExecutableDirPlaceHolder; + // Set in constructor because it depends on other strings + private static string DescriptionOfPlaceholdersForExecutables; #region GeneralOptionsPage public virtual string DebuggingNamedPipeId => _currentSettings.DebuggingNamedPipeId; - public const string OptionUseNewTestExecutionFramework = "Use new test execution framework (experimental)"; + public static string OptionUseNewTestExecutionFramework = Resources.OptionUseNewTestExecutionFramework; public const bool OptionUseNewTestExecutionFrameworkDefaultValue = true; - public const string OptionUseNewTestExecutionFrameworkDescription = - "Make use of the new test execution framework. Advantages: test crash detection and test output printing also work in debug mode."; + public static string OptionUseNewTestExecutionFrameworkDescription = Resources.OptionUseNewTestExecutionFrameworkDescription; public virtual bool UseNewTestExecutionFramework => _currentSettings.UseNewTestExecutionFramework ?? OptionUseNewTestExecutionFrameworkDefaultValue; - public const string OptionPrintTestOutput = "Print test output"; + public static string OptionPrintTestOutput = Resources.OptionPrintTestOutput; public const bool OptionPrintTestOutputDefaultValue = false; - public const string OptionPrintTestOutputDescription = - "Print the output of the Google Test executable(s) to the Tests Output window."; + public static string OptionPrintTestOutputDescription = Resources.OptionPrintTestOutputDescription; public virtual bool PrintTestOutput => _currentSettings.PrintTestOutput ?? OptionPrintTestOutputDefaultValue; - public const string OptionTestDiscoveryRegex = "Regex for test discovery"; + public static string OptionTestDiscoveryRegex = Resources.OptionTestDiscoveryRegex; public const string OptionTestDiscoveryRegexDefaultValue = ""; - public const string OptionTestDiscoveryRegexDescription = - "If non-empty, this regex will be used to discover the Google Test executables containing your tests.\nDefault regex: " - + TestFinderRegex; + public static string OptionTestDiscoveryRegexDescription = Resources.OptionTestDiscoveryRegexDescription + TestFinderRegex; public virtual string TestDiscoveryRegex => _currentSettings.TestDiscoveryRegex ?? OptionTestDiscoveryRegexDefaultValue; - public const string OptionTestDiscoveryTimeoutInSeconds = "Test discovery timeout in s"; + public static string OptionTestDiscoveryTimeoutInSeconds = Resources.OptionTestDiscoveryTimeoutInSeconds; public const int OptionTestDiscoveryTimeoutInSecondsDefaultValue = 30; - public const string OptionTestDiscoveryTimeoutInSecondsDescription = - "Number of seconds after which test discovery will be assumed to have failed. 0: Infinite timeout"; + public static string OptionTestDiscoveryTimeoutInSecondsDescription = Resources.OptionTestDiscoveryTimeoutInSecondsDescription; public virtual int TestDiscoveryTimeoutInSeconds { get @@ -276,20 +295,18 @@ public virtual int TestDiscoveryTimeoutInSeconds { } - public const string OptionWorkingDir = "Working directory"; + public static string OptionWorkingDir = Resources.OptionWorkingDir; public const string OptionWorkingDirDefaultValue = ExecutableDirPlaceholder; - public const string OptionWorkingDirDescription = - "If non-empty, will set the working directory for running the tests (default: " + DescriptionOfExecutableDirPlaceHolder + ").\nExample: " + SolutionDirPlaceholder + "\\MyTestDir\nPlaceholders:\n" - + DescriptionOfExecutableDirPlaceHolder + "\n" + DescriptionOfSolutionDirPlaceHolder; + // Set in constructor because it depends on other strings + public static string OptionWorkingDirDescription; public virtual string WorkingDir => _currentSettings.WorkingDir ?? OptionWorkingDirDefaultValue; - public const string OptionPathExtension = "PATH extension"; + public static string OptionPathExtension = Resources.OptionPathExtension; public const string OptionPathExtensionDefaultValue = ""; - public const string OptionPathExtensionDescription = - "If non-empty, the content will be appended to the PATH variable of the test execution and discovery processes.\nExample: C:\\MyBins;" + ExecutableDirPlaceholder + "\\MyOtherBins;\nPlaceholders:\n" - + DescriptionOfExecutableDirPlaceHolder; + // Set in constructor because it depends on other strings + public static string OptionPathExtensionDescription; public virtual string PathExtension => _currentSettings.PathExtension ?? OptionPathExtensionDefaultValue; @@ -298,21 +315,13 @@ public virtual int TestDiscoveryTimeoutInSeconds { public const string TraitsRegexesRegexSeparator = "///"; public const string TraitsRegexesTraitSeparator = ","; public const string OptionTraitsRegexesDefaultValue = ""; - public const string OptionTraitsDescription = "Allows to override/add traits for testcases matching a regex. Traits are build up in 3 phases: 1st, traits are assigned to tests according to the 'Traits before' option. 2nd, the tests' traits (defined via the macros in GTA_Traits.h) are added to the tests, overriding traits from phase 1 with new values. 3rd, the 'Traits after' option is evaluated, again in an overriding manner.\nSyntax: " - + TraitsRegexesRegexSeparator + - " separates the regex from the traits, the trait's name and value are separated by " - + TraitsRegexesTraitSeparator + - " and each pair of regex and trait is separated by " - + TraitsRegexesPairSeparator + ".\nExample: " + - @"MySuite\.*" - + TraitsRegexesRegexSeparator + "Type" - + TraitsRegexesTraitSeparator + "Small" - + TraitsRegexesPairSeparator + - @"MySuite2\.*|MySuite3\.*" - + TraitsRegexesRegexSeparator + "Type" - + TraitsRegexesTraitSeparator + "Medium"; - - public const string OptionTraitsRegexesBefore = "Before test discovery"; + public static string OptionTraitsDescription = string.Format( + Resources.OptionTraitsDescription, + TraitsRegexesRegexSeparator, + TraitsRegexesTraitSeparator, + TraitsRegexesPairSeparator); + + public static string OptionTraitsRegexesBefore = Resources.OptionTraitsRegexesBefore; public virtual List TraitsRegexesBefore { @@ -323,7 +332,7 @@ public virtual List TraitsRegexesBefore } } - public const string OptionTraitsRegexesAfter = "After test discovery"; + public static string OptionTraitsRegexesAfter = Resources.OptionTraitsRegexesAfter; public virtual List TraitsRegexesAfter { @@ -335,77 +344,67 @@ public virtual List TraitsRegexesAfter } - public const string OptionTestNameSeparator = "Test name separator"; + public static string OptionTestNameSeparator = Resources.OptionTestNameSeparator; public const string OptionTestNameSeparatorDefaultValue = ""; - public const string OptionTestNameSeparatorDescription = - "Test names produced by Google Test might contain the character '/', which makes VS cut the name after the '/' if the test explorer window is not wide enough. This option's value, if non-empty, will replace the '/' character to avoid that behavior. Note that '\\', ' ', '|', and '-' produce the same behavior ('.', '_', ':', and '::' are known to work - there might be more). Note also that traits regexes are evaluated against the tests' display names (and must thus be consistent with this option)."; + public static string OptionTestNameSeparatorDescription = Resources.OptionTestNameSeparatorDescription; public virtual string TestNameSeparator => _currentSettings.TestNameSeparator ?? OptionTestNameSeparatorDefaultValue; - public const string OptionParseSymbolInformation = "Parse symbol information"; + public static string OptionParseSymbolInformation = Resources.OptionParseSymbolInformation; public const bool OptionParseSymbolInformationDefaultValue = true; - public const string OptionParseSymbolInformationDescription = - "Parse debug symbol information for test executables to obtain source location information and traits (defined via the macros in GTA_Traits.h).\n" + - "If this is set to false step 2 of traits discovery will be left out and only traits regexes will be effective."; + public static string OptionParseSymbolInformationDescription = Resources.OptionParseSymbolInformationDescription; public virtual bool ParseSymbolInformation => _currentSettings.ParseSymbolInformation ?? OptionParseSymbolInformationDefaultValue; - public const string OptionDebugMode = "Print debug info"; + public static string OptionDebugMode = Resources.OptionDebugMode; public const bool OptionDebugModeDefaultValue = false; - public const string OptionDebugModeDescription = - "If true, debug output will be printed to the test console."; + public static string OptionDebugModeDescription = Resources.OptionDebugModeDescription; public virtual bool DebugMode => _currentSettings.DebugMode ?? OptionDebugModeDefaultValue; - public const string OptionTimestampOutput = "Timestamp output"; + public static string OptionTimestampOutput = Resources.OptionTimestampOutput; public const bool OptionTimestampOutputDefaultValue = false; - public const string OptionTimestampOutputDescription = - "If true, a timestamp is added to test and debug output."; + public static string OptionTimestampOutputDescription = Resources.OptionTimestampOutputDescription; public virtual bool TimestampOutput => _currentSettings.TimestampOutput ?? OptionTimestampOutputDefaultValue; - public const string OptionShowReleaseNotes = "Show release notes after update"; + public static string OptionShowReleaseNotes = Resources.OptionShowReleaseNotes; public const bool OptionShowReleaseNotesDefaultValue = true; - public const string OptionShowReleaseNotesDescription = - "If true, a dialog with release notes is shown after the extension has been updated."; + public static string OptionShowReleaseNotesDescription = Resources.OptionShowReleaseNotesDescription; public virtual bool ShowReleaseNotes => _currentSettings.ShowReleaseNotes ?? OptionShowReleaseNotesDefaultValue; - public const string OptionAdditionalTestExecutionParams = "Additional test execution parameters"; + public static string OptionAdditionalTestExecutionParams = Resources.OptionAdditionalTestExecutionParams; public const string OptionAdditionalTestExecutionParamsDefaultValue = ""; - public const string OptionAdditionalTestExecutionParamsDescription = - "Additional parameters for Google Test executable. Placeholders:\n" - + DescriptionOfPlaceholdersForExecutables; + // Set in constructor because it depends on other strings + public static string OptionAdditionalTestExecutionParamsDescription; public virtual string AdditionalTestExecutionParam => _currentSettings.AdditionalTestExecutionParam ?? OptionAdditionalTestExecutionParamsDefaultValue; - public const string OptionBatchForTestSetup = "Test setup batch file"; + public static string OptionBatchForTestSetup = Resources.OptionBatchForTestSetup; public const string OptionBatchForTestSetupDefaultValue = ""; - public const string OptionBatchForTestSetupDescription = - "Batch file to be executed before test execution. If tests are executed in parallel, the batch file will be executed once per thread. Placeholders:\n" - + DescriptionOfPlaceholdersForBatches; + // Set in constructor because it depends on other strings + public static string OptionBatchForTestSetupDescription; public virtual string BatchForTestSetup => _currentSettings.BatchForTestSetup ?? OptionBatchForTestSetupDefaultValue; - public const string OptionBatchForTestTeardown = "Test teardown batch file"; + public static string OptionBatchForTestTeardown = Resources.OptionBatchForTestTeardown; public const string OptionBatchForTestTeardownDefaultValue = ""; - public const string OptionBatchForTestTeardownDescription = - "Batch file to be executed after test execution. If tests are executed in parallel, the batch file will be executed once per thread. Placeholders:\n" - + DescriptionOfPlaceholdersForBatches; + // Set in constructor because it depends on other strings + public static string OptionBatchForTestTeardownDescription; public virtual string BatchForTestTeardown => _currentSettings.BatchForTestTeardown ?? OptionBatchForTestTeardownDefaultValue; - public const string OptionKillProcessesOnCancel = "Kill processes on cancel"; + public static string OptionKillProcessesOnCancel = Resources.OptionKillProcessesOnCancel; public const bool OptionKillProcessesOnCancelDefaultValue = false; - public const string OptionKillProcessesOnCancelDescription = - "If true, running test executables are actively killed if the test execution is canceled. Note that killing a test process might have all kinds of side effects; in particular, Google Test will not be able to perform any shutdown tasks."; + public static string OptionKillProcessesOnCancelDescription = Resources.OptionKillProcessesOnCancelDescription; public virtual bool KillProcessesOnCancel => _currentSettings.KillProcessesOnCancel ?? OptionKillProcessesOnCancelDefaultValue; @@ -413,18 +412,16 @@ public virtual List TraitsRegexesAfter #region ParallelizationOptionsPage - public const string OptionEnableParallelTestExecution = "Parallel test execution"; + public static string OptionEnableParallelTestExecution = Resources.OptionEnableParallelTestExecution; public const bool OptionEnableParallelTestExecutionDefaultValue = false; - public const string OptionEnableParallelTestExecutionDescription = - "Parallel test execution is achieved by means of different threads, each of which is assigned a number of tests to be executed. The threads will then sequentially invoke the necessary executables to produce the according test results."; + public static string OptionEnableParallelTestExecutionDescription = Resources.OptionEnableParallelTestExecutionDescription; public virtual bool ParallelTestExecution => _currentSettings.ParallelTestExecution ?? OptionEnableParallelTestExecutionDefaultValue; - public const string OptionMaxNrOfThreads = "Maximum number of threads"; + public static string OptionMaxNrOfThreads = Resources.OptionMaxNrOfThreads; public const int OptionMaxNrOfThreadsDefaultValue = 0; - public const string OptionMaxNrOfThreadsDescription = - "Maximum number of threads to be used for test execution (0: one thread for each processor)."; + public static string OptionMaxNrOfThreadsDescription = Resources.OptionMaxNrOfThreadsDescription; public virtual int MaxNrOfThreads { @@ -443,38 +440,34 @@ public virtual int MaxNrOfThreads #region GoogleTestOptionsPage - public const string OptionCatchExceptions = "Catch exceptions"; + public static string OptionCatchExceptions = Resources.OptionCatchExceptions; public const bool OptionCatchExceptionsDefaultValue = true; - public const string OptionCatchExceptionsDescription = - "Google Test catches exceptions by default; the according test fails and test execution continues. Choosing false lets exceptions pass through, allowing the debugger to catch them.\n" - + "Google Test option:" + GoogleTestConstants.CatchExceptions; + public static string OptionCatchExceptionsDescription = + string.Format(Resources.OptionCatchExceptionsDescription, GoogleTestConstants.CatchExceptions); public virtual bool CatchExceptions => _currentSettings.CatchExceptions ?? OptionCatchExceptionsDefaultValue; - public const string OptionBreakOnFailure = "Break on failure"; + public static string OptionBreakOnFailure = Resources.OptionBreakOnFailure; public const bool OptionBreakOnFailureDefaultValue = false; - public const string OptionBreakOnFailureDescription = - "If enabled, a potentially attached debugger will catch assertion failures and automatically drop into interactive mode.\n" - + "Google Test option:" + GoogleTestConstants.BreakOnFailure; + public static string OptionBreakOnFailureDescription = + string.Format(Resources.OptionBreakOnFailureDescription, GoogleTestConstants.BreakOnFailure); public virtual bool BreakOnFailure => _currentSettings.BreakOnFailure ?? OptionBreakOnFailureDefaultValue; - public const string OptionRunDisabledTests = "Also run disabled tests"; + public static string OptionRunDisabledTests = Resources.OptionRunDisabledTests; public const bool OptionRunDisabledTestsDefaultValue = false; - public const string OptionRunDisabledTestsDescription = - "If true, all (selected) tests will be run, even if they have been disabled.\n" - + "Google Test option:" + GoogleTestConstants.AlsoRunDisabledTestsOption; + public static string OptionRunDisabledTestsDescription = + string.Format(Resources.OptionRunDisabledTestsDescription, GoogleTestConstants.AlsoRunDisabledTestsOption); public virtual bool RunDisabledTests => _currentSettings.RunDisabledTests ?? OptionRunDisabledTestsDefaultValue; - public const string OptionNrOfTestRepetitions = "Number of test repetitions"; + public static string OptionNrOfTestRepetitions = Resources.OptionNrOfTestRepetitions; public const int OptionNrOfTestRepetitionsDefaultValue = 1; - public const string OptionNrOfTestRepetitionsDescription = - "Tests will be run for the selected number of times (-1: infinite).\n" - + "Google Test option:" + GoogleTestConstants.NrOfRepetitionsOption; + public static string OptionNrOfTestRepetitionsDescription = + string.Format(Resources.OptionNrOfTestRepetitionsDescription, GoogleTestConstants.NrOfRepetitionsOption); public virtual int NrOfTestRepetitions { @@ -490,23 +483,21 @@ public virtual int NrOfTestRepetitions } - public const string OptionShuffleTests = "Shuffle tests per execution"; + public static string OptionShuffleTests = Resources.OptionShuffleTests; public const bool OptionShuffleTestsDefaultValue = false; - public const string OptionShuffleTestsDescription = - "If true, tests will be executed in random order. Note that a true randomized order is only given when executing all tests in non-parallel fashion. Otherwise, the test excutables will most likely be executed more than once - random order is than restricted to the according executions.\n" - + "Google Test option:" + GoogleTestConstants.ShuffleTestsOption; + public static string OptionShuffleTestsDescription = + string.Format(Resources.OptionShuffleTestsDescription, GoogleTestConstants.ShuffleTestsOption); public virtual bool ShuffleTests => _currentSettings.ShuffleTests ?? OptionShuffleTestsDefaultValue; - public const string OptionShuffleTestsSeed = "Shuffle tests: Seed"; + public static string OptionShuffleTestsSeed = Resources.OptionShuffleTestsSeed; public const int OptionShuffleTestsSeedDefaultValue = GoogleTestConstants.ShuffleTestsSeedDefaultValue; - public const string OptionShuffleTestsSeedDescription = "0: Seed is computed from system time, 1<=n<=" - + GoogleTestConstants.ShuffleTestsSeedMaxValueAsString - + ": The given seed is used. See note of option '" - + OptionShuffleTests - + "'.\n" - + "Google Test option:" + GoogleTestConstants.ShuffleTestsSeedOption; + public static string OptionShuffleTestsSeedDescription = string.Format( + Resources.OptionShuffleTestsSeedDescription, + GoogleTestConstants.ShuffleTestsSeedMaxValueAsString, + Resources.OptionShuffleTests, + GoogleTestConstants.ShuffleTestsSeedOption); public virtual int ShuffleTestsSeed { diff --git a/GoogleTestAdapter/VsPackage.GTA/OptionsPages/GeneralOptionsDialogPage.cs b/GoogleTestAdapter/VsPackage.GTA/OptionsPages/GeneralOptionsDialogPage.cs index 38f3e75e3..5edb22d56 100644 --- a/GoogleTestAdapter/VsPackage.GTA/OptionsPages/GeneralOptionsDialogPage.cs +++ b/GoogleTestAdapter/VsPackage.GTA/OptionsPages/GeneralOptionsDialogPage.cs @@ -1,16 +1,15 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.Settings; -using System.ComponentModel; namespace GoogleTestAdapter.VsPackage.OptionsPages { public partial class GeneralOptionsDialogPage : NotifyingDialogPage { - [Category(SettingsWrapper.CategoryMiscName)] - [DisplayName(SettingsWrapper.OptionShowReleaseNotes)] - [Description(SettingsWrapper.OptionShowReleaseNotesDescription)] + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionShowReleaseNotes")] + [LocalizedDescription("OptionShowReleaseNotesDescription")] public bool ShowReleaseNotes { get { return _showReleaseNotes; } diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index c08efb52f..0c40173ee 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.Settings; using GoogleTestAdapter.TestAdapter.Settings; @@ -23,9 +23,9 @@ namespace GoogleTestAdapter.VsPackage [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [Guid(PackageGuidString)] [SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "pkgdef, VS and vsixmanifest are valid VS terms")] - [ProvideOptionPage(typeof(GeneralOptionsDialogPage), OptionsCategoryName, SettingsWrapper.PageGeneralName, 0, 0, true)] - [ProvideOptionPage(typeof(ParallelizationOptionsDialogPage), OptionsCategoryName, SettingsWrapper.PageParallelizationName, 0, 0, true)] - [ProvideOptionPage(typeof(GoogleTestOptionsDialogPage), OptionsCategoryName, SettingsWrapper.PageGoogleTestName, 0, 0, true)] + [ProvideOptionPage(typeof(GeneralOptionsDialogPage), OptionsCategoryName, "General", 110, 501, true)] + [ProvideOptionPage(typeof(ParallelizationOptionsDialogPage), OptionsCategoryName, "Parallelization", 110, 502, true)] + [ProvideOptionPage(typeof(GoogleTestOptionsDialogPage), OptionsCategoryName, "Google Test", 110, 503, true)] [ProvideAutoLoad(UIContextGuids.SolutionExists)] [ProvideMenuResource("Menus.ctmenu", 1)] public sealed partial class GoogleTestExtensionOptionsPage : Package, IGoogleTestExtensionOptionsPage, IDisposable diff --git a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs index e616ff4b4..21e70c619 100644 --- a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs @@ -1,9 +1,8 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.Helpers; using GoogleTestAdapter.Settings; using System; -using System.ComponentModel; using System.Diagnostics.CodeAnalysis; namespace GoogleTestAdapter.VsPackage.OptionsPages @@ -14,9 +13,9 @@ public partial class GeneralOptionsDialogPage : NotifyingDialogPage { #region Test execution - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionTestDiscoveryRegex)] - [Description(SettingsWrapper.OptionTestDiscoveryRegexDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionTestDiscoveryRegex")] + [LocalizedDescription("OptionTestDiscoveryRegexDescription")] public string TestDiscoveryRegex { get { return _testDiscoveryRegex; } @@ -28,9 +27,9 @@ public string TestDiscoveryRegex } private string _testDiscoveryRegex = SettingsWrapper.OptionTestDiscoveryRegexDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionTestDiscoveryTimeoutInSeconds)] - [Description(SettingsWrapper.OptionTestDiscoveryTimeoutInSecondsDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionTestDiscoveryTimeoutInSeconds")] + [LocalizedDescription("OptionTestDiscoveryTimeoutInSecondsDescription")] public int TestDiscoveryTimeoutInSeconds { get { return _testDiscoveryTimeoutInSeconds; } @@ -43,9 +42,9 @@ public int TestDiscoveryTimeoutInSeconds } private int _testDiscoveryTimeoutInSeconds = SettingsWrapper.OptionTestDiscoveryTimeoutInSecondsDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionWorkingDir)] - [Description(SettingsWrapper.OptionWorkingDirDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionWorkingDir")] + [LocalizedDescription("OptionWorkingDirDescription")] public string WorkingDir { get { return _workingDirectory; } @@ -53,9 +52,9 @@ public string WorkingDir } private string _workingDirectory = SettingsWrapper.OptionWorkingDirDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionPathExtension)] - [Description(SettingsWrapper.OptionPathExtensionDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionPathExtension")] + [LocalizedDescription("OptionPathExtensionDescription")] public string PathExtension { get { return _pathExtension; } @@ -63,9 +62,9 @@ public string PathExtension } private string _pathExtension = SettingsWrapper.OptionPathExtensionDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionAdditionalTestExecutionParams)] - [Description(SettingsWrapper.OptionAdditionalTestExecutionParamsDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionAdditionalTestExecutionParams")] + [LocalizedDescription("OptionAdditionalTestExecutionParamsDescription")] public string AdditionalTestExecutionParams { get { return _additionalTestExecutionParams; } @@ -73,9 +72,9 @@ public string AdditionalTestExecutionParams } private string _additionalTestExecutionParams = SettingsWrapper.OptionAdditionalTestExecutionParamsDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionBatchForTestSetup)] - [Description(SettingsWrapper.OptionBatchForTestSetupDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionBatchForTestSetup")] + [LocalizedDescription("OptionBatchForTestSetupDescription")] public string BatchForTestSetup { get { return _batchForTestSetup; } @@ -83,9 +82,9 @@ public string BatchForTestSetup } private string _batchForTestSetup = SettingsWrapper.OptionBatchForTestSetupDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionBatchForTestTeardown)] - [Description(SettingsWrapper.OptionBatchForTestTeardownDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionBatchForTestTeardown")] + [LocalizedDescription("OptionBatchForTestTeardownDescription")] public string BatchForTestTeardown { get { return _batchForTestTeardown; } @@ -93,9 +92,9 @@ public string BatchForTestTeardown } private string _batchForTestTeardown = SettingsWrapper.OptionBatchForTestTeardownDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionKillProcessesOnCancel)] - [Description(SettingsWrapper.OptionKillProcessesOnCancelDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionKillProcessesOnCancel")] + [LocalizedDescription("OptionKillProcessesOnCancelDescription")] public bool KillProcessesOnCancel { get { return _killProcessesOnCancel; } @@ -107,9 +106,9 @@ public bool KillProcessesOnCancel #region Traits - [Category(SettingsWrapper.CategoryTraitsName)] - [DisplayName(SettingsWrapper.OptionTraitsRegexesBefore)] - [Description(SettingsWrapper.OptionTraitsDescription)] + [LocalizedCategory("CategoryTraitsName")] + [LocalizedDisplayName("OptionTraitsRegexesBefore")] + [LocalizedDescription("OptionTraitsDescription")] public string TraitsRegexesBefore { get { return _traitsRegexesBefore; } @@ -121,9 +120,9 @@ public string TraitsRegexesBefore } private string _traitsRegexesBefore = SettingsWrapper.OptionTraitsRegexesDefaultValue; - [Category(SettingsWrapper.CategoryTraitsName)] - [DisplayName(SettingsWrapper.OptionTraitsRegexesAfter)] - [Description(SettingsWrapper.OptionTraitsDescription)] + [LocalizedCategory("CategoryTraitsName")] + [LocalizedDisplayName("OptionTraitsRegexesAfter")] + [LocalizedDescription("OptionTraitsDescription")] public string TraitsRegexesAfter { get { return _traitsRegexesAfter; } @@ -139,9 +138,9 @@ public string TraitsRegexesAfter #region Misc - [Category(SettingsWrapper.CategoryMiscName)] - [DisplayName(SettingsWrapper.OptionUseNewTestExecutionFramework)] - [Description(SettingsWrapper.OptionUseNewTestExecutionFrameworkDescription)] + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionUseNewTestExecutionFramework")] + [LocalizedDescription("OptionUseNewTestExecutionFrameworkDescription")] public bool UseNewTestExecutionFramework2 { get { return _useNewTestExecutionFramework; } @@ -149,9 +148,9 @@ public bool UseNewTestExecutionFramework2 } private bool _useNewTestExecutionFramework = SettingsWrapper.OptionUseNewTestExecutionFrameworkDefaultValue; - [Category(SettingsWrapper.CategoryMiscName)] - [DisplayName(SettingsWrapper.OptionPrintTestOutput)] - [Description(SettingsWrapper.OptionPrintTestOutputDescription)] + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionPrintTestOutput")] + [LocalizedDescription("OptionPrintTestOutputDescription")] public bool PrintTestOutput { get { return _printTestOutput; } @@ -159,9 +158,9 @@ public bool PrintTestOutput } private bool _printTestOutput = SettingsWrapper.OptionPrintTestOutputDefaultValue; - [Category(SettingsWrapper.CategoryMiscName)] - [DisplayName(SettingsWrapper.OptionTestNameSeparator)] - [Description(SettingsWrapper.OptionTestNameSeparatorDescription)] + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionTestNameSeparator")] + [LocalizedDescription("OptionTestNameSeparatorDescription")] public string TestNameSeparator { get { return _testNameSeparator; } @@ -174,9 +173,9 @@ public string TestNameSeparator } private string _testNameSeparator = SettingsWrapper.OptionTestNameSeparatorDefaultValue; - [Category(SettingsWrapper.CategoryMiscName)] - [DisplayName(SettingsWrapper.OptionParseSymbolInformation)] - [Description(SettingsWrapper.OptionParseSymbolInformationDescription)] + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionParseSymbolInformation")] + [LocalizedDescription("OptionParseSymbolInformationDescription")] public bool ParseSymbolInformation { get { return _parseSymbolInformation; } @@ -184,9 +183,9 @@ public bool ParseSymbolInformation } private bool _parseSymbolInformation = SettingsWrapper.OptionParseSymbolInformationDefaultValue; - [Category(SettingsWrapper.CategoryMiscName)] - [DisplayName(SettingsWrapper.OptionDebugMode)] - [Description(SettingsWrapper.OptionDebugModeDescription)] + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionDebugMode")] + [LocalizedDescription("OptionDebugModeDescription")] public bool DebugMode { get { return _debugMode; } @@ -194,9 +193,9 @@ public bool DebugMode } private bool _debugMode = SettingsWrapper.OptionDebugModeDefaultValue; - [Category(SettingsWrapper.CategoryMiscName)] - [DisplayName(SettingsWrapper.OptionTimestampOutput)] - [Description(SettingsWrapper.OptionTimestampOutputDescription)] + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionTimestampOutput")] + [LocalizedDescription("OptionTimestampOutputDescription")] public bool TimestampOutput { get { return _timestampOutput; } diff --git a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GoogleTestOptionsDialogPage.cs b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GoogleTestOptionsDialogPage.cs index a9004ddda..c30486015 100644 --- a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GoogleTestOptionsDialogPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GoogleTestOptionsDialogPage.cs @@ -1,8 +1,7 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.Settings; using System; -using System.ComponentModel; namespace GoogleTestAdapter.VsPackage.OptionsPages { @@ -11,9 +10,9 @@ public class GoogleTestOptionsDialogPage : NotifyingDialogPage { #region Runtime behavior - [Category(SettingsWrapper.CategoryRuntimeBehaviorName)] - [DisplayName(SettingsWrapper.OptionCatchExceptions)] - [Description(SettingsWrapper.OptionCatchExceptionsDescription)] + [LocalizedCategory("CategoryRuntimeBehaviorName")] + [LocalizedDisplayName("OptionCatchExceptions")] + [LocalizedDescription("OptionCatchExceptionsDescription")] public bool CatchExceptions { get { return _catchExceptions; } @@ -21,9 +20,9 @@ public bool CatchExceptions } private bool _catchExceptions = SettingsWrapper.OptionCatchExceptionsDefaultValue; - [Category(SettingsWrapper.CategoryRuntimeBehaviorName)] - [DisplayName(SettingsWrapper.OptionBreakOnFailure)] - [Description(SettingsWrapper.OptionBreakOnFailureDescription)] + [LocalizedCategory("CategoryRuntimeBehaviorName")] + [LocalizedDisplayName("OptionBreakOnFailure")] + [LocalizedDescription("OptionBreakOnFailureDescription")] public bool BreakOnFailure { get { return _breakOnFailure; } @@ -35,9 +34,9 @@ public bool BreakOnFailure #region Test execution - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionRunDisabledTests)] - [Description(SettingsWrapper.OptionRunDisabledTestsDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionRunDisabledTests")] + [LocalizedDescription("OptionRunDisabledTestsDescription")] public bool RunDisabledTests { get { return _runDisabledTests; } @@ -45,9 +44,9 @@ public bool RunDisabledTests } private bool _runDisabledTests = SettingsWrapper.OptionRunDisabledTestsDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionNrOfTestRepetitions)] - [Description(SettingsWrapper.OptionNrOfTestRepetitionsDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionNrOfTestRepetitions")] + [LocalizedDescription("OptionNrOfTestRepetitionsDescription")] public int NrOfTestRepetitions { get { return _nrOfTestRepetitions; } @@ -60,9 +59,9 @@ public int NrOfTestRepetitions } private int _nrOfTestRepetitions = SettingsWrapper.OptionNrOfTestRepetitionsDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionShuffleTests)] - [Description(SettingsWrapper.OptionShuffleTestsDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionShuffleTests")] + [LocalizedDescription("OptionShuffleTestsDescription")] public bool ShuffleTests { get { return _shuffleTests; } @@ -70,9 +69,9 @@ public bool ShuffleTests } private bool _shuffleTests = SettingsWrapper.OptionShuffleTestsDefaultValue; - [Category(SettingsWrapper.CategoryTestExecutionName)] - [DisplayName(SettingsWrapper.OptionShuffleTestsSeed)] - [Description(SettingsWrapper.OptionShuffleTestsSeedDescription)] + [LocalizedCategory("CategoryTestExecutionName")] + [LocalizedDisplayName("OptionShuffleTestsSeed")] + [LocalizedDescription("OptionShuffleTestsSeedDescription")] public int ShuffleTestsSeed { get { return _shuffleTestsSeed; } diff --git a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedCategoryAttribute.cs b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedCategoryAttribute.cs new file mode 100644 index 000000000..0580a3985 --- /dev/null +++ b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedCategoryAttribute.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System.ComponentModel; +using GoogleTestAdapter.Settings; + +namespace GoogleTestAdapter.VsPackage.OptionsPages +{ + class LocalizedCategoryAttribute : CategoryAttribute + { + private readonly string ResourceName; + + public LocalizedCategoryAttribute(string resourceName) + : base() + { + this.ResourceName = resourceName; + } + + protected override string GetLocalizedString(string value) + { + return (string)typeof(SettingsWrapper).GetField(ResourceName).GetValue(null); + } + } +} diff --git a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDescriptionAttribute.cs b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDescriptionAttribute.cs new file mode 100644 index 000000000..efe28cbb6 --- /dev/null +++ b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDescriptionAttribute.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System.ComponentModel; +using GoogleTestAdapter.Settings; + +namespace GoogleTestAdapter.VsPackage.OptionsPages +{ + class LocalizedDescriptionAttribute : DescriptionAttribute + { + private readonly string ResourceName; + + public LocalizedDescriptionAttribute(string resourceName) + : base() + { + this.ResourceName = resourceName; + } + + public override string Description + { + get { return (string)typeof(SettingsWrapper).GetField(ResourceName).GetValue(null); } + } + } +} diff --git a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDisplayNameAttribute.cs b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDisplayNameAttribute.cs new file mode 100644 index 000000000..f800ca9b7 --- /dev/null +++ b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/LocalizedDisplayNameAttribute.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System.ComponentModel; +using GoogleTestAdapter.Settings; + +namespace GoogleTestAdapter.VsPackage.OptionsPages +{ + class LocalizedDisplayNameAttribute : DisplayNameAttribute + { + private readonly string ResourceName; + + public LocalizedDisplayNameAttribute(string resourceName) + : base() + { + this.ResourceName = resourceName; + } + + public override string DisplayName + { + get { return (string)typeof(SettingsWrapper).GetField(ResourceName).GetValue(null); } + } + } +} diff --git a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/ParallelizationOptionsDialogPage.cs b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/ParallelizationOptionsDialogPage.cs index 43b8cee23..c7020a761 100644 --- a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/ParallelizationOptionsDialogPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/ParallelizationOptionsDialogPage.cs @@ -1,17 +1,16 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.Settings; using System; -using System.ComponentModel; namespace GoogleTestAdapter.VsPackage.OptionsPages { public class ParallelizationOptionsDialogPage : NotifyingDialogPage { - [Category(SettingsWrapper.CategoryParallelizationName)] - [DisplayName(SettingsWrapper.OptionEnableParallelTestExecution)] - [Description(SettingsWrapper.OptionEnableParallelTestExecutionDescription)] + [LocalizedCategory("CategoryParallelizationName")] + [LocalizedDisplayName("OptionEnableParallelTestExecution")] + [LocalizedDescription("OptionEnableParallelTestExecutionDescription")] public bool EnableParallelTestExecution { get { return _enableParallelTestExecution; } @@ -19,9 +18,9 @@ public bool EnableParallelTestExecution } private bool _enableParallelTestExecution = SettingsWrapper.OptionEnableParallelTestExecutionDefaultValue; - [Category(SettingsWrapper.CategoryParallelizationName)] - [DisplayName(SettingsWrapper.OptionMaxNrOfThreads)] - [Description(SettingsWrapper.OptionMaxNrOfThreadsDescription)] + [LocalizedCategory("CategoryParallelizationName")] + [LocalizedDisplayName("OptionMaxNrOfThreads")] + [LocalizedDescription("OptionMaxNrOfThreadsDescription")] public int MaxNrOfThreads { get { return _maxNrOfThreads; } diff --git a/GoogleTestAdapter/VsPackage.Shared/VsPackage.Shared.projitems b/GoogleTestAdapter/VsPackage.Shared/VsPackage.Shared.projitems index 1d835066b..ba789921c 100644 --- a/GoogleTestAdapter/VsPackage.Shared/VsPackage.Shared.projitems +++ b/GoogleTestAdapter/VsPackage.Shared/VsPackage.Shared.projitems @@ -25,6 +25,9 @@ Component + + + Component diff --git a/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx b/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx index e9d69787f..b7433bf70 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx +++ b/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx @@ -1,5 +1,64 @@  + @@ -58,14 +117,24 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Test Adapter for Google Test Enables Visual Studio's testing tools with unit tests written for Google Test. The use terms and Third Party Notices are available in the extension installation directory. + ..\..\Resources\Icons\Icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + General + The name of page of options + + + Parallelization + + + Google Test + \ No newline at end of file From 2a2c6289a801981e3ca6eda43511b400922c8362 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Wed, 13 Sep 2017 17:33:05 -0700 Subject: [PATCH 17/92] Additional localization for warning messages --- .../Core/Helpers/TestProcessLauncher.cs | 5 ++-- GoogleTestAdapter/Core/Resources.Designer.cs | 27 ++++++++++++++++++ GoogleTestAdapter/Core/Resources.resx | 11 ++++++++ .../StandardOutputTestResultParser.cs | 4 +-- ...StreamingStandardOutputTestResultParser.cs | 4 +-- .../TestAdapter/Resources.Designer.cs | 28 +++++++++++++++++++ GoogleTestAdapter/TestAdapter/Resources.resx | 12 ++++++++ .../Settings/RunSettingsService.cs | 8 +++--- 8 files changed, 88 insertions(+), 11 deletions(-) diff --git a/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs b/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs index 5869ea951..08ee5d7c8 100644 --- a/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs +++ b/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -83,8 +83,7 @@ private int LaunchProcessWithDebuggerAttached(string workingDirectory, string co _logger.LogInfo(String.Format(Resources.AttachDebuggerMessage, command)); if (printTestOutput) { - _logger.DebugInfo( - "Note that due to restrictions of the VS Unit Testing framework, the test executable's output can not be displayed in the test console when debugging tests!"); + _logger.DebugInfo(Resources.DebuggerAttachedOutputMessage); } _processId = handle.LaunchProcessWithDebuggerAttached(command, workingDirectory, param, _settings.GetPathExtension(command)); Process process = Process.GetProcessById(_processId.Value); diff --git a/GoogleTestAdapter/Core/Resources.Designer.cs b/GoogleTestAdapter/Core/Resources.Designer.cs index ddb06da4d..63857e2cf 100644 --- a/GoogleTestAdapter/Core/Resources.Designer.cs +++ b/GoogleTestAdapter/Core/Resources.Designer.cs @@ -231,6 +231,15 @@ internal static string CrashTest { } } + /// + /// Looks up a localized string similar to !! This test has probably CRASHED !!. + /// + internal static string CrashText { + get { + return ResourceManager.GetString("CrashText", resourceCulture); + } + } + /// /// Looks up a localized string similar to {0}Created {1} test results for tests which were neither found in result XML file nor in console output. /// @@ -240,6 +249,15 @@ internal static string CreatedTestResults { } } + /// + /// Looks up a localized string similar to Note that due to restrictions of the VS Unit Testing framework, the test executable's output can not be displayed in the test console when debugging tests!. + /// + internal static string DebuggerAttachedOutputMessage { + get { + return ResourceManager.GetString("DebuggerAttachedOutputMessage", resourceCulture); + } + } + /// /// Looks up a localized string similar to {0}Could not delete test directory '{1}': {2}. /// @@ -1235,6 +1253,15 @@ internal static string TestDiscoveryCancelled { } } + /// + /// Looks up a localized string similar to Test output:. + /// + internal static string TestOutput { + get { + return ResourceManager.GetString("TestOutput", resourceCulture); + } + } + /// /// Looks up a localized string similar to Test result file {0} could not be parsed (completely) - your test executable has probably crashed. Exception message: {1}. /// diff --git a/GoogleTestAdapter/Core/Resources.resx b/GoogleTestAdapter/Core/Resources.resx index b2665cec3..a2225c404 100644 --- a/GoogleTestAdapter/Core/Resources.resx +++ b/GoogleTestAdapter/Core/Resources.resx @@ -188,10 +188,17 @@ reason is probably a crash of test {0} {0} represents an unlocalized name of test (e.g. foo) + + !! This test has probably CRASHED !! + The exclamation points and all-caps are for emphasis. + {0}Created {1} test results for tests which were neither found in result XML file nor in console output {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents a number (e.g. 5) + + Note that due to restrictions of the VS Unit Testing framework, the test executable's output can not be displayed in the test console when debugging tests! + {0}Could not delete test directory '{1}': {2} {0} is empty or a name of a thread followed by space (e.g. "[T0] "), {1} represents unlocalized directory path (e.g c:\test\dir), {2} represents localized exception message (e.g. "Cannot load file") @@ -603,6 +610,10 @@ Placeholders: Test discovery was cancelled after {0} s for executable {1} {0} represents a number (e.g. 5), {1} represents an unlocalized name of executable (e.g. cmd.exe) file + + Test output: + Followed by the output of a test case + Test result file {0} could not be parsed (completely) - your test executable has probably crashed. Exception message: {1} {0} represents unlocalized file path (e.g c:\test\results.xml), {1} represents localized exception message (e.g. "Cannot load file") diff --git a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs index 15c4b79f8..f92de9a1d 100644 --- a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs +++ b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -16,7 +16,7 @@ public class StandardOutputTestResultParser public const string Failed = "[ FAILED ]"; public const string Passed = "[ OK ]"; - public const string CrashText = "!! This test has probably CRASHED !!"; + public static string CrashText = Resources.CrashText; /// /// 1000 ticks = 0.1ms to make sure VS shows "<1ms" diff --git a/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs b/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs index e4bdc5526..45550a1d5 100644 --- a/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs +++ b/GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -158,7 +158,7 @@ private TestResult CreateTestResult() CrashedTestCase = testCase; string message = StandardOutputTestResultParser.CrashText; - message += errorMsg == "" ? "" : $"\nTest output:\n\n{errorMsg}"; + message += errorMsg == "" ? "" : ("\n" + Resources.TestOutput + $"\n\n{errorMsg}"); TestResult result = StandardOutputTestResultParser.CreateFailedTestResult( testCase, TimeSpan.FromMilliseconds(0), diff --git a/GoogleTestAdapter/TestAdapter/Resources.Designer.cs b/GoogleTestAdapter/TestAdapter/Resources.Designer.cs index 47df7c58f..8499ed310 100644 --- a/GoogleTestAdapter/TestAdapter/Resources.Designer.cs +++ b/GoogleTestAdapter/TestAdapter/Resources.Designer.cs @@ -60,6 +60,16 @@ internal Resources() { } } + /// + /// Looks up a localized string similar to Solution test settings file could not be parsed, check file: {0} + ///Exception: {1}. + /// + internal static string CantParseSettings { + get { + return ResourceManager.GetString("CantParseSettings", resourceCulture); + } + } + /// /// Looks up a localized string similar to Could not attach debugger to process {0}:{1}{2}. /// @@ -195,6 +205,15 @@ internal static string ProcessNotFound { } } + /// + /// Looks up a localized string similar to RunSettingsDocument does not contain a RunSettings node! Canceling settings merging.... + /// + internal static string RunSettingsMissingNode { + get { + return ResourceManager.GetString("RunSettingsMissingNode", resourceCulture); + } + } + /// /// Looks up a localized string similar to Solution settings: {0}. /// @@ -204,6 +223,15 @@ internal static string Settings { } } + /// + /// Looks up a localized string similar to Solution test settings file found at '{0}', but does not contain {1} node. + /// + internal static string SolutionFoundButMissingNode { + get { + return ResourceManager.GetString("SolutionFoundButMissingNode", resourceCulture); + } + } + /// /// Looks up a localized string similar to Test case filter: {0}. /// diff --git a/GoogleTestAdapter/TestAdapter/Resources.resx b/GoogleTestAdapter/TestAdapter/Resources.resx index fe6cb3ab7..09698c624 100644 --- a/GoogleTestAdapter/TestAdapter/Resources.resx +++ b/GoogleTestAdapter/TestAdapter/Resources.resx @@ -238,4 +238,16 @@ Unknown Visual Studio version: {0} {0} is version number (e.g. "15.0") + + Solution test settings file could not be parsed, check file: {0} +Exception: {1} + {0} represents the path to a solution test settings file. {1} represents a textual summary of an exception, likely non-localized. + + + RunSettingsDocument does not contain a RunSettings node! Canceling settings merging... + + + Solution test settings file found at '{0}', but does not contain {1} node + {0} represents the path to a solution test settings file. {1} represents the non-localized name of an XML node. + \ No newline at end of file diff --git a/GoogleTestAdapter/TestAdapter/Settings/RunSettingsService.cs b/GoogleTestAdapter/TestAdapter/Settings/RunSettingsService.cs index 5102fb48a..871ed5679 100644 --- a/GoogleTestAdapter/TestAdapter/Settings/RunSettingsService.cs +++ b/GoogleTestAdapter/TestAdapter/Settings/RunSettingsService.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 9/2017. using EnvDTE; using GoogleTestAdapter.Settings; @@ -37,7 +37,7 @@ public IXPathNavigable AddRunSettings(IXPathNavigable runSettingDocument, Debug.Assert(runSettingsNavigator != null, "userRunSettingsNavigator == null!"); if (!runSettingsNavigator.MoveToChild(Constants.RunSettingsName, "")) { - logger.Log(MessageLevel.Warning, "RunSettingsDocument does not contain a RunSettings node! Canceling settings merging..."); + logger.Log(MessageLevel.Warning, Resources.RunSettingsMissingNode); return runSettingsNavigator; } @@ -72,7 +72,7 @@ public IXPathNavigable AddRunSettings(IXPathNavigable runSettingDocument, } else { - logger.Log(MessageLevel.Warning, $"Solution test settings file found at '{solutionRunSettingsFile}', but does not contain {Constants.RunSettingsName} node"); + logger.Log(MessageLevel.Warning, string.Format(Resources.SolutionFoundButMissingNode, solutionRunSettingsFile, Constants.RunSettingsName)); } } } @@ -80,7 +80,7 @@ public IXPathNavigable AddRunSettings(IXPathNavigable runSettingDocument, catch (Exception e) { logger.Log(MessageLevel.Warning, - $"Solution test settings file could not be parsed, check file: {solutionRunSettingsFile}{Environment.NewLine}Exception: {e}"); + string.Format(Resources.CantParseSettings, solutionRunSettingsFile, e)); } foreach (var projectSettings in settingsContainer.ProjectSettings) From c9c1dcfd7f8069b70c93d00a7a43496030d9f70b Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 14 Sep 2017 20:58:38 +0000 Subject: [PATCH 18/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../CHS/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../CHS/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/CHS/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../CHT/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../CHT/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/CHT/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../CSY/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../CSY/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/CSY/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../DEU/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../DEU/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/DEU/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../ESN/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../ESN/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/ESN/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../FRA/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../FRA/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/FRA/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../ITA/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../ITA/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/ITA/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../JPN/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../JPN/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/JPN/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../KOR/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../KOR/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/KOR/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../PLK/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../PLK/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/PLK/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../PTB/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../PTB/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/PTB/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../RUS/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../RUS/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/RUS/NewProjectWizard.dll.lcl | 174 ++++ .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 111 +++ loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl | 789 ++++++++++++++++++ .../TRK/GoogleTestAdapter.DiaResolver.dll.lcl | 153 ++++ .../TRK/GoogleTestAdapter.TestAdapter.dll.lcl | 357 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 153 ++++ loc/lcl/TRK/NewProjectWizard.dll.lcl | 174 ++++ 78 files changed, 22581 insertions(+) create mode 100644 loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/CHS/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/CHT/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/CSY/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/DEU/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/ESN/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/FRA/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/ITA/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/JPN/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/KOR/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/PLK/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/PTB/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/RUS/NewProjectWizard.dll.lcl create mode 100644 loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl create mode 100644 loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl create mode 100644 loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl create mode 100644 loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl create mode 100644 loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl create mode 100644 loc/lcl/TRK/NewProjectWizard.dll.lcl diff --git a/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..0fcb8162a --- /dev/null +++ b/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..9838b619d --- /dev/null +++ b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..9fd6af8d3 --- /dev/null +++ b/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..40505ca5a --- /dev/null +++ b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..ce451cbd3 --- /dev/null +++ b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHS/NewProjectWizard.dll.lcl b/loc/lcl/CHS/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..e9d37cbce --- /dev/null +++ b/loc/lcl/CHS/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..ce7433481 --- /dev/null +++ b/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..33b45bdb3 --- /dev/null +++ b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..51d3dcb09 --- /dev/null +++ b/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..4e4785aeb --- /dev/null +++ b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..b96610ded --- /dev/null +++ b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CHT/NewProjectWizard.dll.lcl b/loc/lcl/CHT/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..cfc2636c0 --- /dev/null +++ b/loc/lcl/CHT/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..81253e9e9 --- /dev/null +++ b/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..f572cfefe --- /dev/null +++ b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..a7e4c31e3 --- /dev/null +++ b/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..67f2af0b7 --- /dev/null +++ b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..1ef09bd41 --- /dev/null +++ b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/CSY/NewProjectWizard.dll.lcl b/loc/lcl/CSY/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..fd5d13716 --- /dev/null +++ b/loc/lcl/CSY/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..f8fe6e6dd --- /dev/null +++ b/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..b1a969ea3 --- /dev/null +++ b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..9e3defbdc --- /dev/null +++ b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..b19d93ab9 --- /dev/null +++ b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..19cf4731f --- /dev/null +++ b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/DEU/NewProjectWizard.dll.lcl b/loc/lcl/DEU/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..f7afbd98d --- /dev/null +++ b/loc/lcl/DEU/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..efdd44853 --- /dev/null +++ b/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..0c4fdd219 --- /dev/null +++ b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..393d2e0b9 --- /dev/null +++ b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..2e105df40 --- /dev/null +++ b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..0d2a983be --- /dev/null +++ b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ESN/NewProjectWizard.dll.lcl b/loc/lcl/ESN/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..1152c39d9 --- /dev/null +++ b/loc/lcl/ESN/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..8582c59db --- /dev/null +++ b/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..d9a9a5261 --- /dev/null +++ b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..f6f388bb1 --- /dev/null +++ b/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..6aae0c724 --- /dev/null +++ b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..8235ab491 --- /dev/null +++ b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/FRA/NewProjectWizard.dll.lcl b/loc/lcl/FRA/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..ea7ea45f5 --- /dev/null +++ b/loc/lcl/FRA/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..347dd6cd5 --- /dev/null +++ b/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..19a974491 --- /dev/null +++ b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..943ab8a43 --- /dev/null +++ b/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..02ff82338 --- /dev/null +++ b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..79de303f3 --- /dev/null +++ b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/ITA/NewProjectWizard.dll.lcl b/loc/lcl/ITA/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..63e7572bb --- /dev/null +++ b/loc/lcl/ITA/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..5629073be --- /dev/null +++ b/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..bcead714b --- /dev/null +++ b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..c06b89988 --- /dev/null +++ b/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..9bd233d58 --- /dev/null +++ b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..bf5785415 --- /dev/null +++ b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/JPN/NewProjectWizard.dll.lcl b/loc/lcl/JPN/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..770787ba8 --- /dev/null +++ b/loc/lcl/JPN/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..958c3024b --- /dev/null +++ b/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..70c070e29 --- /dev/null +++ b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..62172a34b --- /dev/null +++ b/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..39d5b5c24 --- /dev/null +++ b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..825a1aa45 --- /dev/null +++ b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/KOR/NewProjectWizard.dll.lcl b/loc/lcl/KOR/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..26f333cc4 --- /dev/null +++ b/loc/lcl/KOR/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..7900ee48b --- /dev/null +++ b/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..d05c6ee66 --- /dev/null +++ b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..eb9bb5b63 --- /dev/null +++ b/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..d7e3180a3 --- /dev/null +++ b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..073e0b2f7 --- /dev/null +++ b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PLK/NewProjectWizard.dll.lcl b/loc/lcl/PLK/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..b28e2672c --- /dev/null +++ b/loc/lcl/PLK/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..e70ccc984 --- /dev/null +++ b/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..81a45f904 --- /dev/null +++ b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..7755ec067 --- /dev/null +++ b/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..6094897b1 --- /dev/null +++ b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..d6d1f7cf4 --- /dev/null +++ b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/PTB/NewProjectWizard.dll.lcl b/loc/lcl/PTB/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..1f64e5b70 --- /dev/null +++ b/loc/lcl/PTB/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..27beb0a06 --- /dev/null +++ b/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..07a13f8df --- /dev/null +++ b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..27d01a5c7 --- /dev/null +++ b/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..c4a430915 --- /dev/null +++ b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..47dfd17de --- /dev/null +++ b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/RUS/NewProjectWizard.dll.lcl b/loc/lcl/RUS/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..b30c3a709 --- /dev/null +++ b/loc/lcl/RUS/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl new file mode 100644 index 000000000..c80c297fa --- /dev/null +++ b/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl new file mode 100644 index 000000000..ea09859a2 --- /dev/null +++ b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl new file mode 100644 index 000000000..a30cb87c1 --- /dev/null +++ b/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl new file mode 100644 index 000000000..d4e3eaa21 --- /dev/null +++ b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl new file mode 100644 index 000000000..01cce00e7 --- /dev/null +++ b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/loc/lcl/TRK/NewProjectWizard.dll.lcl b/loc/lcl/TRK/NewProjectWizard.dll.lcl new file mode 100644 index 000000000..fec54f53b --- /dev/null +++ b/loc/lcl/TRK/NewProjectWizard.dll.lcl @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 95636151728b8f4d7ffdc7c74db3f5dd11b21b74 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Thu, 14 Sep 2017 17:17:29 -0700 Subject: [PATCH 19/92] Make resx public so it can be bound through xaml (runtime error) (#37) --- .../NewProjectWizard/NewProjectWizard.csproj | 2 +- .../Properties/Resources.Designer.cs | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj index b6d0f4821..1cee0ec0e 100644 --- a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj +++ b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj @@ -130,7 +130,7 @@ - ResXFileCodeGenerator + PublicResXFileCodeGenerator Resources.Designer.cs Designer diff --git a/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs b/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs index 2fa959039..3cada9c02 100644 --- a/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs +++ b/GoogleTestAdapter/NewProjectWizard/Properties/Resources.Designer.cs @@ -22,7 +22,7 @@ namespace NewProjectWizard.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { + public class Resources { private static global::System.Resources.ResourceManager resourceMan; @@ -36,7 +36,7 @@ internal Resources() { /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { + public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NewProjectWizard.Properties.Resources", typeof(Resources).Assembly); @@ -51,7 +51,7 @@ internal Resources() { /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { + public static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -63,7 +63,7 @@ internal Resources() { /// /// Looks up a localized string similar to Consume Google Test as:. /// - internal static string ConsumeAs { + public static string ConsumeAs { get { return ResourceManager.GetString("ConsumeAs", resourceCulture); } @@ -72,7 +72,7 @@ internal static string ConsumeAs { /// /// Looks up a localized string similar to Dynamic Library (.dll). /// - internal static string DynamicLib { + public static string DynamicLib { get { return ResourceManager.GetString("DynamicLib", resourceCulture); } @@ -81,7 +81,7 @@ internal static string DynamicLib { /// /// Looks up a localized string similar to Link dynamically (Recommended). /// - internal static string LinkDynamic { + public static string LinkDynamic { get { return ResourceManager.GetString("LinkDynamic", resourceCulture); } @@ -90,7 +90,7 @@ internal static string LinkDynamic { /// /// Looks up a localized string similar to Link statically. /// - internal static string LinkStatic { + public static string LinkStatic { get { return ResourceManager.GetString("LinkStatic", resourceCulture); } @@ -99,7 +99,7 @@ internal static string LinkStatic { /// /// Looks up a localized string similar to <No project>. /// - internal static string NoProject { + public static string NoProject { get { return ResourceManager.GetString("NoProject", resourceCulture); } @@ -108,7 +108,7 @@ internal static string NoProject { /// /// Looks up a localized string similar to Cannot find NuGet.VisualStudio.Interop.dll. Wizard cannot continue.. /// - internal static string NuGetInteropNotFound { + public static string NuGetInteropNotFound { get { return ResourceManager.GetString("NuGetInteropNotFound", resourceCulture); } @@ -117,7 +117,7 @@ internal static string NuGetInteropNotFound { /// /// Looks up a localized string similar to C++ runtime libraries:. /// - internal static string RuntimeLibs { + public static string RuntimeLibs { get { return ResourceManager.GetString("RuntimeLibs", resourceCulture); } @@ -126,7 +126,7 @@ internal static string RuntimeLibs { /// /// Looks up a localized string similar to Select project to test (Optional):. /// - internal static string SelectProject { + public static string SelectProject { get { return ResourceManager.GetString("SelectProject", resourceCulture); } @@ -135,7 +135,7 @@ internal static string SelectProject { /// /// Looks up a localized string similar to Static Library (.lib). /// - internal static string StaticLib { + public static string StaticLib { get { return ResourceManager.GetString("StaticLib", resourceCulture); } @@ -144,7 +144,7 @@ internal static string StaticLib { /// /// Looks up a localized string similar to Windows SDK not found.. /// - internal static string WinSDKNotFound { + public static string WinSDKNotFound { get { return ResourceManager.GetString("WinSDKNotFound", resourceCulture); } @@ -153,7 +153,7 @@ internal static string WinSDKNotFound { /// /// Looks up a localized string similar to Test Project Configuration. /// - internal static string WizardTitle { + public static string WizardTitle { get { return ResourceManager.GetString("WizardTitle", resourceCulture); } From bbcf6131a5805c97a47c4fd4a602b35ea4e1cbf0 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Fri, 15 Sep 2017 10:22:55 -0700 Subject: [PATCH 20/92] Address PR comments --- GoogleTestAdapter/Core/Resources.Designer.cs | 18 +- GoogleTestAdapter/Core/Resources.resx | 18 +- .../Core/Settings/SettingsWrapper.cs | 170 ++++++++---------- .../StandardOutputTestResultParser.cs | 2 +- .../VsPackage.TAfGT/Resources/VSPackage.resx | 2 + 5 files changed, 94 insertions(+), 116 deletions(-) diff --git a/GoogleTestAdapter/Core/Resources.Designer.cs b/GoogleTestAdapter/Core/Resources.Designer.cs index 63857e2cf..60fb8945e 100644 --- a/GoogleTestAdapter/Core/Resources.Designer.cs +++ b/GoogleTestAdapter/Core/Resources.Designer.cs @@ -278,7 +278,7 @@ internal static string DescriptionOfExecutableDirPlaceHolder { /// /// Looks up a localized string similar to {0} - path of a directory which can be used by the tests - ///{1} - id of thread executing the current tests. + ///{1} - id of the thread executing the current tests. /// internal static string DescriptionOfPlaceholdersForBatches { get { @@ -296,7 +296,7 @@ internal static string DescriptionOfPlaceholdersForExecutables { } /// - /// Looks up a localized string similar to {0} - directory of the solution (only available inside VS). + /// Looks up a localized string similar to {0} - directory of the solution (only available inside Visual Studio). /// internal static string DescriptionOfSolutionDirPlaceHolder { get { @@ -685,7 +685,7 @@ internal static string OptionEnableParallelTestExecutionDescription { } /// - /// Looks up a localized string similar to Kill processes on cancel. + /// Looks up a localized string similar to Terminate processes on cancel. /// internal static string OptionKillProcessesOnCancel { get { @@ -694,7 +694,7 @@ internal static string OptionKillProcessesOnCancel { } /// - /// Looks up a localized string similar to If true, running test executables are actively killed if the test execution is canceled. Note that killing a test process might have all kinds of side effects; in particular, Google Test will not be able to perform any shutdown tasks.. + /// Looks up a localized string similar to If true, running test executables are actively terminated if the test execution is canceled. Note that terminating a test process might have all kinds of side effects; in particular, Google Test will not be able to perform any shutdown tasks.. /// internal static string OptionKillProcessesOnCancelDescription { get { @@ -750,7 +750,7 @@ internal static string OptionParseSymbolInformation { /// /// Looks up a localized string similar to Parse debug symbol information for test executables to obtain source location information and traits (defined via the macros in GTA_Traits.h). - ///If this is set to false step 2 of traits discovery will be left out and only traits regexes will be effective.. + ///If this is set to false, step 2 of traits discovery will be left out and only traits regexes will be effective.. /// internal static string OptionParseSymbolInformationDescription { get { @@ -882,7 +882,7 @@ internal static string OptionTestDiscoveryRegex { /// /// Looks up a localized string similar to If non-empty, this regex will be used to discover the Google Test executables containing your tests. - ///Default regex:. + ///Default regex: {0}. /// internal static string OptionTestDiscoveryRegexDescription { get { @@ -918,7 +918,7 @@ internal static string OptionTestNameSeparator { } /// - /// Looks up a localized string similar to Test names produced by Google Test might contain the character '/', which makes VS cut the name after the '/' if the test explorer window is not wide enough. This option's value, if non-empty, will replace the '/' character to avoid that behavior. Note that '\', ' ', '|', and '-' produce the same behavior ('.', '_', ':', and '::' are known to work - there might be more). Note also that traits regexes are evaluated against the tests' display names (and must thus be consistent with this option).. + /// Looks up a localized string similar to Test names produced by Google Test might contain the character '/', which makes Visual Studio cut the name after the '/' if the Test Explorer window is not wide enough. This option's value, if non-empty, will replace the '/' character to avoid that behavior. Note that '\', ' ', '|', and '-' produce the same behavior ('.', '_', ':', and '::' are known to work). Note also that traits regexes are evaluated against the tests' display names (and must thus be consistent with this option).. /// internal static string OptionTestNameSeparatorDescription { get { @@ -945,8 +945,8 @@ internal static string OptionTimestampOutputDescription { } /// - /// Looks up a localized string similar to Allows to override/add traits for testcases matching a regex. Traits are build up in 3 phases: 1st, traits are assigned to tests according to the 'Traits before' option. 2nd, the tests' traits (defined via the macros in GTA_Traits.h) are added to the tests, overriding traits from phase 1 with new values. 3rd, the 'Traits after' option is evaluated, again in an overriding manner. - ///Syntax: {0} separates the regex from the traits, the trait's name and value are separated by {1} and each pair of regex and trait [rest of string was truncated]";. + /// Looks up a localized string similar to Allows to override/add traits for testcases matching a regex. Traits are build up in 3 phases. First, traits are assigned to tests according to the 'Traits before' option. Next, the tests' traits (defined via the macros in GTA_Traits.h) are added to the tests, overriding traits from phase 1 with new values. Finally, the 'Traits after' option is evaluated, again in an overriding manner. + ///Syntax: {0} separates the regex from the traits, the trait's name and value are separated by {1} and each pair of regex an [rest of string was truncated]";. /// internal static string OptionTraitsDescription { get { diff --git a/GoogleTestAdapter/Core/Resources.resx b/GoogleTestAdapter/Core/Resources.resx index a2225c404..0b6703a94 100644 --- a/GoogleTestAdapter/Core/Resources.resx +++ b/GoogleTestAdapter/Core/Resources.resx @@ -209,7 +209,7 @@ {0} - path of a directory which can be used by the tests -{1} - id of thread executing the current tests +{1} - id of the thread executing the current tests {0} represents a directory. {1} represents a thread id. @@ -217,7 +217,7 @@ {0} represents the path of a test executable - {0} - directory of the solution (only available inside VS) + {0} - directory of the solution (only available inside Visual Studio) {0} represents a directory containing a solution file @@ -379,10 +379,10 @@ Google Test option: {0} Parallel test execution is achieved by means of different threads, each of which is assigned a number of tests to be executed. The threads will then sequentially invoke the necessary executables to produce the according test results. - Kill processes on cancel + Terminate processes on cancel - If true, running test executables are actively killed if the test execution is canceled. Note that killing a test process might have all kinds of side effects; in particular, Google Test will not be able to perform any shutdown tasks. + If true, running test executables are actively terminated if the test execution is canceled. Note that terminating a test process might have all kinds of side effects; in particular, Google Test will not be able to perform any shutdown tasks. Maximum number of threads @@ -403,7 +403,7 @@ Google Test option: {0} Parse debug symbol information for test executables to obtain source location information and traits (defined via the macros in GTA_Traits.h). -If this is set to false step 2 of traits discovery will be left out and only traits regexes will be effective. +If this is set to false, step 2 of traits discovery will be left out and only traits regexes will be effective. PATH extension @@ -456,8 +456,8 @@ Google Test option: {2} If non-empty, this regex will be used to discover the Google Test executables containing your tests. -Default regex: - Followed by a regular expression +Default regex: {0} + {0} represents a regular expression Test discovery timeout in s @@ -470,7 +470,7 @@ Default regex: Test name separator - Test names produced by Google Test might contain the character '/', which makes VS cut the name after the '/' if the test explorer window is not wide enough. This option's value, if non-empty, will replace the '/' character to avoid that behavior. Note that '\', ' ', '|', and '-' produce the same behavior ('.', '_', ':', and '::' are known to work - there might be more). Note also that traits regexes are evaluated against the tests' display names (and must thus be consistent with this option). + Test names produced by Google Test might contain the character '/', which makes Visual Studio cut the name after the '/' if the Test Explorer window is not wide enough. This option's value, if non-empty, will replace the '/' character to avoid that behavior. Note that '\', ' ', '|', and '-' produce the same behavior ('.', '_', ':', and '::' are known to work). Note also that traits regexes are evaluated against the tests' display names (and must thus be consistent with this option). Timestamp output @@ -479,7 +479,7 @@ Default regex: If true, a timestamp is added to test and debug output. - Allows to override/add traits for testcases matching a regex. Traits are build up in 3 phases: 1st, traits are assigned to tests according to the 'Traits before' option. 2nd, the tests' traits (defined via the macros in GTA_Traits.h) are added to the tests, overriding traits from phase 1 with new values. 3rd, the 'Traits after' option is evaluated, again in an overriding manner. + Allows to override/add traits for testcases matching a regex. Traits are build up in 3 phases. First, traits are assigned to tests according to the 'Traits before' option. Next, the tests' traits (defined via the macros in GTA_Traits.h) are added to the tests, overriding traits from phase 1 with new values. Finally, the 'Traits after' option is evaluated, again in an overriding manner. Syntax: {0} separates the regex from the traits, the trait's name and value are separated by {1} and each pair of regex and trait is separated by {2}. Example: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium {0} represents a string used to separate a regex from its traits. {1} represents a string used to separate names and values. {2} represents a string used to separate regexs. diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index 3ba7ae5cd..680dc54b9 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -55,38 +55,6 @@ public class SettingsWrapper private Thread _currentThread; private IGoogleTestAdapterSettings _currentSettings; - static SettingsWrapper() - { - DescriptionOfPlaceholdersForBatches = - string.Format(Resources.DescriptionOfPlaceholdersForBatches, TestDirPlaceholder, ThreadIdPlaceholder) + - "\n" + DescriptionOfSolutionDirPlaceHolder; - - DescriptionOfPlaceholdersForExecutables = - DescriptionOfPlaceholdersForBatches + "\n" + - string.Format(Resources.DescriptionOfPlaceholdersForExecutables, ExecutablePlaceholder) + - "\n" + DescriptionOfExecutableDirPlaceHolder; - - OptionWorkingDirDescription = - string.Format(Resources.OptionWorkingDirDescription, DescriptionOfExecutableDirPlaceHolder, SolutionDirPlaceholder) + - "\n" + DescriptionOfExecutableDirPlaceHolder + "\n" + DescriptionOfSolutionDirPlaceHolder; - - OptionPathExtensionDescription = - string.Format(Resources.OptionPathExtensionDescription, ExecutableDirPlaceholder) + - "\n" + DescriptionOfExecutableDirPlaceHolder; - - OptionAdditionalTestExecutionParamsDescription = - Resources.OptionAdditionalTestExecutionParamsDescription + - "\n" + DescriptionOfPlaceholdersForExecutables; - - OptionBatchForTestSetupDescription = - Resources.OptionBatchForTestSetupDescription + - "\n" + DescriptionOfPlaceholdersForBatches; - - OptionBatchForTestTeardownDescription = - Resources.OptionBatchForTestTeardownDescription + - "\n" + DescriptionOfPlaceholdersForBatches; - } - public SettingsWrapper(IGoogleTestAdapterSettingsContainer settingsContainer) { _settingsContainer = settingsContainer; @@ -230,11 +198,11 @@ public static string ReplacePlaceholders(string userParameters, string executabl } - public static string CategoryTestExecutionName = Resources.CategoryTestExecutionName; - public static string CategoryTraitsName = Resources.CategoryTraitsName; - public static string CategoryRuntimeBehaviorName = Resources.CategoryRuntimeBehaviorName; - public static string CategoryParallelizationName = Resources.CategoryParallelizationName; - public static string CategoryMiscName = Resources.CategoryMiscName; + public static readonly string CategoryTestExecutionName = Resources.CategoryTestExecutionName; + public static readonly string CategoryTraitsName = Resources.CategoryTraitsName; + public static readonly string CategoryRuntimeBehaviorName = Resources.CategoryRuntimeBehaviorName; + public static readonly string CategoryParallelizationName = Resources.CategoryParallelizationName; + public static readonly string CategoryMiscName = Resources.CategoryMiscName; public const string SolutionDirPlaceholder = "$(SolutionDir)"; public const string TestDirPlaceholder = "$(TestDir)"; @@ -242,46 +210,49 @@ public static string ReplacePlaceholders(string userParameters, string executabl public const string ExecutablePlaceholder = "$(Executable)"; public const string ExecutableDirPlaceholder = "$(ExecutableDir)"; - private static string DescriptionOfSolutionDirPlaceHolder = + private static readonly string DescriptionOfSolutionDirPlaceHolder = string.Format(Resources.DescriptionOfSolutionDirPlaceHolder, SolutionDirPlaceholder); - private static string DescriptionOfExecutableDirPlaceHolder = + private static readonly string DescriptionOfExecutableDirPlaceHolder = string.Format(Resources.DescriptionOfExecutableDirPlaceHolder, ExecutableDirPlaceholder); - // Set in constructor because it depends on other strings - private static string DescriptionOfPlaceholdersForBatches; + private static readonly string DescriptionOfPlaceholdersForBatches = + string.Format(Resources.DescriptionOfPlaceholdersForBatches, TestDirPlaceholder, ThreadIdPlaceholder) + + "\n" + DescriptionOfSolutionDirPlaceHolder; - // Set in constructor because it depends on other strings - private static string DescriptionOfPlaceholdersForExecutables; + private static readonly string DescriptionOfPlaceholdersForExecutables = + DescriptionOfPlaceholdersForBatches + "\n" + + string.Format(Resources.DescriptionOfPlaceholdersForExecutables, ExecutablePlaceholder) + + "\n" + DescriptionOfExecutableDirPlaceHolder; #region GeneralOptionsPage public virtual string DebuggingNamedPipeId => _currentSettings.DebuggingNamedPipeId; - public static string OptionUseNewTestExecutionFramework = Resources.OptionUseNewTestExecutionFramework; + public static readonly string OptionUseNewTestExecutionFramework = Resources.OptionUseNewTestExecutionFramework; public const bool OptionUseNewTestExecutionFrameworkDefaultValue = true; - public static string OptionUseNewTestExecutionFrameworkDescription = Resources.OptionUseNewTestExecutionFrameworkDescription; + public static readonly string OptionUseNewTestExecutionFrameworkDescription = Resources.OptionUseNewTestExecutionFrameworkDescription; public virtual bool UseNewTestExecutionFramework => _currentSettings.UseNewTestExecutionFramework ?? OptionUseNewTestExecutionFrameworkDefaultValue; - public static string OptionPrintTestOutput = Resources.OptionPrintTestOutput; + public static readonly string OptionPrintTestOutput = Resources.OptionPrintTestOutput; public const bool OptionPrintTestOutputDefaultValue = false; - public static string OptionPrintTestOutputDescription = Resources.OptionPrintTestOutputDescription; + public static readonly string OptionPrintTestOutputDescription = Resources.OptionPrintTestOutputDescription; public virtual bool PrintTestOutput => _currentSettings.PrintTestOutput ?? OptionPrintTestOutputDefaultValue; - public static string OptionTestDiscoveryRegex = Resources.OptionTestDiscoveryRegex; + public static readonly string OptionTestDiscoveryRegex = Resources.OptionTestDiscoveryRegex; public const string OptionTestDiscoveryRegexDefaultValue = ""; - public static string OptionTestDiscoveryRegexDescription = Resources.OptionTestDiscoveryRegexDescription + TestFinderRegex; + public static readonly string OptionTestDiscoveryRegexDescription = string.Format(Resources.OptionTestDiscoveryRegexDescription, TestFinderRegex); public virtual string TestDiscoveryRegex => _currentSettings.TestDiscoveryRegex ?? OptionTestDiscoveryRegexDefaultValue; - public static string OptionTestDiscoveryTimeoutInSeconds = Resources.OptionTestDiscoveryTimeoutInSeconds; + public static readonly string OptionTestDiscoveryTimeoutInSeconds = Resources.OptionTestDiscoveryTimeoutInSeconds; public const int OptionTestDiscoveryTimeoutInSecondsDefaultValue = 30; - public static string OptionTestDiscoveryTimeoutInSecondsDescription = Resources.OptionTestDiscoveryTimeoutInSecondsDescription; + public static readonly string OptionTestDiscoveryTimeoutInSecondsDescription = Resources.OptionTestDiscoveryTimeoutInSecondsDescription; public virtual int TestDiscoveryTimeoutInSeconds { get @@ -295,18 +266,20 @@ public virtual int TestDiscoveryTimeoutInSeconds { } - public static string OptionWorkingDir = Resources.OptionWorkingDir; + public static readonly string OptionWorkingDir = Resources.OptionWorkingDir; public const string OptionWorkingDirDefaultValue = ExecutableDirPlaceholder; - // Set in constructor because it depends on other strings - public static string OptionWorkingDirDescription; + public static readonly string OptionWorkingDirDescription = + string.Format(Resources.OptionWorkingDirDescription, DescriptionOfExecutableDirPlaceHolder, SolutionDirPlaceholder) + + "\n" + DescriptionOfExecutableDirPlaceHolder + "\n" + DescriptionOfSolutionDirPlaceHolder; public virtual string WorkingDir => _currentSettings.WorkingDir ?? OptionWorkingDirDefaultValue; - public static string OptionPathExtension = Resources.OptionPathExtension; + public static readonly string OptionPathExtension = Resources.OptionPathExtension; public const string OptionPathExtensionDefaultValue = ""; - // Set in constructor because it depends on other strings - public static string OptionPathExtensionDescription; + public static readonly string OptionPathExtensionDescription = + string.Format(Resources.OptionPathExtensionDescription, ExecutableDirPlaceholder) + + "\n" + DescriptionOfExecutableDirPlaceHolder; public virtual string PathExtension => _currentSettings.PathExtension ?? OptionPathExtensionDefaultValue; @@ -315,13 +288,13 @@ public virtual int TestDiscoveryTimeoutInSeconds { public const string TraitsRegexesRegexSeparator = "///"; public const string TraitsRegexesTraitSeparator = ","; public const string OptionTraitsRegexesDefaultValue = ""; - public static string OptionTraitsDescription = string.Format( + public static readonly string OptionTraitsDescription = string.Format( Resources.OptionTraitsDescription, TraitsRegexesRegexSeparator, TraitsRegexesTraitSeparator, TraitsRegexesPairSeparator); - public static string OptionTraitsRegexesBefore = Resources.OptionTraitsRegexesBefore; + public static readonly string OptionTraitsRegexesBefore = Resources.OptionTraitsRegexesBefore; public virtual List TraitsRegexesBefore { @@ -332,7 +305,7 @@ public virtual List TraitsRegexesBefore } } - public static string OptionTraitsRegexesAfter = Resources.OptionTraitsRegexesAfter; + public static readonly string OptionTraitsRegexesAfter = Resources.OptionTraitsRegexesAfter; public virtual List TraitsRegexesAfter { @@ -344,67 +317,70 @@ public virtual List TraitsRegexesAfter } - public static string OptionTestNameSeparator = Resources.OptionTestNameSeparator; + public static readonly string OptionTestNameSeparator = Resources.OptionTestNameSeparator; public const string OptionTestNameSeparatorDefaultValue = ""; - public static string OptionTestNameSeparatorDescription = Resources.OptionTestNameSeparatorDescription; + public static readonly string OptionTestNameSeparatorDescription = Resources.OptionTestNameSeparatorDescription; public virtual string TestNameSeparator => _currentSettings.TestNameSeparator ?? OptionTestNameSeparatorDefaultValue; - public static string OptionParseSymbolInformation = Resources.OptionParseSymbolInformation; + public static readonly string OptionParseSymbolInformation = Resources.OptionParseSymbolInformation; public const bool OptionParseSymbolInformationDefaultValue = true; - public static string OptionParseSymbolInformationDescription = Resources.OptionParseSymbolInformationDescription; + public static readonly string OptionParseSymbolInformationDescription = Resources.OptionParseSymbolInformationDescription; public virtual bool ParseSymbolInformation => _currentSettings.ParseSymbolInformation ?? OptionParseSymbolInformationDefaultValue; - public static string OptionDebugMode = Resources.OptionDebugMode; + public static readonly string OptionDebugMode = Resources.OptionDebugMode; public const bool OptionDebugModeDefaultValue = false; - public static string OptionDebugModeDescription = Resources.OptionDebugModeDescription; + public static readonly string OptionDebugModeDescription = Resources.OptionDebugModeDescription; public virtual bool DebugMode => _currentSettings.DebugMode ?? OptionDebugModeDefaultValue; - public static string OptionTimestampOutput = Resources.OptionTimestampOutput; + public static readonly string OptionTimestampOutput = Resources.OptionTimestampOutput; public const bool OptionTimestampOutputDefaultValue = false; - public static string OptionTimestampOutputDescription = Resources.OptionTimestampOutputDescription; + public static readonly string OptionTimestampOutputDescription = Resources.OptionTimestampOutputDescription; public virtual bool TimestampOutput => _currentSettings.TimestampOutput ?? OptionTimestampOutputDefaultValue; - public static string OptionShowReleaseNotes = Resources.OptionShowReleaseNotes; + public static readonly string OptionShowReleaseNotes = Resources.OptionShowReleaseNotes; public const bool OptionShowReleaseNotesDefaultValue = true; - public static string OptionShowReleaseNotesDescription = Resources.OptionShowReleaseNotesDescription; + public static readonly string OptionShowReleaseNotesDescription = Resources.OptionShowReleaseNotesDescription; public virtual bool ShowReleaseNotes => _currentSettings.ShowReleaseNotes ?? OptionShowReleaseNotesDefaultValue; - public static string OptionAdditionalTestExecutionParams = Resources.OptionAdditionalTestExecutionParams; + public static readonly string OptionAdditionalTestExecutionParams = Resources.OptionAdditionalTestExecutionParams; public const string OptionAdditionalTestExecutionParamsDefaultValue = ""; - // Set in constructor because it depends on other strings - public static string OptionAdditionalTestExecutionParamsDescription; + public static readonly string OptionAdditionalTestExecutionParamsDescription = + Resources.OptionAdditionalTestExecutionParamsDescription + + "\n" + DescriptionOfPlaceholdersForExecutables; public virtual string AdditionalTestExecutionParam => _currentSettings.AdditionalTestExecutionParam ?? OptionAdditionalTestExecutionParamsDefaultValue; - public static string OptionBatchForTestSetup = Resources.OptionBatchForTestSetup; + public static readonly string OptionBatchForTestSetup = Resources.OptionBatchForTestSetup; public const string OptionBatchForTestSetupDefaultValue = ""; - // Set in constructor because it depends on other strings - public static string OptionBatchForTestSetupDescription; + public static readonly string OptionBatchForTestSetupDescription = + Resources.OptionBatchForTestSetupDescription + + "\n" + DescriptionOfPlaceholdersForBatches; public virtual string BatchForTestSetup => _currentSettings.BatchForTestSetup ?? OptionBatchForTestSetupDefaultValue; - public static string OptionBatchForTestTeardown = Resources.OptionBatchForTestTeardown; + public static readonly string OptionBatchForTestTeardown = Resources.OptionBatchForTestTeardown; public const string OptionBatchForTestTeardownDefaultValue = ""; - // Set in constructor because it depends on other strings - public static string OptionBatchForTestTeardownDescription; + public static readonly string OptionBatchForTestTeardownDescription = + Resources.OptionBatchForTestTeardownDescription + + "\n" + DescriptionOfPlaceholdersForBatches; public virtual string BatchForTestTeardown => _currentSettings.BatchForTestTeardown ?? OptionBatchForTestTeardownDefaultValue; - public static string OptionKillProcessesOnCancel = Resources.OptionKillProcessesOnCancel; + public static readonly string OptionKillProcessesOnCancel = Resources.OptionKillProcessesOnCancel; public const bool OptionKillProcessesOnCancelDefaultValue = false; - public static string OptionKillProcessesOnCancelDescription = Resources.OptionKillProcessesOnCancelDescription; + public static readonly string OptionKillProcessesOnCancelDescription = Resources.OptionKillProcessesOnCancelDescription; public virtual bool KillProcessesOnCancel => _currentSettings.KillProcessesOnCancel ?? OptionKillProcessesOnCancelDefaultValue; @@ -412,16 +388,16 @@ public virtual List TraitsRegexesAfter #region ParallelizationOptionsPage - public static string OptionEnableParallelTestExecution = Resources.OptionEnableParallelTestExecution; + public static readonly string OptionEnableParallelTestExecution = Resources.OptionEnableParallelTestExecution; public const bool OptionEnableParallelTestExecutionDefaultValue = false; - public static string OptionEnableParallelTestExecutionDescription = Resources.OptionEnableParallelTestExecutionDescription; + public static readonly string OptionEnableParallelTestExecutionDescription = Resources.OptionEnableParallelTestExecutionDescription; public virtual bool ParallelTestExecution => _currentSettings.ParallelTestExecution ?? OptionEnableParallelTestExecutionDefaultValue; - public static string OptionMaxNrOfThreads = Resources.OptionMaxNrOfThreads; + public static readonly string OptionMaxNrOfThreads = Resources.OptionMaxNrOfThreads; public const int OptionMaxNrOfThreadsDefaultValue = 0; - public static string OptionMaxNrOfThreadsDescription = Resources.OptionMaxNrOfThreadsDescription; + public static readonly string OptionMaxNrOfThreadsDescription = Resources.OptionMaxNrOfThreadsDescription; public virtual int MaxNrOfThreads { @@ -440,33 +416,33 @@ public virtual int MaxNrOfThreads #region GoogleTestOptionsPage - public static string OptionCatchExceptions = Resources.OptionCatchExceptions; + public static readonly string OptionCatchExceptions = Resources.OptionCatchExceptions; public const bool OptionCatchExceptionsDefaultValue = true; - public static string OptionCatchExceptionsDescription = + public static readonly string OptionCatchExceptionsDescription = string.Format(Resources.OptionCatchExceptionsDescription, GoogleTestConstants.CatchExceptions); public virtual bool CatchExceptions => _currentSettings.CatchExceptions ?? OptionCatchExceptionsDefaultValue; - public static string OptionBreakOnFailure = Resources.OptionBreakOnFailure; + public static readonly string OptionBreakOnFailure = Resources.OptionBreakOnFailure; public const bool OptionBreakOnFailureDefaultValue = false; - public static string OptionBreakOnFailureDescription = + public static readonly string OptionBreakOnFailureDescription = string.Format(Resources.OptionBreakOnFailureDescription, GoogleTestConstants.BreakOnFailure); public virtual bool BreakOnFailure => _currentSettings.BreakOnFailure ?? OptionBreakOnFailureDefaultValue; - public static string OptionRunDisabledTests = Resources.OptionRunDisabledTests; + public static readonly string OptionRunDisabledTests = Resources.OptionRunDisabledTests; public const bool OptionRunDisabledTestsDefaultValue = false; - public static string OptionRunDisabledTestsDescription = + public static readonly string OptionRunDisabledTestsDescription = string.Format(Resources.OptionRunDisabledTestsDescription, GoogleTestConstants.AlsoRunDisabledTestsOption); public virtual bool RunDisabledTests => _currentSettings.RunDisabledTests ?? OptionRunDisabledTestsDefaultValue; - public static string OptionNrOfTestRepetitions = Resources.OptionNrOfTestRepetitions; + public static readonly string OptionNrOfTestRepetitions = Resources.OptionNrOfTestRepetitions; public const int OptionNrOfTestRepetitionsDefaultValue = 1; - public static string OptionNrOfTestRepetitionsDescription = + public static readonly string OptionNrOfTestRepetitionsDescription = string.Format(Resources.OptionNrOfTestRepetitionsDescription, GoogleTestConstants.NrOfRepetitionsOption); public virtual int NrOfTestRepetitions @@ -483,17 +459,17 @@ public virtual int NrOfTestRepetitions } - public static string OptionShuffleTests = Resources.OptionShuffleTests; + public static readonly string OptionShuffleTests = Resources.OptionShuffleTests; public const bool OptionShuffleTestsDefaultValue = false; - public static string OptionShuffleTestsDescription = + public static readonly string OptionShuffleTestsDescription = string.Format(Resources.OptionShuffleTestsDescription, GoogleTestConstants.ShuffleTestsOption); public virtual bool ShuffleTests => _currentSettings.ShuffleTests ?? OptionShuffleTestsDefaultValue; - public static string OptionShuffleTestsSeed = Resources.OptionShuffleTestsSeed; + public static readonly string OptionShuffleTestsSeed = Resources.OptionShuffleTestsSeed; public const int OptionShuffleTestsSeedDefaultValue = GoogleTestConstants.ShuffleTestsSeedDefaultValue; - public static string OptionShuffleTestsSeedDescription = string.Format( + public static readonly string OptionShuffleTestsSeedDescription = string.Format( Resources.OptionShuffleTestsSeedDescription, GoogleTestConstants.ShuffleTestsSeedMaxValueAsString, Resources.OptionShuffleTests, diff --git a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs index f92de9a1d..1e32e64bf 100644 --- a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs +++ b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs @@ -16,7 +16,7 @@ public class StandardOutputTestResultParser public const string Failed = "[ FAILED ]"; public const string Passed = "[ OK ]"; - public static string CrashText = Resources.CrashText; + public static readonly string CrashText = Resources.CrashText; /// /// 1000 ticks = 0.1ms to make sure VS shows "<1ms" diff --git a/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx b/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx index b7433bf70..c8e034b88 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx +++ b/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx @@ -133,8 +133,10 @@ Parallelization + The name of page of options Google Test + The name of page of options \ No newline at end of file From 1f8ee414c6ceb5d1c1de030c4ab930a1c6f94907 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Fri, 15 Sep 2017 13:28:26 -0700 Subject: [PATCH 21/92] Clarify Google Test localization --- GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx b/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx index c8e034b88..d35349059 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx +++ b/GoogleTestAdapter/VsPackage.TAfGT/Resources/VSPackage.resx @@ -137,6 +137,6 @@ Google Test - The name of page of options + The name of page of options. Google Test is the name of a library and should not be localized. \ No newline at end of file From 9b1f7affe576a1c26e5a07ecd7674461c0afd8e6 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Fri, 15 Sep 2017 16:33:39 -0700 Subject: [PATCH 22/92] Address FxCop globalization rules --- .../Core/TestCases/NewTestCaseResolver.cs | 4 +-- .../TestCases/StreamingListTestsParser.cs | 8 +++-- .../Core/TestCases/TestCaseFactory.cs | 4 +-- .../Core/TestResults/ErrorMessageParser.cs | 6 ++-- .../StandardOutputTestResultParser.cs | 6 ++-- GoogleTestAdapter/DiaResolver/DiaFactory.cs | 2 +- .../NewProjectWizard/WizardImplementation.cs | 23 ++++++++++++-- .../TestAdapter/Framework/VsVersion.cs | 11 +++---- Tools/GoogleTestAdapter.FxCop | 30 +++++++++++++++++++ 9 files changed, 73 insertions(+), 21 deletions(-) diff --git a/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs b/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs index 9a937c24a..8d61e29b5 100644 --- a/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs +++ b/GoogleTestAdapter/Core/TestCases/NewTestCaseResolver.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -106,7 +106,7 @@ public static List GetTraits(SourceFileLocation nativeSymbol, IEnumerable // ReSharper disable once LoopCanBeConvertedToQuery foreach (SourceFileLocation nativeTraitSymbol in allTraitSymbols) { - if (nativeSymbol.Symbol.StartsWith(nativeTraitSymbol.TestClassSignature)) + if (nativeSymbol.Symbol.StartsWith(nativeTraitSymbol.TestClassSignature, StringComparison.Ordinal)) { int lengthOfSerializedTrait = nativeTraitSymbol.Symbol.Length - nativeTraitSymbol.IndexOfSerializedTrait - TraitAppendix.Length; string serializedTrait = nativeTraitSymbol.Symbol.Substring(nativeTraitSymbol.IndexOfSerializedTrait, lengthOfSerializedTrait); diff --git a/GoogleTestAdapter/Core/TestCases/StreamingListTestsParser.cs b/GoogleTestAdapter/Core/TestCases/StreamingListTestsParser.cs index 2acaa0c4d..53ece6249 100644 --- a/GoogleTestAdapter/Core/TestCases/StreamingListTestsParser.cs +++ b/GoogleTestAdapter/Core/TestCases/StreamingListTestsParser.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 9/2017. + +using System; using System.Text.RegularExpressions; namespace GoogleTestAdapter.TestCases @@ -30,7 +32,7 @@ public class TestCaseDescriptorCreatedEventArgs : EventArgs public void ReportLine(string line) { string trimmedLine = line.Trim('.', '\n', '\r'); - if (trimmedLine.StartsWith(" ")) + if (trimmedLine.StartsWith(" ", StringComparison.Ordinal)) { TestCaseDescriptor descriptor = CreateDescriptor(_currentSuite, trimmedLine.Substring(2)); TestCaseDescriptorCreated?.Invoke(this, @@ -86,7 +88,7 @@ private static string GetDisplayName(string fullyQalifiedName, string typeParam, private static string GetEnclosedTypeParam(string typeParam) { - if (typeParam.EndsWith(">")) + if (typeParam.EndsWith(">", StringComparison.Ordinal)) { typeParam += " "; } diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs index ca2fdc79a..18d09a126 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -249,7 +249,7 @@ private TestCase CreateTestCase(TestCaseDescriptor descriptor, TestCaseLocation internal static string StripTestSymbolNamespace(string symbol) { var suffixLength = GoogleTestConstants.TestBodySignature.Length; - var namespaceEnd = symbol.LastIndexOf("::", symbol.Length - suffixLength - 1); + var namespaceEnd = symbol.LastIndexOf("::", symbol.Length - suffixLength - 1, StringComparison.Ordinal); var nameStart = namespaceEnd >= 0 ? namespaceEnd + 2 : 0; return symbol.Substring(nameStart); } diff --git a/GoogleTestAdapter/Core/TestResults/ErrorMessageParser.cs b/GoogleTestAdapter/Core/TestResults/ErrorMessageParser.cs index d981355aa..fd4f6664d 100644 --- a/GoogleTestAdapter/Core/TestResults/ErrorMessageParser.cs +++ b/GoogleTestAdapter/Core/TestResults/ErrorMessageParser.cs @@ -1,4 +1,6 @@ -using System; +// This file has been modified by Microsoft on 9/2017. + +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -68,7 +70,7 @@ public void Parse() if (_outputBeforeFirstFailure != "") { - if (!_outputBeforeFirstFailure.EndsWith("\n") && !_outputBeforeFirstFailure.EndsWith("\r\n")) + if (!_outputBeforeFirstFailure.EndsWith("\n", StringComparison.Ordinal) && !_outputBeforeFirstFailure.EndsWith("\r\n", StringComparison.Ordinal)) _outputBeforeFirstFailure += "\n"; ErrorMessage = $"{_outputBeforeFirstFailure}{ErrorMessage}"; } diff --git a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs index 1e32e64bf..c3d4af2a6 100644 --- a/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs +++ b/GoogleTestAdapter/Core/TestResults/StandardOutputTestResultParser.cs @@ -201,17 +201,17 @@ public static TestCase FindTestcase(string qualifiedTestname, IList te public static bool IsRunLine(string line) { - return line.StartsWith(Run); + return line.StartsWith(Run, StringComparison.Ordinal); } public static bool IsPassedLine(string line) { - return line.StartsWith(Passed); + return line.StartsWith(Passed, StringComparison.Ordinal); } public static bool IsFailedLine(string line) { - return line.StartsWith(Failed); + return line.StartsWith(Failed, StringComparison.Ordinal); } public static string RemovePrefix(string line) diff --git a/GoogleTestAdapter/DiaResolver/DiaFactory.cs b/GoogleTestAdapter/DiaResolver/DiaFactory.cs index 4e8753e8f..4f4f453d2 100644 --- a/GoogleTestAdapter/DiaResolver/DiaFactory.cs +++ b/GoogleTestAdapter/DiaResolver/DiaFactory.cs @@ -48,7 +48,7 @@ private static bool Is32Bit() return IntPtr.Size == 4; } - [DllImport("Kernel32.dll")] + [DllImport("Kernel32.dll", CharSet = CharSet.Unicode)] private static extern IntPtr LoadLibrary(string path); [DllImport(DiaDll, ExactSpelling = true, PreserveSig = false)] diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index daf9ce783..4857a8966 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -8,6 +8,7 @@ using NewProjectWizard.Properties; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Reflection; @@ -129,7 +130,7 @@ public void RunStarted(object automationObject, } catch (Exception) { - MessageBox.Show(Resources.NuGetInteropNotFound); + ShowRtlAwareMessageBox(Resources.NuGetInteropNotFound); throw; } @@ -152,7 +153,7 @@ public void RunStarted(object automationObject, if (latestSdk == null) { - MessageBox.Show(Resources.WinSDKNotFound); + ShowRtlAwareMessageBox(Resources.WinSDKNotFound); throw new WizardCancelledException(Resources.WinSDKNotFound); } @@ -168,7 +169,7 @@ public void RunStarted(object automationObject, if (latestPlatform == null) { - MessageBox.Show(Resources.WinSDKNotFound); + ShowRtlAwareMessageBox(Resources.WinSDKNotFound); throw new WizardCancelledException(Resources.WinSDKNotFound); } @@ -199,6 +200,22 @@ public bool ShouldAddProjectItem(string filePath) } #endregion + private void ShowRtlAwareMessageBox(string text) + { + MessageBoxOptions options = 0; + if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft) + { + options |= MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign; + } + MessageBox.Show( + text, + Resources.WizardTitle, + MessageBoxButtons.OK, + MessageBoxIcon.Error, + MessageBoxDefaultButton.Button1, + options); + } + private static IEnumerable GetAllPlatformSdks() { IEnumerable platformSdks = ToolLocationHelper.GetTargetPlatformSdks(); diff --git a/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs b/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs index 2a2b6b7d5..f0085cea1 100644 --- a/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs +++ b/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Diagnostics; @@ -8,6 +8,7 @@ using GoogleTestAdapter.Common; using GoogleTestAdapter.TestAdapter.Helpers; using Process = System.Diagnostics.Process; +using System.Globalization; namespace GoogleTestAdapter.TestAdapter.Framework { @@ -97,12 +98,12 @@ private static VsVersion GetVsVersionFromProcess() private static Process FindVsOrVsTestConsoleExe() { var process = Process.GetCurrentProcess(); - string executable = Path.GetFileName(process.MainModule.FileName).Trim().ToLower(); - while (executable != null && executable != "devenv.exe" && executable != "vstest.console.exe") + string executable = Path.GetFileName(process.MainModule.FileName).Trim().ToUpperInvariant(); + while (executable != null && executable != "DEVENV.EXE" && executable != "VSTEST.CONSOLE.EXE") { process = ParentProcessUtils.GetParentProcess(process.Id); - executable = process != null - ? Path.GetFileName(process.MainModule.FileName).Trim().ToLower() + executable = process != null + ? Path.GetFileName(process.MainModule.FileName).Trim().ToUpperInvariant() : null; } return process; diff --git a/Tools/GoogleTestAdapter.FxCop b/Tools/GoogleTestAdapter.FxCop index cccecd78f..97c9d99f8 100644 --- a/Tools/GoogleTestAdapter.FxCop +++ b/Tools/GoogleTestAdapter.FxCop @@ -44,6 +44,7 @@ + @@ -323,6 +324,15 @@ + + + + + NewProjectWizard.Properties + + + + @@ -337,6 +347,15 @@ + + + + + XamlGeneratedNamespace + + + + @@ -345,9 +364,20 @@ + + Replace the generic method {0} called in {1} with a generic method that does not require JIT compilation at runtime for precompiled assemblies. If this is not an precompiled assembly this message should be suppressed or this rule should be disabled. + Redefine the types in namespace '{0}' in the Microsoft or System namespace. Public types that will never ship externally can be defined in the MS namespace. Consider disabling this rule when analyzing code that does not ship externally. + + Because the behavior of {0} could vary based on the current user's locale settings, replace this call in {1} with a call to {2}. If the result of {2} will be based on input from the user, specify {3} as the 'IFormatProvider' parameter. Otherwise, if the result will based on input stored and accessed by software, such as when it is loaded from disk or from a database, specify {4}. + Because the behavior of {0} could vary based on the current user's locale settings, replace this call in {1} with a call to {2}. If the result of {2} will be displayed to the user, specify {3} as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify {4}. + + + To reduce security risk, marshal field {0} as Unicode, by setting StructLayout.CharSet on {1} to CharSet.Unicode, or by explicitly marshaling the field as UnmanagedType.LPWStr. If you need to marshal this string as ANSI or system-dependent, specify MarshalAs explicitly, use the BestFitMapping attribute to turn best-fit mapping off, and for added security, to turn ThrowOnUnmappableChar on. + To reduce security risk, marshal parameter {0} as Unicode, by setting DllImport.CharSet to CharSet.Unicode, or by explicitly marshaling the parameter as UnmanagedType.LPWStr. If you need to marshal this string as ANSI or system-dependent, set BestFitMapping=false; for added security, also set ThrowOnUnmappableChar=true. + From 427476fabcdcd569b1c6a43480a3d51c01eecb92 Mon Sep 17 00:00:00 2001 From: csigs Date: Tue, 19 Sep 2017 19:38:13 +0000 Subject: [PATCH 23/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../CHS/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../CHS/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/CHS/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../CHT/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../CHT/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/CHT/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../CSY/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../CSY/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/CSY/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../DEU/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../DEU/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/DEU/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../ESN/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../ESN/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/ESN/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../FRA/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../FRA/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/FRA/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../ITA/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../ITA/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/ITA/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../JPN/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../JPN/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/JPN/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../KOR/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../KOR/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/KOR/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../PLK/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../PLK/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/PLK/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../PTB/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../PTB/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/PTB/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../RUS/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../RUS/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/RUS/NewProjectWizard.dll.lcl | 14 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 14 +- loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl | 221 +----------------- .../TRK/GoogleTestAdapter.DiaResolver.dll.lcl | 23 +- .../TRK/GoogleTestAdapter.TestAdapter.dll.lcl | 83 +------ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/TRK/NewProjectWizard.dll.lcl | 14 +- 78 files changed, 585 insertions(+), 4173 deletions(-) diff --git a/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl index 0fcb8162a..6dcae528e 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl index 9838b619d..b973d6518 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl index 9fd6af8d3..0c61072aa 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl index 40505ca5a..0c211218b 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index ce451cbd3..8a35fbd87 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/CHS/NewProjectWizard.dll.lcl b/loc/lcl/CHS/NewProjectWizard.dll.lcl index e9d37cbce..9f3801dee 100644 --- a/loc/lcl/CHS/NewProjectWizard.dll.lcl +++ b/loc/lcl/CHS/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl index ce7433481..2907dccd5 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl index 33b45bdb3..f78c1da06 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl index 51d3dcb09..a77b99c00 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl index 4e4785aeb..1fbde33f2 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index b96610ded..3c4e6c58a 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/CHT/NewProjectWizard.dll.lcl b/loc/lcl/CHT/NewProjectWizard.dll.lcl index cfc2636c0..1563c6b84 100644 --- a/loc/lcl/CHT/NewProjectWizard.dll.lcl +++ b/loc/lcl/CHT/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl index 81253e9e9..0f8498501 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl index f572cfefe..d2146bb5a 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl index a7e4c31e3..0a8d85b66 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl index 67f2af0b7..ff7e9151a 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 1ef09bd41..143aedbc0 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/CSY/NewProjectWizard.dll.lcl b/loc/lcl/CSY/NewProjectWizard.dll.lcl index fd5d13716..c6c7dfd27 100644 --- a/loc/lcl/CSY/NewProjectWizard.dll.lcl +++ b/loc/lcl/CSY/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl index f8fe6e6dd..dab2b02b1 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl index b1a969ea3..7c70c01da 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl index 9e3defbdc..a46e3b9e9 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl index b19d93ab9..fecabe619 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 19cf4731f..8fe9ba1e9 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/DEU/NewProjectWizard.dll.lcl b/loc/lcl/DEU/NewProjectWizard.dll.lcl index f7afbd98d..f39e03c76 100644 --- a/loc/lcl/DEU/NewProjectWizard.dll.lcl +++ b/loc/lcl/DEU/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl index efdd44853..3a92d12d7 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl index 0c4fdd219..d2db0e186 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl index 393d2e0b9..aff21034d 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl index 2e105df40..9b3ba8524 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 0d2a983be..c4737a32e 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/ESN/NewProjectWizard.dll.lcl b/loc/lcl/ESN/NewProjectWizard.dll.lcl index 1152c39d9..6318bb7fa 100644 --- a/loc/lcl/ESN/NewProjectWizard.dll.lcl +++ b/loc/lcl/ESN/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl index 8582c59db..645acec6e 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl index d9a9a5261..f3b85624e 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl index f6f388bb1..1350faf8a 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl index 6aae0c724..a666d8fda 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 8235ab491..5ecba8865 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/FRA/NewProjectWizard.dll.lcl b/loc/lcl/FRA/NewProjectWizard.dll.lcl index ea7ea45f5..02788a7fe 100644 --- a/loc/lcl/FRA/NewProjectWizard.dll.lcl +++ b/loc/lcl/FRA/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl index 347dd6cd5..7da733e3e 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl index 19a974491..036e4afc3 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl index 943ab8a43..d31a232ae 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl index 02ff82338..b08392889 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 79de303f3..a1d6c026a 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/ITA/NewProjectWizard.dll.lcl b/loc/lcl/ITA/NewProjectWizard.dll.lcl index 63e7572bb..ace36a7c7 100644 --- a/loc/lcl/ITA/NewProjectWizard.dll.lcl +++ b/loc/lcl/ITA/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl index 5629073be..19060d1a3 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl index bcead714b..48cd9e045 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl index c06b89988..d7ae8a33a 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl index 9bd233d58..35045a66f 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index bf5785415..5d934e14d 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/JPN/NewProjectWizard.dll.lcl b/loc/lcl/JPN/NewProjectWizard.dll.lcl index 770787ba8..2d6170092 100644 --- a/loc/lcl/JPN/NewProjectWizard.dll.lcl +++ b/loc/lcl/JPN/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl index 958c3024b..dff88d85a 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl index 70c070e29..c3718ed7e 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl index 62172a34b..da93d446b 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl index 39d5b5c24..bab845c56 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 825a1aa45..2fec7d2ca 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/KOR/NewProjectWizard.dll.lcl b/loc/lcl/KOR/NewProjectWizard.dll.lcl index 26f333cc4..1a67e3eb4 100644 --- a/loc/lcl/KOR/NewProjectWizard.dll.lcl +++ b/loc/lcl/KOR/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl index 7900ee48b..22c7af543 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl index d05c6ee66..0143051c3 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl index eb9bb5b63..bab3d5663 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl index d7e3180a3..c55aad293 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 073e0b2f7..4cbda9b65 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/PLK/NewProjectWizard.dll.lcl b/loc/lcl/PLK/NewProjectWizard.dll.lcl index b28e2672c..352e2b4d2 100644 --- a/loc/lcl/PLK/NewProjectWizard.dll.lcl +++ b/loc/lcl/PLK/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl index e70ccc984..e8fef4f9d 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl index 81a45f904..fb7513db0 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl index 7755ec067..1eab2ba8d 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl index 6094897b1..6cd2e8da2 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index d6d1f7cf4..aa471ee4f 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/PTB/NewProjectWizard.dll.lcl b/loc/lcl/PTB/NewProjectWizard.dll.lcl index 1f64e5b70..4c2f9d429 100644 --- a/loc/lcl/PTB/NewProjectWizard.dll.lcl +++ b/loc/lcl/PTB/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl index 27beb0a06..26faed5ef 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl index 07a13f8df..146509a2f 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl index 27d01a5c7..a4e197c6b 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl index c4a430915..4d5cbc453 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 47dfd17de..af3b419c9 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/RUS/NewProjectWizard.dll.lcl b/loc/lcl/RUS/NewProjectWizard.dll.lcl index b30c3a709..e711f6b65 100644 --- a/loc/lcl/RUS/NewProjectWizard.dll.lcl +++ b/loc/lcl/RUS/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl index c80c297fa..bde6da008 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -1,4 +1,4 @@ - + @@ -33,9 +33,6 @@ - - - @@ -59,12 +56,18 @@ + + + + + + @@ -95,6 +98,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl index ea09859a2..7b066d720 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,342 +15,228 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -363,9 +249,6 @@ - - - @@ -384,18 +267,12 @@ - - - - - - @@ -408,18 +285,12 @@ - - - >>>>>>>>>>>>>> Output of command '{1} {2}']]> - - - @@ -432,108 +303,72 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -546,99 +381,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -657,27 +459,18 @@ - - - - - - - - - @@ -696,18 +489,12 @@ - - - - - - @@ -740,6 +527,9 @@ + + + @@ -770,6 +560,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl index a30cb87c1..5b876ce99 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,9 +15,6 @@ - - - @@ -30,36 +27,24 @@ - - - - - - - - - - - - @@ -107,6 +92,9 @@ + + + @@ -137,6 +125,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl index d4e3eaa21..12fe34b1f 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -1,4 +1,4 @@ - + @@ -15,27 +15,18 @@ - - - - - - - - - @@ -48,72 +39,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -138,18 +105,12 @@ - - - - - - @@ -162,18 +123,12 @@ - - - - - - @@ -192,90 +147,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -308,6 +233,9 @@ + + + @@ -338,6 +266,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 01cce00e7..dcc7b254f 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -1,4 +1,4 @@ - + @@ -101,12 +101,18 @@ + + + + + + @@ -137,6 +143,9 @@ + + + diff --git a/loc/lcl/TRK/NewProjectWizard.dll.lcl b/loc/lcl/TRK/NewProjectWizard.dll.lcl index fec54f53b..9d8e64d13 100644 --- a/loc/lcl/TRK/NewProjectWizard.dll.lcl +++ b/loc/lcl/TRK/NewProjectWizard.dll.lcl @@ -1,4 +1,4 @@ - + @@ -18,9 +18,6 @@ - - - @@ -45,9 +42,6 @@ ]]> - - - @@ -60,9 +54,6 @@ - - - @@ -122,6 +113,9 @@ + + + From 5950ef8e631319f9e42d9db1262170b1bc2bfa16 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 20 Sep 2017 19:38:04 +0000 Subject: [PATCH 24/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 ++ loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl | 252 ++++++++++++++++++ .../PTB/GoogleTestAdapter.DiaResolver.dll.lcl | 36 +++ .../PTB/GoogleTestAdapter.TestAdapter.dll.lcl | 105 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 27 ++ loc/lcl/PTB/NewProjectWizard.dll.lcl | 46 +++- 6 files changed, 482 insertions(+), 2 deletions(-) diff --git a/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl index e8fef4f9d..db041b8e0 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl index fb7513db0..eaa3b7a90 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Saída do comando '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Estatísticas de agendamento <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515,12 +758,18 @@ + + + + + + @@ -548,6 +797,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl index 1eab2ba8d..3745b942b 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80,12 +107,18 @@ + + + + + + @@ -113,6 +146,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl index 6cd2e8da2..feb85b4d8 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,192 +13,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221,12 +317,18 @@ + + + + + + @@ -254,6 +356,9 @@ + + + diff --git a/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index aa471ee4f..73fff0b74 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,18 @@ + + + + + + @@ -95,6 +116,9 @@ + + + @@ -131,6 +155,9 @@ + + + diff --git a/loc/lcl/PTB/NewProjectWizard.dll.lcl b/loc/lcl/PTB/NewProjectWizard.dll.lcl index 4c2f9d429..1f2895853 100644 --- a/loc/lcl/PTB/NewProjectWizard.dll.lcl +++ b/loc/lcl/PTB/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -122,6 +155,9 @@ + + + @@ -140,6 +176,9 @@ + + + @@ -152,6 +191,9 @@ + + + From a8a7c4bd9d3424c7c7e228afa01dce62e7632037 Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 21 Sep 2017 01:38:03 +0000 Subject: [PATCH 25/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 ++ loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl | 246 ++++++++++++++++++ .../ITA/GoogleTestAdapter.DiaResolver.dll.lcl | 36 +++ .../ITA/GoogleTestAdapter.TestAdapter.dll.lcl | 105 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 27 ++ loc/lcl/ITA/NewProjectWizard.dll.lcl | 40 ++- 6 files changed, 470 insertions(+), 2 deletions(-) diff --git a/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl index 7da733e3e..d52063ace 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl index 036e4afc3..ce62f2995 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl @@ -13,12 +13,18 @@ + + + + + + @@ -31,384 +37,576 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Output del comando '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Statistiche di pianificazione <<<]]> + + + + + + + + + + + + + + + + + + + @@ -421,78 +619,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515,12 +752,18 @@ + + + + + + @@ -548,6 +791,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl index d31a232ae..67e62e519 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80,12 +107,18 @@ + + + + + + @@ -113,6 +146,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl index b08392889..f95696efc 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,192 +13,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221,12 +317,18 @@ + + + + + + @@ -254,6 +356,9 @@ + + + diff --git a/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index a1d6c026a..d6fba7a3a 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,18 @@ + + + + + + @@ -95,6 +116,9 @@ + + + @@ -131,6 +155,9 @@ + + + diff --git a/loc/lcl/ITA/NewProjectWizard.dll.lcl b/loc/lcl/ITA/NewProjectWizard.dll.lcl index ace36a7c7..010d0c38f 100644 --- a/loc/lcl/ITA/NewProjectWizard.dll.lcl +++ b/loc/lcl/ITA/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -140,6 +173,9 @@ + + + From 73d4974dd96c8b2fd18d657d34ceed882c3ddf36 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 20 Sep 2017 20:53:31 -0700 Subject: [PATCH 26/92] Add setup components for use with insertion into VS (#45) * add proj/vsix stuff for setup * add swix targets for VS setup build * split swixproj and vsmanproj for building * add gitversioning and packages.config for nuget * add solution name to swixproj so outputpath is correct * import nuget props after common props so we know about the restore location * use the right SolutionName * fix in vsmanproj as well * explicit extensiondir * Update Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr remove double \ --- .../Packaging.TAfGT/Packaging.TAfGT.csproj | 1 + .../source.extension.vsixmanifest | 1 + ...o.VC.Ide.TestAdapterForGoogleTest.swixproj | 44 +++++++++++++++++++ ...Studio.VC.Ide.TestAdapterForGoogleTest.swr | 11 +++++ ....VC.Ide.TestAdapterForGoogleTest.vsmanproj | 21 +++++++++ swix/packages.config | 5 +++ ...o.VC.Ide.TestAdapterForGoogleTest.swixproj | 42 ++++++++++++++++++ ...Studio.VC.Ide.TestAdapterForGoogleTest.swr | 14 ++++++ ....VC.Ide.TestAdapterForGoogleTest.vsmanproj | 24 ++++++++++ 9 files changed, 163 insertions(+) create mode 100644 swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj create mode 100644 swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr create mode 100644 swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj create mode 100644 swix/packages.config create mode 100644 swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj create mode 100644 swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr create mode 100644 swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj diff --git a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj index 0b68cf812..aea1d8304 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj +++ b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj @@ -26,6 +26,7 @@ true true false + true true diff --git a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest index 7eec2d75c..f66f5d3c1 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest +++ b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest @@ -4,6 +4,7 @@ Test Adapter for Google Test Enables Visual Studio's testing tools with unit tests written for Google Test. + Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest https://go.microsoft.com/fwlink/?linkid=848768 use.txt ReleaseNotes.txt diff --git a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj new file mode 100644 index 000000000..3bc04440a --- /dev/null +++ b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj @@ -0,0 +1,44 @@ + + + + neutral + false + Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest + manifest + true + 15.0 + 16.0 + GoogleTestAdapter + + + + + + + $(OutputPath)..\Packaging.TAfGT + + + + + + + + + + + $(PackagePreprocessorDefinitions); + VsixOutDir=$(VsixOutDir); + Version=$(BuildVersion); + VSGeneralVersion=$(VSGeneralVersion); + VSNextGeneralVersion=$(VSNextGeneralVersion); + + + + + + + + + diff --git a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr new file mode 100644 index 000000000..8e63ae9af --- /dev/null +++ b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr @@ -0,0 +1,11 @@ +use vs + +package name=Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest + version=$(Version) + vs.package.type=vsix + vs.package.installSize=22265856 + vs.package.vsixId=GoogleTestAdapterVSIX.8486b54e-5768-482b-b224-7d069ca509d8 + vs.package.extensionDir=[installdir]\Common7\IDE\CommonExtensions\VC\TestAdapterForGoogleTest + +vs.payloads + vs.payload source=$(VsixOutDir)\Packaging.TAfGT.vsix diff --git a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj new file mode 100644 index 000000000..6a73ff1d4 --- /dev/null +++ b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj @@ -0,0 +1,21 @@ + + + + true + true + + + false + GoogleTestAdapter + + + + + + + + + + + \ No newline at end of file diff --git a/swix/packages.config b/swix/packages.config new file mode 100644 index 000000000..263143fe4 --- /dev/null +++ b/swix/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj new file mode 100644 index 000000000..f3f032461 --- /dev/null +++ b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj @@ -0,0 +1,42 @@ + + + + + + + neutral + false + Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest + manifest + true + 15.0 + 16.0 + + + + $(OutputPath)..\Packaging.TAfGT + + + + + + + + + + + $(PackagePreprocessorDefinitions); + VsixOutDir=$(VsixOutDir); + Version=$(BuildVersion); + VSGeneralVersion=$(VSGeneralVersion); + VSNextGeneralVersion=$(VSNextGeneralVersion); + + + + + + + + diff --git a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr new file mode 100644 index 000000000..5b9f0a956 --- /dev/null +++ b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr @@ -0,0 +1,14 @@ +use vs + +package name=Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest + version=$(Version) + vs.package.type=vsix + vs.package.installSize=22265856 + vs.package.vsixId=GoogleTestAdapterVSIX.8486b54e-5768-482b-b224-7d069ca509d8 + +vs.payloads + vs.payload source=$(VsixOutDir)\Packaging.TAfGT.vsix + +vs.dependencies + vs.dependency id=Microsoft.VisualStudio.MinShell + version=[$(VSGeneralVersion),$(VSNextGeneralVersion)) diff --git a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj new file mode 100644 index 000000000..b50ad5f61 --- /dev/null +++ b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj @@ -0,0 +1,24 @@ + + + + + + + true + true + + + false + + + + + + + + + + + + \ No newline at end of file From aa370dc8d3c9c3eec1fe5d31b3424a57f4056251 Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 21 Sep 2017 07:38:07 +0000 Subject: [PATCH 27/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 ++ loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl | 252 ++++++++++++++++++ .../CHS/GoogleTestAdapter.DiaResolver.dll.lcl | 36 +++ .../CHS/GoogleTestAdapter.TestAdapter.dll.lcl | 105 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 27 ++ loc/lcl/CHS/NewProjectWizard.dll.lcl | 46 +++- 6 files changed, 482 insertions(+), 2 deletions(-) diff --git a/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl index 6dcae528e..b911ad45d 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl index b973d6518..4a9a21c07 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> 命令“{1} {2}”的输出]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> 计划统计信息 <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515,12 +758,18 @@ + + + + + + @@ -548,6 +797,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl index 0c61072aa..c2552f85f 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80,12 +107,18 @@ + + + + + + @@ -113,6 +146,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl index 0c211218b..05f915983 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,192 +13,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221,12 +317,18 @@ + + + + + + @@ -254,6 +356,9 @@ + + + diff --git a/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 8a35fbd87..4915237fc 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,18 @@ + + + + + + @@ -95,6 +116,9 @@ + + + @@ -131,6 +155,9 @@ + + + diff --git a/loc/lcl/CHS/NewProjectWizard.dll.lcl b/loc/lcl/CHS/NewProjectWizard.dll.lcl index 9f3801dee..bab3e1b50 100644 --- a/loc/lcl/CHS/NewProjectWizard.dll.lcl +++ b/loc/lcl/CHS/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -122,6 +155,9 @@ + + + @@ -140,6 +176,9 @@ + + + @@ -152,6 +191,9 @@ + + + From 2265579e8f389b47373c59dfc46fe5aa21f3a3bd Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 21 Sep 2017 13:38:10 +0000 Subject: [PATCH 28/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 ++ loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl | 252 ++++++++++++++++++ .../CHT/GoogleTestAdapter.DiaResolver.dll.lcl | 36 +++ .../CHT/GoogleTestAdapter.TestAdapter.dll.lcl | 105 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 27 ++ loc/lcl/CHT/NewProjectWizard.dll.lcl | 46 +++- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 ++ loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl | 252 ++++++++++++++++++ .../JPN/GoogleTestAdapter.DiaResolver.dll.lcl | 36 +++ .../JPN/GoogleTestAdapter.TestAdapter.dll.lcl | 105 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 27 ++ loc/lcl/JPN/NewProjectWizard.dll.lcl | 46 +++- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 ++ loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl | 252 ++++++++++++++++++ .../KOR/GoogleTestAdapter.DiaResolver.dll.lcl | 36 +++ .../KOR/GoogleTestAdapter.TestAdapter.dll.lcl | 105 ++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 27 ++ loc/lcl/KOR/NewProjectWizard.dll.lcl | 46 +++- 18 files changed, 1446 insertions(+), 6 deletions(-) diff --git a/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl index 2907dccd5..80bb88f0f 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl index f78c1da06..1b6ae6240 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> 命令 '{1} {2}' 的輸出]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> 正在排程統計資料 <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515,12 +758,18 @@ + + + + + + @@ -548,6 +797,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl index a77b99c00..453752a6e 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80,12 +107,18 @@ + + + + + + @@ -113,6 +146,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl index 1fbde33f2..dac72533c 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,192 +13,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221,12 +317,18 @@ + + + + + + @@ -254,6 +356,9 @@ + + + diff --git a/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 3c4e6c58a..34a26ce0a 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,18 @@ + + + + + + @@ -95,6 +116,9 @@ + + + @@ -131,6 +155,9 @@ + + + diff --git a/loc/lcl/CHT/NewProjectWizard.dll.lcl b/loc/lcl/CHT/NewProjectWizard.dll.lcl index 1563c6b84..18ff31b58 100644 --- a/loc/lcl/CHT/NewProjectWizard.dll.lcl +++ b/loc/lcl/CHT/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -122,6 +155,9 @@ + + + @@ -140,6 +176,9 @@ + + + @@ -152,6 +191,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl index 19060d1a3..b24950c64 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl index 48cd9e045..8d5d1a230 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>>コマンドの出力 '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> スケジュールの統計情報 <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515,12 +758,18 @@ + + + + + + @@ -548,6 +797,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl index d7ae8a33a..09347ab71 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80,12 +107,18 @@ + + + + + + @@ -113,6 +146,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl index 35045a66f..af81a4b6d 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,192 +13,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221,12 +317,18 @@ + + + + + + @@ -254,6 +356,9 @@ + + + diff --git a/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 5d934e14d..e43ffd274 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,18 @@ + + + + + + @@ -95,6 +116,9 @@ + + + @@ -131,6 +155,9 @@ + + + diff --git a/loc/lcl/JPN/NewProjectWizard.dll.lcl b/loc/lcl/JPN/NewProjectWizard.dll.lcl index 2d6170092..57e900357 100644 --- a/loc/lcl/JPN/NewProjectWizard.dll.lcl +++ b/loc/lcl/JPN/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -122,6 +155,9 @@ + + + @@ -140,6 +176,9 @@ + + + @@ -152,6 +191,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl index dff88d85a..9bb58f5a5 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl index c3718ed7e..695839eb4 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> 명령 출력 '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> 예약 통계 <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515,12 +758,18 @@ + + + + + + @@ -548,6 +797,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl index da93d446b..207611307 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80,12 +107,18 @@ + + + + + + @@ -113,6 +146,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl index bab845c56..3d06ea7ba 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,192 +13,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221,12 +317,18 @@ + + + + + + @@ -254,6 +356,9 @@ + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 2fec7d2ca..0a4c0b242 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,18 @@ + + + + + + @@ -95,6 +116,9 @@ + + + @@ -131,6 +155,9 @@ + + + diff --git a/loc/lcl/KOR/NewProjectWizard.dll.lcl b/loc/lcl/KOR/NewProjectWizard.dll.lcl index 1a67e3eb4..18b671280 100644 --- a/loc/lcl/KOR/NewProjectWizard.dll.lcl +++ b/loc/lcl/KOR/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -122,6 +155,9 @@ + + + @@ -140,6 +176,9 @@ + + + @@ -152,6 +191,9 @@ + + + From 61f191ff11cd1a527c6cd93674bf5d97c16d98d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mendakiewicz?= Date: Thu, 21 Sep 2017 15:52:12 -0700 Subject: [PATCH 29/92] Replace icons (#49) --- GoogleTestAdapter/Resources/Icons/Icon.ico | Bin 40049 -> 64782 bytes .../Resources/Icons/Icon_128.png | Bin 20497 -> 2667 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/GoogleTestAdapter/Resources/Icons/Icon.ico b/GoogleTestAdapter/Resources/Icons/Icon.ico index 80db10f04f6f0cc41a1d0d94aedef0ca629e168e..3f71a88c40dc3d6179ea3c2949cd19de7c916667 100644 GIT binary patch literal 64782 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 literal 40049 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 literal 20497 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 From bc654e2f7cf24223dcd3a3a5973dbd2ef2f686db Mon Sep 17 00:00:00 2001 From: csigs Date: Fri, 22 Sep 2017 13:38:15 +0000 Subject: [PATCH 30/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 + loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl | 624 +++++++++++++++++- .../CSY/GoogleTestAdapter.DiaResolver.dll.lcl | 42 +- .../CSY/GoogleTestAdapter.TestAdapter.dll.lcl | 129 +++- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 51 +- loc/lcl/CSY/NewProjectWizard.dll.lcl | 52 +- loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl | 384 ++++++++++- .../DEU/GoogleTestAdapter.DiaResolver.dll.lcl | 9 +- .../DEU/GoogleTestAdapter.TestAdapter.dll.lcl | 39 +- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 27 +- loc/lcl/DEU/NewProjectWizard.dll.lcl | 22 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 + loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl | 621 ++++++++++++++++- .../ESN/GoogleTestAdapter.DiaResolver.dll.lcl | 39 +- .../ESN/GoogleTestAdapter.TestAdapter.dll.lcl | 129 +++- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 51 +- loc/lcl/ESN/NewProjectWizard.dll.lcl | 52 +- 17 files changed, 2256 insertions(+), 51 deletions(-) diff --git a/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl index 0f8498501..2f794d6f5 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl index d2146bb5a..9ca253ab4 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,1095 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Výstup příkazu {1} {2}]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Statistika plánování <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,19 +1117,25 @@ - + + + + + + + @@ -535,7 +1150,7 @@ - + @@ -548,6 +1163,9 @@ + + + @@ -568,7 +1186,7 @@ - + diff --git a/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl index 0a8d85b66..6e81f78fd 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,19 +100,25 @@ - + + + + + + + @@ -100,7 +133,7 @@ - + @@ -113,6 +146,9 @@ + + + @@ -133,7 +169,7 @@ - + diff --git a/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl index ff7e9151a..2fbf7fbe9 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,195 +10,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -214,19 +328,25 @@ - + + + + + + + @@ -241,7 +361,7 @@ - + @@ -254,6 +374,9 @@ + + + @@ -274,7 +397,7 @@ - + diff --git a/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 143aedbc0..8a487b4e9 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,13 +127,16 @@ - + + + + @@ -118,7 +160,7 @@ - + @@ -131,6 +173,9 @@ + + + @@ -151,7 +196,7 @@ - + diff --git a/loc/lcl/CSY/NewProjectWizard.dll.lcl b/loc/lcl/CSY/NewProjectWizard.dll.lcl index c6c7dfd27..83c0ca270 100644 --- a/loc/lcl/CSY/NewProjectWizard.dll.lcl +++ b/loc/lcl/CSY/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -106,7 +139,7 @@ - + @@ -122,12 +155,15 @@ + + + - + @@ -140,6 +176,9 @@ + + + @@ -152,12 +191,15 @@ + + + - + diff --git a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl index 7c70c01da..395fb69ee 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl @@ -52,6 +52,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -94,18 +124,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -127,6 +193,9 @@ + + + @@ -151,6 +220,9 @@ + + + @@ -274,6 +346,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -283,6 +649,9 @@ + + + @@ -397,6 +766,9 @@ + + + @@ -436,6 +808,12 @@ + + + + + + @@ -508,7 +886,7 @@ - + @@ -535,7 +913,7 @@ - + @@ -568,7 +946,7 @@ - + diff --git a/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl index a46e3b9e9..89086e1e4 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl @@ -73,13 +73,16 @@ - + + + + @@ -100,7 +103,7 @@ - + @@ -133,7 +136,7 @@ - + diff --git a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl index fecabe619..82c4ffa0d 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,6 +10,12 @@ + + + + + + @@ -55,6 +61,9 @@ + + + @@ -73,6 +82,9 @@ + + + @@ -100,12 +112,24 @@ + + + + + + + + + + + + @@ -151,6 +175,9 @@ + + + @@ -187,6 +214,9 @@ + + + @@ -199,6 +229,9 @@ + + + @@ -214,7 +247,7 @@ - + @@ -241,7 +274,7 @@ - + @@ -274,7 +307,7 @@ - + diff --git a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 8fe9ba1e9..b76d5b2f5 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -36,6 +36,9 @@ + + + @@ -82,13 +85,31 @@ + + + + + + + + + + + + + + + + + + - + @@ -118,7 +139,7 @@ - + @@ -151,7 +172,7 @@ - + diff --git a/loc/lcl/DEU/NewProjectWizard.dll.lcl b/loc/lcl/DEU/NewProjectWizard.dll.lcl index f39e03c76..c37c68ffd 100644 --- a/loc/lcl/DEU/NewProjectWizard.dll.lcl +++ b/loc/lcl/DEU/NewProjectWizard.dll.lcl @@ -52,6 +52,9 @@ + + + @@ -76,6 +79,9 @@ + + + @@ -91,13 +97,13 @@ - + - + @@ -106,7 +112,7 @@ - + @@ -122,12 +128,15 @@ + + + - + @@ -152,12 +161,15 @@ + + + - + diff --git a/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl index 3a92d12d7..edf7731a5 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl index d2db0e186..201443b28 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl @@ -13,72 +13,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -91,408 +157,948 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Salida del comando "{1} {2}"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Estadísticas de programación <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,19 +1114,25 @@ - + + + + + + + @@ -535,7 +1147,7 @@ - + @@ -548,6 +1160,9 @@ + + + @@ -568,7 +1183,7 @@ - + diff --git a/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl index aff21034d..90f19a27d 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,42 +13,63 @@ + + + + + + + + + + + + + + + + + + + + + @@ -61,6 +82,9 @@ + + + @@ -73,19 +97,25 @@ - + + + + + + + @@ -100,7 +130,7 @@ - + @@ -113,6 +143,9 @@ + + + @@ -133,7 +166,7 @@ - + diff --git a/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl index 9b3ba8524..3e6fbc7dd 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,195 +10,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -214,19 +328,25 @@ - + + + + + + + @@ -241,7 +361,7 @@ - + @@ -254,6 +374,9 @@ + + + @@ -274,7 +397,7 @@ - + diff --git a/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index c4737a32e..d537f7553 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,13 +127,16 @@ - + + + + @@ -118,7 +160,7 @@ - + @@ -131,6 +173,9 @@ + + + @@ -151,7 +196,7 @@ - + diff --git a/loc/lcl/ESN/NewProjectWizard.dll.lcl b/loc/lcl/ESN/NewProjectWizard.dll.lcl index 6318bb7fa..9c0403a09 100644 --- a/loc/lcl/ESN/NewProjectWizard.dll.lcl +++ b/loc/lcl/ESN/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -106,7 +139,7 @@ - + @@ -122,12 +155,15 @@ + + + - + @@ -140,6 +176,9 @@ + + + @@ -152,12 +191,15 @@ + + + - + From d43227e5fbb9b92833c65fec54ca8f1e6ebdf53c Mon Sep 17 00:00:00 2001 From: csigs Date: Fri, 22 Sep 2017 19:38:04 +0000 Subject: [PATCH 31/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 + loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl | 240 +++++++ .../DEU/GoogleTestAdapter.DiaResolver.dll.lcl | 33 + .../DEU/GoogleTestAdapter.TestAdapter.dll.lcl | 90 +++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 24 + loc/lcl/DEU/NewProjectWizard.dll.lcl | 30 + loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl | 3 + .../ESN/GoogleTestAdapter.DiaResolver.dll.lcl | 3 + .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 + loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl | 624 +++++++++++++++++- .../FRA/GoogleTestAdapter.DiaResolver.dll.lcl | 42 +- .../FRA/GoogleTestAdapter.TestAdapter.dll.lcl | 129 +++- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 51 +- loc/lcl/FRA/NewProjectWizard.dll.lcl | 52 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 + loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl | 624 +++++++++++++++++- .../RUS/GoogleTestAdapter.DiaResolver.dll.lcl | 42 +- .../RUS/GoogleTestAdapter.TestAdapter.dll.lcl | 129 +++- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 51 +- loc/lcl/RUS/NewProjectWizard.dll.lcl | 52 +- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 + loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl | 624 +++++++++++++++++- .../TRK/GoogleTestAdapter.DiaResolver.dll.lcl | 42 +- .../TRK/GoogleTestAdapter.TestAdapter.dll.lcl | 129 +++- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 51 +- loc/lcl/TRK/NewProjectWizard.dll.lcl | 52 +- 26 files changed, 3138 insertions(+), 51 deletions(-) diff --git a/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl index dab2b02b1..ab9d11df0 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl index 395fb69ee..11faeb6fb 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl @@ -13,42 +13,63 @@ + + + + + + + + + + + + + + + + + + + + + @@ -85,42 +106,63 @@ + + + + + + + + + + + + + + + + + + + + + @@ -133,6 +175,9 @@ + + + @@ -145,6 +190,9 @@ + + + @@ -175,18 +223,27 @@ + + + + + + + + + @@ -202,18 +259,27 @@ + + + + + + + + + @@ -229,120 +295,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643,6 +769,9 @@ + + + @@ -658,108 +787,162 @@ >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Ausgabe des Befehls "{1} {2}"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Statistiken werden geplant <<<]]> + + + + + + + + + + @@ -775,36 +958,54 @@ + + + + + + + + + + + + + + + + + + @@ -817,60 +1018,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -893,12 +1124,18 @@ + + + + + + @@ -926,6 +1163,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl index 89086e1e4..1b4acf1ac 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -89,6 +116,9 @@ + + + @@ -116,6 +146,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl index 82c4ffa0d..2295b46bb 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl @@ -19,42 +19,63 @@ + + + + + + + + + + + + + + + + + + + + + @@ -70,12 +91,18 @@ + + + + + + @@ -91,24 +118,36 @@ + + + + + + + + + + + + @@ -121,6 +160,9 @@ + + + @@ -133,42 +175,63 @@ + + + + + + + + + + + + + + + + + + + + + @@ -184,30 +247,45 @@ + + + + + + + + + + + + + + + @@ -223,6 +301,9 @@ + + + @@ -254,12 +335,18 @@ + + + + + + @@ -287,6 +374,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index b76d5b2f5..a0c2b9ec4 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -48,6 +51,9 @@ + + + @@ -57,6 +63,9 @@ + + + @@ -66,6 +75,9 @@ + + + @@ -76,12 +88,18 @@ + + + + + + @@ -116,6 +134,9 @@ + + + @@ -152,6 +173,9 @@ + + + diff --git a/loc/lcl/DEU/NewProjectWizard.dll.lcl b/loc/lcl/DEU/NewProjectWizard.dll.lcl index c37c68ffd..0eea0b2f7 100644 --- a/loc/lcl/DEU/NewProjectWizard.dll.lcl +++ b/loc/lcl/DEU/NewProjectWizard.dll.lcl @@ -16,36 +16,54 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + @@ -61,18 +79,27 @@ + + + + + + + + + @@ -149,6 +176,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl index 201443b28..8215804eb 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl @@ -151,6 +151,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl index 90f19a27d..68f538957 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.DiaResolver.dll.lcl @@ -76,6 +76,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl index 645acec6e..ccb867877 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl index f3b85624e..6ccacefbe 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,1095 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Sortie de la commande '{1} {2}']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Statistiques de planification <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,19 +1117,25 @@ - + + + + + + + @@ -535,7 +1150,7 @@ - + @@ -548,6 +1163,9 @@ + + + @@ -568,7 +1186,7 @@ - + diff --git a/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl index 1350faf8a..cf0ab7cc3 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,19 +100,25 @@ - + + + + + + + @@ -100,7 +133,7 @@ - + @@ -113,6 +146,9 @@ + + + @@ -133,7 +169,7 @@ - + diff --git a/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl index a666d8fda..69b8039eb 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,195 +10,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -214,19 +328,25 @@ - + + + + + + + @@ -241,7 +361,7 @@ - + @@ -254,6 +374,9 @@ + + + @@ -274,7 +397,7 @@ - + diff --git a/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 5ecba8865..27e21dcd6 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,13 +127,16 @@ - + + + + @@ -118,7 +160,7 @@ - + @@ -131,6 +173,9 @@ + + + @@ -151,7 +196,7 @@ - + diff --git a/loc/lcl/FRA/NewProjectWizard.dll.lcl b/loc/lcl/FRA/NewProjectWizard.dll.lcl index 02788a7fe..ec624435e 100644 --- a/loc/lcl/FRA/NewProjectWizard.dll.lcl +++ b/loc/lcl/FRA/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -106,7 +139,7 @@ - + @@ -122,12 +155,15 @@ + + + - + @@ -140,6 +176,9 @@ + + + @@ -152,12 +191,15 @@ + + + - + diff --git a/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl index 26faed5ef..7986709e2 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl index 146509a2f..b5c97f708 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,1095 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Выходные данные команды "{1} {2}"]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Статистика планирования <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,19 +1117,25 @@ - + + + + + + + @@ -535,7 +1150,7 @@ - + @@ -548,6 +1163,9 @@ + + + @@ -568,7 +1186,7 @@ - + diff --git a/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl index a4e197c6b..43ae1774c 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,19 +100,25 @@ - + + + + + + + @@ -100,7 +133,7 @@ - + @@ -113,6 +146,9 @@ + + + @@ -133,7 +169,7 @@ - + diff --git a/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl index 4d5cbc453..c0174f379 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,195 +10,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -214,19 +328,25 @@ - + + + + + + + @@ -241,7 +361,7 @@ - + @@ -254,6 +374,9 @@ + + + @@ -274,7 +397,7 @@ - + diff --git a/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index af3b419c9..8484f7aae 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,13 +127,16 @@ - + + + + @@ -118,7 +160,7 @@ - + @@ -131,6 +173,9 @@ + + + @@ -151,7 +196,7 @@ - + diff --git a/loc/lcl/RUS/NewProjectWizard.dll.lcl b/loc/lcl/RUS/NewProjectWizard.dll.lcl index e711f6b65..567ac0501 100644 --- a/loc/lcl/RUS/NewProjectWizard.dll.lcl +++ b/loc/lcl/RUS/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -106,7 +139,7 @@ - + @@ -122,12 +155,15 @@ + + + - + @@ -140,6 +176,9 @@ + + + @@ -152,12 +191,15 @@ + + + - + diff --git a/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl index bde6da008..51dccaae7 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl index 7b066d720..18039d113 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,1095 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> '{1} {2}' komutunun çıkışı]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Zamanlama istatistikleri <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,19 +1117,25 @@ - + + + + + + + @@ -535,7 +1150,7 @@ - + @@ -548,6 +1163,9 @@ + + + @@ -568,7 +1186,7 @@ - + diff --git a/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl index 5b876ce99..a60067f76 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,19 +100,25 @@ - + + + + + + + @@ -100,7 +133,7 @@ - + @@ -113,6 +146,9 @@ + + + @@ -133,7 +169,7 @@ - + diff --git a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl index 12fe34b1f..2cca2d370 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,195 +10,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -214,19 +328,25 @@ - + + + + + + + @@ -241,7 +361,7 @@ - + @@ -254,6 +374,9 @@ + + + @@ -274,7 +397,7 @@ - + diff --git a/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index dcc7b254f..ae35a1be7 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,13 +127,16 @@ - + + + + @@ -118,7 +160,7 @@ - + @@ -131,6 +173,9 @@ + + + @@ -151,7 +196,7 @@ - + diff --git a/loc/lcl/TRK/NewProjectWizard.dll.lcl b/loc/lcl/TRK/NewProjectWizard.dll.lcl index 9d8e64d13..b1d7c0d8e 100644 --- a/loc/lcl/TRK/NewProjectWizard.dll.lcl +++ b/loc/lcl/TRK/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -106,7 +139,7 @@ - + @@ -122,12 +155,15 @@ + + + - + @@ -140,6 +176,9 @@ + + + @@ -152,12 +191,15 @@ + + + - + From a148d6335ed0ebd5265e0cec4832a0bde3af6009 Mon Sep 17 00:00:00 2001 From: csigs Date: Mon, 25 Sep 2017 13:38:10 +0000 Subject: [PATCH 32/92] LEGO: check in for dev15loc to temporary branch. --- .../GoogleTestAdapter.Common.Dynamic.dll.lcl | 18 + loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl | 624 +++++++++++++++++- .../PLK/GoogleTestAdapter.DiaResolver.dll.lcl | 42 +- .../PLK/GoogleTestAdapter.TestAdapter.dll.lcl | 129 +++- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 53 +- loc/lcl/PLK/NewProjectWizard.dll.lcl | 52 +- 6 files changed, 900 insertions(+), 18 deletions(-) diff --git a/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl index 22c7af543..89a536a80 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.Common.Dynamic.dll.lcl @@ -13,24 +13,36 @@ + + + + + + + + + + + + @@ -50,6 +62,9 @@ + + + @@ -86,6 +101,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl index 0143051c3..9c8535290 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl @@ -13,486 +13,1095 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >>>>>>>>>>>>>> Output of command '{1} {2}']]> + + >>>>>>>>>>>>>> Dane wyjściowe polecenia „{1} {2}”]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >> Scheduling statistics <<<]]> + + >> Statystyki planowania <<<]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -508,19 +1117,25 @@ - + + + + + + + @@ -535,7 +1150,7 @@ - + @@ -548,6 +1163,9 @@ + + + @@ -568,7 +1186,7 @@ - + diff --git a/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl index bab3d5663..53f465d45 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.DiaResolver.dll.lcl @@ -13,54 +13,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,19 +100,25 @@ - + + + + + + + @@ -100,7 +133,7 @@ - + @@ -113,6 +146,9 @@ + + + @@ -133,7 +169,7 @@ - + diff --git a/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl index c55aad293..6447e0153 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,195 +10,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -214,19 +328,25 @@ - + + + + + + + @@ -241,7 +361,7 @@ - + @@ -254,6 +374,9 @@ + + + @@ -274,7 +397,7 @@ - + diff --git a/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 4cbda9b65..fc2ef840f 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -27,6 +27,9 @@ + + + @@ -36,6 +39,9 @@ + + + @@ -45,6 +51,9 @@ + + + @@ -54,6 +63,9 @@ + + + @@ -63,6 +75,9 @@ + + + @@ -73,12 +88,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,13 +127,16 @@ - + + + + @@ -118,7 +160,7 @@ - + @@ -131,6 +173,9 @@ + + + @@ -151,7 +196,7 @@ - + diff --git a/loc/lcl/PLK/NewProjectWizard.dll.lcl b/loc/lcl/PLK/NewProjectWizard.dll.lcl index 352e2b4d2..cb5e24f65 100644 --- a/loc/lcl/PLK/NewProjectWizard.dll.lcl +++ b/loc/lcl/PLK/NewProjectWizard.dll.lcl @@ -16,66 +16,99 @@ + + + + + + + + + + + + ]]> + + ]]> + + + + + + + + + + + + + + + + + + + @@ -91,13 +124,13 @@ - + - + @@ -106,7 +139,7 @@ - + @@ -122,12 +155,15 @@ + + + - + @@ -140,6 +176,9 @@ + + + @@ -152,12 +191,15 @@ + + + - + From 19f56115e26fa24e2804e04904f0d421079b556f Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Mon, 25 Sep 2017 12:39:36 -0700 Subject: [PATCH 33/92] Delay load the package until VCProject and Test Explorer are present --- .../VsPackage.GTA/GoogleTestExtensionOptionsPage.cs | 5 ++++- .../VsPackage.Shared/GoogleTestExtensionOptionsPage.cs | 1 - .../VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs index e866667b5..e49755ce4 100644 --- a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs @@ -1,12 +1,15 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.VsPackage.ReleaseNotes; +using Microsoft.VisualStudio.Shell; +using Microsoft.VisualStudio.Shell.Interop; using System; using System.IO; using System.Threading; namespace GoogleTestAdapter.VsPackage { + [ProvideAutoLoad(UIContextGuids.SolutionExists)] public partial class GoogleTestExtensionOptionsPage { private const string PackageGuidString = "e7c90fcb-0943-4908-9ae8-3b6a9d22ec9e"; diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index 0c40173ee..90bb61a3f 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -26,7 +26,6 @@ namespace GoogleTestAdapter.VsPackage [ProvideOptionPage(typeof(GeneralOptionsDialogPage), OptionsCategoryName, "General", 110, 501, true)] [ProvideOptionPage(typeof(ParallelizationOptionsDialogPage), OptionsCategoryName, "Parallelization", 110, 502, true)] [ProvideOptionPage(typeof(GoogleTestOptionsDialogPage), OptionsCategoryName, "Google Test", 110, 503, true)] - [ProvideAutoLoad(UIContextGuids.SolutionExists)] [ProvideMenuResource("Menus.ctmenu", 1)] public sealed partial class GoogleTestExtensionOptionsPage : Package, IGoogleTestExtensionOptionsPage, IDisposable { diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs index b89e50381..3e58b1888 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs @@ -1,11 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. +using Microsoft.VisualStudio; +using Microsoft.VisualStudio.Shell; + namespace GoogleTestAdapter.VsPackage { + [ProvideAutoLoad(UIContextGuid)] + [ProvideUIContextRule(UIContextGuid, OptionsCategoryName, "VCProject & TestExplorer", + new string[] { "VCProject", "TestExplorer" }, + new string[] { VSConstants.UICONTEXT.VCProject_string, TestExplorerContextGuid })] public partial class GoogleTestExtensionOptionsPage { private const string PackageGuidString = "1db31773-234b-424b-a887-b451fb1ba837"; + private const string UIContextGuid = "7517f9ae-397f-48e1-8e1b-dac609d9f52d"; + private const string TestExplorerContextGuid = "ec25b527-d893-4ec0-a814-d2c9f1782997"; private const string OptionsCategoryName = "Test Adapter for Google Test"; private void DisplayReleaseNotesIfNecessary() From 08639874ca3c1b0f6916d339044689d5cd592f3c Mon Sep 17 00:00:00 2001 From: csigs Date: Tue, 26 Sep 2017 19:38:02 +0000 Subject: [PATCH 34/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl | 183 ++++++++++++++++++ .../RUS/GoogleTestAdapter.TestAdapter.dll.lcl | 9 + .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- 3 files changed, 202 insertions(+), 1 deletion(-) diff --git a/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl index b5c97f708..ea1fae8d4 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.Core.dll.lcl @@ -76,30 +76,45 @@ + + + + + + + + + + + + + + + @@ -169,6 +184,9 @@ + + + @@ -184,6 +202,9 @@ + + + @@ -199,24 +220,36 @@ + + + + + + + + + + + + @@ -475,294 +508,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1012,6 +1192,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl index c0174f379..76e6bce44 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,6 +13,9 @@ + + + @@ -154,6 +157,9 @@ + + + @@ -169,6 +175,9 @@ + + + diff --git a/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 8484f7aae..dee7554ab 100644 --- a/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/RUS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -106,18 +106,27 @@ + + + + + + + + + From f5d38f4a08fbe6f9bd8b547e84c13f059dfe6afc Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Thu, 20 Jul 2017 20:06:42 +0200 Subject: [PATCH 35/92] Merge pull request #147 from csoltenborn/#121_ImprovedTestExecutableDetection Cherry-pick bb018b761194375b9e45fcf6447ce6ba2f84f9b6 Conflicts: GoogleTestAdapter/Core/GoogleTestDiscoverer.cs GoogleTestAdapter/Core/Helpers/Utils.cs GoogleTestAdapter/Core/Settings/SettingsWrapper.cs GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs GoogleTestAdapter/Tests.Common/TestResources.cs --- .../Core.Tests/Core.Tests.csproj | 1 + .../Core.Tests/GoogleTestDiscovererTests.cs | 37 ++------ .../Core.Tests/Helpers/ByteUtilsTests.cs | 75 ++++++++++++++++ .../Core.Tests/Helpers/UtilsTests.cs | 44 +++++++++- GoogleTestAdapter/Core/Core.csproj | 1 + GoogleTestAdapter/Core/GoogleTestConstants.cs | 10 ++- .../Core/GoogleTestDiscoverer.cs | 68 ++++++-------- GoogleTestAdapter/Core/Helpers/ByteUtils.cs | 88 +++++++++++++++++++ GoogleTestAdapter/Core/Helpers/Utils.cs | 11 ++- .../Core/Settings/SettingsWrapper.cs | 2 - .../Core/TestCases/TestCaseFactory.cs | 12 +-- .../Tests.Common/TestResources.cs | 3 +- README.md | 2 +- SampleTests/SampleTests.gta.runsettings | 2 +- 14 files changed, 273 insertions(+), 83 deletions(-) create mode 100644 GoogleTestAdapter/Core.Tests/Helpers/ByteUtilsTests.cs create mode 100644 GoogleTestAdapter/Core/Helpers/ByteUtils.cs diff --git a/GoogleTestAdapter/Core.Tests/Core.Tests.csproj b/GoogleTestAdapter/Core.Tests/Core.Tests.csproj index c46d1d6d2..3c3ad7990 100644 --- a/GoogleTestAdapter/Core.Tests/Core.Tests.csproj +++ b/GoogleTestAdapter/Core.Tests/Core.Tests.csproj @@ -88,6 +88,7 @@ + diff --git a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs index f14924f9c..5da01e4ef 100644 --- a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs +++ b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs @@ -25,27 +25,6 @@ namespace GoogleTestAdapter public class GoogleTestDiscovererTests : TestsBase { - [TestMethod] - [TestCategory(Unit)] - public void IsGoogleTestExecutable_MatchingExamples_AreMatched() - { - AssertIsGoogleTestExecutable("MyGoogleTests.exe", true); - AssertIsGoogleTestExecutable("MyGoogleTests.exe", true); - AssertIsGoogleTestExecutable("MyGoogleTest.exe", true); - AssertIsGoogleTestExecutable("mygoogletests.exe", true); - AssertIsGoogleTestExecutable("mygoogletest.exe", true); - } - - [TestMethod] - [TestCategory(Unit)] - public void IsGoogleTestExecutable_NotMatchingExamples_AreNotMatched() - { - AssertIsGoogleTestExecutable("MyGoogleTes.exe", false); - AssertIsGoogleTestExecutable("TotallyWrong.exe", false); - AssertIsGoogleTestExecutable("TestStuff.exe", false); - AssertIsGoogleTestExecutable("TestLibrary.exe", false); - } - [TestMethod] [TestCategory(Unit)] public void IsGoogleTestExecutable_WithRegexFromOptions_MatchesCorrectly() @@ -59,7 +38,7 @@ public void IsGoogleTestExecutable_WithRegexFromOptions_MatchesCorrectly() [TestCategory(Unit)] public void IsGoogleTestExecutable_WithUnparsableRegexFromOptions_ProducesErrorMessage() { - bool result = new GoogleTestDiscoverer(TestEnvironment.Logger, TestEnvironment.Options).IsGoogleTestExecutable("my.exe", "d[ddd["); + bool result = GoogleTestDiscoverer.IsGoogleTestExecutable("my.exe", "d[ddd[", TestEnvironment.Logger); result.Should().BeFalse(); MockLogger.Verify(l => l.LogError(It.Is(s => s.Contains("'d[ddd['"))), Times.Exactly(1)); @@ -72,8 +51,8 @@ public void IsGoogleTestExecutable_WithIndicatorFile_IsRecognizedAsTestExecutabl string testExecutable = SetupIndicatorFileTest(true); try { - bool result = new GoogleTestDiscoverer(TestEnvironment.Logger, TestEnvironment.Options) - .IsGoogleTestExecutable(testExecutable); + bool result = GoogleTestDiscoverer + .IsGoogleTestExecutable(testExecutable, "", TestEnvironment.Logger); result.Should().BeTrue(); } @@ -86,15 +65,15 @@ public void IsGoogleTestExecutable_WithIndicatorFile_IsRecognizedAsTestExecutabl [TestMethod] [TestCategory(Unit)] - public void IsGoogleTestExecutable_WithoutIndicatorFile_IsNotRecognizedAsTestExecutable() + public void IsGoogleTestExecutable_WithoutIndicatorFile_IsRecognizedAsTestExecutable() { string testExecutable = SetupIndicatorFileTest(false); try { - bool result = new GoogleTestDiscoverer(TestEnvironment.Logger, TestEnvironment.Options) - .IsGoogleTestExecutable(testExecutable); + bool result = GoogleTestDiscoverer + .IsGoogleTestExecutable(testExecutable, "", TestEnvironment.Logger); - result.Should().BeFalse(); + result.Should().BeTrue(); } finally { @@ -320,7 +299,7 @@ public void GetTestsFromExecutable_LoadTests_AreFoundInReasonableTime() private void AssertIsGoogleTestExecutable(string executable, bool isGoogleTestExecutable, string regex = "") { - new GoogleTestDiscoverer(TestEnvironment.Logger, TestEnvironment.Options).IsGoogleTestExecutable(executable, regex) + GoogleTestDiscoverer.IsGoogleTestExecutable(executable, regex, TestEnvironment.Logger) .Should() .Be(isGoogleTestExecutable); } diff --git a/GoogleTestAdapter/Core.Tests/Helpers/ByteUtilsTests.cs b/GoogleTestAdapter/Core.Tests/Helpers/ByteUtilsTests.cs new file mode 100644 index 000000000..d3eb56049 --- /dev/null +++ b/GoogleTestAdapter/Core.Tests/Helpers/ByteUtilsTests.cs @@ -0,0 +1,75 @@ +using System.Text; +using FluentAssertions; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using static GoogleTestAdapter.Tests.Common.TestMetadata.TestCategories; + +namespace GoogleTestAdapter.Helpers +{ + [TestClass] + public class ByteUtilsTests + { + [TestMethod] + [TestCategory(Unit)] + public void IndexOf_FooEmptyPattern_ReturnsFound() + { + var bytes = Encoding.ASCII.GetBytes("foo"); + var pattern = Encoding.ASCII.GetBytes(""); + bytes.IndexOf(pattern).Should().Be(0); + } + + [TestMethod] + [TestCategory(Unit)] + public void IndexOf_EmptyBytesFoo_ReturnsNotFound() + { + var bytes = Encoding.ASCII.GetBytes(""); + var pattern = Encoding.ASCII.GetBytes("foo"); + bytes.IndexOf(pattern).Should().Be(-1); + } + + [TestMethod] + [TestCategory(Unit)] + public void IndexOf_EmptyBytesEmptyPattern_ReturnsFound() + { + var bytes = Encoding.ASCII.GetBytes(""); + var pattern = Encoding.ASCII.GetBytes(""); + bytes.IndexOf(pattern).Should().Be(0); + } + + [TestMethod] + [TestCategory(Unit)] + public void IndexOf_FooBar_ReturnsNotFound() + { + var bytes = Encoding.ASCII.GetBytes("foofoofoo"); + var pattern = Encoding.ASCII.GetBytes("bar"); + bytes.IndexOf(pattern).Should().Be(-1); + } + + [TestMethod] + [TestCategory(Unit)] + public void IndexOf_FooAtBeginning_ReturnsFound() + { + var bytes = Encoding.ASCII.GetBytes("fooxxx"); + var pattern = Encoding.ASCII.GetBytes("foo"); + bytes.IndexOf(pattern).Should().Be(0); + } + + [TestMethod] + [TestCategory(Unit)] + public void IndexOf_FooAtEnd_ReturnsFound() + { + var bytes = Encoding.ASCII.GetBytes("xxxfoo"); + var pattern = Encoding.ASCII.GetBytes("foo"); + bytes.IndexOf(pattern).Should().Be(3); + } + + [TestMethod] + [TestCategory(Unit)] + public void IndexOf_FooInMiddle_ReturnsFound() + { + var bytes = Encoding.ASCII.GetBytes("xxxfooxxx"); + var pattern = Encoding.ASCII.GetBytes("foo"); + bytes.IndexOf(pattern).Should().Be(3); + } + + } +} \ No newline at end of file diff --git a/GoogleTestAdapter/Core.Tests/Helpers/UtilsTests.cs b/GoogleTestAdapter/Core.Tests/Helpers/UtilsTests.cs index a37e97bfa..17b1a856f 100644 --- a/GoogleTestAdapter/Core.Tests/Helpers/UtilsTests.cs +++ b/GoogleTestAdapter/Core.Tests/Helpers/UtilsTests.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.IO; +using System.Text; using System.Threading; using FluentAssertions; using GoogleTestAdapter.Tests.Common; @@ -12,7 +13,6 @@ namespace GoogleTestAdapter.Helpers [TestClass] public class UtilsTests { - [TestMethod] [TestCategory(Unit)] public void DeleteDirectory_CanNotBeDeleted_ReturnsFalseAndMessage() @@ -45,6 +45,48 @@ public void GetTempDirectory__DirectoryDoesExistAndCanBeDeleted() Utils.DeleteDirectory(dir, out errorMessage).Should().BeTrue(); } + [TestMethod] + [TestCategory(Unit)] + public void BinaryFileContainsStrings_TestX86Release_ShouldContainGoogleTestIndicator() + { + Utils.BinaryFileContainsStrings(TestResources.Tests_ReleaseX86, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers).Should().BeTrue(); + } + + [TestMethod] + [TestCategory(Unit)] + public void BinaryFileContainsStrings_TestX64Release_ShouldContainGoogleTestIndicator() + { + Utils.BinaryFileContainsStrings(TestResources.Tests_ReleaseX64, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers).Should().BeTrue(); + } + + [TestMethod] + [TestCategory(Unit)] + public void BinaryFileContainsStrings_TestX86Debug_ShouldContainGoogleTestIndicator() + { + Utils.BinaryFileContainsStrings(TestResources.Tests_DebugX86, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers).Should().BeTrue(); + } + + [TestMethod] + [TestCategory(Unit)] + public void BinaryFileContainsStrings_TestX64Debug_ShouldContainGoogleTestIndicator() + { + Utils.BinaryFileContainsStrings(TestResources.Tests_DebugX64, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers).Should().BeTrue(); + } + + [TestMethod] + [TestCategory(Unit)] + public void BinaryFileContainsStrings_TenSecondsWaiter_ShouldNotContainGoogleTestIndicator() + { + Utils.BinaryFileContainsStrings(TestResources.TenSecondsWaiter, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers).Should().BeFalse(); + } + + [TestMethod] + [TestCategory(Unit)] + public void BinaryFileContainsStrings_EmptyFile_ShouldNotContainGoogleTestIndicator() + { + Utils.BinaryFileContainsStrings(TestResources.TenSecondsWaiter, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers).Should().BeFalse(); + } + [TestMethod] [TestCategory(Unit)] public void TimestampMessage_MessageIsNullOrEmpty_ResultIsTheSame() diff --git a/GoogleTestAdapter/Core/Core.csproj b/GoogleTestAdapter/Core/Core.csproj index 70a98ea32..a1c45d83e 100644 --- a/GoogleTestAdapter/Core/Core.csproj +++ b/GoogleTestAdapter/Core/Core.csproj @@ -70,6 +70,7 @@ + diff --git a/GoogleTestAdapter/Core/GoogleTestConstants.cs b/GoogleTestAdapter/Core/GoogleTestConstants.cs index 6aa8cb19c..21ea8346b 100644 --- a/GoogleTestAdapter/Core/GoogleTestConstants.cs +++ b/GoogleTestAdapter/Core/GoogleTestConstants.cs @@ -23,13 +23,21 @@ public static class GoogleTestConstants public const int ShuffleTestsSeedMinValue = 0; public static readonly int ShuffleTestsSeedMaxValue = int.Parse(ShuffleTestsSeedMaxValueAsString); - public const string ListTestsOption = " --gtest_list_tests"; + public const string ListTestsOption = "--gtest_list_tests"; public const string FilterOption = " --gtest_filter="; public const string TestBodySignature = "::TestBody"; public const string ParameterizedTestMarker = " # GetParam() = "; public const string TypedTestMarker = ". # TypeParam = "; + public static readonly string[] GoogleTestExecutableMarkers = + { + "This program contains tests written using Google Test. You can use the", + "For more information, please read the Google Test documentation at", + "Run only the tests whose name matches one of the positive patterns but", + ListTestsOption + }; + public static string GetResultXmlFileOption(string resultXmlFile) { return "--gtest_output=\"xml:" + resultXmlFile + "\""; diff --git a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs index c6559e381..e5a36091c 100644 --- a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs +++ b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.Common; using GoogleTestAdapter.DiaResolver; @@ -12,6 +12,7 @@ using System.IO; using System.Linq; using System.Security.Policy; +using System.Text; using System.Text.RegularExpressions; namespace GoogleTestAdapter @@ -20,8 +21,6 @@ public class GoogleTestDiscoverer { public const string GoogleTestIndicator = ".is_google_test"; - private static readonly Regex CompiledTestFinderRegex = new Regex(SettingsWrapper.TestFinderRegex, RegexOptions.Compiled); - private readonly ILogger _logger; private readonly SettingsWrapper _settings; private readonly IDiaResolverFactory _diaResolverFactory; @@ -35,25 +34,25 @@ public GoogleTestDiscoverer(ILogger logger, SettingsWrapper settings, IDiaResolv public void DiscoverTests(IEnumerable executables, ITestFrameworkReporter reporter) { - IList googleTestExecutables = GetAllGoogleTestExecutables(executables); if (_settings.UseNewTestExecutionFramework) { - var discoveryActions = googleTestExecutables + var discoveryActions = executables .Select(e => (Action)(() => DiscoverTests(e, reporter, _settings.Clone(), _logger, _diaResolverFactory))) .ToArray(); Utils.SpawnAndWait(discoveryActions); } else { - foreach (string executable in googleTestExecutables) + foreach (string executable in executables) { _settings.ExecuteWithSettingsForExecutable(executable, () => { - if (!VerifyExecutableTrust(executable, _logger)) - return; - - IList testCases = GetTestsFromExecutable(executable); - reporter.ReportTestsFound(testCases); + if (VerifyExecutableTrust(executable, _logger) && + IsGoogleTestExecutable(executable, _settings.TestDiscoveryRegex, _logger)) + { + IList testCases = GetTestsFromExecutable(executable); + reporter.ReportTestsFound(testCases); + } }, _logger); } } @@ -63,7 +62,8 @@ private static void DiscoverTests(string executable, ITestFrameworkReporter repo { settings.ExecuteWithSettingsForExecutable(executable, () => { - if (!VerifyExecutableTrust(executable, logger)) + if (!VerifyExecutableTrust(executable, logger) + || !IsGoogleTestExecutable(executable, settings.TestDiscoveryRegex, logger)) return; int nrOfTestCases = 0; @@ -93,7 +93,7 @@ public IList GetTestsFromExecutable(string executable) return testCases; } - public bool IsGoogleTestExecutable(string executable, string customRegex = "") + public static bool IsGoogleTestExecutable(string executable, string customRegex, ILogger logger) { string googleTestIndicatorFile = $"{executable}{GoogleTestIndicator}"; if (File.Exists(googleTestIndicatorFile)) @@ -101,41 +101,29 @@ public bool IsGoogleTestExecutable(string executable, string customRegex = "") _logger.DebugInfo(String.Format(Resources.FileFound, executable)); return true; } - _logger.DebugInfo(String.Format(Resources.FileNotFound, executable)); - bool matches; - string regex; if (string.IsNullOrWhiteSpace(customRegex)) { - regex = SettingsWrapper.TestFinderRegex; - matches = CompiledTestFinderRegex.IsMatch(executable); - _logger.DebugInfo(String.Format(matches ? Resources.MatchesDefault : Resources.DoesntMatchDefault, executable, regex)); + if (Utils.BinaryFileContainsStrings(executable, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers)) + { + logger.DebugInfo($"Google Test indicators found in executable {executable}"); + return true; + } } else { - regex = customRegex; - matches = SafeMatches(executable, customRegex); - _logger.DebugInfo(String.Format(matches ? Resources.MatchesCustom : Resources.DoesntMatchCustom, executable, regex)); - } - - return matches; - } - - private IList GetAllGoogleTestExecutables(IEnumerable allExecutables) - { - IList testExecutables = new List(); - foreach (string executable in allExecutables) - { - _settings.ExecuteWithSettingsForExecutable(executable, () => + if (SafeMatches(executable, customRegex, logger)) { - if (IsGoogleTestExecutable(executable, _settings.TestDiscoveryRegex)) - testExecutables.Add(Path.GetFullPath(executable)); - }, _logger); + logger.DebugInfo($"Custom regex '{customRegex}' matches executable '{executable}'"); + return true; + } } - return testExecutables; + + logger.DebugInfo($"File does not seem to be Google Test executable: '{executable}'"); + return false; } - private bool SafeMatches(string executable, string regex) + private static bool SafeMatches(string executable, string regex, ILogger logger) { bool matches = false; try @@ -144,11 +132,11 @@ private bool SafeMatches(string executable, string regex) } catch (ArgumentException e) { - _logger.LogError(String.Format(Resources.RegexParseError, regex, e.Message)); + logger.LogError(String.Format(Resources.RegexParseError, regex, e.Message)); } catch (RegexMatchTimeoutException e) { - _logger.LogError(String.Format(Resources.RegexTimedOut, regex, e.Message)); + logger.LogError(String.Format(Resources.RegexTimedOut, regex, e.Message)); } return matches; } diff --git a/GoogleTestAdapter/Core/Helpers/ByteUtils.cs b/GoogleTestAdapter/Core/Helpers/ByteUtils.cs new file mode 100644 index 000000000..fa772a2e0 --- /dev/null +++ b/GoogleTestAdapter/Core/Helpers/ByteUtils.cs @@ -0,0 +1,88 @@ +using System; + +namespace GoogleTestAdapter.Helpers +{ + public static class ByteUtils + { + /// + /// Implementation of the Boyer-Moore algorithm + /// (after https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm, Java version) + /// + /// Index of the first occurence of pattern, or -1 if pattern is not contained in bytes + public static int IndexOf(this byte[] bytes, byte[] pattern) + { + if (pattern.Length == 0) + return 0; + + int[] byteBasedJumpTable = CreateByteBasedJumpTable(pattern); + int[] offsetBasedJumpTable = CreateOffsetBasedJumpTable(pattern); + + for (int posInBytes = pattern.Length - 1; posInBytes < bytes.Length;) + { + int posInPattern; + for (posInPattern = pattern.Length - 1; pattern[posInPattern] == bytes[posInBytes]; --posInBytes, --posInPattern) + { + if (posInPattern == 0) + return posInBytes; + } + + posInBytes += Math.Max(offsetBasedJumpTable[pattern.Length - 1 - posInPattern], byteBasedJumpTable[bytes[posInBytes]]); + } + + return -1; + } + + private static int[] CreateByteBasedJumpTable(byte[] pattern) + { + int[] table = new int[byte.MaxValue + 1]; + for (int i = 0; i < table.Length; ++i) + { + table[i] = pattern.Length; + } + for (int i = 0; i < pattern.Length - 1; ++i) + { + table[pattern[i]] = pattern.Length - 1 - i; + } + return table; + } + + private static int[] CreateOffsetBasedJumpTable(byte[] pattern) + { + int[] table = new int[pattern.Length]; + int lastPrefixPosition = pattern.Length; + for (int i = pattern.Length; i > 0; i--) + { + if (IsPrefix(pattern, i)) + lastPrefixPosition = i; + + table[pattern.Length - i] = lastPrefixPosition - i + pattern.Length; + } + for (int i = 0; i < pattern.Length - 1; i++) + { + int suffixLength = GetSuffixLength(pattern, i); + table[suffixLength] = pattern.Length - 1 - i + suffixLength; + } + return table; + } + + private static bool IsPrefix(byte[] pattern, int position) + { + for (int i = position, j = 0; i < pattern.Length; i++, j++) + { + if (pattern[i] != pattern[j]) + return false; + } + return true; + } + + private static int GetSuffixLength(byte[] pattern, int position) + { + int length = 0; + for (int i = position, j = pattern.Length - 1; i >= 0 && pattern[i] == pattern[j]; i--, j--) + { + length++; + } + return length; + } + } +} \ No newline at end of file diff --git a/GoogleTestAdapter/Core/Helpers/Utils.cs b/GoogleTestAdapter/Core/Helpers/Utils.cs index 8158d2d93..91f797300 100644 --- a/GoogleTestAdapter/Core/Helpers/Utils.cs +++ b/GoogleTestAdapter/Core/Helpers/Utils.cs @@ -1,8 +1,11 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; +using System.Collections.Generic; using System.Globalization; using System.IO; +using System.Linq; +using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; @@ -65,6 +68,12 @@ public static bool SpawnAndWait(Action[] actions, int timeoutInMs = Timeout.Infi return Task.WaitAll(tasks, timeoutInMs); } + public static bool BinaryFileContainsStrings(string executable, Encoding encoding, IEnumerable strings) + { + byte[] file = File.ReadAllBytes(executable); + return strings.All(s => file.IndexOf(encoding.GetBytes(s)) >= 0); + } + public static void ValidateRegex(string pattern) { try diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index 680dc54b9..7253913e8 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -45,8 +45,6 @@ public class SettingsWrapper .OrderBy(p => p.Name) .ToArray(); - public const string TestFinderRegex = @"[Tt]est[s]?[0-9]*\.exe"; - private readonly IGoogleTestAdapterSettingsContainer _settingsContainer; public RegexTraitParser RegexTraitParser { private get; set; } diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs index 18d09a126..a3eeb6b68 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs @@ -45,7 +45,7 @@ public IList CreateTestCases(Action reportTestCase = null) { var launcher = new ProcessLauncher(_logger, _settings.GetPathExtension(_executable), null); int processExitCode; - standardOutput = launcher.GetOutputOfCommand("", _executable, GoogleTestConstants.ListTestsOption.Trim(), + standardOutput = launcher.GetOutputOfCommand("", _executable, GoogleTestConstants.ListTestsOption, false, false, out processExitCode); if (!CheckProcessExitCode(processExitCode, standardOutput)) @@ -54,7 +54,7 @@ public IList CreateTestCases(Action reportTestCase = null) catch (Exception e) { SequentialTestRunner.LogExecutionError(_logger, _executable, Path.GetFullPath(""), - GoogleTestConstants.ListTestsOption.Trim(), e); + GoogleTestConstants.ListTestsOption, e); return new List(); } @@ -136,7 +136,7 @@ private IList NewCreateTestcases(Action reportTestCase, List executor = new ProcessExecutor(null, _logger); processExitCode = executor.ExecuteCommandBlocking( _executable, - GoogleTestConstants.ListTestsOption.Trim(), + GoogleTestConstants.ListTestsOption, "", _settings.GetPathExtension(_executable), lineAction); @@ -149,7 +149,7 @@ private IList NewCreateTestcases(Action reportTestCase, List string dir = Path.GetDirectoryName(_executable); string file = Path.GetFileName(_executable); - string command = $@"cd ""{dir}""{Environment.NewLine}{file} {GoogleTestConstants.ListTestsOption.Trim()}"; + string command = $@"cd ""{dir}""{Environment.NewLine}{file} {GoogleTestConstants.ListTestsOption}"; _logger.LogError(String.Format(Resources.TestDiscoveryCancelled, _settings.TestDiscoveryTimeoutInSeconds, _executable)); _logger.DebugError(String.Format(Resources.TestCommandCanBeRun, Environment.NewLine, command)); @@ -172,7 +172,7 @@ private IList NewCreateTestcases(Action reportTestCase, List catch (Exception e) { SequentialTestRunner.LogExecutionError(_logger, _executable, Path.GetFullPath(""), - GoogleTestConstants.ListTestsOption.Trim(), e); + GoogleTestConstants.ListTestsOption, e); return new List(); } return testCases; @@ -183,7 +183,7 @@ private bool CheckProcessExitCode(int processExitCode, ICollection stand if (processExitCode != 0) { string messsage = String.Format(Resources.CouldNotListTestCases, _executable, processExitCode); - messsage += Environment.NewLine + String.Format(Resources.CommandExecuted, _executable, GoogleTestConstants.ListTestsOption.Trim(), Path.GetDirectoryName(_executable)); + messsage += Environment.NewLine + String.Format(Resources.CommandExecuted, _executable, GoogleTestConstants.ListTestsOption, Path.GetDirectoryName(_executable)); if (standardOutput.Count(s => !string.IsNullOrEmpty(s)) > 0) messsage += Environment.NewLine + Resources.OutputOfCommand + Environment.NewLine + string.Join(Environment.NewLine, standardOutput); else diff --git a/GoogleTestAdapter/Tests.Common/TestResources.cs b/GoogleTestAdapter/Tests.Common/TestResources.cs index fcd50d4bc..3ececf7e3 100644 --- a/GoogleTestAdapter/Tests.Common/TestResources.cs +++ b/GoogleTestAdapter/Tests.Common/TestResources.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 7/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Diagnostics.CodeAnalysis; @@ -34,6 +34,7 @@ public static class TestResources public const string Tests_DebugX86 = SampleTestsBuildDir + @"Debug\Tests_gta.exe"; public const string Tests_ReleaseX86 = SampleTestsBuildDir + @"Release\Tests_gta.exe"; public const string Tests_DebugX86_Gtest170 = SampleTestsBuildDir + @"Debug\Tests_1.7.0_gta.exe"; + public const string Tests_DebugX64 = SampleTestsSolutionDir + @"Debug-x64\Tests_gta.exe"; public const string Tests_ReleaseX64 = SampleTestsBuildDir + @"Release-x64\Tests_gta.exe"; public const string Tests_ReleaseX64_Output = TestdataDir + @"Tests_gta_exe_output.txt"; public const int NrOfTests = 94; diff --git a/README.md b/README.md index 8eeea343a..c4642bf5a 100644 --- a/README.md +++ b/README.md @@ -136,8 +136,8 @@ If you need to perform some setup or teardown tasks in addition to the setup/tea ##### None or not all of my tests show up * Switch on *Debug mode* at *Tools/Options/Google Test Adapter/General*, which will show on the test console whether your test executables are found by GTA. If they are not, you have two options: - * Configure a *Test discovery regex* at the same place. In case of GTA installation via NuGet, do not forget to add the regex to the solution config file (which might be a good idea anyways). * If your test executable is `..\FooTests.exe`, make sure that a file `..\FooTests.exe.is_google_test` exists. + * Configure a *Test discovery regex*. In case of GTA installation via NuGet, do not forget to add the regex to the solution config file (which might be a good idea anyways). * Your test executable can not run with command line option `--gtest_list_tests`, e.g. because it crashes. Make sure that your tests can be listed via command line; if they do not, debug your test executable, e.g. by making the according test project the startup project of your solution, and placing a breakpoint at the main method of your test executable. * If your project configuration contains references to DLLs which do not end up in the build directory (e.g. through *Project/Properties/Linker/Input/Additional Dependencies*), these DLLs will not be found when running your tests. Use option *PATH extension* to add the directories containing these DLLs to the test executables' PATH variable. * If your project happens to be a makefile project, there's a pitfall which will prevent GTA from discovering your tests: It appears that when importing a makefile project into VS, the *Output* setting of the project is populated from the makefile's content. However, if the makefile is edited later on such that the location of the generated test executable changes, VS does not find the test executable any more. One symptom of this is that your project can not be launched any more with `F5`. Make sure that the *Output* setting of the project is consistent with its makefile to avoid this problem. diff --git a/SampleTests/SampleTests.gta.runsettings b/SampleTests/SampleTests.gta.runsettings index 09e79336f..dc6cf34ce 100644 --- a/SampleTests/SampleTests.gta.runsettings +++ b/SampleTests/SampleTests.gta.runsettings @@ -6,13 +6,13 @@ -testdirectory=$(TestDir) Tests\Returns0.bat Tests\Returns0.bat - .*Tests.*_gta.exe $(SolutionDir) Tests\Returns1.bat + .*Tests.*_gta.exe Tests\Returns1.bat From fd0578330e1bdaee75603ccfc0a3eb3c455e3e2b Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 27 Sep 2017 01:38:01 +0000 Subject: [PATCH 36/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl | 555 +++++++++++++++++- .../PTB/GoogleTestAdapter.TestAdapter.dll.lcl | 33 +- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 35 +- 3 files changed, 613 insertions(+), 10 deletions(-) diff --git a/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl index eaa3b7a90..b117a5377 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.Core.dll.lcl @@ -73,6 +73,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136,6 +181,15 @@ + + + + + + + + + @@ -145,6 +199,15 @@ + + + + + + + + + @@ -154,6 +217,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -406,6 +505,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649,6 +1189,15 @@ + + + + + + + + + @@ -751,7 +1300,7 @@ - + @@ -784,7 +1333,7 @@ - + @@ -820,7 +1369,7 @@ - + diff --git a/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl index feb85b4d8..5303162a8 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,6 +10,15 @@ + + + + + + + + + @@ -145,6 +154,15 @@ + + + + + + + + + @@ -154,6 +172,15 @@ + + + + + + + + + @@ -310,7 +337,7 @@ - + @@ -343,7 +370,7 @@ - + @@ -379,7 +406,7 @@ - + diff --git a/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 73fff0b74..14c4902fa 100644 --- a/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/PTB/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -103,13 +103,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -142,7 +169,7 @@ - + @@ -178,7 +205,7 @@ - + From 88f005e9a1fe41c8bd867175f699330d37065ddd Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Tue, 26 Sep 2017 15:43:31 -0700 Subject: [PATCH 37/92] Merge fix-ups --- GoogleTestAdapter/Core/GoogleTestDiscoverer.cs | 4 ++-- GoogleTestAdapter/Core/Settings/SettingsWrapper.cs | 2 +- GoogleTestAdapter/Tests.Common/TestResources.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs index e5a36091c..f3e6fb0bd 100644 --- a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs +++ b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs @@ -98,7 +98,7 @@ public static bool IsGoogleTestExecutable(string executable, string customRegex, string googleTestIndicatorFile = $"{executable}{GoogleTestIndicator}"; if (File.Exists(googleTestIndicatorFile)) { - _logger.DebugInfo(String.Format(Resources.FileFound, executable)); + logger.DebugInfo(String.Format(Resources.FileFound, executable)); return true; } @@ -143,7 +143,7 @@ private static bool SafeMatches(string executable, string regex, ILogger logger) private static bool VerifyExecutableTrust(string executable, ILogger logger) { - var zone = Zone.CreateFromUrl(executable); + var zone = Zone.CreateFromUrl(Path.GetFullPath(executable)); if (zone.SecurityZone != System.Security.SecurityZone.MyComputer) { logger.LogError(String.Format(Resources.ExecutableError, executable)); diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index 7253913e8..b60174ed0 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -243,7 +243,7 @@ public static string ReplacePlaceholders(string userParameters, string executabl public static readonly string OptionTestDiscoveryRegex = Resources.OptionTestDiscoveryRegex; public const string OptionTestDiscoveryRegexDefaultValue = ""; - public static readonly string OptionTestDiscoveryRegexDescription = string.Format(Resources.OptionTestDiscoveryRegexDescription, TestFinderRegex); + public static readonly string OptionTestDiscoveryRegexDescription = string.Format(Resources.OptionTestDiscoveryRegexDescription, String.Empty); public virtual string TestDiscoveryRegex => _currentSettings.TestDiscoveryRegex ?? OptionTestDiscoveryRegexDefaultValue; diff --git a/GoogleTestAdapter/Tests.Common/TestResources.cs b/GoogleTestAdapter/Tests.Common/TestResources.cs index 3ececf7e3..a7a2852bc 100644 --- a/GoogleTestAdapter/Tests.Common/TestResources.cs +++ b/GoogleTestAdapter/Tests.Common/TestResources.cs @@ -34,7 +34,7 @@ public static class TestResources public const string Tests_DebugX86 = SampleTestsBuildDir + @"Debug\Tests_gta.exe"; public const string Tests_ReleaseX86 = SampleTestsBuildDir + @"Release\Tests_gta.exe"; public const string Tests_DebugX86_Gtest170 = SampleTestsBuildDir + @"Debug\Tests_1.7.0_gta.exe"; - public const string Tests_DebugX64 = SampleTestsSolutionDir + @"Debug-x64\Tests_gta.exe"; + public const string Tests_DebugX64 = SampleTestsBuildDir + @"Debug-x64\Tests_gta.exe"; public const string Tests_ReleaseX64 = SampleTestsBuildDir + @"Release-x64\Tests_gta.exe"; public const string Tests_ReleaseX64_Output = TestdataDir + @"Tests_gta_exe_output.txt"; public const int NrOfTests = 94; From 5d0897ecb6f2690acd24f9173141fe31977286f6 Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Tue, 26 Sep 2017 16:11:09 -0700 Subject: [PATCH 38/92] Adjust debug messages to avoid resource changes --- GoogleTestAdapter/Core/GoogleTestDiscoverer.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs index f3e6fb0bd..c6831ffb3 100644 --- a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs +++ b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs @@ -106,7 +106,6 @@ public static bool IsGoogleTestExecutable(string executable, string customRegex, { if (Utils.BinaryFileContainsStrings(executable, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers)) { - logger.DebugInfo($"Google Test indicators found in executable {executable}"); return true; } } @@ -114,12 +113,12 @@ public static bool IsGoogleTestExecutable(string executable, string customRegex, { if (SafeMatches(executable, customRegex, logger)) { - logger.DebugInfo($"Custom regex '{customRegex}' matches executable '{executable}'"); + logger.DebugInfo(String.Format(Resources.MatchesCustom, executable, customRegex)); return true; } } - logger.DebugInfo($"File does not seem to be Google Test executable: '{executable}'"); + logger.DebugInfo(String.Format(Resources.FileNotFound, executable)); return false; } From bd3c4ad4dde455d86421477a04645098abfb1bf3 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 27 Sep 2017 07:38:11 +0000 Subject: [PATCH 39/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl | 555 +++++++++++++++++- .../JPN/GoogleTestAdapter.TestAdapter.dll.lcl | 33 +- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 35 +- 3 files changed, 613 insertions(+), 10 deletions(-) diff --git a/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl index 8d5d1a230..13f33fc68 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.Core.dll.lcl @@ -73,6 +73,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136,6 +181,15 @@ + + + + + + + + + @@ -145,6 +199,15 @@ + + + + + + + + + @@ -154,6 +217,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -406,6 +505,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649,6 +1189,15 @@ + + + + + + + + + @@ -751,7 +1300,7 @@ - + @@ -784,7 +1333,7 @@ - + @@ -820,7 +1369,7 @@ - + diff --git a/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl index af81a4b6d..5cf22d665 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,6 +10,15 @@ + + + + + + + + + @@ -145,6 +154,15 @@ + + + + + + + + + @@ -154,6 +172,15 @@ + + + + + + + + + @@ -310,7 +337,7 @@ - + @@ -343,7 +370,7 @@ - + @@ -379,7 +406,7 @@ - + diff --git a/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index e43ffd274..39775af47 100644 --- a/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/JPN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -103,13 +103,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -142,7 +169,7 @@ - + @@ -178,7 +205,7 @@ - + From a0c32a27b993219b090bc32eb2f9b4be23a27164 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 27 Sep 2017 13:38:12 +0000 Subject: [PATCH 40/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl | 555 +++++++++++++++++- .../CHS/GoogleTestAdapter.TestAdapter.dll.lcl | 33 +- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 35 +- loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl | 183 ++++++ .../CSY/GoogleTestAdapter.TestAdapter.dll.lcl | 9 + .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl | 183 ++++++ .../ESN/GoogleTestAdapter.TestAdapter.dll.lcl | 9 + .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl | 555 +++++++++++++++++- .../KOR/GoogleTestAdapter.TestAdapter.dll.lcl | 33 +- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 35 +- loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl | 183 ++++++ .../PLK/GoogleTestAdapter.TestAdapter.dll.lcl | 9 + .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 9 + 15 files changed, 1831 insertions(+), 22 deletions(-) diff --git a/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl index 4a9a21c07..1c9fb4283 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.Core.dll.lcl @@ -73,6 +73,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136,6 +181,15 @@ + + + + + + + + + @@ -145,6 +199,15 @@ + + + + + + + + + @@ -154,6 +217,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -406,6 +505,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649,6 +1189,15 @@ + + + + + + + + + @@ -751,7 +1300,7 @@ - + @@ -784,7 +1333,7 @@ - + @@ -820,7 +1369,7 @@ - + diff --git a/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl index 05f915983..7a335ccd2 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,6 +10,15 @@ + + + + + + + + + @@ -145,6 +154,15 @@ + + + + + + + + + @@ -154,6 +172,15 @@ + + + + + + + + + @@ -310,7 +337,7 @@ - + @@ -343,7 +370,7 @@ - + @@ -379,7 +406,7 @@ - + diff --git a/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 4915237fc..788623e32 100644 --- a/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CHS/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -103,13 +103,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -142,7 +169,7 @@ - + @@ -178,7 +205,7 @@ - + diff --git a/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl index 9ca253ab4..2f3efec76 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.Core.dll.lcl @@ -76,30 +76,45 @@ + + + + + + + + + + + + + + + @@ -169,6 +184,9 @@ + + + @@ -184,6 +202,9 @@ + + + @@ -199,24 +220,36 @@ + + + + + + + + + + + + @@ -475,294 +508,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1012,6 +1192,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl index 2fbf7fbe9..83b0ef44e 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,6 +13,9 @@ + + + @@ -154,6 +157,9 @@ + + + @@ -169,6 +175,9 @@ + + + diff --git a/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 8a487b4e9..23834d4c1 100644 --- a/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CSY/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -106,18 +106,27 @@ + + + + + + + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl index 8215804eb..0210e09fd 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.Core.dll.lcl @@ -76,30 +76,45 @@ + + + + + + + + + + + + + + + @@ -169,6 +184,9 @@ + + + @@ -184,6 +202,9 @@ + + + @@ -199,24 +220,36 @@ + + + + + + + + + + + + @@ -475,294 +508,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1012,6 +1192,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl index 3e6fbc7dd..9ef0fe39c 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,6 +13,9 @@ + + + @@ -154,6 +157,9 @@ + + + @@ -169,6 +175,9 @@ + + + diff --git a/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index d537f7553..062b49ead 100644 --- a/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/ESN/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -106,18 +106,27 @@ + + + + + + + + + diff --git a/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl index 695839eb4..d17dcb854 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.Core.dll.lcl @@ -73,6 +73,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136,6 +181,15 @@ + + + + + + + + + @@ -145,6 +199,15 @@ + + + + + + + + + @@ -154,6 +217,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -406,6 +505,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649,6 +1189,15 @@ + + + + + + + + + @@ -751,7 +1300,7 @@ - + @@ -784,7 +1333,7 @@ - + @@ -820,7 +1369,7 @@ - + diff --git a/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl index 3d06ea7ba..45b373da8 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,6 +10,15 @@ + + + + + + + + + @@ -145,6 +154,15 @@ + + + + + + + + + @@ -154,6 +172,15 @@ + + + + + + + + + @@ -310,7 +337,7 @@ - + @@ -343,7 +370,7 @@ - + @@ -379,7 +406,7 @@ - + diff --git a/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 0a4c0b242..3d092701a 100644 --- a/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/KOR/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -103,13 +103,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -142,7 +169,7 @@ - + @@ -178,7 +205,7 @@ - + diff --git a/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl index 9c8535290..2f2ffc65d 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.Core.dll.lcl @@ -76,30 +76,45 @@ + + + + + + + + + + + + + + + @@ -169,6 +184,9 @@ + + + @@ -184,6 +202,9 @@ + + + @@ -199,24 +220,36 @@ + + + + + + + + + + + + @@ -475,294 +508,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1012,6 +1192,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl index 6447e0153..45a6af12a 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,6 +13,9 @@ + + + @@ -154,6 +157,9 @@ + + + @@ -169,6 +175,9 @@ + + + diff --git a/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index fc2ef840f..dfaf8f5d9 100644 --- a/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/PLK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -106,18 +106,27 @@ + + + + + + + + + From b798bed0308d48264083a297a1262a0a74b651c6 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 27 Sep 2017 19:38:04 +0000 Subject: [PATCH 41/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl | 555 +++++++++++++++++- .../CHT/GoogleTestAdapter.TestAdapter.dll.lcl | 33 +- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 35 +- loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl | 183 ++++++ .../FRA/GoogleTestAdapter.TestAdapter.dll.lcl | 9 + .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl | 183 ++++++ .../TRK/GoogleTestAdapter.TestAdapter.dll.lcl | 9 + .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 11 +- 9 files changed, 1017 insertions(+), 12 deletions(-) diff --git a/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl index 1b6ae6240..4fdde988c 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.Core.dll.lcl @@ -73,6 +73,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136,6 +181,15 @@ + + + + + + + + + @@ -145,6 +199,15 @@ + + + + + + + + + @@ -154,6 +217,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -406,6 +505,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649,6 +1189,15 @@ + + + + + + + + + @@ -751,7 +1300,7 @@ - + @@ -784,7 +1333,7 @@ - + @@ -820,7 +1369,7 @@ - + diff --git a/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl index dac72533c..b31ca8e63 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,6 +10,15 @@ + + + + + + + + + @@ -145,6 +154,15 @@ + + + + + + + + + @@ -154,6 +172,15 @@ + + + + + + + + + @@ -310,7 +337,7 @@ - + @@ -343,7 +370,7 @@ - + @@ -379,7 +406,7 @@ - + diff --git a/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 34a26ce0a..79e7097a7 100644 --- a/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/CHT/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -103,13 +103,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -142,7 +169,7 @@ - + @@ -178,7 +205,7 @@ - + diff --git a/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl index 6ccacefbe..cc1e527d5 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.Core.dll.lcl @@ -76,30 +76,45 @@ + + + + + + + + + + + + + + + @@ -169,6 +184,9 @@ + + + @@ -184,6 +202,9 @@ + + + @@ -199,24 +220,36 @@ + + + + + + + + + + + + @@ -475,294 +508,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1012,6 +1192,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl index 69b8039eb..fc1390ae9 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,6 +13,9 @@ + + + @@ -154,6 +157,9 @@ + + + @@ -169,6 +175,9 @@ + + + diff --git a/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 27e21dcd6..3c0582d95 100644 --- a/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/FRA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -106,18 +106,27 @@ + + + + + + + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl index 18039d113..1ae72a4c8 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl @@ -76,30 +76,45 @@ + + + + + + + + + + + + + + + @@ -169,6 +184,9 @@ + + + @@ -184,6 +202,9 @@ + + + @@ -199,24 +220,36 @@ + + + + + + + + + + + + @@ -475,294 +508,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1012,6 +1192,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl index 2cca2d370..481651d3b 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,6 +13,9 @@ + + + @@ -154,6 +157,9 @@ + + + @@ -169,6 +175,9 @@ + + + diff --git a/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index ae35a1be7..94b799f05 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -106,18 +106,27 @@ + + + + + + + + + From 0318762acbd486b18947f0bbd0bffa202a33f8bf Mon Sep 17 00:00:00 2001 From: Lukasz Mendakiewicz Date: Wed, 27 Sep 2017 15:58:09 -0700 Subject: [PATCH 42/92] Discover dynamically linked Google Test executables --- .../Core.Tests/GoogleTestDiscovererTests.cs | 22 ++++- GoogleTestAdapter/Core/GoogleTestConstants.cs | 4 +- .../Core/GoogleTestDiscoverer.cs | 3 +- GoogleTestAdapter/DiaResolver/PeParser.cs | 29 +++++- .../FakeGtestDll/Application.cpp | 6 ++ .../FakeGtestDllApplication-x64.vcxproj | 97 +++++++++++++++++++ ...akeGtestDllApplication-x64.vcxproj.filters | 6 ++ .../FakeGtestDllApplication.vcxproj | 97 +++++++++++++++++++ .../FakeGtestDllApplication.vcxproj.filters | 6 ++ .../FakeGtestDllLibrary-x64.vcxproj | 94 ++++++++++++++++++ .../FakeGtestDllLibrary-x64.vcxproj.filters | 6 ++ .../FakeGtestDll/FakeGtestDllLibrary.vcxproj | 94 ++++++++++++++++++ .../FakeGtestDllLibrary.vcxproj.filters | 6 ++ GoogleTestAdapter/FakeGtestDll/Library.cpp | 1 + GoogleTestAdapter/GoogleTestAdapter.sln | 28 ++++++ .../Tests.Common/TestResources.cs | 2 + 16 files changed, 494 insertions(+), 7 deletions(-) create mode 100644 GoogleTestAdapter/FakeGtestDll/Application.cpp create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj.filters create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj.filters create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj.filters create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj create mode 100644 GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj.filters create mode 100644 GoogleTestAdapter/FakeGtestDll/Library.cpp diff --git a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs index 5da01e4ef..4f8debd4b 100644 --- a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs +++ b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -82,6 +82,26 @@ public void IsGoogleTestExecutable_WithoutIndicatorFile_IsRecognizedAsTestExecut } } + [TestMethod] + [TestCategory(Unit)] + public void IsGoogleTestExecutable_DependingOnGtestDll_IsRecognizedAsTestExecutable() + { + bool result = GoogleTestDiscoverer + .IsGoogleTestExecutable(TestResources.FakeGtestDllExe, "", TestEnvironment.Logger); + + result.Should().BeTrue(); + } + + [TestMethod] + [TestCategory(Unit)] + public void IsGoogleTestExecutable_DependingOnGtestDllX64_IsRecognizedAsTestExecutable() + { + bool result = GoogleTestDiscoverer + .IsGoogleTestExecutable(TestResources.FakeGtestDllExeX64, "", TestEnvironment.Logger); + + result.Should().BeTrue(); + } + [TestMethod] [TestCategory(Integration)] public void GetTestsFromExecutable_SampleTestsDebug_FindsTestsWithLocation() diff --git a/GoogleTestAdapter/Core/GoogleTestConstants.cs b/GoogleTestAdapter/Core/GoogleTestConstants.cs index 21ea8346b..23f9b895e 100644 --- a/GoogleTestAdapter/Core/GoogleTestConstants.cs +++ b/GoogleTestAdapter/Core/GoogleTestConstants.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 9/2017. using System; @@ -30,6 +30,8 @@ public static class GoogleTestConstants public const string ParameterizedTestMarker = " # GetParam() = "; public const string TypedTestMarker = ". # TypeParam = "; + public const string GoogleTestDllMarker = "gtest.dll"; + public static readonly string[] GoogleTestExecutableMarkers = { "This program contains tests written using Google Test. You can use the", diff --git a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs index c6831ffb3..398eb5149 100644 --- a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs +++ b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs @@ -104,7 +104,8 @@ public static bool IsGoogleTestExecutable(string executable, string customRegex, if (string.IsNullOrWhiteSpace(customRegex)) { - if (Utils.BinaryFileContainsStrings(executable, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers)) + if (PeParser.FindImport(executable, GoogleTestConstants.GoogleTestDllMarker, StringComparison.OrdinalIgnoreCase, logger) + || Utils.BinaryFileContainsStrings(executable, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers)) { return true; } diff --git a/GoogleTestAdapter/DiaResolver/PeParser.cs b/GoogleTestAdapter/DiaResolver/PeParser.cs index 794e45123..7da561970 100644 --- a/GoogleTestAdapter/DiaResolver/PeParser.cs +++ b/GoogleTestAdapter/DiaResolver/PeParser.cs @@ -246,22 +246,43 @@ private static void ParsePeFile(string executable, ILogger logger, Action ParseImports(string executable, ILogger logger) + private static void ProcessImports(string executable, ILogger logger, Func predicate) { - var imports = new List(); ParsePeFile(executable, logger, (image) => { + bool shouldContinue = true; uint size = 0u; var directoryEntry = (IMAGE_IMPORT_DESCRIPTOR*)NativeMethods.ImageDirectoryEntryToData(image.MappedAddress, 0, 1, &size); - while (directoryEntry->OriginalFirstThunk != 0u) + while (shouldContinue && directoryEntry->OriginalFirstThunk != 0u) { - imports.Add(GetString(image, directoryEntry->Name)); + shouldContinue = predicate(GetString(image, directoryEntry->Name)); directoryEntry++; } }); + } + + public static List ParseImports(string executable, ILogger logger) + { + var imports = new List(); + ProcessImports(executable, logger, (import) => + { + imports.Add(import); + return true; // Always continue. + }); return imports; } + public static bool FindImport(string executable, string import, StringComparison comparisonType, ILogger logger) + { + var found = false; + ProcessImports(executable, logger, (currentImport) => + { + found = String.Compare(import, currentImport, comparisonType) == 0; + return !found; // Continue only if not found yet. + }); + return found; + } + private static string PtrToStringUtf8(IntPtr ptr) { if (ptr == IntPtr.Zero) diff --git a/GoogleTestAdapter/FakeGtestDll/Application.cpp b/GoogleTestAdapter/FakeGtestDll/Application.cpp new file mode 100644 index 000000000..c83a138d7 --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/Application.cpp @@ -0,0 +1,6 @@ +__declspec(dllimport) void FakeGtestDllLibrary_ExportedFunction(); + +int main() +{ + FakeGtestDllLibrary_ExportedFunction(); +} diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj new file mode 100644 index 000000000..75991a89d --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj @@ -0,0 +1,97 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {05C435E1-603C-4402-B28C-E54932F3131C} + Win32Proj + FakeGtestDllApplication + 8.1 + + + + + Application + true + v100 + v110 + v120 + v140 + v141 + Unicode + + + Application + false + v100 + v110 + v120 + v140 + v141 + true + Unicode + + + + + + + + + + + + + + + true + + + false + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Console + true + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Console + true + + + + + + + + {8c66b902-b3b3-40c1-b178-7f5405f654b0} + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj.filters b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj.filters new file mode 100644 index 000000000..ebc9c0a7b --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication-x64.vcxproj.filters @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj new file mode 100644 index 000000000..49430806f --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj @@ -0,0 +1,97 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {C2601F9E-8B97-4901-85F4-2531102543C8} + Win32Proj + FakeGtestDllApplication + 8.1 + + + + + Application + true + v100 + v110 + v120 + v140 + v141 + Unicode + + + Application + false + v100 + v110 + v120 + v140 + v141 + true + Unicode + + + + + + + + + + + + + + + true + + + false + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Console + true + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Console + true + + + + + + + + {db701549-3f79-4d1d-9db9-ca55683d679e} + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj.filters b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj.filters new file mode 100644 index 000000000..ebc9c0a7b --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllApplication.vcxproj.filters @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj new file mode 100644 index 000000000..9a69bc133 --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj @@ -0,0 +1,94 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {8C66B902-B3B3-40C1-B178-7F5405F654B0} + Win32Proj + FakeGtestDllLibrary + 8.1 + + + + + DynamicLibrary + true + v100 + v110 + v120 + v140 + v141 + Unicode + + + DynamicLibrary + false + v100 + v110 + v120 + v140 + v141 + true + Unicode + + + + + + + + + + + + + + + true + gtest + + + false + gtest + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Windows + true + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Windows + true + + + + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj.filters b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj.filters new file mode 100644 index 000000000..e82218324 --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary-x64.vcxproj.filters @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj new file mode 100644 index 000000000..ee54d657c --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj @@ -0,0 +1,94 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {DB701549-3F79-4D1D-9DB9-CA55683D679E} + Win32Proj + FakeGtestDllLibrary + 8.1 + + + + + DynamicLibrary + true + v100 + v110 + v120 + v140 + v141 + Unicode + + + DynamicLibrary + false + v100 + v110 + v120 + v140 + v141 + true + Unicode + + + + + + + + + + + + + + + true + gtest + + + false + gtest + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Windows + true + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + + Windows + true + + + + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj.filters b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj.filters new file mode 100644 index 000000000..e82218324 --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/FakeGtestDllLibrary.vcxproj.filters @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/FakeGtestDll/Library.cpp b/GoogleTestAdapter/FakeGtestDll/Library.cpp new file mode 100644 index 000000000..7b03763d7 --- /dev/null +++ b/GoogleTestAdapter/FakeGtestDll/Library.cpp @@ -0,0 +1 @@ +__declspec(dllexport) void FakeGtestDllLibrary_ExportedFunction() {} \ No newline at end of file diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index 7a4a8f57b..e80257e60 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -132,6 +132,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SemaphoreExe", "SemaphoreEx EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnicodeNameExe", "UnicodeNameExe\UnicodeNameExe.vcxproj", "{8B27FD59-F03C-468E-B878-CFFC7484B7F7}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeGtestDllLibrary", "FakeGtestDll\FakeGtestDllLibrary.vcxproj", "{DB701549-3F79-4D1D-9DB9-CA55683D679E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeGtestDllLibrary-x64", "FakeGtestDll\FakeGtestDllLibrary-x64.vcxproj", "{8C66B902-B3B3-40C1-B178-7F5405F654B0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeGtestDllApplication", "FakeGtestDll\FakeGtestDllApplication.vcxproj", "{C2601F9E-8B97-4901-85F4-2531102543C8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeGtestDllApplication-x64", "FakeGtestDll\FakeGtestDllApplication-x64.vcxproj", "{05C435E1-603C-4402-B28C-E54932F3131C}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution VsPackage.Shared\VsPackage.Shared.projitems*{55294b5f-a075-43f2-b0e9-2b11925e8b91}*SharedItemsImports = 4 @@ -255,6 +263,22 @@ Global {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Debug|Any CPU.Build.0 = Debug|Win32 {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Release|Any CPU.ActiveCfg = Release|Win32 {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Release|Any CPU.Build.0 = Release|Win32 + {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|Any CPU.Build.0 = Debug|Win32 + {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|Any CPU.ActiveCfg = Release|Win32 + {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|Any CPU.Build.0 = Release|Win32 + {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|Any CPU.ActiveCfg = Debug|x64 + {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|Any CPU.Build.0 = Debug|x64 + {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|Any CPU.ActiveCfg = Release|x64 + {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|Any CPU.Build.0 = Release|x64 + {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|Any CPU.Build.0 = Debug|Win32 + {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|Any CPU.ActiveCfg = Release|Win32 + {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|Any CPU.Build.0 = Release|Win32 + {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|Any CPU.ActiveCfg = Debug|x64 + {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|Any CPU.Build.0 = Debug|x64 + {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.ActiveCfg = Release|x64 + {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -284,6 +308,10 @@ Global {2E3221EB-86DA-427D-84EC-DEFD3F966D9A} = {1FF56AF6-0ACE-4FE8-B802-4832703EC2DC} {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43} = {475245AA-A07D-41D8-BC84-959C5E12A52C} {8B27FD59-F03C-468E-B878-CFFC7484B7F7} = {475245AA-A07D-41D8-BC84-959C5E12A52C} + {DB701549-3F79-4D1D-9DB9-CA55683D679E} = {475245AA-A07D-41D8-BC84-959C5E12A52C} + {8C66B902-B3B3-40C1-B178-7F5405F654B0} = {475245AA-A07D-41D8-BC84-959C5E12A52C} + {C2601F9E-8B97-4901-85F4-2531102543C8} = {475245AA-A07D-41D8-BC84-959C5E12A52C} + {05C435E1-603C-4402-B28C-E54932F3131C} = {475245AA-A07D-41D8-BC84-959C5E12A52C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C942DDD5-B04E-4D57-BA9F-A444392C9480} diff --git a/GoogleTestAdapter/Tests.Common/TestResources.cs b/GoogleTestAdapter/Tests.Common/TestResources.cs index a7a2852bc..d5cce83a2 100644 --- a/GoogleTestAdapter/Tests.Common/TestResources.cs +++ b/GoogleTestAdapter/Tests.Common/TestResources.cs @@ -28,6 +28,8 @@ public static class TestResources public const string TenSecondsWaiter = GoogleTestAdapterBuildDir + @"TenSecondsWaiter\TenSecondsWaiter.exe"; public const string AlwaysCrashingExe = GoogleTestAdapterBuildDir + @"CrashingExe\CrashingExe.exe"; public const string AlwaysFailingExe = GoogleTestAdapterBuildDir + @"FailingExe\FailingExe.exe"; + public const string FakeGtestDllExe = GoogleTestAdapterBuildDir + @"FakeGtestDllApplication\FakeGtestDllApplication.exe"; + public const string FakeGtestDllExeX64 = GoogleTestAdapterBuildDir + @"FakeGtestDllApplication-x64\FakeGtestDllApplication-x64.exe"; public const string SemaphoreExe = GoogleTestAdapterBuildDir + @"SemaphoreExe\SemaphoreExe.exe"; public const string UnicodeNameExe = GoogleTestAdapterBuildDir + @"UnicodeNameExe\㐀㕵ExtAxCP936丂狛狜.exe"; From 45f55e6e785eedb2173058534ebc6f5afada827f Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 28 Sep 2017 01:38:14 +0000 Subject: [PATCH 43/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl | 555 +++++++++++++++++- .../ITA/GoogleTestAdapter.TestAdapter.dll.lcl | 33 +- .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 35 +- 3 files changed, 613 insertions(+), 10 deletions(-) diff --git a/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl index ce62f2995..26615b476 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.Core.dll.lcl @@ -70,6 +70,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -133,6 +178,15 @@ + + + + + + + + + @@ -142,6 +196,15 @@ + + + + + + + + + @@ -151,6 +214,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -403,6 +502,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643,6 +1183,15 @@ + + + + + + + + + @@ -745,7 +1294,7 @@ - + @@ -778,7 +1327,7 @@ - + @@ -814,7 +1363,7 @@ - + diff --git a/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl index f95696efc..76508fdb7 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.TestAdapter.dll.lcl @@ -10,6 +10,15 @@ + + + + + + + + + @@ -145,6 +154,15 @@ + + + + + + + + + @@ -154,6 +172,15 @@ + + + + + + + + + @@ -310,7 +337,7 @@ - + @@ -343,7 +370,7 @@ - + @@ -379,7 +406,7 @@ - + diff --git a/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index d6fba7a3a..56090fa54 100644 --- a/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/ITA/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -103,13 +103,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -142,7 +169,7 @@ - + @@ -178,7 +205,7 @@ - + From daccabbacffc1ad8aefbf6b7a03b24e2cb2a1eeb Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 28 Sep 2017 13:38:16 +0000 Subject: [PATCH 44/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl | 21 +++++++++++++++++++ .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 8 ++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl index 11faeb6fb..c1b8ccb5d 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl @@ -76,24 +76,36 @@ + + + + + + + + + + + + @@ -511,6 +523,9 @@ + + + @@ -631,6 +646,9 @@ + + + @@ -757,6 +775,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index a0c2b9ec4..25745f52c 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -15,7 +15,7 @@ - + @@ -106,12 +106,18 @@ + + + + + + From 6f13c1f2359ee1a16a221d6a56fbb706d9db53ce Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 28 Sep 2017 19:38:10 +0000 Subject: [PATCH 45/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl | 162 ++++++++++++++++++ .../DEU/GoogleTestAdapter.TestAdapter.dll.lcl | 9 + .../GoogleTestAdapter.VsPackage.TAfGT.dll.lcl | 3 + 3 files changed, 174 insertions(+) diff --git a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl index c1b8ccb5d..b1f066930 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.Core.dll.lcl @@ -112,6 +112,9 @@ + + + @@ -181,6 +184,9 @@ + + + @@ -196,6 +202,9 @@ + + + @@ -211,24 +220,36 @@ + + + + + + + + + + + + @@ -487,36 +508,54 @@ + + + + + + + + + + + + + + + + + + @@ -532,114 +571,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -655,120 +751,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -784,6 +940,9 @@ + + + @@ -1033,6 +1192,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl index 2295b46bb..5e0dcc736 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.TestAdapter.dll.lcl @@ -13,6 +13,9 @@ + + + @@ -154,6 +157,9 @@ + + + @@ -169,6 +175,9 @@ + + + diff --git a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl index 25745f52c..f903febfa 100644 --- a/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl +++ b/loc/lcl/DEU/GoogleTestAdapter.VsPackage.TAfGT.dll.lcl @@ -124,6 +124,9 @@ + + + From eb8121b54977903649729bc79f89a30357e4cac5 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Fri, 29 Sep 2017 15:46:11 -0700 Subject: [PATCH 46/92] Fic loc paths from projects for localization and remove res swix (#63) * fix path for loc files * fix path to lcl files * mark vsix proj at not component * add common dynamic projects to setversion * fix path * remove unnecessary swix res and add option to set isproductcomonent for setup * check if property is set to true in microbuild before setting it * rename microbuild variable for clarity --- .../Common.Dynamic.TAfGT.csproj | 2 +- GoogleTestAdapter/Core/Core.csproj | 2 +- .../DiaResolver/DiaResolver.csproj | 2 +- .../NewProjectWizard/NewProjectWizard.csproj | 2 +- .../Packaging.TAfGT/Packaging.TAfGT.csproj | 2 +- GoogleTestAdapter/SetVersion.ps1 | 6 +++ .../TestAdapter/TestAdapter.csproj | 2 +- .../VsPackage.TAfGT/VsPackage.TAfGT.csproj | 2 +- ...o.VC.Ide.TestAdapterForGoogleTest.swixproj | 42 ------------------- ...Studio.VC.Ide.TestAdapterForGoogleTest.swr | 14 ------- ....VC.Ide.TestAdapterForGoogleTest.vsmanproj | 24 ----------- 11 files changed, 13 insertions(+), 87 deletions(-) delete mode 100644 swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj delete mode 100644 swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr delete mode 100644 swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj index 8645dc620..f3ad945d6 100644 --- a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj @@ -40,7 +40,7 @@ - $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.Common.Dynamic.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.Common.Dynamic.dll.lcl Microsoft diff --git a/GoogleTestAdapter/Core/Core.csproj b/GoogleTestAdapter/Core/Core.csproj index a1c45d83e..400d9f7c0 100644 --- a/GoogleTestAdapter/Core/Core.csproj +++ b/GoogleTestAdapter/Core/Core.csproj @@ -42,7 +42,7 @@ - $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.Core.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.Core.dll.lcl Microsoft diff --git a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj index e088ecb45..92b94911f 100644 --- a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj +++ b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj @@ -44,7 +44,7 @@ - $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.DiaResolver.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.DiaResolver.dll.lcl Microsoft diff --git a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj index 1cee0ec0e..4e176f362 100644 --- a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj +++ b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj @@ -44,7 +44,7 @@ - $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\NewProjectWizard.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\NewProjectWizard.dll.lcl $(LSBuildRoot)\MCP_excludeBaml.lss diff --git a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj index aea1d8304..49996d3cf 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj +++ b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj @@ -26,7 +26,7 @@ true true false - true + true true diff --git a/GoogleTestAdapter/SetVersion.ps1 b/GoogleTestAdapter/SetVersion.ps1 index a1524aef2..bef19a23c 100644 --- a/GoogleTestAdapter/SetVersion.ps1 +++ b/GoogleTestAdapter/SetVersion.ps1 @@ -2,6 +2,9 @@ Param([parameter(Mandatory=$true)] [string] $version) $common_assembly_info = "Common\Properties\AssemblyInfo.cs" +$common_dynamic_gta_assembly_info = "Common.Dynamic.GTA\Properties\AssemblyInfo.cs" +$common_dynamic_tafgt_assembly_info = "Common.Dynamic.TAfGT\Properties\AssemblyInfo.cs" + $core_assembly_info = "Core\Properties\AssemblyInfo.cs" $coretests_assembly_info = "Core.Tests\Properties\AssemblyInfo.cs" @@ -28,6 +31,9 @@ $wizard_assembly_info = "NewProjectWizard\Properties\AssemblyInfo.cs" (Get-Content $common_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $common_assembly_info +(Get-Content $common_dynamic_gta_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $common_dynamic_gta_assembly_info +(Get-Content $common_dynamic_tafgt_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $common_dynamic_tafgt_assembly_info + (Get-Content $core_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $core_assembly_info (Get-Content $coretests_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $coretests_assembly_info diff --git a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj index 4b5d254fd..68fff4904 100644 --- a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj +++ b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj @@ -44,7 +44,7 @@ - $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.TestAdapter.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.TestAdapter.dll.lcl Microsoft diff --git a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj index 008709c5d..9cb3a9132 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj +++ b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj @@ -211,7 +211,7 @@ - $(MSBuildThisFileDirectory)..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.dll.lcl Microsoft diff --git a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj deleted file mode 100644 index f3f032461..000000000 --- a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - neutral - false - Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest - manifest - true - 15.0 - 16.0 - - - - $(OutputPath)..\Packaging.TAfGT - - - - - - - - - - - $(PackagePreprocessorDefinitions); - VsixOutDir=$(VsixOutDir); - Version=$(BuildVersion); - VSGeneralVersion=$(VSGeneralVersion); - VSNextGeneralVersion=$(VSNextGeneralVersion); - - - - - - - - diff --git a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr deleted file mode 100644 index 5b9f0a956..000000000 --- a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr +++ /dev/null @@ -1,14 +0,0 @@ -use vs - -package name=Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest - version=$(Version) - vs.package.type=vsix - vs.package.installSize=22265856 - vs.package.vsixId=GoogleTestAdapterVSIX.8486b54e-5768-482b-b224-7d069ca509d8 - -vs.payloads - vs.payload source=$(VsixOutDir)\Packaging.TAfGT.vsix - -vs.dependencies - vs.dependency id=Microsoft.VisualStudio.MinShell - version=[$(VSGeneralVersion),$(VSNextGeneralVersion)) diff --git a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj b/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj deleted file mode 100644 index b50ad5f61..000000000 --- a/swix/res/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - true - true - - - false - - - - - - - - - - - - \ No newline at end of file From 1b32a3e15c8e86531de25b2eb2af05e9770d7f32 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 4 Oct 2017 17:14:23 -0700 Subject: [PATCH 47/92] remove telemtry collection from TAfGT --- GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index 4857a8966..2ffa66517 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -183,11 +183,11 @@ public void RunStarted(object automationObject, replacementsDictionary[TargetPlatformVersion] = versionString; } - Telemetry.LogProjectCreated(nugetPackage); + //Telemetry.LogProjectCreated(nugetPackage); } catch (WizardCancelledException ex) { - Telemetry.LogProjectCancelled(ex.Message); + //Telemetry.LogProjectCancelled(ex.Message); throw; } } From adc9b2139080b71791a102ed18dff85d38e94701 Mon Sep 17 00:00:00 2001 From: Nick Uhlenhuth Date: Thu, 5 Oct 2017 10:46:54 -0700 Subject: [PATCH 48/92] Update README.md Updated the README to generalize between the adapters, and explicitly call out differences --- README.md | 56 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 991818247..cc610b0ae 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ ### Test Adapter for Google Test -The Test Adapter for Google Test is a Visual Studio extension providing test discovery and execution of C++ tests written with the [Google Test](https://github.com/google/googletest) framework. This is a fork of the ![original project](https://github.com/csoltenborn/GoogleTestAdapter) by Christian Soltenborn and Jonas Gefele +This README details the ‘Test Adapter for Google Test’ [TAfGT](https://github.com/Microsoft/TestAdapterForGoogleTest), and the ‘Google Test Adapter’ [GTA](https://github.com/csoltenborn/GoogleTestAdapter). These test adapters are Visual Studio extensions that provide test discovery and execution of C++ tests written with the [Google Test](https://github.com/google/googletest) framework. + +Microsoft [collaborated with the creators of GTA](https://blogs.msdn.microsoft.com/vcblog/2017/05/10/unit-testing-and-the-future-announcing-the-test-adapter-for-google-test/) to fork their project and create ‘Test Adapter for Google Test’. These test adapters share many of the same features and any differences will be explicitly labeled with [TAfGT] or [GTA] in this document. All updates to TAfGT go through Microsoft’s software development cycle. ![Screenshot of Test Explorer](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/GoogleTestAdapter/VsPackage/Resources/Screenshot.png "Screenshot of Test Explorer") @@ -27,7 +29,7 @@ The Test Adapter for Google Test is a Visual Studio extension providing test dis * Execution of [parameterized batch files](#test_setup_and_teardown) for test setup/teardown * Test discovery using a [custom regex](#test_discovery_regex) (if needed) or an indicator file * Settings can be [shared via source control](#solution_settings) -* Installable as Visual Studio extension or NuGet development dependency +* Installable as Visual Studio extension or [GTA] NuGet development dependency #### History @@ -44,16 +46,21 @@ The Test Adapter for Google Test is a Visual Studio extension providing test dis The Test Adapter for Google Test can be installed in several ways: -* Install through the Visual Studio Marketplace at *Tools/Extensions and Updates* - search for *Google Test Adapter*. -* Download and launch the VSIX installer from either the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.TestAdapterforGoogleTest) or [GitHub](https://github.com/Microsoft/TestAdapterForGoogleTest/releases) +* Install through the Visual Studio Marketplace at *Tools/Extensions and Updates* - search for *Test Adapter for Google Test* or *Google Test Adapter*. +* Download and launch the VSIX installer from either the Visual Studio Marketplace ([TAfGT](https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.TestAdapterforGoogleTest), [GTA](https://marketplace.visualstudio.com/items?itemName=ChristianSoltenborn.GoogleTestAdapter)) or [GitHub](https://github.com/csoltenborn/GoogleTestAdapter/releases/download/v0.10.1/GoogleTestAdapter-0.10.1.vsix) +* [GTA only] Add a NuGet dependency to the [Google test adapter nuget package](https://www.nuget.org/packages/GoogleTestAdapter/) to your Google Test projects. Note, however, that Visual Studio integration is limited this way: VS can discover and run tests, but no debugging, options or toolbar will be available; configuration is only possible through solution config files (see below). -After restarting VS, your tests will be displayed in the Test Explorer at build completion time. If no or not all tests show up, have a look at the [trouble shooting section](#trouble_shooting). +After restarting VS, your tests will be displayed in the Test Explorer at build completion time. If no or not all tests show up, have a look at the [troubleshooting section](#trouble_shooting). #### Configuration There are several different ways to configure the adapter: -* The *Test Adapter for Google Test* section of Visual Studio's *Tools/Options*. These options are referred to as *global options* in the following. -* The toolbar. The most important runtime options (i.e., *Parallel test execution*, *Break on failure*, *Catch exceptions*, and *Print test output*) can also be set via a toolbar; this is equivalent to setting the according options via *Tools/Options/Test Adapter for Google Test*. +* The respective *global options* menus: + * [TAfGT] *Tools/Options/Test Adapter for Google Test* + * [GTA] *Tools/Options/Google Test Adapter* +* The toolbar (not available if installed via NuGet). Using the toolbar, you can set the most important runtime options (i.e., *Parallel test execution*, *Break on failure*, *Catch exceptions*, and *Print test output*); this is equivalent to setting the according options via *Tools/Options* menus detailed above. Open the toolbar via: + * [TAfGT] Tools/Customize…/Test Adapter for Google Test + * [GTA] Tools/Customize…/Google Test Adapter * Solution settings files (not available if run via [VsTest.Console.exe](https://msdn.microsoft.com/en-us/library/jj155800.aspx)). They are provided by means of an XML configuration file; this allows sharing of settings via source control. The configuration file must be placed in the same folder as the solution's `.sln` file, and must have the same name as that file, but with extension `.gta.runsettings`. E.g., if the solution file's name is `Foo.sln`, the settings file must be named `Foo.gta.runsettings`. * Visual Studio user settings files. VS allows for the selection of [test settings](https://msdn.microsoft.com/en-us/library/jj635153.aspx) files via the *Test/Test Settings* menu, and to pass such settings files to `VsTest.Console.exe` via the `/Settings` parameter. @@ -70,17 +77,17 @@ Overall, given a test executable `mytests.exe`, the following settings apply to 4. Solution settings of a solution settings file. 5. Global settings. -Note that due to the overriding hierarchy described above, you probably want to provide only a subset of the nodes in your configuration files. For instance, providing the node `true` in a shared solution settings file will make sure that all sharing developers will run GTA with debug output, no matter what the developer's individual settings at *Tools/Options/Test Adapter for Google Test* are (and unless the developer has selected a test settings file via VS, which would override the solution setting). +Note that due to the overriding hierarchy described above, you probably want to provide only a subset of the nodes in your configuration files. For instance, providing the node `true` in a shared solution settings file will make sure that all sharing developers will run the test adapter with debug output, no matter what the developer's individual settings at *Tools/Options/Test Adapter for Google Test* are (and unless the developer has selected a test settings file via VS, which would override the solution setting). For reference, see a settings file [AllTestSettings.gta.runsettings](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings) containing all available settings, a more realistic solution settings file [SampleTests.gta.runsettings](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/SampleTests/SampleTests.gta.runsettings) as delivered with the SampleTests solution, and a user settings file [NonDeterministic.runsettings](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/SampleTests/NonDeterministic.runsettings) as used by GTA's end-to-end tests. #### Assigning traits to tests -GTA has full support for [traits](http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part-1-using-traits-in-the-unit-test-explorer.aspx), which can be assigned to tests in two ways: +The test adapters have full support for [traits](http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part-1-using-traits-in-the-unit-test-explorer.aspx), which can be assigned to tests in two ways: * You can make use of the custom test macros provided in [GTA_Traits_1.8.0.h](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/GoogleTestAdapter/Core/Resources/GTA_Traits_1.8.0.h) (or [GTA_Traits_1.7.0.h](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/GoogleTestAdapter/Core/Resources/GTA_Traits_1.7.0.h) if you are still on Google Test 1.7.0), which contain macros for all test types of the Google Test framework. The macros do not change behavior of the tests; they only add some information to the generated test code which encodes the traits assigned to the respective test. All GTA provided macros follow the same naming schema `_TRAITS`, where, obviously, `` is the name of the according macro in Google Test. Each test can be assigned up to 8 traits. -* Combinations of regular expressions and traits can be specified under the GTA options: If a test's name matches one of these regular expressions, the according trait is assigned to that test. +* Combinations of regular expressions and traits can be specified under the test adapter's options: If a test's name matches one of these regular expressions, the according trait is assigned to that test. More precisely, traits are assigned to tests in three phases: @@ -92,11 +99,11 @@ Note that traits are assigned in an additive manner within each phase, and in an #### Running tests from command line with `VSTest.Console.exe` -GTA can be used to run tests from the command line, which can be done making use of VS's [VSTest.Console.exe](https://msdn.microsoft.com/en-us/library/jj155800.aspx). GTA supports all the tool's command line options, including `/UseVsixExtensions` and `/TestAdapterPath`. +The test adapters can be used to run tests from the command line, which can be done making use of VS's [VSTest.Console.exe](https://msdn.microsoft.com/en-us/library/jj155800.aspx). They support all the tool's command line options, including `/UseVsixExtensions` and `/TestAdapterPath`. -Note, however, that VSTest.Console.exe will not make use of GTA solution settings (if the solution containing the tests happens to use such settings). All settings to be used by VSTest.Console.exe need to be passed using the `/Settings` command line option. Note also that the `$(SolutionDir)` placeholder is neither available in the *Test setup/teardown batch file* options nor in the *Additional test execution parameters* option. +Note, however, that VSTest.Console.exe will not make use of TAfGT/GTA solution settings (if the solution containing the tests happens to use such settings). All settings to be used by VSTest.Console.exe need to be passed using the `/Settings` command line option. Note also that the `$(SolutionDir)` placeholder is neither available in the *Test setup/teardown batch file* options nor in the *Additional test execution parameters* option. -The tests to be run can be selected via the `/TestCaseFilter` option. Filters need to follow the syntax as described in this [blog entry](http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx). GTA supports the following test properties: +The tests to be run can be selected via the `/TestCaseFilter` option. Filters need to follow the syntax as described in this [blog entry](http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx). The adapters support the following test properties: * DisplayName * FullyQualifiedName @@ -116,9 +123,9 @@ Additionally, traits can be used in test case filters. E.g., all tests having a Tests are run sequentially by default. If parallel test execution is enabled, the tests will be distributed to the available cores of your machine. To support parallel test execution, additional command line parameters can be passed to the Google Test executables (note that this feature is not restricted to parallel test execution); they can then be parsed by the test code at run time and e.g. be used to improve test isolation. -GTA remembers the durations of the executed tests to improve test scheduling for later test runs. The durations are stored in files with endings `.gta.testdurations` - make sure your version control system ignores these files. +This test adapter remembers the durations of the executed tests to improve test scheduling for later test runs. The durations are stored in files with endings `.gta.testdurations` - make sure your version control system ignores these files. -Note that since VS 2015 update 1, VS allows for the parallel execution of tests (again); since update 2, Test Explorer has an own *Run tests in parallel* button, and VsTest.Console.exe suppports a new command line option */Parallel*. Neither button nor command line option has any effect on test execution with GTA. +Note that since VS 2015 update 1, VS allows for the parallel execution of tests (again); since update 2, Test Explorer has an own *Run tests in parallel* button, and VsTest.Console.exe suppports a new command line option */Parallel*. Neither button nor command line option has any effect on test execution with this test adapter. #### Test setup and teardown @@ -127,15 +134,20 @@ If you need to perform some setup or teardown tasks in addition to the setup/tea ### External resources +* [Blog post](https://blogs.msdn.microsoft.com/vcblog/2017/05/10/unit-testing-and-the-future-announcing-the-test-adapter-for-google-test/) for using Google Test with TAfGT in Visual Studio * [Basic tutorial](https://usingcpp.wordpress.com/2016/07/23/google-test-and-visual-studio/) for using Google Test with the Google Test Adapter in Visual Studio ### Troubleshooting ##### None or not all of my tests show up -* Switch on *Debug mode* at *Tools/Options/Google Test Adapter/General*, which will show on the test console whether your test executables are found by GTA. If they are not, you have two options: - * Configure a *Test discovery regex* at the same place. - * If your test executable is `..\FooTests.exe`, make sure that a file `..\FooTests.exe.is_google_test` exists. +* Switch on + * [TAfGT] *Print debug info* at *Tools/Options/Test Adapter for Google Test/General* + * [GTA] *Print debug info* at *Tools/Options/Google Test Adapter/General* + +* This will show on the test console whether your test executables are found by GTA. If they are not, you have two options: + * Configure a *Regex for test discovery* at the same place. + * If your test executable is `..\FooTests.exe`, make sure that a file `..\FooTests.exe.is_google_test` exists. * Your test executable can not run with command line option `--gtest_list_tests`, e.g. because it crashes. Make sure that your tests can be listed via command line; if they do not, debug your test executable, e.g. by making the according test project the startup project of your solution, and placing a breakpoint at the main method of your test executable. * If your project configuration contains references to DLLs which do not end up in the build directory (e.g. through *Project/Properties/Linker/Input/Additional Dependencies*), these DLLs will not be found when running your tests. Use option *PATH extension* to add the directories containing these DLLs to the test executables' PATH variable. * If your project happens to be a makefile project, there's a pitfall which will prevent the adapter from discovering your tests: It appears that when importing a makefile project into VS, the *Output* setting of the project is populated from the makefile's content. However, if the makefile is edited later on such that the location of the generated test executable changes, VS does not find the test executable any more. One symptom of this is that your project can not be launched any more with `F5`. Make sure that the *Output* setting of the project is consistent with its makefile to avoid this problem. @@ -145,7 +157,7 @@ If you need to perform some setup or teardown tasks in addition to the setup/tea * The test executable's project settings result in a pdb file not containing the information necessary to resolve source locations and traits (see [#46](https://github.com/csoltenborn/GoogleTestAdapter/issues/46)). Change the setting as indicated below and rebuild your solution. * VS 2015 and earlier: `Yes` or `Optimize for debugging (/DEBUG)` * VS 2017: `Generate debug information optimized for sharing and publishing (/DEBUG:FULL)` -* Option *Parse symbol information* is set to `false`, making GTA not parse that information out of the pdb file intentionally. The actual set of options used is potentially composed from VS options, a solution settings file, and a user settings file; the resulting set of options will be logged to the test output window if the *Print debug info* option is set to `true`. +* Option *Parse symbol information* is set to `false`, making the test adapter not parse that information out of the pdb file intentionally. The actual set of options used is potentially composed from VS options, a solution settings file, and a user settings file; the resulting set of options will be logged to the test output window if the *Print debug info* option is set to `true`. ##### The extension is disabled when I start Visual Studio * Your MEF cache might have been corrupted. Please refer to [this issue](https://github.com/csoltenborn/GoogleTestAdapter/issues/98) for help. @@ -160,10 +172,10 @@ Please refer to our [wiki](https://github.com/csoltenborn/GoogleTestAdapter/wiki #### People -The original Google Test Adapter is written and maintained by [Christian Soltenborn](https://github.com/csoltenborn) (main author) and [Jonas Gefele](https://github.com/jgefele) (regular contributor). +*Test Adapter for Google Test* is maintained by Microsoft. + +The original *Google Test Adapter* is written and maintained by [Christian Soltenborn](https://github.com/csoltenborn) (main author) and [Jonas Gefele](https://github.com/jgefele) (regular contributor). The first version of GTA was a slightly enhanced C# port of the F# [Google Test Runner](https://github.com/markusl/GoogleTestRunner), written by [Markus Lindqvist](https://github.com/markusl). We have also learned a lot from the JavaScript test runner [Chutzpah](https://github.com/mmanela/chutzpah), written by [Matthew Manela](https://github.com/mmanela). GTA has benefited from all kinds of contributions, be it feature requests, bug reports, code snippets, testing of new features and bugfixes, or even pull requests. Most (hopefully all) contributors are mentioned in the according [release notes](https://github.com/csoltenborn/GoogleTestAdapter/releases). - -This particular fork of the project is maintained by the Visual C++ team at Microsoft. From c912d1716cce5201e1b143006c7c843bf1387e86 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Thu, 5 Oct 2017 13:46:38 -0700 Subject: [PATCH 49/92] Fix localization for Common.Dynamic and add vsixlangpacks (#65) * fix path for loc files * fix path to lcl files * mark vsix proj at not component * add common dynamic projects to setversion * fix path * remove unnecessary swix res and add option to set isproductcomonent for setup * check if property is set to true in microbuild before setting it * rename microbuild variable for clarity * add vsixlangpacks and pass culture to CreateInstance * inculde lang packs in vsix * use resource manager from common.dynamic in common * fix project files * remove eula and link asw they're not localized * remove localized description until we have one * fix proj file * remove old references to strings.cs which we no longer use * use separate resources.cs to ensure loading the right asm * change Common.Dynamic.GTA use resx as well * change basename for common dynamic dll * change default namespace to not conflict with common * LoadFrom not LoadFile so we can get satellite asm * switch namespace back so it matches with translation files * remove empty localized descriptions --- .../Common.Dynamic.GTA.csproj | 13 +- .../Common.Dynamic.GTA/Resources.Designer.cs | 99 +++++++++++++ .../Common.Dynamic.GTA/Resources.resx | 133 ++++++++++++++++++ .../Common.Dynamic.GTA/Strings.cs | 13 -- .../Common.Dynamic.TAfGT.csproj | 27 ++-- .../Resources.Designer.cs | 14 +- .../Common.Dynamic.TAfGT/Strings.cs | 13 -- GoogleTestAdapter/Common/Common.csproj | 3 +- GoogleTestAdapter/Common/IStrings.cs | 13 -- GoogleTestAdapter/Common/Resources.cs | 102 ++++++++++++++ GoogleTestAdapter/Common/Strings.cs | 24 ---- .../Core/Runners/SequentialTestRunner.cs | 2 +- .../Packaging.TAfGT/Packaging.TAfGT.csproj | 39 +++++ .../Packaging.TAfGT/cs/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/de/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/es/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/fr/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/it/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/ja/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/ko/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/pl/Extension.vsixlangpack | 4 + .../pt-BR/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/ru/Extension.vsixlangpack | 4 + .../Packaging.TAfGT/tr/Extension.vsixlangpack | 4 + .../zh-Hans/Extension.vsixlangpack | 4 + .../zh-Hant/Extension.vsixlangpack | 4 + .../TestAdapter/TestDiscoverer.cs | 6 +- GoogleTestAdapter/TestAdapter/TestExecutor.cs | 2 +- .../Helpers/ActivityLogLogger.cs | 4 +- 29 files changed, 465 insertions(+), 94 deletions(-) create mode 100644 GoogleTestAdapter/Common.Dynamic.GTA/Resources.Designer.cs create mode 100644 GoogleTestAdapter/Common.Dynamic.GTA/Resources.resx delete mode 100644 GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs delete mode 100644 GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs delete mode 100644 GoogleTestAdapter/Common/IStrings.cs create mode 100644 GoogleTestAdapter/Common/Resources.cs delete mode 100644 GoogleTestAdapter/Common/Strings.cs create mode 100644 GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack create mode 100644 GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack diff --git a/GoogleTestAdapter/Common.Dynamic.GTA/Common.Dynamic.GTA.csproj b/GoogleTestAdapter/Common.Dynamic.GTA/Common.Dynamic.GTA.csproj index 204ad62c5..042f88e2d 100644 --- a/GoogleTestAdapter/Common.Dynamic.GTA/Common.Dynamic.GTA.csproj +++ b/GoogleTestAdapter/Common.Dynamic.GTA/Common.Dynamic.GTA.csproj @@ -40,7 +40,11 @@ - + + Resources.resx + True + True + @@ -51,6 +55,13 @@ Common + + + PublicResXFileCodeGenerator + Resources.Designer.cs + Designer + + diff --git a/GoogleTestAdapter/Common.Dynamic.GTA/Resources.Designer.cs b/GoogleTestAdapter/Common.Dynamic.GTA/Resources.Designer.cs new file mode 100644 index 000000000..624ae434c --- /dev/null +++ b/GoogleTestAdapter/Common.Dynamic.GTA/Resources.Designer.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GoogleTestAdapter.Common { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GoogleTestAdapter.Common.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Google Test Adapter. + /// + public static string ExtensionName { + get { + return ResourceManager.GetString("ExtensionName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Google Test Adapter: Test discovery starting.... + /// + public static string TestDiscoveryStarting { + get { + return ResourceManager.GetString("TestDiscoveryStarting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Google Test Adapter: Test execution starting.... + /// + public static string TestExecutionStarting { + get { + return ResourceManager.GetString("TestExecutionStarting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Check out Google Test Adapter's trouble shooting section at https://github.com/csoltenborn/GoogleTestAdapter#trouble_shooting. + /// + public static string TroubleShootingLink { + get { + return ResourceManager.GetString("TroubleShootingLink", resourceCulture); + } + } + } +} diff --git a/GoogleTestAdapter/Common.Dynamic.GTA/Resources.resx b/GoogleTestAdapter/Common.Dynamic.GTA/Resources.resx new file mode 100644 index 000000000..049878359 --- /dev/null +++ b/GoogleTestAdapter/Common.Dynamic.GTA/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Google Test Adapter + + + Google Test Adapter: Test discovery starting... + + + Google Test Adapter: Test execution starting... + + + {0}Check out Google Test Adapter's trouble shooting section at https://github.com/csoltenborn/GoogleTestAdapter#trouble_shooting + {0} is empty or a name of a thread followed by space (e.g. "[T0] ") + + \ No newline at end of file diff --git a/GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs b/GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs deleted file mode 100644 index 811c23b9f..000000000 --- a/GoogleTestAdapter/Common.Dynamic.GTA/Strings.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace GoogleTestAdapter.Common -{ - public class Strings : IStrings - { - public string ExtensionName => "Google Test Adapter"; - public string TroubleShootingLink => "{0}Check out Google Test Adapter's trouble shooting section at https://github.com/csoltenborn/GoogleTestAdapter#trouble_shooting"; - public string TestDiscoveryStarting => "Google Test Adapter: Test discovery starting..."; - public string TestExecutionStarting => "Google Test Adapter: Test execution starting..."; - } -} diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj index f3ad945d6..56d757ad6 100644 --- a/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Common.Dynamic.TAfGT.csproj @@ -40,15 +40,15 @@ - $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.Common.Dynamic.dll.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.Common.Dynamic.dll.lcl Microsoft StrongName - - - false + + + false @@ -62,7 +62,6 @@ True Resources.resx - @@ -75,7 +74,7 @@ - ResXFileCodeGenerator + PublicResXFileCodeGenerator Resources.Designer.cs Designer @@ -91,12 +90,12 @@ copy "$(SolutionDir)Keys\Key_Debug.snk" "$(ProjectDir)Key.snk" ) - - - - Microsoft - StrongName - - - + + + + Microsoft + StrongName + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs b/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs index 1e990c292..2a3bb17dc 100644 --- a/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs +++ b/GoogleTestAdapter/Common.Dynamic.TAfGT/Resources.Designer.cs @@ -22,7 +22,7 @@ namespace GoogleTestAdapter.Common { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { + public class Resources { private static global::System.Resources.ResourceManager resourceMan; @@ -36,7 +36,7 @@ internal Resources() { /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { + public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GoogleTestAdapter.Common.Resources", typeof(Resources).Assembly); @@ -51,7 +51,7 @@ internal Resources() { /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { + public static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -63,7 +63,7 @@ internal Resources() { /// /// Looks up a localized string similar to Test Adapter for Google Test. /// - internal static string ExtensionName { + public static string ExtensionName { get { return ResourceManager.GetString("ExtensionName", resourceCulture); } @@ -72,7 +72,7 @@ internal static string ExtensionName { /// /// Looks up a localized string similar to Test Adapter for Google Test: Test discovery starting.... /// - internal static string TestDiscoveryStarting { + public static string TestDiscoveryStarting { get { return ResourceManager.GetString("TestDiscoveryStarting", resourceCulture); } @@ -81,7 +81,7 @@ internal static string TestDiscoveryStarting { /// /// Looks up a localized string similar to Test Adapter for Google Test: Test execution starting.... /// - internal static string TestExecutionStarting { + public static string TestExecutionStarting { get { return ResourceManager.GetString("TestExecutionStarting", resourceCulture); } @@ -90,7 +90,7 @@ internal static string TestExecutionStarting { /// /// Looks up a localized string similar to {0}Check out Test Adapter for Google Test's trouble shooting section at https://go.microsoft.com/fwlink/?linkid=848168. /// - internal static string TroubleShootingLink { + public static string TroubleShootingLink { get { return ResourceManager.GetString("TroubleShootingLink", resourceCulture); } diff --git a/GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs b/GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs deleted file mode 100644 index 6908f7ea9..000000000 --- a/GoogleTestAdapter/Common.Dynamic.TAfGT/Strings.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace GoogleTestAdapter.Common -{ - public class Strings : IStrings - { - public string ExtensionName => Resources.ExtensionName; - public string TroubleShootingLink => Resources.TroubleShootingLink; - public string TestDiscoveryStarting => Resources.TestDiscoveryStarting; - public string TestExecutionStarting => Resources.TestExecutionStarting; - } -} diff --git a/GoogleTestAdapter/Common/Common.csproj b/GoogleTestAdapter/Common/Common.csproj index 447b471b2..4eca93703 100644 --- a/GoogleTestAdapter/Common/Common.csproj +++ b/GoogleTestAdapter/Common/Common.csproj @@ -54,11 +54,10 @@ - - + diff --git a/GoogleTestAdapter/Common/IStrings.cs b/GoogleTestAdapter/Common/IStrings.cs deleted file mode 100644 index af5965d23..000000000 --- a/GoogleTestAdapter/Common/IStrings.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace GoogleTestAdapter.Common -{ - public interface IStrings - { - string ExtensionName { get; } - string TroubleShootingLink { get; } - string TestDiscoveryStarting { get; } - string TestExecutionStarting { get; } - } -} diff --git a/GoogleTestAdapter/Common/Resources.cs b/GoogleTestAdapter/Common/Resources.cs new file mode 100644 index 000000000..bc07d0c01 --- /dev/null +++ b/GoogleTestAdapter/Common/Resources.cs @@ -0,0 +1,102 @@ +namespace GoogleTestAdapter.Common +{ + using System.IO; + using System.Reflection; + + /// + /// Based on the auto-generated resources file from Common.Dynamic + /// + public class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + // Get the path to GoogleTestAdapter.Common.Dynamic.dll where the resources are defined + var path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "GoogleTestAdapter.Common.Dynamic.dll"); + var asm = Assembly.LoadFrom(path); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GoogleTestAdapter.Common.Resources", asm); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Test Adapter for Google Test. + /// + public static string ExtensionName + { + get + { + return ResourceManager.GetString("ExtensionName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test Adapter for Google Test: Test discovery starting.... + /// + public static string TestDiscoveryStarting + { + get + { + return ResourceManager.GetString("TestDiscoveryStarting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test Adapter for Google Test: Test execution starting.... + /// + public static string TestExecutionStarting + { + get + { + return ResourceManager.GetString("TestExecutionStarting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}Check out Test Adapter for Google Test's trouble shooting section at https://go.microsoft.com/fwlink/?linkid=848168. + /// + public static string TroubleShootingLink + { + get + { + return ResourceManager.GetString("TroubleShootingLink", resourceCulture); + } + } + } +} diff --git a/GoogleTestAdapter/Common/Strings.cs b/GoogleTestAdapter/Common/Strings.cs deleted file mode 100644 index e7df1cc2e..000000000 --- a/GoogleTestAdapter/Common/Strings.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.IO; -using System.Reflection; - -namespace GoogleTestAdapter.Common -{ - public class Strings - { - private static IStrings _strings; - - static Strings() - { - var path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "GoogleTestAdapter.Common.Dynamic.dll"); - var asm = Assembly.LoadFile(path); - var type = asm.GetType("GoogleTestAdapter.Common.Strings"); - _strings = (IStrings)Activator.CreateInstance(type); - } - - public static IStrings Instance => _strings; - } -} diff --git a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs index 2ae691019..2a3de9fd9 100644 --- a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs @@ -139,7 +139,7 @@ public static void LogExecutionError(ILogger logger, string executable, string w { logger.LogError(String.Format(Resources.RunExecutableError, threadName, executable, exception.Message)); logger.DebugError(String.Format(Resources.StackTrace, threadName, Environment.NewLine, exception.StackTrace)); - logger.LogError(String.Format(Strings.Instance.TroubleShootingLink, threadName)); + logger.LogError(String.Format(Common.Resources.TroubleShootingLink, threadName)); logger.LogError(String.Format(Resources.ExecuteSteps, threadName, workingDir, Environment.NewLine, executable, arguments)); } diff --git a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj index 49996d3cf..9e83effe0 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj +++ b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj @@ -109,6 +109,45 @@ + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + PreserveNewest true diff --git a/GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack new file mode 100644 index 000000000..b41be315c --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Testovací adaptér pro Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack new file mode 100644 index 000000000..d913f9a58 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Testadapter für Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack new file mode 100644 index 000000000..02c289aad --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Test Adapter para Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack new file mode 100644 index 000000000..a4c6113d1 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Adaptateur de test pour Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack new file mode 100644 index 000000000..bbdc82478 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Test Adapter for Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack new file mode 100644 index 000000000..bbdc82478 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Test Adapter for Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack new file mode 100644 index 000000000..bbdc82478 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Test Adapter for Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack new file mode 100644 index 000000000..bbdc82478 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Test Adapter for Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack new file mode 100644 index 000000000..1ed57191a --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Adaptador de Teste para o Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack new file mode 100644 index 000000000..c05354360 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Адаптер теста для Google Test + diff --git a/GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack new file mode 100644 index 000000000..0df5f9d7d --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + Google Test için Test Bağdaştırıcısı + diff --git a/GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack new file mode 100644 index 000000000..9e5aebc01 --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + 适用于 Google Test 的测试适配器 + diff --git a/GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack new file mode 100644 index 000000000..6b169336d --- /dev/null +++ b/GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack @@ -0,0 +1,4 @@ + + + 適用於 Google Test 的測試配接器 + diff --git a/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs b/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs index 0d1c792b9..e7dd5bfb0 100644 --- a/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs +++ b/GoogleTestAdapter/TestAdapter/TestDiscoverer.cs @@ -46,7 +46,7 @@ public void DiscoverTests(IEnumerable executables, IDiscoveryContext dis return; CommonFunctions.LogVisualStudioVersion(_logger); - _logger.LogInfo(Strings.Instance.TestDiscoveryStarting); + _logger.LogInfo(Common.Resources.TestDiscoveryStarting); _logger.DebugInfo(String.Format(Resources.Settings, _settings)); try @@ -71,10 +71,10 @@ private bool IsSupportedVisualStudioVersion() switch (version) { case VsVersion.Unknown: - _logger.LogWarning(String.Format(Resources.IdentifyVSError, Strings.Instance.ExtensionName)); + _logger.LogWarning(String.Format(Resources.IdentifyVSError, Common.Resources.ExtensionName)); return true; case VsVersion.VS2012: - _logger.LogError(String.Format(Resources.VS2012Error, Strings.Instance.ExtensionName)); + _logger.LogError(String.Format(Resources.VS2012Error, Common.Resources.ExtensionName)); return false; default: return true; diff --git a/GoogleTestAdapter/TestAdapter/TestExecutor.cs b/GoogleTestAdapter/TestAdapter/TestExecutor.cs index fcb60e541..3bafa021e 100644 --- a/GoogleTestAdapter/TestAdapter/TestExecutor.cs +++ b/GoogleTestAdapter/TestAdapter/TestExecutor.cs @@ -133,7 +133,7 @@ private Stopwatch StartStopWatchAndInitEnvironment(IRunContext runContext, IFram CommonFunctions.LogVisualStudioVersion(_logger); - _logger.LogInfo(Strings.Instance.TestExecutionStarting); + _logger.LogInfo(Common.Resources.TestExecutionStarting); _logger.DebugInfo(String.Format(Resources.Settings, _settings)); return stopwatch; diff --git a/GoogleTestAdapter/VsPackage.Shared/Helpers/ActivityLogLogger.cs b/GoogleTestAdapter/VsPackage.Shared/Helpers/ActivityLogLogger.cs index a411ec8f2..a40c39076 100644 --- a/GoogleTestAdapter/VsPackage.Shared/Helpers/ActivityLogLogger.cs +++ b/GoogleTestAdapter/VsPackage.Shared/Helpers/ActivityLogLogger.cs @@ -21,7 +21,7 @@ public override void Log(Severity severity, string message) var activityLog = _package.GetActivityLog(); if (activityLog == null) { - Console.WriteLine($"{Strings.Instance.ExtensionName}: {severity} - {message}"); + Console.WriteLine($"{Common.Resources.ExtensionName}: {severity} - {message}"); return; } @@ -41,7 +41,7 @@ public override void Log(Severity severity, string message) throw new Exception($"Unknown enum literal: {severity}"); } - activityLog.LogEntry((uint)activitylogEntrytype, Strings.Instance.ExtensionName, message); + activityLog.LogEntry((uint)activitylogEntrytype, Common.Resources.ExtensionName, message); } } From 771a1684316b3b25643d6b18acd39ea09b8f140e Mon Sep 17 00:00:00 2001 From: csigs Date: Fri, 6 Oct 2017 13:38:09 +0000 Subject: [PATCH 50/92] LEGO: check in for dev15loc to temporary branch. --- loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl | 6 +++--- loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl index 1ae72a4c8..b8e247187 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.Core.dll.lcl @@ -41,7 +41,7 @@ - + @@ -572,7 +572,7 @@ - + @@ -977,7 +977,7 @@ - + diff --git a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl index 481651d3b..1e9265e02 100644 --- a/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl +++ b/loc/lcl/TRK/GoogleTestAdapter.TestAdapter.dll.lcl @@ -23,7 +23,7 @@ - + @@ -32,7 +32,7 @@ - + @@ -41,7 +41,7 @@ - + From cfd356831fb2099bec5489a3003c244595a4306f Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Tue, 10 Oct 2017 14:52:49 -0700 Subject: [PATCH 51/92] Support word wrap for New Project Wizard --- .../SinglePageWizardDialog.xaml | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml b/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml index 28f40b637..4d8cb037f 100644 --- a/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml +++ b/GoogleTestAdapter/NewProjectWizard/SinglePageWizardDialog.xaml @@ -123,21 +123,33 @@ - - + + - - From 89962b5a86db469aa6ea19a20e05a18313ae32fc Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sat, 21 Oct 2017 10:32:13 +0200 Subject: [PATCH 52/92] removed broken file reference --- .../DiaResolver/DiaResolver.csproj | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj index 92b94911f..3038d2a1c 100644 --- a/GoogleTestAdapter/DiaResolver/DiaResolver.csproj +++ b/GoogleTestAdapter/DiaResolver/DiaResolver.csproj @@ -44,15 +44,15 @@ - $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.DiaResolver.dll.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.DiaResolver.dll.lcl Microsoft StrongName - - - false + + + false @@ -104,9 +104,6 @@ Designer - - - @@ -125,12 +122,12 @@ --> - - - - Microsoft - StrongName - - + + + + Microsoft + StrongName + + \ No newline at end of file From 7d4ed4bb1853ebedc97b0c36cac49dd44cf6dc21 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sun, 22 Oct 2017 08:56:29 +0200 Subject: [PATCH 53/92] removed references to x86 and x64 platforms from solution --- GoogleTestAdapter/GoogleTestAdapter.sln | 40 ------------------------- 1 file changed, 40 deletions(-) diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index 81053750e..075c56193 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -273,66 +273,26 @@ Global {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.Build.0 = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.ActiveCfg = Release|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.Build.0 = Release|Win32 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x64.ActiveCfg = Release|x64 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x64.Build.0 = Release|x64 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x86.ActiveCfg = Release|Win32 - {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|x86.Build.0 = Release|Win32 {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Debug|Any CPU.ActiveCfg = Debug|Win32 {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Debug|Any CPU.Build.0 = Debug|Win32 {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Release|Any CPU.ActiveCfg = Release|Win32 {8B27FD59-F03C-468E-B878-CFFC7484B7F7}.Release|Any CPU.Build.0 = Release|Win32 {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|Any CPU.ActiveCfg = Debug|Win32 {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|Any CPU.Build.0 = Debug|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|x64.ActiveCfg = Debug|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|x86.ActiveCfg = Debug|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|x86.Build.0 = Debug|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Debug|x86.Deploy.0 = Debug|Win32 {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|Any CPU.ActiveCfg = Release|Win32 {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|Any CPU.Build.0 = Release|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|x64.ActiveCfg = Release|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|x86.ActiveCfg = Release|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|x86.Build.0 = Release|Win32 - {DB701549-3F79-4D1D-9DB9-CA55683D679E}.Release|x86.Deploy.0 = Release|Win32 {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|Any CPU.ActiveCfg = Debug|x64 {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|Any CPU.Build.0 = Debug|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|x64.ActiveCfg = Debug|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|x64.Build.0 = Debug|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|x64.Deploy.0 = Debug|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|x86.ActiveCfg = Debug|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Debug|x86.Build.0 = Debug|x64 {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|Any CPU.ActiveCfg = Release|x64 {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|Any CPU.Build.0 = Release|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|x64.ActiveCfg = Release|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|x64.Build.0 = Release|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|x64.Deploy.0 = Release|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|x86.ActiveCfg = Release|x64 - {8C66B902-B3B3-40C1-B178-7F5405F654B0}.Release|x86.Build.0 = Release|x64 {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|Any CPU.ActiveCfg = Debug|Win32 {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|Any CPU.Build.0 = Debug|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|x64.ActiveCfg = Debug|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|x86.ActiveCfg = Debug|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|x86.Build.0 = Debug|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Debug|x86.Deploy.0 = Debug|Win32 {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|Any CPU.ActiveCfg = Release|Win32 {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|Any CPU.Build.0 = Release|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|x64.ActiveCfg = Release|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|x86.ActiveCfg = Release|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|x86.Build.0 = Release|Win32 - {C2601F9E-8B97-4901-85F4-2531102543C8}.Release|x86.Deploy.0 = Release|Win32 {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|Any CPU.ActiveCfg = Debug|x64 {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|Any CPU.Build.0 = Debug|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|x64.ActiveCfg = Debug|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|x64.Build.0 = Debug|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|x64.Deploy.0 = Debug|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|x86.ActiveCfg = Debug|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|x86.Build.0 = Debug|x64 {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.ActiveCfg = Release|x64 {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.Build.0 = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x64.ActiveCfg = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x64.Build.0 = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x64.Deploy.0 = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x86.ActiveCfg = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x86.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From d024d21a88ace04e34cb3c3eb5bceec86dee9584 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sun, 22 Oct 2017 09:59:17 +0200 Subject: [PATCH 54/92] minor change to appveyor config --- appveyor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 71c4e4597..2df138fbf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,5 @@ version: 0.12.0.{build} -os: -- Visual Studio 2017 +os: Visual Studio 2017 configuration: Release platform: Any CPU environment: From 33da8d5e1f9552fdeb54a0d88c3c29c25d06d914 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sun, 22 Oct 2017 10:06:48 +0200 Subject: [PATCH 55/92] trying to blame build preparation --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 2df138fbf..aa913007f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ install: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) } before_build: -- cmd: build_preparation +# - cmd: build_preparation - ps: >- Start-Process -WorkingDirectory GoogleTestAdapter -FilePath SetVersion.bat -ArgumentList $env:APPVEYOR_BUILD_VERSION From 43f720f808aba7dbbcce9c1ccbe2557554230ef8 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sun, 22 Oct 2017 11:19:42 +0200 Subject: [PATCH 56/92] re-enabled build preparation, moved setlocal back to global section, increased build verbosity --- appveyor.yml | 4 ++-- build_preparation.bat | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index aa913007f..35dfb6c36 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ install: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) } before_build: -# - cmd: build_preparation +- cmd: build_preparation - ps: >- Start-Process -WorkingDirectory GoogleTestAdapter -FilePath SetVersion.bat -ArgumentList $env:APPVEYOR_BUILD_VERSION @@ -23,7 +23,7 @@ before_build: build: project: GoogleTestAdapter\GoogleTestAdapter.sln parallel: true - verbosity: normal + verbosity: detailed after_build: - ps: >- $version = $env:APPVEYOR_BUILD_VERSION.SubString(0, $env:APPVEYOR_BUILD_VERSION.LastIndexOf(".")) diff --git a/build_preparation.bat b/build_preparation.bat index edbcdd457..46d5cc870 100644 --- a/build_preparation.bat +++ b/build_preparation.bat @@ -1,4 +1,6 @@ @echo off +setlocal + set VS_LOCATION=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community set DIA_SDK="%VS_LOCATION%\DIA SDK\bin" @@ -9,8 +11,6 @@ set MS_BUILD="%VS_LOCATION%\MSBuild\15.0\Bin\MSBuild.exe" if defined APPVEYOR goto Build -setlocal - echo: echo ====================================================================== echo You have to accept the following licenses before executing this batch file: From ff792a3dac31b7c244c900b6d45dac684c44e703 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Mon, 23 Oct 2017 06:03:41 +0200 Subject: [PATCH 57/92] debugging CI build --- appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 35dfb6c36..e2d71d7fa 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -83,6 +83,8 @@ after_test: - codecov -f "OpenCover_Integration_CoverageData.xml" -F Integration before_deploy: - set /p RELEASE_NOTES=<"C:\\GTAReleaseNotes.txt" +on_finish: + - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) artifacts: - path: out\binaries\GoogleTestAdapter\$(configuration)\Packaging.GTA\GoogleTestAdapter-*.vsix name: VSIX installation package From 116cbda6e434b125fcf94aa09f98d9a961df6953 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Mon, 23 Oct 2017 06:16:10 +0200 Subject: [PATCH 58/92] trying to fix CI build --- GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj b/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj index 60f9a89b1..99b8ac771 100644 --- a/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj +++ b/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj @@ -67,6 +67,7 @@ 4 true False + true From a97b317c1bf2ac566c21a81db36162ebd24a5359 Mon Sep 17 00:00:00 2001 From: Nick Uhlenhuth Date: Wed, 25 Oct 2017 17:17:42 -0700 Subject: [PATCH 59/92] Update README.md Updated to correct some typos and GTA/TAfGT distinctions. --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cc610b0ae..92dd3b0b0 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@ [![NuGet downloads](https://img.shields.io/nuget/dt/GoogleTestAdapter.svg?colorB=0c7dbe&label=nuget)](https://www.nuget.org/packages/GoogleTestAdapter) -### Test Adapter for Google Test +### Google Test Adapter / Test Adapter for Google Test -This README details the ‘Test Adapter for Google Test’ [TAfGT](https://github.com/Microsoft/TestAdapterForGoogleTest), and the ‘Google Test Adapter’ [GTA](https://github.com/csoltenborn/GoogleTestAdapter). These test adapters are Visual Studio extensions that provide test discovery and execution of C++ tests written with the [Google Test](https://github.com/google/googletest) framework. +This README details the ‘Google Test Adapter’ [GTA](https://github.com/csoltenborn/GoogleTestAdapter) and the ‘Test Adapter for Google Test’ [TAfGT](https://github.com/Microsoft/TestAdapterForGoogleTest), and . These test adapters are Visual Studio extensions that provide test discovery and execution of C++ tests written with the [Google Test](https://github.com/google/googletest) framework. -Microsoft [collaborated with the creators of GTA](https://blogs.msdn.microsoft.com/vcblog/2017/05/10/unit-testing-and-the-future-announcing-the-test-adapter-for-google-test/) to fork their project and create ‘Test Adapter for Google Test’. These test adapters share many of the same features and any differences will be explicitly labeled with [TAfGT] or [GTA] in this document. All updates to TAfGT go through Microsoft’s software development cycle. +Microsoft [collaborated with the creators of GTA](https://blogs.msdn.microsoft.com/vcblog/2017/05/10/unit-testing-and-the-future-announcing-the-test-adapter-for-google-test/) to fork their project and create ‘Test Adapter for Google Test’. These test adapters share many of the same features and any differences will be explicitly labeled with [TAfGT] or [GTA] in this document. GTA may contain more experimental features, whereas all updates to TAfGT must go through Microsoft’s software development cycle. ![Screenshot of Test Explorer](https://raw.githubusercontent.com/csoltenborn/GoogleTestAdapter/master/GoogleTestAdapter/VsPackage/Resources/Screenshot.png "Screenshot of Test Explorer") @@ -33,7 +33,8 @@ Microsoft [collaborated with the creators of GTA](https://blogs.msdn.microsoft.c #### History -* See [releases](https://github.com/Microsoft/TestAdapterForGoogleTest/blob/dev15/GoogleTestAdapter/Packaging.TAfGT/ReleaseNotes.txt) +* See [TAFGT releases](https://github.com/Microsoft/TestAdapterForGoogleTest/blob/dev15/GoogleTestAdapter/Packaging.TAfGT/ReleaseNotes.txt) +* See [GTA releases](https://github.com/csoltenborn/GoogleTestAdapter/releases). ### Usage @@ -44,7 +45,7 @@ Microsoft [collaborated with the creators of GTA](https://blogs.msdn.microsoft.c [![Download from NuGet](https://img.shields.io/nuget/vpre/GoogleTestAdapter.svg?colorB=0c7dbe&label=nuget)](https://www.nuget.org/packages/GoogleTestAdapter) [![Download at GitHub](https://img.shields.io/github/release/csoltenborn/GoogleTestAdapter/all.svg?colorB=0c7dbe&label=github)](https://github.com/csoltenborn/GoogleTestAdapter/releases) -The Test Adapter for Google Test can be installed in several ways: +The adapters can be installed in several ways: * Install through the Visual Studio Marketplace at *Tools/Extensions and Updates* - search for *Test Adapter for Google Test* or *Google Test Adapter*. * Download and launch the VSIX installer from either the Visual Studio Marketplace ([TAfGT](https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.TestAdapterforGoogleTest), [GTA](https://marketplace.visualstudio.com/items?itemName=ChristianSoltenborn.GoogleTestAdapter)) or [GitHub](https://github.com/csoltenborn/GoogleTestAdapter/releases/download/v0.10.1/GoogleTestAdapter-0.10.1.vsix) @@ -145,7 +146,7 @@ If you need to perform some setup or teardown tasks in addition to the setup/tea * [TAfGT] *Print debug info* at *Tools/Options/Test Adapter for Google Test/General* * [GTA] *Print debug info* at *Tools/Options/Google Test Adapter/General* -* This will show on the test console whether your test executables are found by GTA. If they are not, you have two options: +* This will show on the test console whether your test executables are found by the adapter. If they are not, you have two options: * Configure a *Regex for test discovery* at the same place. * If your test executable is `..\FooTests.exe`, make sure that a file `..\FooTests.exe.is_google_test` exists. * Your test executable can not run with command line option `--gtest_list_tests`, e.g. because it crashes. Make sure that your tests can be listed via command line; if they do not, debug your test executable, e.g. by making the according test project the startup project of your solution, and placing a breakpoint at the main method of your test executable. From 22b124d4d76cc5a1c077186eb07345597f7c6467 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Thu, 26 Oct 2017 16:33:55 -0700 Subject: [PATCH 60/92] update ids to not clash with stand alone version (#80) --- .../source.extension.vsixmanifest | 86 +++++++++---------- .../GoogleTestExtensionOptionsPage.cs | 2 +- .../GoogleTestExtensionOptionsPage.vsct | 2 +- 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest index f66f5d3c1..cd150046d 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest +++ b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest @@ -1,46 +1,46 @@  - - - Test Adapter for Google Test - Enables Visual Studio's testing tools with unit tests written for Google Test. - Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest - https://go.microsoft.com/fwlink/?linkid=848768 - use.txt - ReleaseNotes.txt - Resources\Icons\Icon.ico - Resources\Preview.png - Unit Test, C++, Google Test, GoogleTest, GTest, Test Explorer, Testing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NuGet Package Manager - http://docs.microsoft.com/nuget/ - + + + Test Adapter for Google Test + Enables Visual Studio's testing tools with unit tests written for Google Test. + Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest + https://go.microsoft.com/fwlink/?linkid=848768 + use.txt + ReleaseNotes.txt + Resources\Icons\Icon.ico + Resources\Preview.png + Unit Test, C++, Google Test, GoogleTest, GTest, Test Explorer, Testing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NuGet Package Manager + http://docs.microsoft.com/nuget/ + diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs index 3e58b1888..c0d37dc76 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs @@ -12,7 +12,7 @@ namespace GoogleTestAdapter.VsPackage new string[] { VSConstants.UICONTEXT.VCProject_string, TestExplorerContextGuid })] public partial class GoogleTestExtensionOptionsPage { - private const string PackageGuidString = "1db31773-234b-424b-a887-b451fb1ba837"; + private const string PackageGuidString = "6fac3232-df1d-400a-95ac-7daeaaee74ac"; private const string UIContextGuid = "7517f9ae-397f-48e1-8e1b-dac609d9f52d"; private const string TestExplorerContextGuid = "ec25b527-d893-4ec0-a814-d2c9f1782997"; private const string OptionsCategoryName = "Test Adapter for Google Test"; diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct index c7f1cac51..d07f1ad32 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.vsct @@ -98,7 +98,7 @@ - + From b5706c7ba50141042f6e85ccacbe947dc0be00ed Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Fri, 27 Oct 2017 14:42:31 -0700 Subject: [PATCH 61/92] remove swixproj and swr to fix setup (#82) --- ...o.VC.Ide.TestAdapterForGoogleTest.swixproj | 44 ------------------- ...Studio.VC.Ide.TestAdapterForGoogleTest.swr | 11 ----- ....VC.Ide.TestAdapterForGoogleTest.vsmanproj | 2 +- 3 files changed, 1 insertion(+), 56 deletions(-) delete mode 100644 swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj delete mode 100644 swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr diff --git a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj deleted file mode 100644 index 3bc04440a..000000000 --- a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swixproj +++ /dev/null @@ -1,44 +0,0 @@ - - - - neutral - false - Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest - manifest - true - 15.0 - 16.0 - GoogleTestAdapter - - - - - - - $(OutputPath)..\Packaging.TAfGT - - - - - - - - - - - $(PackagePreprocessorDefinitions); - VsixOutDir=$(VsixOutDir); - Version=$(BuildVersion); - VSGeneralVersion=$(VSGeneralVersion); - VSNextGeneralVersion=$(VSNextGeneralVersion); - - - - - - - - - diff --git a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr deleted file mode 100644 index 8e63ae9af..000000000 --- a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.swr +++ /dev/null @@ -1,11 +0,0 @@ -use vs - -package name=Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest - version=$(Version) - vs.package.type=vsix - vs.package.installSize=22265856 - vs.package.vsixId=GoogleTestAdapterVSIX.8486b54e-5768-482b-b224-7d069ca509d8 - vs.package.extensionDir=[installdir]\Common7\IDE\CommonExtensions\VC\TestAdapterForGoogleTest - -vs.payloads - vs.payload source=$(VsixOutDir)\Packaging.TAfGT.vsix diff --git a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj index 6a73ff1d4..760f2c1b3 100644 --- a/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj +++ b/swix/core/Microsoft.VisualStudio.VC.Ide.TestAdapterForGoogleTest.vsmanproj @@ -14,7 +14,7 @@ - + From 4da47c6e5ac011a176f67015262804f48669680a Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sat, 28 Oct 2017 12:53:48 +0200 Subject: [PATCH 62/92] reduced build verbosity again (too much info for now) --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index e2d71d7fa..b05f028ad 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -23,7 +23,7 @@ before_build: build: project: GoogleTestAdapter\GoogleTestAdapter.sln parallel: true - verbosity: detailed + verbosity: normal after_build: - ps: >- $version = $env:APPVEYOR_BUILD_VERSION.SubString(0, $env:APPVEYOR_BUILD_VERSION.LastIndexOf(".")) From 0e00a7e785f0b11bdacfb871f594e8d70b40d1e8 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sat, 28 Oct 2017 13:15:24 +0200 Subject: [PATCH 63/92] moved setlocal back to non-CI part for comparison of log output --- build_preparation.bat | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build_preparation.bat b/build_preparation.bat index 46d5cc870..91fc59ebc 100644 --- a/build_preparation.bat +++ b/build_preparation.bat @@ -1,5 +1,4 @@ @echo off -setlocal set VS_LOCATION=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community @@ -11,6 +10,8 @@ set MS_BUILD="%VS_LOCATION%\MSBuild\15.0\Bin\MSBuild.exe" if defined APPVEYOR goto Build +setlocal + echo: echo ====================================================================== echo You have to accept the following licenses before executing this batch file: From bc2b0d5b713b2ee8e12b0758033045a57c865ca2 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sat, 28 Oct 2017 14:09:15 +0200 Subject: [PATCH 64/92] moved platform and configuration, disabled blocking of build --- appveyor.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index b05f028ad..19a45f079 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,7 +1,5 @@ version: 0.12.0.{build} os: Visual Studio 2017 -configuration: Release -platform: Any CPU environment: RELEASE_KEY_PASSWORD: secure: 3+fpAMwxomiOZ5fzpb+3kjV4RvPSn0GRvFp71bZZs3QQr06zNU2Wvu4p77dmTKH+ @@ -20,6 +18,8 @@ before_build: Start-Process -WorkingDirectory GoogleTestAdapter -FilePath SetVersion.bat -ArgumentList $env:APPVEYOR_BUILD_VERSION Start-Process -WorkingDirectory GoogleTestAdapter\TestAdapter.Tests -FilePath IgnoreTests.bat -ArgumentList TestExecutorParallelTests.cs::RunTests_ParallelTestExecution_SpeedsUpTestExecution +configuration: Release +platform: Any CPU build: project: GoogleTestAdapter\GoogleTestAdapter.sln parallel: true @@ -83,8 +83,8 @@ after_test: - codecov -f "OpenCover_Integration_CoverageData.xml" -F Integration before_deploy: - set /p RELEASE_NOTES=<"C:\\GTAReleaseNotes.txt" -on_finish: - - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) +# on_finish: +# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) artifacts: - path: out\binaries\GoogleTestAdapter\$(configuration)\Packaging.GTA\GoogleTestAdapter-*.vsix name: VSIX installation package From a76e861eb0dbefb1f201b7c7898a5648225d8bf6 Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sat, 28 Oct 2017 14:15:21 +0200 Subject: [PATCH 65/92] added debug output to build preparation script --- build_preparation.bat | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/build_preparation.bat b/build_preparation.bat index 91fc59ebc..8baec5e7d 100644 --- a/build_preparation.bat +++ b/build_preparation.bat @@ -6,6 +6,8 @@ set DIA_SDK="%VS_LOCATION%\DIA SDK\bin" set VC_VARS_BAT="%VS_LOCATION%\VC\Auxiliary\Build\vcvars32.bat" set MS_BUILD="%VS_LOCATION%\MSBuild\15.0\Bin\MSBuild.exe" +echo Platform: %PLATFORM% +set TEMP_PLATFORM=%PLATFORM% if defined APPVEYOR goto Build @@ -28,29 +30,36 @@ if not "%input%" == "yes" goto End echo Setting adapter flavor to GTA powershell -Command "(gc TestAdapterFlavor.props) -replace '>TAfGT<', '>GTA<' | Out-File TestAdapterFlavor.props" +echo Platform: %PLATFORM% echo Executing T4 scripts set VisualStudioVersion=15.0 %MS_BUILD% ResolveTTs.proj +echo Platform: %PLATFORM% echo Removing TAfGT projects (for now) powershell -ExecutionPolicy Bypass .\Tools\RemoveProjects.ps1 -flavor GTA +echo Platform: %PLATFORM% echo Restoring NuGet packages cd GoogleTestAdapter nuget restore +echo Platform: %PLATFORM% echo Setting up VS Developer Prompt environment call %VC_VARS_BAT% +echo Platform: %PLATFORM% echo Copying DIA dlls cd DiaResolver copy %DIA_SDK%\msdia140.dll x86 copy %DIA_SDK%\amd64\msdia140.dll x64 +echo Platform: %PLATFORM% echo Generating dia2.dll cd dia2 powershell -ExecutionPolicy Bypass .\compile_typelib.ps1 +echo Platform: %PLATFORM% echo NOT building Google Test NuGet packages cd ..\..\.. @@ -65,4 +74,10 @@ rem powershell .\Build.ps1 -Verbose rem cd .. +if not defined APPVEYOR goto End + +set Platform=%TEMP_PLATFORM% +echo Platform: %PLATFORM% + + :End From 5542ae428c12c3746d7fe54d0873696dbad59bcd Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sat, 28 Oct 2017 15:16:46 +0200 Subject: [PATCH 66/92] removed debug output --- appveyor.yml | 4 ++-- build_preparation.bat | 12 ++---------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 19a45f079..d39976249 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,7 @@ version: 0.12.0.{build} os: Visual Studio 2017 +configuration: Release +platform: Any CPU environment: RELEASE_KEY_PASSWORD: secure: 3+fpAMwxomiOZ5fzpb+3kjV4RvPSn0GRvFp71bZZs3QQr06zNU2Wvu4p77dmTKH+ @@ -18,8 +20,6 @@ before_build: Start-Process -WorkingDirectory GoogleTestAdapter -FilePath SetVersion.bat -ArgumentList $env:APPVEYOR_BUILD_VERSION Start-Process -WorkingDirectory GoogleTestAdapter\TestAdapter.Tests -FilePath IgnoreTests.bat -ArgumentList TestExecutorParallelTests.cs::RunTests_ParallelTestExecution_SpeedsUpTestExecution -configuration: Release -platform: Any CPU build: project: GoogleTestAdapter\GoogleTestAdapter.sln parallel: true diff --git a/build_preparation.bat b/build_preparation.bat index 8baec5e7d..4ff0ac903 100644 --- a/build_preparation.bat +++ b/build_preparation.bat @@ -6,7 +6,6 @@ set DIA_SDK="%VS_LOCATION%\DIA SDK\bin" set VC_VARS_BAT="%VS_LOCATION%\VC\Auxiliary\Build\vcvars32.bat" set MS_BUILD="%VS_LOCATION%\MSBuild\15.0\Bin\MSBuild.exe" -echo Platform: %PLATFORM% set TEMP_PLATFORM=%PLATFORM% if defined APPVEYOR goto Build @@ -30,36 +29,29 @@ if not "%input%" == "yes" goto End echo Setting adapter flavor to GTA powershell -Command "(gc TestAdapterFlavor.props) -replace '>TAfGT<', '>GTA<' | Out-File TestAdapterFlavor.props" -echo Platform: %PLATFORM% echo Executing T4 scripts set VisualStudioVersion=15.0 %MS_BUILD% ResolveTTs.proj -echo Platform: %PLATFORM% echo Removing TAfGT projects (for now) powershell -ExecutionPolicy Bypass .\Tools\RemoveProjects.ps1 -flavor GTA -echo Platform: %PLATFORM% echo Restoring NuGet packages cd GoogleTestAdapter nuget restore -echo Platform: %PLATFORM% echo Setting up VS Developer Prompt environment call %VC_VARS_BAT% -echo Platform: %PLATFORM% echo Copying DIA dlls cd DiaResolver copy %DIA_SDK%\msdia140.dll x86 copy %DIA_SDK%\amd64\msdia140.dll x64 -echo Platform: %PLATFORM% echo Generating dia2.dll cd dia2 powershell -ExecutionPolicy Bypass .\compile_typelib.ps1 -echo Platform: %PLATFORM% echo NOT building Google Test NuGet packages cd ..\..\.. @@ -76,8 +68,8 @@ rem cd .. if not defined APPVEYOR goto End -set Platform=%TEMP_PLATFORM% -echo Platform: %PLATFORM% +echo Restoring PLATFORM env variable to %TEMP_PLATFORM% (currently: %PLATFORM%) +set PLATFORM=%TEMP_PLATFORM% :End From e54cd8347025e7268ab54387292a1c5da9412e23 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Tue, 31 Oct 2017 12:54:13 -0700 Subject: [PATCH 67/92] update template to use new id (#83) --- .../ProjectTemplates/Test/GoogleTest/GoogleTest.vstemplate | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vstemplate b/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vstemplate index c5cec5cb9..93e3df519 100644 --- a/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vstemplate +++ b/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vstemplate @@ -25,7 +25,7 @@ Microsoft.NewProjectWizard.WizardImplementation - + From 0fe7a2484a44d9a16e25107d6a63ad5fdd82bd3c Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 1 Nov 2017 17:06:44 -0700 Subject: [PATCH 68/92] allow for automated testing (#84) --- .../NewProjectWizard/WizardImplementation.cs | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index 2ffa66517..700773b1f 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -24,6 +24,7 @@ public class WizardImplementation : IWizard private const string WizardData = "$wizarddata$"; private const string RuntimeDebug = "$rtdebug$"; private const string RuntimeRelease = "$rtrelease$"; + private const string RunSilent = "$runsilent$"; private List projects = new List(); private int selectedProjectIndex; private IWizard nugetWizard; @@ -90,7 +91,19 @@ public void RunStarted(object automationObject, ConfigurationData configurationData = new ConfigurationData(dte, projectNames.ToArray()); SinglePageWizardDialog wiz = new SinglePageWizardDialog(Resources.WizardTitle, configurationData); - bool? success = wiz.ShowModal(); + + bool? success = false; + + // If RunSilent is true, we're in automated testing + if (replacementsDictionary[RunSilent] == "True") + { + success = true; + SetDefaultData(ref configurationData); + } + else + { + success = wiz.ShowModal(); + } if (success == false) { @@ -262,6 +275,13 @@ private static bool TryParseFrameworkName(string moniker, out FrameworkName resu result = null; return false; } + + private void SetDefaultData(ref ConfigurationData configurationData) + { + configurationData.ProjectIndex = -1; + configurationData.IsGTestStatic = true; + configurationData.IsRuntimeStatic = false; + } } public class ConfigurationData : IWizardData From e9a5a3d261123e1e86c662d8b90b57670f47d460 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Fri, 10 Nov 2017 16:52:24 -0800 Subject: [PATCH 69/92] Add back telemetry with an option to turn it off (#86) * add back telemetry with an option to turn it off * update lisence on new file --- GoogleTestAdapter/Core/Resources.Designer.cs | 18 +++++++++++ GoogleTestAdapter/Core/Resources.resx | 6 ++++ .../Settings/IGoogleTestAdapterSettings.cs | 4 ++- .../Core/Settings/RunSettings.cs | 4 ++- .../Core/Settings/SettingsWrapper.cs | 9 +++++- .../NewProjectWizard/NewProjectWizard.csproj | 12 +++++++ .../NewProjectWizard/Telemetry.cs | 31 +++++++++++++++---- .../NewProjectWizard/WizardImplementation.cs | 4 +-- .../Resources/AllTestSettings.gta.runsettings | 1 + .../TestAdapter/GoogleTestAdapterSettings.xsd | 1 + .../GoogleTestExtensionOptionsPage.cs | 8 ++++- .../GoogleTestExtensionOptionsPage.cs | 3 +- .../GoogleTestExtensionOptionsPage.cs | 5 +++ .../OptionsPages/GeneralOptionsDialogPage.cs | 22 +++++++++++++ .../VsPackage.TAfGT/VsPackage.TAfGT.csproj | 25 ++++++++------- 15 files changed, 129 insertions(+), 24 deletions(-) create mode 100644 GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs diff --git a/GoogleTestAdapter/Core/Resources.Designer.cs b/GoogleTestAdapter/Core/Resources.Designer.cs index 60fb8945e..b49527c0d 100644 --- a/GoogleTestAdapter/Core/Resources.Designer.cs +++ b/GoogleTestAdapter/Core/Resources.Designer.cs @@ -796,6 +796,24 @@ internal static string OptionPrintTestOutputDescription { } } + /// + /// Looks up a localized string similar to Report Telemetry. + /// + internal static string OptionReportNewProjectTelemetry { + get { + return ResourceManager.GetString("OptionReportNewProjectTelemetry", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Report telemetry to Visual Studio when using the New Project wizard for Google Test. + /// + internal static string OptionReportNewProjectTelemetryDescription { + get { + return ResourceManager.GetString("OptionReportNewProjectTelemetryDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Also run disabled tests. /// diff --git a/GoogleTestAdapter/Core/Resources.resx b/GoogleTestAdapter/Core/Resources.resx index 0b6703a94..4fdb1440c 100644 --- a/GoogleTestAdapter/Core/Resources.resx +++ b/GoogleTestAdapter/Core/Resources.resx @@ -421,6 +421,12 @@ Placeholders: Print the output of the Google Test executable(s) to the Tests Output window. + + Report Telemetry + + + Report telemetry to Visual Studio when using the New Project wizard for Google Test + Also run disabled tests diff --git a/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs b/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs index 2298625eb..a05b01c47 100644 --- a/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs +++ b/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 11/2017. namespace GoogleTestAdapter.Settings { @@ -43,6 +43,7 @@ public interface IGoogleTestAdapterSettings bool? TimestampOutput { get; set; } bool? ShowReleaseNotes { get; set; } bool? KillProcessesOnCancel { get; set; } + bool? ReportNewProjectTelemetry { get; set; } bool? UseNewTestExecutionFramework { get; set; } @@ -78,6 +79,7 @@ public static void GetUnsetValuesFrom(this IGoogleTestAdapterSettings self, IGoo self.TimestampOutput = self.TimestampOutput ?? other.TimestampOutput; self.ShowReleaseNotes = self.ShowReleaseNotes ?? other.ShowReleaseNotes; self.KillProcessesOnCancel = self.KillProcessesOnCancel ?? other.KillProcessesOnCancel; + self.ReportNewProjectTelemetry = self.ReportNewProjectTelemetry ?? other.ReportNewProjectTelemetry; self.UseNewTestExecutionFramework = self.UseNewTestExecutionFramework ?? other.UseNewTestExecutionFramework; diff --git a/GoogleTestAdapter/Core/Settings/RunSettings.cs b/GoogleTestAdapter/Core/Settings/RunSettings.cs index 1f9db9640..3b471946c 100644 --- a/GoogleTestAdapter/Core/Settings/RunSettings.cs +++ b/GoogleTestAdapter/Core/Settings/RunSettings.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 11/2017. using System; using System.Diagnostics; @@ -92,6 +92,8 @@ public RunSettings(string projectRegex) public virtual bool? KillProcessesOnCancel { get; set; } public bool ShouldSerializeKillProcessesOnCancel() { return KillProcessesOnCancel != null; } + public virtual bool? ReportNewProjectTelemetry { get; set; } + public bool ShouldSerializeReportNewProjectTelemetry() { return ReportNewProjectTelemetry != null; } public virtual bool? UseNewTestExecutionFramework { get; set; } public bool ShouldSerializeUseNewTestExecutionFramework() { return UseNewTestExecutionFramework != null; } diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index b60174ed0..7b2f60c11 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 11/2017. using System; using System.Collections.Generic; @@ -382,6 +382,13 @@ public virtual List TraitsRegexesAfter public virtual bool KillProcessesOnCancel => _currentSettings.KillProcessesOnCancel ?? OptionKillProcessesOnCancelDefaultValue; + + public static readonly string OptionReportNewProjectTelemetry = Resources.OptionReportNewProjectTelemetry; + public const bool OptionReportNewProjectTelemetryDefaultValue = true; + public static readonly string OptionReportNewProjectTelemetryDescription = Resources.OptionReportNewProjectTelemetryDescription; + + public virtual bool ReportNewProjectTelemetry => _currentSettings.ReportNewProjectTelemetry ?? OptionReportNewProjectTelemetryDefaultValue; + #endregion #region ParallelizationOptionsPage diff --git a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj index 4e176f362..c73726432 100644 --- a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj +++ b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj @@ -89,6 +89,12 @@ True + + True + + + True + True @@ -169,6 +175,12 @@ Designer + + + {55294b5f-a075-43f2-b0e9-2b11925e8b91} + VsPackage.TAfGT + + diff --git a/GoogleTestAdapter/NewProjectWizard/Telemetry.cs b/GoogleTestAdapter/NewProjectWizard/Telemetry.cs index 60c7a2e23..be647406a 100644 --- a/GoogleTestAdapter/NewProjectWizard/Telemetry.cs +++ b/GoogleTestAdapter/NewProjectWizard/Telemetry.cs @@ -2,8 +2,12 @@ // Licensed under the MIT license. using EnvDTE; +using GoogleTestAdapter.VsPackage; using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Extensibility; +using Microsoft.VisualStudio; +using Microsoft.VisualStudio.Shell; +using Microsoft.VisualStudio.Shell.Interop; using System; using System.Collections.Generic; using System.Diagnostics; @@ -14,26 +18,41 @@ namespace Microsoft.NewProjectWizard public static class Telemetry { private static TelemetryClient wizardClient = null; + private static GoogleTestExtensionOptionsPage options = null; static Telemetry() { TelemetryConfiguration config = CreateTelemetryConfig(); wizardClient = new TelemetryClient(config); PopulateContext(wizardClient, "GoogleTestAdapter"); + IVsShell shell = (IVsShell)Package.GetGlobalService(typeof(SVsShell)); + Guid guid = new Guid("6fac3232-df1d-400a-95ac-7daeaaee74ac"); + IVsPackage vsPackageTAfGT; + // TAfGT Package containing options + if (ErrorHandler.Failed(shell.IsPackageLoaded(guid, out vsPackageTAfGT))) + ErrorHandler.ThrowOnFailure(shell.LoadPackage(guid, out vsPackageTAfGT)); + + options = (GoogleTestExtensionOptionsPage)vsPackageTAfGT; } public static void LogProjectCreated(string nugetPackage) { - Dictionary projectCreatedProperties = new Dictionary(); - projectCreatedProperties.Add("NuGetUsed", nugetPackage); - wizardClient.TrackEvent("GTestProjectCreated", projectCreatedProperties, null); + if (options.ReportNewProjectTelemetry) + { + Dictionary projectCreatedProperties = new Dictionary(); + projectCreatedProperties.Add("NuGetUsed", nugetPackage); + wizardClient.TrackEvent("GTestProjectCreated", projectCreatedProperties, null); + } } public static void LogProjectCancelled(string exception) { - Dictionary projectCreatedProperties = new Dictionary(); - projectCreatedProperties.Add("Exception", exception); - wizardClient.TrackEvent("GTestProjectCancelled", projectCreatedProperties, null); + if (options.ReportNewProjectTelemetry) + { + Dictionary projectCreatedProperties = new Dictionary(); + projectCreatedProperties.Add("Exception", exception); + wizardClient.TrackEvent("GTestProjectCancelled", projectCreatedProperties, null); + } } private static TelemetryConfiguration CreateTelemetryConfig() diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index 700773b1f..57f29a50a 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -196,11 +196,11 @@ public void RunStarted(object automationObject, replacementsDictionary[TargetPlatformVersion] = versionString; } - //Telemetry.LogProjectCreated(nugetPackage); + Telemetry.LogProjectCreated(nugetPackage); } catch (WizardCancelledException ex) { - //Telemetry.LogProjectCancelled(ex.Message); + Telemetry.LogProjectCancelled(ex.Message); throw; } } diff --git a/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings b/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings index c959108e2..ac5a12e56 100644 --- a/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings +++ b/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings @@ -28,6 +28,7 @@ true true false + true diff --git a/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd b/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd index 3be9ce6fc..3267e2660 100644 --- a/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd +++ b/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd @@ -73,6 +73,7 @@ + diff --git a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs index e49755ce4..09ed9a4d0 100644 --- a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 11/2017. using GoogleTestAdapter.VsPackage.ReleaseNotes; using Microsoft.VisualStudio.Shell; @@ -60,5 +60,11 @@ private bool ShowReleaseNotes { get { return _generalOptions.ShowReleaseNotes; } } + + // No New Project wizard for GTA + private bool ReportNewProjectTelemetry + { + get { return false; } + } } } diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index 90bb61a3f..e3fdec708 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 11/2017. using GoogleTestAdapter.Settings; using GoogleTestAdapter.TestAdapter.Settings; @@ -188,6 +188,7 @@ private RunSettings GetRunSettingsFromOptionPages() BatchForTestSetup = _generalOptions.BatchForTestSetup, BatchForTestTeardown = _generalOptions.BatchForTestTeardown, KillProcessesOnCancel = _generalOptions.KillProcessesOnCancel, + ReportNewProjectTelemetry = ReportNewProjectTelemetry, CatchExceptions = _googleTestOptions.CatchExceptions, BreakOnFailure = _googleTestOptions.BreakOnFailure, diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs index c0d37dc76..87cdb72ef 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs @@ -26,5 +26,10 @@ private bool ShowReleaseNotes { get { return false; } } + + public bool ReportNewProjectTelemetry + { + get { return _generalOptions.ReportNewProjectTelemetry; } + } } } diff --git a/GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs new file mode 100644 index 000000000..21dd75f77 --- /dev/null +++ b/GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using GoogleTestAdapter.Settings; + +namespace GoogleTestAdapter.VsPackage.OptionsPages +{ + + public partial class GeneralOptionsDialogPage : NotifyingDialogPage + { + [LocalizedCategory("CategoryMiscName")] + [LocalizedDisplayName("OptionReportNewProjectTelemetry")] + [LocalizedDescription("OptionReportNewProjectTelemetryDescription")] + public bool ReportNewProjectTelemetry + { + get { return _reportNewProjectTelemetry; } + set { SetAndNotify(ref _reportNewProjectTelemetry, value); } + } + private bool _reportNewProjectTelemetry = SettingsWrapper.OptionReportNewProjectTelemetryDefaultValue; + } + +} \ No newline at end of file diff --git a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj index 9cb3a9132..81b0b2bf9 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj +++ b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj @@ -74,6 +74,9 @@ + + Component + @@ -211,15 +214,15 @@ - $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.dll.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.dll.lcl Microsoft StrongName - - - false + + + false @@ -274,12 +277,12 @@ - - - - Microsoft - StrongName - - + + + + Microsoft + StrongName + + \ No newline at end of file From d141196872d9360dbee6e45123df41ebeee23503 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Mon, 13 Nov 2017 17:00:12 -0800 Subject: [PATCH 70/92] Revert "Add back telemetry with an option to turn it off (#86)" (#88) This reverts commit e9a5a3d261123e1e86c662d8b90b57670f47d460. --- GoogleTestAdapter/Core/Resources.Designer.cs | 18 ----------- GoogleTestAdapter/Core/Resources.resx | 6 ---- .../Settings/IGoogleTestAdapterSettings.cs | 4 +-- .../Core/Settings/RunSettings.cs | 4 +-- .../Core/Settings/SettingsWrapper.cs | 9 +----- .../NewProjectWizard/NewProjectWizard.csproj | 12 ------- .../NewProjectWizard/Telemetry.cs | 31 ++++--------------- .../NewProjectWizard/WizardImplementation.cs | 4 +-- .../Resources/AllTestSettings.gta.runsettings | 1 - .../TestAdapter/GoogleTestAdapterSettings.xsd | 1 - .../GoogleTestExtensionOptionsPage.cs | 8 +---- .../GoogleTestExtensionOptionsPage.cs | 3 +- .../GoogleTestExtensionOptionsPage.cs | 5 --- .../OptionsPages/GeneralOptionsDialogPage.cs | 22 ------------- .../VsPackage.TAfGT/VsPackage.TAfGT.csproj | 25 +++++++-------- 15 files changed, 24 insertions(+), 129 deletions(-) delete mode 100644 GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs diff --git a/GoogleTestAdapter/Core/Resources.Designer.cs b/GoogleTestAdapter/Core/Resources.Designer.cs index b49527c0d..60fb8945e 100644 --- a/GoogleTestAdapter/Core/Resources.Designer.cs +++ b/GoogleTestAdapter/Core/Resources.Designer.cs @@ -796,24 +796,6 @@ internal static string OptionPrintTestOutputDescription { } } - /// - /// Looks up a localized string similar to Report Telemetry. - /// - internal static string OptionReportNewProjectTelemetry { - get { - return ResourceManager.GetString("OptionReportNewProjectTelemetry", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Report telemetry to Visual Studio when using the New Project wizard for Google Test. - /// - internal static string OptionReportNewProjectTelemetryDescription { - get { - return ResourceManager.GetString("OptionReportNewProjectTelemetryDescription", resourceCulture); - } - } - /// /// Looks up a localized string similar to Also run disabled tests. /// diff --git a/GoogleTestAdapter/Core/Resources.resx b/GoogleTestAdapter/Core/Resources.resx index 4fdb1440c..0b6703a94 100644 --- a/GoogleTestAdapter/Core/Resources.resx +++ b/GoogleTestAdapter/Core/Resources.resx @@ -421,12 +421,6 @@ Placeholders: Print the output of the Google Test executable(s) to the Tests Output window. - - Report Telemetry - - - Report telemetry to Visual Studio when using the New Project wizard for Google Test - Also run disabled tests diff --git a/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs b/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs index a05b01c47..2298625eb 100644 --- a/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs +++ b/GoogleTestAdapter/Core/Settings/IGoogleTestAdapterSettings.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 11/2017. +// This file has been modified by Microsoft on 6/2017. namespace GoogleTestAdapter.Settings { @@ -43,7 +43,6 @@ public interface IGoogleTestAdapterSettings bool? TimestampOutput { get; set; } bool? ShowReleaseNotes { get; set; } bool? KillProcessesOnCancel { get; set; } - bool? ReportNewProjectTelemetry { get; set; } bool? UseNewTestExecutionFramework { get; set; } @@ -79,7 +78,6 @@ public static void GetUnsetValuesFrom(this IGoogleTestAdapterSettings self, IGoo self.TimestampOutput = self.TimestampOutput ?? other.TimestampOutput; self.ShowReleaseNotes = self.ShowReleaseNotes ?? other.ShowReleaseNotes; self.KillProcessesOnCancel = self.KillProcessesOnCancel ?? other.KillProcessesOnCancel; - self.ReportNewProjectTelemetry = self.ReportNewProjectTelemetry ?? other.ReportNewProjectTelemetry; self.UseNewTestExecutionFramework = self.UseNewTestExecutionFramework ?? other.UseNewTestExecutionFramework; diff --git a/GoogleTestAdapter/Core/Settings/RunSettings.cs b/GoogleTestAdapter/Core/Settings/RunSettings.cs index 3b471946c..1f9db9640 100644 --- a/GoogleTestAdapter/Core/Settings/RunSettings.cs +++ b/GoogleTestAdapter/Core/Settings/RunSettings.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 11/2017. +// This file has been modified by Microsoft on 6/2017. using System; using System.Diagnostics; @@ -92,8 +92,6 @@ public RunSettings(string projectRegex) public virtual bool? KillProcessesOnCancel { get; set; } public bool ShouldSerializeKillProcessesOnCancel() { return KillProcessesOnCancel != null; } - public virtual bool? ReportNewProjectTelemetry { get; set; } - public bool ShouldSerializeReportNewProjectTelemetry() { return ReportNewProjectTelemetry != null; } public virtual bool? UseNewTestExecutionFramework { get; set; } public bool ShouldSerializeUseNewTestExecutionFramework() { return UseNewTestExecutionFramework != null; } diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index 7b2f60c11..b60174ed0 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 11/2017. +// This file has been modified by Microsoft on 9/2017. using System; using System.Collections.Generic; @@ -382,13 +382,6 @@ public virtual List TraitsRegexesAfter public virtual bool KillProcessesOnCancel => _currentSettings.KillProcessesOnCancel ?? OptionKillProcessesOnCancelDefaultValue; - - public static readonly string OptionReportNewProjectTelemetry = Resources.OptionReportNewProjectTelemetry; - public const bool OptionReportNewProjectTelemetryDefaultValue = true; - public static readonly string OptionReportNewProjectTelemetryDescription = Resources.OptionReportNewProjectTelemetryDescription; - - public virtual bool ReportNewProjectTelemetry => _currentSettings.ReportNewProjectTelemetry ?? OptionReportNewProjectTelemetryDefaultValue; - #endregion #region ParallelizationOptionsPage diff --git a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj index c73726432..4e176f362 100644 --- a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj +++ b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj @@ -89,12 +89,6 @@ True - - True - - - True - True @@ -175,12 +169,6 @@ Designer - - - {55294b5f-a075-43f2-b0e9-2b11925e8b91} - VsPackage.TAfGT - - diff --git a/GoogleTestAdapter/NewProjectWizard/Telemetry.cs b/GoogleTestAdapter/NewProjectWizard/Telemetry.cs index be647406a..60c7a2e23 100644 --- a/GoogleTestAdapter/NewProjectWizard/Telemetry.cs +++ b/GoogleTestAdapter/NewProjectWizard/Telemetry.cs @@ -2,12 +2,8 @@ // Licensed under the MIT license. using EnvDTE; -using GoogleTestAdapter.VsPackage; using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.Shell.Interop; using System; using System.Collections.Generic; using System.Diagnostics; @@ -18,41 +14,26 @@ namespace Microsoft.NewProjectWizard public static class Telemetry { private static TelemetryClient wizardClient = null; - private static GoogleTestExtensionOptionsPage options = null; static Telemetry() { TelemetryConfiguration config = CreateTelemetryConfig(); wizardClient = new TelemetryClient(config); PopulateContext(wizardClient, "GoogleTestAdapter"); - IVsShell shell = (IVsShell)Package.GetGlobalService(typeof(SVsShell)); - Guid guid = new Guid("6fac3232-df1d-400a-95ac-7daeaaee74ac"); - IVsPackage vsPackageTAfGT; - // TAfGT Package containing options - if (ErrorHandler.Failed(shell.IsPackageLoaded(guid, out vsPackageTAfGT))) - ErrorHandler.ThrowOnFailure(shell.LoadPackage(guid, out vsPackageTAfGT)); - - options = (GoogleTestExtensionOptionsPage)vsPackageTAfGT; } public static void LogProjectCreated(string nugetPackage) { - if (options.ReportNewProjectTelemetry) - { - Dictionary projectCreatedProperties = new Dictionary(); - projectCreatedProperties.Add("NuGetUsed", nugetPackage); - wizardClient.TrackEvent("GTestProjectCreated", projectCreatedProperties, null); - } + Dictionary projectCreatedProperties = new Dictionary(); + projectCreatedProperties.Add("NuGetUsed", nugetPackage); + wizardClient.TrackEvent("GTestProjectCreated", projectCreatedProperties, null); } public static void LogProjectCancelled(string exception) { - if (options.ReportNewProjectTelemetry) - { - Dictionary projectCreatedProperties = new Dictionary(); - projectCreatedProperties.Add("Exception", exception); - wizardClient.TrackEvent("GTestProjectCancelled", projectCreatedProperties, null); - } + Dictionary projectCreatedProperties = new Dictionary(); + projectCreatedProperties.Add("Exception", exception); + wizardClient.TrackEvent("GTestProjectCancelled", projectCreatedProperties, null); } private static TelemetryConfiguration CreateTelemetryConfig() diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index 57f29a50a..700773b1f 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -196,11 +196,11 @@ public void RunStarted(object automationObject, replacementsDictionary[TargetPlatformVersion] = versionString; } - Telemetry.LogProjectCreated(nugetPackage); + //Telemetry.LogProjectCreated(nugetPackage); } catch (WizardCancelledException ex) { - Telemetry.LogProjectCancelled(ex.Message); + //Telemetry.LogProjectCancelled(ex.Message); throw; } } diff --git a/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings b/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings index ac5a12e56..c959108e2 100644 --- a/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings +++ b/GoogleTestAdapter/Resources/AllTestSettings.gta.runsettings @@ -28,7 +28,6 @@ true true false - true diff --git a/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd b/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd index 3267e2660..3be9ce6fc 100644 --- a/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd +++ b/GoogleTestAdapter/TestAdapter/GoogleTestAdapterSettings.xsd @@ -73,7 +73,6 @@ - diff --git a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs index 09ed9a4d0..e49755ce4 100644 --- a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 11/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.VsPackage.ReleaseNotes; using Microsoft.VisualStudio.Shell; @@ -60,11 +60,5 @@ private bool ShowReleaseNotes { get { return _generalOptions.ShowReleaseNotes; } } - - // No New Project wizard for GTA - private bool ReportNewProjectTelemetry - { - get { return false; } - } } } diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index e3fdec708..90bb61a3f 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 11/2017. +// This file has been modified by Microsoft on 9/2017. using GoogleTestAdapter.Settings; using GoogleTestAdapter.TestAdapter.Settings; @@ -188,7 +188,6 @@ private RunSettings GetRunSettingsFromOptionPages() BatchForTestSetup = _generalOptions.BatchForTestSetup, BatchForTestTeardown = _generalOptions.BatchForTestTeardown, KillProcessesOnCancel = _generalOptions.KillProcessesOnCancel, - ReportNewProjectTelemetry = ReportNewProjectTelemetry, CatchExceptions = _googleTestOptions.CatchExceptions, BreakOnFailure = _googleTestOptions.BreakOnFailure, diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs index 87cdb72ef..c0d37dc76 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs @@ -26,10 +26,5 @@ private bool ShowReleaseNotes { get { return false; } } - - public bool ReportNewProjectTelemetry - { - get { return _generalOptions.ReportNewProjectTelemetry; } - } } } diff --git a/GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs deleted file mode 100644 index 21dd75f77..000000000 --- a/GoogleTestAdapter/VsPackage.TAfGT/OptionsPages/GeneralOptionsDialogPage.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using GoogleTestAdapter.Settings; - -namespace GoogleTestAdapter.VsPackage.OptionsPages -{ - - public partial class GeneralOptionsDialogPage : NotifyingDialogPage - { - [LocalizedCategory("CategoryMiscName")] - [LocalizedDisplayName("OptionReportNewProjectTelemetry")] - [LocalizedDescription("OptionReportNewProjectTelemetryDescription")] - public bool ReportNewProjectTelemetry - { - get { return _reportNewProjectTelemetry; } - set { SetAndNotify(ref _reportNewProjectTelemetry, value); } - } - private bool _reportNewProjectTelemetry = SettingsWrapper.OptionReportNewProjectTelemetryDefaultValue; - } - -} \ No newline at end of file diff --git a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj index 81b0b2bf9..9cb3a9132 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj +++ b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj @@ -74,9 +74,6 @@ - - Component - @@ -214,15 +211,15 @@ - $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.dll.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.dll.lcl Microsoft StrongName - - - false + + + false @@ -277,12 +274,12 @@ - - - - Microsoft - StrongName - - + + + + Microsoft + StrongName + + \ No newline at end of file From 3b5f67b24b8db1647132356fb2dde16f7b2ed22a Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Tue, 14 Nov 2017 15:35:09 -0800 Subject: [PATCH 71/92] remove telemetry (#90) --- .../ApplicationInsights.config | 3 - .../NewProjectWizard/NewProjectWizard.csproj | 5 - .../NewProjectWizard/Telemetry.cs | 69 ------- .../NewProjectWizard/WizardImplementation.cs | 190 +++++++++--------- .../NewProjectWizard/packages.config | 1 - 5 files changed, 90 insertions(+), 178 deletions(-) delete mode 100644 GoogleTestAdapter/NewProjectWizard/ApplicationInsights.config delete mode 100644 GoogleTestAdapter/NewProjectWizard/Telemetry.cs diff --git a/GoogleTestAdapter/NewProjectWizard/ApplicationInsights.config b/GoogleTestAdapter/NewProjectWizard/ApplicationInsights.config deleted file mode 100644 index ec406213f..000000000 --- a/GoogleTestAdapter/NewProjectWizard/ApplicationInsights.config +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj index 4e176f362..af07d62b9 100644 --- a/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj +++ b/GoogleTestAdapter/NewProjectWizard/NewProjectWizard.csproj @@ -58,9 +58,6 @@ - - $(NuGetPackages)Microsoft.ApplicationInsights.2.3.0\lib\net45\Microsoft.ApplicationInsights.dll - $(NuGetPackages)Microsoft.Build.Utilities.Core.14.3.0\lib\net45\Microsoft.Build.Utilities.Core.dll @@ -126,7 +123,6 @@ SinglePageWizardDialog.xaml - @@ -139,7 +135,6 @@ Resources.resx True - diff --git a/GoogleTestAdapter/NewProjectWizard/Telemetry.cs b/GoogleTestAdapter/NewProjectWizard/Telemetry.cs deleted file mode 100644 index 60c7a2e23..000000000 --- a/GoogleTestAdapter/NewProjectWizard/Telemetry.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using EnvDTE; -using Microsoft.ApplicationInsights; -using Microsoft.ApplicationInsights.Extensibility; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Reflection; - -namespace Microsoft.NewProjectWizard -{ - public static class Telemetry - { - private static TelemetryClient wizardClient = null; - - static Telemetry() - { - TelemetryConfiguration config = CreateTelemetryConfig(); - wizardClient = new TelemetryClient(config); - PopulateContext(wizardClient, "GoogleTestAdapter"); - } - - public static void LogProjectCreated(string nugetPackage) - { - Dictionary projectCreatedProperties = new Dictionary(); - projectCreatedProperties.Add("NuGetUsed", nugetPackage); - wizardClient.TrackEvent("GTestProjectCreated", projectCreatedProperties, null); - } - - public static void LogProjectCancelled(string exception) - { - Dictionary projectCreatedProperties = new Dictionary(); - projectCreatedProperties.Add("Exception", exception); - wizardClient.TrackEvent("GTestProjectCancelled", projectCreatedProperties, null); - } - - private static TelemetryConfiguration CreateTelemetryConfig() - { - TelemetryConfiguration config = TelemetryConfiguration.Active; -#if DEBUG - config.TelemetryChannel.DeveloperMode = true; -#endif - return config; - } - - private static void PopulateContext(TelemetryClient client, string scenario) - { - try - { - client.Context.Session.Id = DateTime.Now.ToFileTime().ToString(); - - string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - client.Context.Properties["App.Version"] = version; - - var dte = (DTE)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(DTE)); - if (dte != null) - client.Context.Properties["VisualStudio.Version"] = dte.Version; - - client.Context.Properties["App.Scenario"] = scenario; - } - catch (MissingMemberException mme) - { - Trace.WriteLine(String.Format("Error populating telemetry context: {0}", mme.ToString())); - } - } - } -} diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index 700773b1f..8c67292ce 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -74,134 +74,124 @@ public void RunStarted(object automationObject, Dictionary replacementsDictionary, WizardRunKind runKind, object[] customParams) { - try - { - DTE dte = (DTE)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SDTE)); - Projects dteProjects = dte.Solution.Projects; - List projectNames = new List(); - bool isPlatformSet = false; + DTE dte = (DTE)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SDTE)); + Projects dteProjects = dte.Solution.Projects; + List projectNames = new List(); + bool isPlatformSet = false; - foreach (Project project in dteProjects) - { - // TODO: Filter out projects not applicable - projects.Add(project); - projectNames.Add(project.Name); - } + foreach (Project project in dteProjects) + { + // TODO: Filter out projects not applicable + projects.Add(project); + projectNames.Add(project.Name); + } - ConfigurationData configurationData = new ConfigurationData(dte, projectNames.ToArray()); + ConfigurationData configurationData = new ConfigurationData(dte, projectNames.ToArray()); - SinglePageWizardDialog wiz = new SinglePageWizardDialog(Resources.WizardTitle, configurationData); + SinglePageWizardDialog wiz = new SinglePageWizardDialog(Resources.WizardTitle, configurationData); - bool? success = false; + bool? success = false; - // If RunSilent is true, we're in automated testing - if (replacementsDictionary[RunSilent] == "True") - { - success = true; - SetDefaultData(ref configurationData); - } - else - { - success = wiz.ShowModal(); - } + // If RunSilent is true, we're in automated testing + if (replacementsDictionary[RunSilent] == "True") + { + success = true; + SetDefaultData(ref configurationData); + } + else + { + success = wiz.ShowModal(); + } - if (success == false) - { - throw new WizardCancelledException(); - } + if (success == false) + { + throw new WizardCancelledException(); + } - selectedProjectIndex = configurationData.ProjectIndex; + selectedProjectIndex = configurationData.ProjectIndex; - if (selectedProjectIndex >= 0) + if (selectedProjectIndex >= 0) + { + foreach (Property prop in projects[selectedProjectIndex].Properties) { - foreach (Property prop in projects[selectedProjectIndex].Properties) + if (prop.Name.Equals("WindowsTargetPlatformVersion")) { - if (prop.Name.Equals("WindowsTargetPlatformVersion")) - { - replacementsDictionary[TargetPlatformVersion] = (string)prop.Value; - isPlatformSet = true; - } + replacementsDictionary[TargetPlatformVersion] = (string)prop.Value; + isPlatformSet = true; } } + } - string consumeGTestAs = configurationData.IsGTestStatic ? "static" : "dyn"; - string runtimeLibs = configurationData.IsRuntimeStatic ? "static" : "dyn"; - string nugetPackage = "Microsoft.googletest.v140.windesktop.msvcstl." + consumeGTestAs + ".rt-" + runtimeLibs; + string consumeGTestAs = configurationData.IsGTestStatic ? "static" : "dyn"; + string runtimeLibs = configurationData.IsRuntimeStatic ? "static" : "dyn"; + string nugetPackage = "Microsoft.googletest.v140.windesktop.msvcstl." + consumeGTestAs + ".rt-" + runtimeLibs; - // Work around so we can choose the package for the nuget wizard - string tmpWizardData = Path.GetTempFileName(); - File.AppendAllText(tmpWizardData, ""); - File.AppendAllText(tmpWizardData, replacementsDictionary[WizardData].Replace("$nugetpackage$", nugetPackage)); - File.AppendAllText(tmpWizardData, ""); - customParams[0] = tmpWizardData; + // Work around so we can choose the package for the nuget wizard + string tmpWizardData = Path.GetTempFileName(); + File.AppendAllText(tmpWizardData, ""); + File.AppendAllText(tmpWizardData, replacementsDictionary[WizardData].Replace("$nugetpackage$", nugetPackage)); + File.AppendAllText(tmpWizardData, ""); + customParams[0] = tmpWizardData; - try - { - Assembly nugetAssembly = Assembly.Load("NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); - nugetWizard = (IWizard)nugetAssembly.CreateInstance("NuGet.VisualStudio.TemplateWizard"); - nugetWizard.RunStarted(automationObject, replacementsDictionary, runKind, customParams); - } - catch (Exception) - { - ShowRtlAwareMessageBox(Resources.NuGetInteropNotFound); - throw; - } + try + { + Assembly nugetAssembly = Assembly.Load("NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); + nugetWizard = (IWizard)nugetAssembly.CreateInstance("NuGet.VisualStudio.TemplateWizard"); + nugetWizard.RunStarted(automationObject, replacementsDictionary, runKind, customParams); + } + catch (Exception) + { + ShowRtlAwareMessageBox(Resources.NuGetInteropNotFound); + throw; + } - if (configurationData.IsRuntimeStatic) - { - replacementsDictionary[RuntimeRelease] = "MultiThreaded"; - replacementsDictionary[RuntimeDebug] = "MultiThreadedDebug"; - } - else + if (configurationData.IsRuntimeStatic) + { + replacementsDictionary[RuntimeRelease] = "MultiThreaded"; + replacementsDictionary[RuntimeDebug] = "MultiThreadedDebug"; + } + else + { + replacementsDictionary[RuntimeRelease] = "MultiThreadedDLL"; + replacementsDictionary[RuntimeDebug] = "MultiThreadedDebugDLL"; + } + + if (!isPlatformSet) + { + IEnumerable platformSdks = ToolLocationHelper.GetTargetPlatformSdks(); + IEnumerable allSdks = WizardImplementation.GetAllPlatformSdks(); + TargetPlatformSDK latestSdk = allSdks.FirstOrDefault(); + + if (latestSdk == null) { - replacementsDictionary[RuntimeRelease] = "MultiThreadedDLL"; - replacementsDictionary[RuntimeDebug] = "MultiThreadedDebugDLL"; + ShowRtlAwareMessageBox(Resources.WinSDKNotFound); + throw new WizardCancelledException(Resources.WinSDKNotFound); } - if (!isPlatformSet) + string versionString; + + if (latestSdk.TargetPlatformVersion.Major >= 10) { - IEnumerable platformSdks = ToolLocationHelper.GetTargetPlatformSdks(); - IEnumerable allSdks = WizardImplementation.GetAllPlatformSdks(); - TargetPlatformSDK latestSdk = allSdks.FirstOrDefault(); + List allPlatformsForLatestSdk = ToolLocationHelper.GetPlatformsForSDK("Windows", latestSdk.TargetPlatformVersion) + .Select(moniker => TryParsePlatformVersion(moniker)) + .Where(name => name != null) + .OrderByDescending(p => p.Version).ToList(); + Platform latestPlatform = allPlatformsForLatestSdk.FirstOrDefault(); - if (latestSdk == null) + if (latestPlatform == null) { ShowRtlAwareMessageBox(Resources.WinSDKNotFound); throw new WizardCancelledException(Resources.WinSDKNotFound); } - string versionString; - - if (latestSdk.TargetPlatformVersion.Major >= 10) - { - List allPlatformsForLatestSdk = ToolLocationHelper.GetPlatformsForSDK("Windows", latestSdk.TargetPlatformVersion) - .Select(moniker => TryParsePlatformVersion(moniker)) - .Where(name => name != null) - .OrderByDescending(p => p.Version).ToList(); - Platform latestPlatform = allPlatformsForLatestSdk.FirstOrDefault(); - - if (latestPlatform == null) - { - ShowRtlAwareMessageBox(Resources.WinSDKNotFound); - throw new WizardCancelledException(Resources.WinSDKNotFound); - } - - versionString = latestPlatform.Version.ToString(); - } - else - { - versionString = latestSdk.TargetPlatformVersion.ToString(); - } - - replacementsDictionary[TargetPlatformVersion] = versionString; + versionString = latestPlatform.Version.ToString(); + } + else + { + versionString = latestSdk.TargetPlatformVersion.ToString(); } - //Telemetry.LogProjectCreated(nugetPackage); - } - catch (WizardCancelledException ex) - { - //Telemetry.LogProjectCancelled(ex.Message); - throw; + replacementsDictionary[TargetPlatformVersion] = versionString; } } diff --git a/GoogleTestAdapter/NewProjectWizard/packages.config b/GoogleTestAdapter/NewProjectWizard/packages.config index 48350348e..4bab92b93 100644 --- a/GoogleTestAdapter/NewProjectWizard/packages.config +++ b/GoogleTestAdapter/NewProjectWizard/packages.config @@ -1,6 +1,5 @@  - \ No newline at end of file From 65f71d9dce8c530cda4c1d9ea02b4b326c956d11 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 22 Nov 2017 12:46:23 -0800 Subject: [PATCH 72/92] move templates to use template projects instead of pre build zip script (#91) --- GoogleTestAdapter/GoogleTestAdapter.sln | 14 +++- .../GoogleTest.vstemplate | 0 .../GoogleTestItemTemplate.csproj | 64 ++++++++++++++++ .../GoogleTestItemTemplate/Icon.ico | Bin 0 -> 64782 bytes .../test.cpp | 0 .../GoogleTest.vcxproj | 0 .../GoogleTest.vstemplate | 0 .../GoogleTestProjectTemplate.csproj | 69 ++++++++++++++++++ .../GoogleTestProjectTemplate/Icon.ico | Bin 0 -> 64782 bytes .../pch.cpp | 0 .../pch.h | 0 .../test.cpp | 0 .../ItemTemplates/Test/.gitignore | 1 - .../Packaging.TAfGT/Packaging.TAfGT.csproj | 29 ++++---- .../source.extension.vsixmanifest | 4 +- .../ProjectTemplates/Test/.gitignore | 1 - 16 files changed, 162 insertions(+), 20 deletions(-) rename GoogleTestAdapter/{ItemTemplates/Test/GoogleTest => GoogleTestItemTemplate}/GoogleTest.vstemplate (100%) create mode 100644 GoogleTestAdapter/GoogleTestItemTemplate/GoogleTestItemTemplate.csproj create mode 100644 GoogleTestAdapter/GoogleTestItemTemplate/Icon.ico rename GoogleTestAdapter/{ItemTemplates/Test/GoogleTest => GoogleTestItemTemplate}/test.cpp (100%) rename GoogleTestAdapter/{ProjectTemplates/Test/GoogleTest => GoogleTestProjectTemplate}/GoogleTest.vcxproj (100%) rename GoogleTestAdapter/{ProjectTemplates/Test/GoogleTest => GoogleTestProjectTemplate}/GoogleTest.vstemplate (100%) create mode 100644 GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj create mode 100644 GoogleTestAdapter/GoogleTestProjectTemplate/Icon.ico rename GoogleTestAdapter/{ProjectTemplates/Test/GoogleTest => GoogleTestProjectTemplate}/pch.cpp (100%) rename GoogleTestAdapter/{ProjectTemplates/Test/GoogleTest => GoogleTestProjectTemplate}/pch.h (100%) rename GoogleTestAdapter/{ProjectTemplates/Test/GoogleTest => GoogleTestProjectTemplate}/test.cpp (100%) delete mode 100644 GoogleTestAdapter/ItemTemplates/Test/.gitignore delete mode 100644 GoogleTestAdapter/ProjectTemplates/Test/.gitignore diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index e80257e60..170598ca3 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26823.1 +VisualStudioVersion = 15.0.27120.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1F754A4D-BD42-4368-8B90-F3C03F24A2F3}" ProjectSection(SolutionItems) = preProject @@ -140,6 +140,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeGtestDllApplication", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FakeGtestDllApplication-x64", "FakeGtestDll\FakeGtestDllApplication-x64.vcxproj", "{05C435E1-603C-4402-B28C-E54932F3131C}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GoogleTestProjectTemplate", "GoogleTestProjectTemplate\GoogleTestProjectTemplate.csproj", "{A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GoogleTestItemTemplate", "GoogleTestItemTemplate\GoogleTestItemTemplate.csproj", "{87A1108A-3819-4B31-99EA-217F3E11E958}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution VsPackage.Shared\VsPackage.Shared.projitems*{55294b5f-a075-43f2-b0e9-2b11925e8b91}*SharedItemsImports = 4 @@ -279,6 +283,14 @@ Global {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|Any CPU.Build.0 = Debug|x64 {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.ActiveCfg = Release|x64 {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.Build.0 = Release|x64 + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Release|Any CPU.Build.0 = Release|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/GoogleTestAdapter/ItemTemplates/Test/GoogleTest/GoogleTest.vstemplate b/GoogleTestAdapter/GoogleTestItemTemplate/GoogleTest.vstemplate similarity index 100% rename from GoogleTestAdapter/ItemTemplates/Test/GoogleTest/GoogleTest.vstemplate rename to GoogleTestAdapter/GoogleTestItemTemplate/GoogleTest.vstemplate diff --git a/GoogleTestAdapter/GoogleTestItemTemplate/GoogleTestItemTemplate.csproj b/GoogleTestAdapter/GoogleTestItemTemplate/GoogleTestItemTemplate.csproj new file mode 100644 index 000000000..8acbfbacf --- /dev/null +++ b/GoogleTestAdapter/GoogleTestItemTemplate/GoogleTestItemTemplate.csproj @@ -0,0 +1,64 @@ + + + + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + Debug + AnyCPU + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {87A1108A-3819-4B31-99EA-217F3E11E958} + Library + Properties + GoogleTestItemTemplate + GoogleTestItemTemplate + v4.6.1 + 512 + false + false + false + false + false + false + false + false + false + false + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + Designer + Test + + + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/GoogleTestItemTemplate/Icon.ico b/GoogleTestAdapter/GoogleTestItemTemplate/Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3f71a88c40dc3d6179ea3c2949cd19de7c916667 GIT binary patch literal 64782 zcmeFa1z1%}+c&=UhD{^gu}J|bF%S?5K^o~!!9q$Yl@=6G6c7moln@Z4rKCZTQc?t@ zRU`x?r1L*(1NM22=lNgn_r2eBopH~eH8Xeo?t5a*%w8@a2muj6a6mwK5CbO!)qra$ zsjWOWH3Yo_WqbE-+YT#ttc`;hdwU{81>giE#{Mu+K=VN(1b{gli`N zMhO4Bf`KCh?RpMJM6G?wNeJS|R+N?2zGOOi->mMG&T?(AWJ*XWshz>wMA3!`RBx& z$2LYJHw{WZFiq)qpL5EoH|9`KQyfiu9`a!%QTc(G^QVN5l`6{>;Y7l5!h;;AWRz&; zteYd-PSnjfwn!J}H{Roh7@jCjBZQ;oBu47S_6{wHj!F$Qun<(rwPPC}mv8fndHxAg zI=Jd>`&kw-dIgD>I;e;;R*al*Ggk6vt!LkG!Vz)j7m5Nt&}= zZye4VkK9((93fsm%2Yhe>dOt4O-ti+QL4CzKVr9id7J)`S#C{?bIQFlBh3JQco_1! zE``%5&%G$#wVC)4XYO106IBL4r6$2+t$D;v}G#+T(q)M|RPnu4wqNOrtnQW6$t$N^d1fKJ1Xh zeA~xvYh8DXJC3@p#NfIljbx^Ea+bkDQ?7bzK+96+;@ygfU5Z?Iha4vlCJP?X=X*b1 zd8B+7U;5E>>^=FNv1TfIxtwSKf1bl`eW~Pr22J|1ci;Usv|RtFS_5C znv?xlMV!~ti*@4hSJ~BZR=oM} z;JzBA_k*QMf@Epc*>O*U9w4{H*Vr6Y;#*-^*B6<&dJSV;BJW+FzDl%^GiPaqSzCr} zCa{=;Mx|=5j#J!)7c|ow(gOtPc!^_ideHQ>xBck8!^*uCaIv_Ax4UGQ#0FKRZ{u#D zapM?b^cG37dEpWl6gzm1bn)}i1Zb`jH)PKI;?M&q(a35_ueT%@$gjo;aYE^3A6}#I zR?6`XYYqX1`(gKT%^V;Ny)6AHf zmur%(T;t-q)g`SbNkL36y>1&i2H4q>t|G9H;n6Chf=D>#tGY8jx32NL^N5^_jh`zr ze7{cj*oZEMlRyf=Ao~ngZO>f?M@@t%)zF>JYx%a%7h@znoI~tvD@%(gP;pXw;zCS3 z#*R8xHs42fJc&pD;s$L)eUHPyi@zS=EIqH&(PhQ~yh_M=M8HXIEY z92hp-BsGg44b!HLH0|d~fYySIy`}U*&Pr(V<9;b_DkLmkYr88EE%8Oa>r13l$~`?X zPcQ_Q(AX$MJfv|xF%hYt*`hc8?7*15I%Olw`*b<2ExN-ayY*?wltN*T86J`!U40+88qh*l~QZ*9_W8(sglE`j>x zQ_fSomX=k9o<~;t4`qK@8SM~01Dwdh;!qV!P)Z-|#C>a$VA;FV%uTGpHe`?e~< zd|5`~6cP}yZ=yVw#S5ku);N#QHcc#I(JGyjL}*admGqK8?TaqApY&M5LpI!bztSqg zY5A)AyK6M3*F84kt0^iKx(4~jN~%}bvg@O3r3)KF6bz9Jt3^OKxj z-Yp;LSXdD9xJw8iJj1a+9@&dpVl_MGehhb>v(`I5ub?B}fkEQcHExLA+&3?AihONU ziDl}Lrf2Y&SHqzUdk+FXFam@m6iVhyv}QFlg*j}EHX_}7YE~Rs2&60>q@xIjOhT3S zOdYP%leFh^*w8;h3p!j4X&ixOqD`n4{!omdDAPR#2H$ouQxc3U>=ZSkl^&G`rZ&7@8%0L<6F?^evDZKq)bg<36e3+7vasQ!L!C zHeajnWhaX`dsB56x-NTsP<8p5>PFWE$-)C2KE2Dg=c;;qPsk!@5hxzbD~GSe<=20p zxE{ga-=@#I5)&(0bv^+)P=g~Fnrxo`gtxL*$~w8DP+0N-gN*&Hrr`GF$*7Jja}l8X z!=2|iS@Mnr*Vm+z-SfnTYSv1ryByi9JXPyEteeB())S$Mlem;LwdYb9NnT8F2*Z~z zhJ($5_Y5ggMXUA#HGYHIaS_>wGX6YMJs)YiSK}FjF)?Z*%^CPE$Kh_lu0c`RuCmQBgaL5Z0h1N`pMiho*q6GA4JtR8&$)tm}(XVL^Oi2bt)A)TWSfHk}59 z6H1_hPAn3d6XMP&ydIQTfBF<}-Y$iP;4u4^Zhuj7l)21=7yfBQl+_;Z^-|sT^iDnb zwv)M*{4>@qQf--59!qud669(K20)25Vfl#Ium{%~AWSu|r!dhJPMiRQXPFc;tVR@r z^{zAqAooJ3L}EF$hUDd}vW0F#w9+0P!%s+~hH{?GmCg#??rYaxWcs#0wc%gC3npJz z3-mfw$TK*PA`23&dU2TGp?NMj$E0cY>DND zj!f5+C>$hoJli(ueraXw5lyq?=9(t@*}eT|I!5xwZzd@>2!~0oy(0;XU7t9U*8g_= zj*;Xkte#*txRWwSWs^A_Ehf=zyrcT%(wx`(>s%2lv`Yt##*s#Zo-40o1+o-r44YTp zc@V9Tq2kCl1(j7TmIlK%e9>!h2HBseAQ3OSM%H5ah2BeM`hnJLB7(wWEM6h>cN)iM zDAmEenqcB#MPw?Z9hY2lsn=uvjb7x6`h;tUkz>lPPrf$hlQM%*OL~YC>(b!PV8|4r zf&D1}*&@9s#0K)|bhOMWoo$%CP)N1d?`GfOuj(8)p%9g?SSUgCv7Rf|*pxlcObz(m zELOrX0nZ5xaB_5jsXWrvuK!`MMDc?|VGQ=A7cRWyFHCnG@i7%!nzwdRA5b#CF$Kf=!b=3)6et#7Vnzn-kk?x0 zCt^3|9=(|PP^%a5&V4@3%miLSrM^7G(bz5Adi%iJ5R=+>gcAAhQy)DrG|i}TFp)s$Zk!%$h7!T z(5vWeT4l6-c~PlL+`*6o)@g4(@UW;-Lh^gmDcw^mk3PP_Z z2snV)KrBcP;Vx^B==}VG#>_bDN*J04E$*^Qmh5Q=H$>+kJ?tzv*|k`)xt`ST)9ksB z8#ta>Vpm4pzH~@7GK~1GbMG5Hv$DB-Dr1>tWRdg1+QrG3L9no*ov0wiR^5}LSsYpE zCK;T=|8(NXOKP)~w#W`^wvR?lk93PG-(f`4Y3$he_+pT8Tre0*eteBD&bUW< za2F?c&}8sNAG2)ZG+K7#hF22{W?r`msBKcspVZFC^A$*5<;{F*u`Dt$Sr$~gSEvrONn?Or6 z-h=9K`jiLgBQv2VVxz6G!q`ohC-XZ6K9_!J`qC6`SUpyq!yvblrM?I z({@J*r3iN_#{rE?1t_UtFKop<>L-(fV8z<3j$p-SZ70RIA*n^~$yx3n zdB-jN-WQVPjz`ojOX{6AfZSg!O0$|sb27AjYH@JO0)ud)RNgD&ptFhjL&ZYJcf-;4 zrk-+My}QpJFS&Jhdb~Sd$m=knj3U znVFt|k83`?ci)WYW1rT6RyZo0taBZ1PL{1*Tw7EHeRphRmToycN|F-DHB;{LRP-;R zy7G2|h=m4^dg9#8p362S$0|^kwp00pTUeIU-A{YHO760)7WbSC4T@pN<$(&GL?Wwv zOjJDv^*s42K1g;fn3lA|^MQ+TPe6X99XpO8`-su;$e7n!m3#zJwzCh7coNwct=zIq zK7~GEoqSqAcE^_6lOZS6UeqM6ISKF8C#tyJq#W0nd_B7RtvlhC%ACn5B*Q8(jSR|L z5IsMQk_s;!A6AYGYYdwFuwbgy0;@YfYsnyVpTS`y{KyE`t9LwuafDI>Ly=&5Fdryf z>`nrmMpJAv-(cLf`l((_vvA-_U1;p6zbW?V8G<+lf`wt1F$MYpkAZEKO(LBM^THOD zMQ`}#96iseti(HJqbfJX1+9!e4ZE4lsuwIq`G6a*U*fHzTeL%KIbtcn+J}c8dHeD~ zsSGu$`NR{A&12%nyC+lpDn%b75664S?K^oOgg%_TEKamhh|1IAM)O1G@s z1aA?aYUpvBGz8;+dSkJoVp-V2WeN%*>7bd9KPkzvD;Y{;UVl^Bub$>cd)Q?{{|-YV z{VFh<5*{#_1}|-^CoZDais!1jQNog&ArFwd5}+jp3;UGBvK$_h*+Uh}jk7s9RI7Oy zPg%bfw%|8s5Gt_4s>rNexsqsrey4t;Qo0P;6+LX9Fnvgqe7L-o!kqL_mGKAgfnmmcn(fUz|f{%MJ~7Iaa_lD&Y&h;LGNH-&> zSit?WpFw-@WLa{&+ku)is56hMcf3v5qK@8+bFm0-Vx1Q{gzdDS<>GVkE;_HdR{72m zx&~G-hImcdX6w~F9WKm`whrloHHMo&DLQ2K<-?-YSEkgEj&UDjqMcva3DLfO^>WGn zPpzBkpx+hPl_!E`lV*+Q%0qp(FalrzY)%wZz&Hpjz_peq__F33k?*w#-p_N<>J zF(`1dY(aVPEJKd&H2u>1K*5Ct5>3lhZR~~5RF$S@uc#iX4l-g=d`=De%p(DOW5`eK(mjAmh(u#Vz*bHk8QebwZ2wHU`*DkI;=`+v}V-ek)8J&!2P_96JBKv_XJom z<&$%oEnZQifmTOJHjc6%jEH6j%?c=T^84i`Hdd$1=9@HUA11OtD!RqX?K%SSbGSv?0Gdn*3+J2Xryn|W|0NTEC z=A-t#lZfo#4P*7hin!vI4Ije!WjA}t0v_P)1J3nAVCL%JTfW`q{7O3(xmyo%pT*Lo z(G0~2jp7~sQZ^;Ix!lbAa<7P)&D22?lj*C&w$aak^FuhDKZmM)Vt=HMy?d1)E^zn6 zwPWXuHB}uixqomQ=rXMA(8jc;Daz1}{q*84b0*&W-EBRUE2k#4EHvSnilq4L!qIcD z%#073r_V2#+Ng#b9-gxrJO8Ee(4js#6*t`T5*hyOuAI?M^{GctD#_50z|D$~HZ2;x z>IKs;9ny>GsBSr;Je<(eovLrwMAmtzt|(GMUeaqXWDHF#2L(Uh?Quh$X)U|^r0K|q z{(6Zpu2^@6^*tcC#N`0b;+euRY%li1SSfaEQxBJ7y~2((yP{A!5P>+Q&978AaNJIB=%*uX5r zCvrz@_m6xi*j5Ib@uY?n+z{iNIlULs(n}tFVy`JI-9;4CUT)h?HfhD9}4^<+Yk* zS#JUlUa|_fO_)!xWxvsbZm$fQ7KYY7=6Z0+A{Do)-75dq-J05yc}S^`@3EFh;>$PV zcuewofwmeyecPN{cjts+k#anc!(Ea%64tqREp)r@{n}Jr&`GNb&gS2uZ9%8u9T0?g zsX&lUqizKU_I1gvCg{Dzw3P?ekGQ%qF-LXEi#OF>?H zfZOBXmq&^0t8Hme;+~t-`MX#@hFl~Mah>a&kp{xODsJ7a`$%%BB(C<>Esy>9dHS7s|NH2=HRn;u1Uc zV*xxh$Pn8q`j|)JeL|b?p%L7wURJKImE+v@iCF7lnME$?5s#4}kGc6yM_(&v3{3r~+^cb^`iz?yThNY^8X^A4lVZl_I(7|vJPtmU1mxx4dZJyfJClSPZK6l=Q=Lk zF&mR6o%3fzM#~G=rtkXX<`!gwXeq(sn&Ems6k2qwYhtiy9qH zWRLuwMI}kx6jx-(9GBiea8;_-qmEh}>1?_o(jtx{;f{l~eC773D|Ft+Gbxr|tUasi zEm0=LUROtCi>Ac*8cVp|OUQ-JpZ|{e9>pq z{#-#*7&d!QeuM;JJ&j`BSdhf)p6xKQ&&c~?R_KTy+onY%0C^&W_jB`u2Jx!fU!oDv zn4@|JjY9=h(5|fxY?_WsljiyM&JK}Fgh%s$G1+cmUpiA`2-=5fC?ZLCx%D;=jwB+H zx{jY3Tbd#4Vt#SrnQ01dNugk#q8C0aU5sVOp-@ImmpMjXFFd^d>uo;Lq&77@{R;(2 z9G!JSAMejLHfXad2t9?CQ2onI7c=u%@C;`c3M)L4l48rp78O0aQlLa?DH@YN9O)K6 z<7XoduU{KLYgL~{sNFhC`t!p8z!xLB0=QaY`;O&6=i`oZIPI(O9;9L^)F;J`wlvFf z6utY}HpuX?DdHTB@5PGMzPA`)4ut2vw2qv<@mSAWA`lV0rvQyzwO62I;)(Nd*6{XJ zM!t{9kMtoWu08w<<%?zZskqWDI1U71dcq@dVZoeYUO1JCPHgXenLF zGQ0dSTyeyQWi;5KA)&fp*?;cxBhNjL;=kZS#pM0tbtE36GRjBrd`>VPado<)D>+EjUct$uWbT2|6wsBWc|6VIoS#lJ2|K&d{~ZPWi# zEJ9(JTq0?}rN?&M(wAkFM3lqE&OoWC>zEE=@M_XAO)+C|ZWst3ro18ai6a?ma_%%K zZ1;F@W#wSe-G`4M8z07{S7#)&J}Qu6k9;X=_OMGbxjO{TN(M*T)%l>Li~i&tSB&h6 zILp}>v5&m7-?RruX*yGU!dW2)-fCmJSMd6$#X?S+6;N@AK&q(O(leT-Xc}y3I)|Es z(mMiHj!lc!zzZf7#Mw=FV^PYSA4q)9-6!xVIvO->ExDRip=y&x80{A4*+{V_CyAvX zis(AHn~MXUS_Dp!VxO|f>@t2i)^MmNE9oMFTQq+7M8A%nN&ZuCA{P2Vnl$DbBdZ=u zq;<$k_Tl;X$IwzIG`;Hzb)lugSmA)@>U(h1ItZF}ka4Ikztgnj)olTr2a4V9zTN0S z5?7Q|atvwejJ@ZV=s;z`GAAoSn9$FmZdmJhVVC&0j59*v2#Uo@6n9-@HdI-_zlGiNJw~;@MJ;QW0OVVZz+q_wr|*Ns_Y^V35dIh zCBqIkFr?Jys*dVF?x%P}Igfng7T%B={ai9-+U;YW8G<$BqwdM#(G=!XFR{7uJdVpd zjGfs7Z#>23V*lllS>#XhTwX+{@*l>Dixzc#|YC)Pom$(il?`D|RYF?T* z-^&#+uQ|(ms5C=)3cxXT0!Mh^-N6iYPv2GW&WjI)IP+b*j|(r+#AoZ+$300I=^Ol4 zKbK^!2(A~eSlk)%uad;hON@CgcSj)gvI0HL)!3`EoB=E%vI6Bx?_Vr}an@fStgU7C zLFVleJ~W}_9rLAF;np~og8Tys57!xR#xD54?Q_xmCDIAr8}uttj!#0uuTZX%~P!sD&4`2b7A^1)coHhW8x%jV7sw~~T< zS?fuB386$!=0T=w<-!keJU70?3I?Gi%kxlGB{Vxx%zqpl5pd)XYn>jeVwsK8g>YeoUKkf7tAmT3aI=wj$cM?;a8= z8X%DRgjMHZsllP|6ph!~2Q&?Qcz)SZ7pIEUMtmk<^BsxT zrJ0;y51R|%L^)P-0+K9z{s94w!5R%n#&7UgjmAv!V_V^@{g z;mjDSyT9|(vz{6iPuhIQdlLc@S5J5hm<9B{NKjN`VsIUmaZ0pR7d!ssw4GAq)tozM zxm7x;8@(jBx6LI>IWOkO+KJD#7>$}5I@BILC*joCBlkYAH5TGadW4{-L6)|Qd&O6F zA0_c1>hm$-_pcE({gNJLB3#lWd;{%X-Cx>RSAyF2{{X1o09o-DeJiax!FV>6rjmE-4=9>c_q^+QC*U=>QjWt z?((h`Ua1@H*IH1#Ca+p#2Ev21b6YyaPX_UDNUFTYuMBmiCp~y*_gqV1lABeng9_)& ziy;Esp&=Z9W>@~z zkhzF5Ug&`;;Zf2&^8xby+(i`2G0JP^L<>jW3ZBea@*246kM)?l6MpCkQapBCHuI>t z4>!1$0?`{p_z^Em0FPCD4O>r2VX{Y$9)*q_I|eB!DM4y#YLJ$e7Nn=A2N@a~LZ+ss zkh!@zbo%sZ$kx^ttfbCEE-o&RmzNiG{rYw2_U+qHcz8Gz6B7f)$HzlSNl8#vRu)uL zR0LI3RY5Oaynq@S8lc9;MyR#56>4v9hq}7Dpn-t_XmD^48X6jcK7INGO-@ciGcz;L z!omWyv;>~*`ZxURfqy;lKk9+a&CT!Sb8>S0QQ!nmYyKMki1jPc&-{O=`YS)jj~Kp| zv;A%OO8OmytupFeI7lSoKL;cNiL;A(i~g$sOqLcG`M2D#Y(Ry?rNyvp3&7Y;{zuH) z;E+giSirUq;7f|X1OAg)TLLfuVDkR6yozXJePPw>zA31B`L07(A1`fUJ!9fnW# zkJSTrkO4;EL71QDC-3}GmT-$7d~@LbH~Mj5%^36lD}E#{ta%&%f1`gJKgNH5WbjW! z+y47++YbSEpzZeOAoxl4A7sDwAJ~9@-hsaLU)TT+(m&An0|_b21;gKJ0k(hG1#sB_ z`_3E&i(>dkO^9TGdA8JpZ#YB#1H8Y-_F?P|E=fA#&25V(vPwgA&IaPBt&)5=IRT(iUXHH8bQ06!8Q z7k?2j^Ar_a`IYVK1#A-s5!?&5ZVqtvr$7tW62XPv`+i3PT#m;64;HZD0(NZlug=?+ z01KdoeMACZ{TfI>6%upr+fn&rim_l9EMWTv`J)JG82v7|?04v4QE(j^2Pnb8xERiU z3v8eQfejCv-#Bj@2wVxPL1NUvxo_bcupd$XkOSnLz)a+pnctYdcgznAKV@JSu;Bm% z*gsi-#s=tdz8~~Iac*Z}mGppgtC_z6fI9|e%KB^Lw^{%=44|7+Zc%{cGvA&hPF2$NWFr|EKt2-EjEH z{;ybmMf+pP7WXgqe{G8&sejGw@B{r{b$*ZKSB@V`V19TH1oJSnv7zA)>=?*_q z|C)pOVR|@#6yB}uWdEoS!~9#^+Y-KI{-_Uqum3w%jIci$LqF>OQNo|{!!rIV{OYkE zOa6*)r~F6iUvoQjf0h2q@ngwf@$HoVNDV=ogK!D%=B78CA~rYR1cJQQwo=LMlQ{JB zR-R;VE5+SOE4T7kKd0VX<%mB`f9BuG4?>uLyOZwV*uk}v?%>_QzmsmCaD26I$Ii`4 zST5G)SNkyvfFCdlNH#Yyg3+6s7{QX?QjB1)?V}TrU=+ZqH|#zTDluZer9dzcixCXO z{__+90p|OkN#S$iy&#%{`1PC^{CC^0;k$EUX=!Q9IkBRm;@5LxZEbBxUtb?GF)@Ko zojL{C*w{c$PEL@AhX>^6=LZD`2SXttA<(^h_b_L~2?+^MYHBK!o}Lcn=jTJ^<>gRK zO$}6EUk^1kH9;L69Z+9iAN2nHduVug7#bTJ!<-Gz&dx&f^Yj0n4S#Kze=q*^!2cN! zY)?KIWq)_R`Xi!kYOo4{S0Yz^P0t<|i-_pY-Pyj?U7-EbPxYa5DiX3AzI6=Ym6bvMIo+12ea##Ta zAR)#O11+G}!jsPL(QNw&Mnnz#4#?n90nmKcZ+*838JAc(&~Y9DhlV0R!-S9{}TD(r+C%d{2#O zi@&CaG5i$%GalF&6@HG%+1VNL^z?-M{rxe|F@=SNK~YgrP-0>tl#!7EWoKtY z1qB6AWo0E)S62tMw6s8P-n@Z&dwVha(|`A-JI?<%{nrEk_dW1+pNeMwO+fDe{B14F zutkApW*~uoYy2tTkT7f!Fw_607AD4_X9g;mng8-(1_EY4z)bs-;P0}ua6P;d`-?#F zC-r|P|8MX?%<%g9cL9qIwhtKi7mpf{!{%WKe(M2@^;-n=s9)t{(SK_oGzHi~eBXos z5+(X;J;aPALg0U2kB=bQR*q2sF*BeLWZwwL5GaN%Y+Kb3nwbiL_^JVH2B@|hf4d$S zNsPeT5rBsv{y{oS#LR$$Al)J$Md17>9j-^C!7`c_CIIb0{gZTz0A>;d4qT6eAo)!- ztO5LL!;EG|AQ-+`4s&h?X0V6??3nMJvhUNa8kqkV@E9^?OwHE!_k3H|JCe8ff0Y0u z|E3@PgLh#GaP7D7JN|FAze5Pi|33VT@cTOWdZ!*IVTW zyd;4m%nL7b;JC59yx9axoK0_VuwMy&EBHRb<-dvWI)xU*y&&$aQ>2g}vlG5sr@-gw zva+%ee4Y+JbFHhZ3mF&~KxSrUkcEW>WNmE?`TF`|&d~z`0-&2WZ$c3f5tua!{JeEs zTpUzdT8depz|UF3Ym`^7UO}&4zs5Xg{qy={d3kvU#lPvl9{AS-|CcmD2aze4c-`ts$=nEO|BbTkwj8;jXnXJ%$% z_R^i5olt*&KQuKph55ff|Ng!UocV9~*8~5Lcwp;3MoIBCPy*l-`0x{Bm=6-40-_{D z!qePVKoU|?g5Pz%1zgG>>JfyL5E=Ze>2|;-0|Iw_6@Ub$0DVmAjKlV)PgSxA{+_|93mLqR-iyqfX_}25d4^@pg>?gI|Sgtbb#R- z!;ZaheI+=f_5L>fVp!ljTn@)UaArFVkic;X?Bn3LlZVs)kyqGLKiPhTeV=u@woU}@ zbfXqGWs&#fL#wEOE_S>oZftdC3RzYw`gd5q_1JZ^jAZf$-gjM)P`SAK-fn5>%RD{{ zcz3O;q}f!syl+0oTRJ*+^Cm~eQBteROHwUvoZ@HJ$N45-W;}LFYckbwK0diA`1b7? zJ%*L`w`VfCbrxfs4U4=F9ys81`?LOm1kzLc?!{TgQj~jtPhyX|P|EbQyxg=fg?`_?o7QjkY*;a_OjfEu5Ae-< zpI#_F_9okP{#<9O78g@^&^#2tt^ZHN|AHWg+55~9$gF%G+kMJ^F??Yi8`Ze`xz8ZYXG_ZL&O^6h@sF7s$Hwgq!=B4~yq2+EtpwY>nVAJ@Efa^*3L5$2N6q zg&#O@z&JUY5{tq+7S*ja&-eO)g*h@nQQ~s4(jiuQ4Jy@^qBz>SkVOc^XRbE>n{r_g zq4V(+Srv#gl!7=oVI?C^Iag4f++4sj%~6Ka9Le3MV)gK$s-&6ca+2M(@#^ao#UF_s zeTw4A_aefiBu=a-Eb1Sab=+9HTzIyXjp^F>y)zH$nF-m0#~3wk--T{)aOpCP=_-xi z^{9HCtQy^0GF6`T@ccX4L4De)-t_jO1h%~h$|*7{nFLiy`5?v%%@V8WL3p*u+G@OE zJjY|l00JNPgkF}utcSPJd>2O=qeqTE5Kqk_4MGK7f2ViFY&=GT@GfM?!qs-HEhD5u zV%6u7^LR(m5x0fWx@OKu3s+7>L6spP*@+mTmca(25N1lC~m3YrRic#cz zWrktClKjT$S9jla7apot&N+cjAM6^WrK^fL@i~P~1!@dYBXy5mI|b|ne*|D+-y-;% z04q0QPdxW4y3H>CDaAFLq>F}7L|8;lL|4u;)lmTjY+~U$E+^)09L@OfO`2XwncL#0 zI<-gvlU|R-J^<%=xp^$#AniMSx~krcwxUGwyAVM%?_|{3*Uj>1kCT@*OK_PlRZf%? zq9zCz>Is6Vg6@&MVjT{hHAmLTNC=(RxmPbg0bZE%e|91_g=1FhFp)Ae(nF^OMNm-iH?SaUe!vEszUNwPq^ zdKLkblYXYkUVfk{a~E=W$Lw|I@JpAe{>hFkvn+N=;3EeTiKV!gCqq}AsaO3xs>=;4 zbDj$w@DV+=?zj6cM1NZiuXn)S!M6dd$OY`M}neDpsti+TgCU_U#9;FkAHqCTY^}!!(RyTa? zmN#~0r0Krhm*GaS+1JI+)`#2{CLWtjYY_lqx>Y+wEqQG_-tgU1)sz(8A!^vUv!(;? zUv3#?SAI?#9;&}%5-TxQ@|gtEZ~9r}3qZUwzPaFMQGP$;s=h;C(I5 zLys;_^(RYfTXkJ5#U&I;7Af%4ms7#M4-H}O<)6xT9@j1OSao4qu2PlImn*dG(KS;< zPaN*|eM77)QXo6v{<=s`p!uwIzwo9y--P*_q2l%{At?=)Guxs_n`S zGn_tE?V}2XF3-H^9wOIRD?0b?*|pC-_7!jR*5)RAI#pvtG~~zp7kw5_B5G-CyR%)S zS^$R%wC^1^-8BXel?FH4-lwf);BC;rAMrB&6HnfLvWViSbgOcE=9cSidCSs{V|1TI zd?s{0aB2{Asdvx)`y88(JYx5Xh zEua2ahO>)twB{z=!-w6zi++osXE4_GPp3(R01QgdzN+MpWu~6Xr(VyRE)IBksq(K! zKXZHTmdD5LC%TvXBwbF6F2p?{%F;de1@wZaG^UrN9ib2}Q`bZ$7)3B5wS40u5yiwwbkaU}0jihup8$IJ^F z>w;3fB>hOT=P|TZqU0)cIqJI5rI<*A%UK7lJ4Wlw+IG0{Uj~F{4pVraob5^6U)0ST zHftLGY@fv&z1R3syIb-~JHIqbqE#+uDdh+N%=@&zoT@(Of$}a{Q`w_cy1B7x_uP+I zY}QxOpR;URBjbt8o9*s&IZ>e1iY^G1)thk7+M^8m(=_$v(p}H(L)2Z3AG%}kCi3IU z$dZTh!C^f3-PDzy$y2qm3vUj!h^vwGg zd{a6nI)G38{isJpb@!j!ji{@>8@bq>W9c8X)_!zH1!$OO=d4hbv!(~x-kqvGAN1x` ze$T<%5C?m1sopKcOLRF!u1!g%pD4UluwS~pVPV|QSb`0lO)Qft$gWGs3q>qG*1#8J z_jBAeV){5q455H?`f?V1-gp(6V1gGaTZ0 z{-jiIkla+xCi%g`)Z0hYzYeo;zZ;pKeGzvYI8vKDST7MXcT}k zJg!Z^Gb%(ZCX~Vw?mZ~E9^pp?y>!zs88P0Ddhx>HPYxf;L@_EC(dY z0>)HFhS3?re(R2O1LKuPc*6varw!zYM#65(hLb5b5LAM0`&eg*uBrwM`|)Cz$;a$U zgs&n`W-|-gyYHlSA3Lg}43V#K-_H}JUzS$n zS{t?0dFP)Z`V>V+gHP9w?^?ovi0;u=)(+1CWY_tpj7=Tn>x@DMEn99qB zUvbQ&ZV1p3M<^uk=byS3cp%_0VuZO#nq7y7UAGmR#U38JPfoq;9f|eIWKU>#R^;#4 zqW7||5DY$?JvgOL60LM0kV}O_gQOB?k zOz0=;$w8~gmY)}RA9FxEXP?C>HE34ue1b^cgj=FQx&WT=Fu#2k$)KlcW2y}48v^ce zLT_`bBNo{nM|Ny!ER6?w8^F&`EjFyHik#{OqT5z%Ug|VB^TSc~=h^LR1X^ za4Hzm<#gdoZ3G(tDp^Hd_TgOQB{_NkG(3gqR5fW}PPGzLJh3;`ykXXqlI_Dj3yKe( zRNSJ7x=oEUW7Nmky}+z zYbwPgiI-`(rN%hKi^8cqxle*OwK=FAnGYN9$cQd~|1mw!^Pb9ZaBKFdq)cd7;ma;h z;DsBskz_J9Y;u9RPRJ0o&FG~4%kP4LQ#W2cy-DjyDw|H76h`G;UseZTguQ%vQ@=IG zP#d_#!Plw(5IVb*M#Hn_RJGmfyS5rRyxv~z{V#d5N}mDCQ7pow>~c45yrl*=kI=Nl zXvSOb4?7Iu0n76tAs>CAy#|(r1~1Z~>9}VFt*70ej#f>3o=u3lN-I<>g(r0QU^id- zUF_+L-L(adBgZ#BscCam6Ij$#nsn2&+aOycxh@@v!t)w1&Oz!tyPl#SK<8_XwQ`n- zroD}zae}Kf zoXQe3#JRoZW@^#n0Rc)^x`en{JCrS!UHh6^dkF?d0N3R&rvaD9O^dTJ3!+iV5PNX0aSr67YCC?=J`In+pX^J6K#R0PqbzHu^H`|{=8o1fK&@P)4G&mPdW6qApql9IHF zl#8CB?GR@th?3@GjmQcV7S!fO5Vc8Aixb_Z*&ux@#YZP@?v%Yi!yN_@Y@E|4T63*G zyb)l-5<#>P<)`BjbQB*-s<2oc#L^~aXXC{Yny2YDi&ICArg`xBsU78HJ3*@TVjU;0 zf_mYm+>AT;;~mAvWT}ZP9zUvfIZig{&I^g3PHAa~J9eh|fpe_K!o8q?I-~_b&PN1F z#*vvdLa@av(Sr}XNHcfoMQ8xMv(lv_OstxbA-yz~~IbL$4KY3zb*nB6jY zC1}{T9838=Ha2CPobcSMd(|Ks6Q|pDWVbneyBe-fy5kRCUC1$ZpLqc+h#;~UXPEQ~ z5kw5F$tQuo-w98l*CptwH;dU5lElQJ`#^6lK(kmcJ3KV@@$P$JoccD=g_CL ztPXy*C+4JDmo1CckzE-ce4S=fIvO_vqV@))Zob(-UL%+4-+Zd?u`+i7+@pZlWhp+^ zWbuz4)#?W1QqjV;y|)har?9ilUeQ0Qa(Ryx%A4S-DGhd?yJM~z=k5eHx@vNZ%W8R- z<4f^b?$pOEv=p4BY>t!mH7;?Pbdr_5z~V=${Gh-}WrRBq>74;Q1vc!5Y`XR`k!dgn zuvUjY;_n_gD}Y#wT*$e_bXd1AfP2?N+7ymBy20H_?*)#I$>*hmwaoYr-s>&o||7(!NVpiv@Shy{tH-gmR?O0j&w)VGu{|nnp2aYu&(Ae2S$= z1OauEN40nS3;Ku0c$aDX{rqs;HI~(*-cm?`P2g07pxNi9So?)2R6>+DdgXKZs@+So zHH6n}i7t6%XKS`dj;BKy$6m$agRONnM)qYNhnwz?AHRQNT>+U;{rsB5QodJR2u|2u&k7aneEq-vlySsSjCq@CAO7P<{7$)>RQQlY8EF z$;6pO(LBs4ONnrRWF^UZ8W*XmHj}PGRx=kJ|JoS>g&}-AvBRpkxy1l>kp?rzPL%DFr)B)P#ORVH;qQNUc z&-q||v5JKzhKmz~ROd%qSQi(1>`TBJ1wJBqdWTEx)8^5WB+X;vJ%#oQ7fgI{NnF4y z7Lzsvsb;R_od7LmGTF)a8XF45UQzZpTpqO7$4%m zA2g_8NLm+JMUpKq-O0-#UwitwM%#cKQXqdSC&q#J^726d(x;&uZzK3&e8!WEQ%?RG zU2C@{2xYbRR5!Iapd`cQU*4P$`K(^7(;fJhCIH-3?-?ERYe=>+LqvsUVQ;eZiCd); zAJ?X}^S{r3r9y;0Lhl7EzVfy7c?O|aTBR^Tk`L<)_#2A}Czf^Qrs!5`>_Yq|YCfT5 z$*PeS@BNf;B(tvpVJf2@ts(aoR^xR~95j7-QZ-Mh@0;qR7wpXURug&vDXMpA>3agh%{Ho8mJhi|E zW#Epi_W-w?vJ4w7SBCF_gv942XD&tTMtTKeds@6S;1mPe>!D-vHA>OklOt^c;c{V= zOBy7>O-5X{53$QG<^(Azs3Om*gi14vZ76k{DL;>;xX@e`oJgkApkZaN^jvVsC}~~V zXCr+sHM9XcB$xvwo{E=`cb<1&<^kCxzgPts3n^P92XQ)EfT53?J@)?3Rq}COdnQ8; z7^nIhIb2lEj-01oZ#e&X6EWz0@4zT!ga~|s{`;30vcOf~*T${nzxf6)7d!-F0Ekr} zj)S-c;^zO72xEaU!PsDohyEKIf93&l5FqM;_y)xPEw=tC4j40x{imN;ezx-WdBDdA zVi|~ks_%a*9c%;R@2&iODWE?HBHW+;qfHYN6Px4X|6hC86JphM#z#|Q+C>v+2sUXt zV?sB{CQ!SL4k99LDYy`<3xi-rv>VYy7KM2_MO=sp78Ep9$u21Y7ts#r;>Ao*&_Y1k zMrrL^_z#oH7-uo1@@{{>^X_;3&iBr}@7}rh{h4tFzB&KD@Ao_R+;i_cfA0CFuR;u+ zaK>DI5oYVhBJV25cUI@4M~|ZO=g&v@cxi+WoJLrD7h&gJb7~7@V0eB?3NEXhR7p+ zt<8&%^3GfCQWxZ4d6BEF1H?`0eE6V5w07;+<4;bSBmAcn|1Wjg?%lf=9Dj1s z9O3^`@&8Jv;iK&fjz2kRj_`k_`2Ss}&8K%AxxYKPw>%f2i>k?f7|b$xDGzmd8enRBYgN^-qr!JlY{02|EKoaOBiXdKpyD)ICy5D#(FwE z=OvwELd34Q#N1vHz9AQRerw7^*f2Wp+5jck0AGSc^teHtzW->;Ol@GiB)5dxu{(mA=Z8z%KXach;TsF!1E_Yi2`$I@W>%-w=5e_@^>LBGgV{ud#4n3EN ziP$vO7`xm0)Xpwn40Mb_ymw<9(&q8!Gv~;WBi44;!n7sNIdO@}a3|)`d@QqbLC^bI zH`^Evvhy%-oE3-FSqznjX~T|76HB1ozn{%2e=4{?2l-mp!L3`jA{_YV)d4<05#cbt z$~lW&>ZT33=5&dHSR_yE66a=z^-)Zp>V;Ft;Sm<5``Kz{x52Zx-0E>r> zVaDrxW&8zf5ZkiyOw%<$|C^9m&8NV%nNywcI@@a>Xk*0mW;*ifQebDV=1+gld$TbA z0)5Qh>KJBg0^g;OFLWIg=$mubL4jusvFJ}FWfQ0%74}v_W^^4Ccs6&eg97gu#IUjg zN`+Oxt~YMXy2$x%){%dKcg$oQw=jW{1;Cf<Pjmx4>_Vb0{;X^=&1o zC&gi(V`l$>Bz!_+W+}hTk}^`B?cV;zOc~3f&CIc^1Z0;zz_D5IiyImC zA!RIUbC+oqQV-sr2zR=nF*A{=huPK(&91zv?jS$lPa({QKAenrqS4eiyI5 z-~W}Zk3nz$wmtM9JW%(45BLsr|F_8BfB)@4eUxhdJj@Jdeef(Y{*B`R5B?QCyu9X$ zxdTJ!KiJ{OODDuAz@%DZp+%2qm^b*V4c`6?H-h+7S()x^D z_z}~4Ssal5dyVzMg9i}~4vco}*wHrsQTBZ)t32mgXp^>yL1QAu5C_Ds*ZD48y41G* zCCg^F(zxb^STr_b)f^D!`kjAC9)2SLhfj3Al7BV0sbw5{ocKMZR_vy z+UaIKuE!%b!AZ;t|7Q|^?AWn^sdrl+#3nf5ex~pz>pgHN=)mG9HidtN_!0iG#Bn{D z}b>Kd+V z|1tiv5fyKVVP#f8HN<{k8D#r%O!c-qrp8v*7Sgxdx%Njs3(<+h#pAu|C_X z{nmek`JSD$uh81mesKt_hu)yEiy!zu6b`&rcKvcc@CVjRe<*mZ3+&vN^Kao0T7TSY z4rV9z$H8r1ht)n@svHDU;W=>pE#ml_iE%X*jdu zQ7+k6V%N`BwYM&Z-hEjZv(kXy+ZWQIo^+k%_IJ3hrT2Y+gSW3kuU`$c)7-eB*X@hb zd)CZ)*2?y6z}8;cquBMQfqo(v2iva&)}!vtY8yq;fZN+wVfS2{emWO^{agv`jjnv( z1UPv6BJ6r*^PJ4&V4v$|{WO1ztSnN$dGkVVvai9eM-RNG1UcCEs=)g9uI*a@es5ob z-A@pBPi*6$-)jSVi_g(U-uj$NKIr%M71;eC<~`lRZ+};qy}>=(HvkTsAr70}&%@tI zd?rb{cJ=SNz~0`TuKNeBWL-b^W9fIgz+AlJqx0Onc~f)j`MQ1J=eqm^gT|Hzzsd8H zxwPf7Wh%s9YOZvyJQndM?XPF`k2=@ua;s|p!%A z#zE|KaR_^ZE)Ht1)5W3fHM)2*rnyWG{nZ$mQLfH(=x@-4J#htx;1XBxy7gbm!ap0c!omiXikVUBBGqV2nP??#6Y zAC5L|-01ywOM6D-iKi~=q;A@XZ6)K@2=8Y+#~n6p+Ekfci;cQzBgU|wH30t)Ansc4 z+_|%Bwgn4q#P(^Ew%z(DjsZ)aZo9MwvzrQ zu7g#Gdu+#VtFo`gb5rNNV86yXU>{|_8CeF08IP?=y;~QyIWKjU803Cjw{D#~52on* zEYFZ(S>jgr8+9k^6RmxQk^Tl`R*!!M=1}DR3A%bNM~#Pa-sp{xO&f=Ndm!#Rfikvg z=AeRhS%xBWVJxe@HMqyxNee><=XEYpmyAv4otxEjiE7N7x{9v#PUdA~Y`@dos-81d za|UyscLC<@tOGqaV&;&&>mYNUX3k}MT0M7)hi$$Ox;0=jx0E)wsn-IiIV+Y8zVCIi zE$Jwq%xlQp9OowO_nPH9muk+hvUv+&aPtzJ+mwFDj1465w{PE;Ym)2R*}}7v3k*(g zC;JLlhqwJs7X9>o*@s;jmo3VFI4)bZ{mJz#YG2Bgx(-tB;ug66mD(4(dEKhoq2=8# z`$eDsYV4}g>o4_Dz|FMZz_3FdLm4#;6Htay{v^GQybYA0Ok=2n!yFV2b6`kgoWkLb zsI~-K+G1(NF}_VWPO$>=7DUD=-uXTPDS!9x-{)G!3CIo9ak7pJ{$y<+>qf%jsyLQm z*$M37@zxy9%*?!s`0G3mv|g`AI1jSPcNxlw6DJbC4(oXOd4?p*LI?3&hrU-y<;s;S zOW>aZ{^qV-yPBh;qoss8s0%v3z??Ck)1%~g;J|^V+#|FR@-t4-#MN=)hc4HLzy@{K z_{`m~VM9=-)+6P$8}dV!dyYeY4RQ$2SL!ZRFT^22UDQe4z&{2z+PZaXW%!}XeMcO6 z$MEj=5^T&|xNxBo{lpGktp6G4e~E1f?jA^UVqzlUC|rxW)InX;N!|Rzw?>vC{5jf{ z8;7D!UN?&N>#&X&KgXHaHi7+fyt{hu-O&FU;=h}kn&Nlan|yCOe*8G48M`)|#3OH$ z@1HCSJv?*xwH9*!KjPhbq(g@ex%`(eUrzc1q)D50{RQ+mmwAW>Wh6ayz0r*uH+V0f zMgP&nIdM(wA8O)UWvS0Lmubwyyez}AckbLt?Q6*febLLv_wCiISKWC!2M-=}I79f6 z=JFsf^L&ePFZ(qT4k6!WNb~5?qwc;#ztx7Facqms!@MjL))tNho{t|sd>C!pwynwE zC9+S3y68t-6KN6iAnxO^mh@QkNiV|29enrEwbfInPRaFao<4orwcB{S=??V2n64>3 z1?B!gylmfWr}R_U-!l%^is6ZL4cRHczmNKOU-2G5*tJ(aXJY+~8_(7fPNi;0J%@hg z*%#Ilj>Ye5-Ums2bf_PfFRUpXOZ}`1sR!1N2yM|XF6)h0!kWUdqM!FZuPb#Zk+5^Q zS9UJ?b^YY=hmmr=>>13FrFR)jqcC3s6JC^QOt{Tr^6l}^YA4O1am;ItJO3==wD3KQ zFNz}&c@JCjJp=-OxF$b`T*N!h|2n-FGY|8!3{}B>9nZ>{{rmSP<70A7LoUbAn3rW( z7V<}4qfp+gIF?~q$T^OQW#tW}u?)*XJ}6=T1C)Oq?HRhJfzH?@tQA>T?~6OM_gapgn@0JWrE4eueVvAI`FW;20_VPUvSG)0ijFguN)1W1UHP@q3vv0%giu un^sqbS(haF^)(ki)AE!T3?bK+ucg!`<0*B{xi4?Y>@ep4A=8*`75P6_hR4|e literal 0 HcmV?d00001 diff --git a/GoogleTestAdapter/ItemTemplates/Test/GoogleTest/test.cpp b/GoogleTestAdapter/GoogleTestItemTemplate/test.cpp similarity index 100% rename from GoogleTestAdapter/ItemTemplates/Test/GoogleTest/test.cpp rename to GoogleTestAdapter/GoogleTestItemTemplate/test.cpp diff --git a/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vcxproj b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj similarity index 100% rename from GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vcxproj rename to GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj diff --git a/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vstemplate b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate similarity index 100% rename from GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/GoogleTest.vstemplate rename to GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj new file mode 100644 index 000000000..b7ace52af --- /dev/null +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj @@ -0,0 +1,69 @@ + + + + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + Debug + AnyCPU + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544} + Library + Properties + GoogleTestProjectTemplate + GoogleTestProjectTemplate + v4.6.1 + 512 + false + false + false + false + false + false + false + false + false + false + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + Designer + Test + + + + + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/Icon.ico b/GoogleTestAdapter/GoogleTestProjectTemplate/Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3f71a88c40dc3d6179ea3c2949cd19de7c916667 GIT binary patch literal 64782 zcmeFa1z1%}+c&=UhD{^gu}J|bF%S?5K^o~!!9q$Yl@=6G6c7moln@Z4rKCZTQc?t@ zRU`x?r1L*(1NM22=lNgn_r2eBopH~eH8Xeo?t5a*%w8@a2muj6a6mwK5CbO!)qra$ zsjWOWH3Yo_WqbE-+YT#ttc`;hdwU{81>giE#{Mu+K=VN(1b{gli`N zMhO4Bf`KCh?RpMJM6G?wNeJS|R+N?2zGOOi->mMG&T?(AWJ*XWshz>wMA3!`RBx& z$2LYJHw{WZFiq)qpL5EoH|9`KQyfiu9`a!%QTc(G^QVN5l`6{>;Y7l5!h;;AWRz&; zteYd-PSnjfwn!J}H{Roh7@jCjBZQ;oBu47S_6{wHj!F$Qun<(rwPPC}mv8fndHxAg zI=Jd>`&kw-dIgD>I;e;;R*al*Ggk6vt!LkG!Vz)j7m5Nt&}= zZye4VkK9((93fsm%2Yhe>dOt4O-ti+QL4CzKVr9id7J)`S#C{?bIQFlBh3JQco_1! zE``%5&%G$#wVC)4XYO106IBL4r6$2+t$D;v}G#+T(q)M|RPnu4wqNOrtnQW6$t$N^d1fKJ1Xh zeA~xvYh8DXJC3@p#NfIljbx^Ea+bkDQ?7bzK+96+;@ygfU5Z?Iha4vlCJP?X=X*b1 zd8B+7U;5E>>^=FNv1TfIxtwSKf1bl`eW~Pr22J|1ci;Usv|RtFS_5C znv?xlMV!~ti*@4hSJ~BZR=oM} z;JzBA_k*QMf@Epc*>O*U9w4{H*Vr6Y;#*-^*B6<&dJSV;BJW+FzDl%^GiPaqSzCr} zCa{=;Mx|=5j#J!)7c|ow(gOtPc!^_ideHQ>xBck8!^*uCaIv_Ax4UGQ#0FKRZ{u#D zapM?b^cG37dEpWl6gzm1bn)}i1Zb`jH)PKI;?M&q(a35_ueT%@$gjo;aYE^3A6}#I zR?6`XYYqX1`(gKT%^V;Ny)6AHf zmur%(T;t-q)g`SbNkL36y>1&i2H4q>t|G9H;n6Chf=D>#tGY8jx32NL^N5^_jh`zr ze7{cj*oZEMlRyf=Ao~ngZO>f?M@@t%)zF>JYx%a%7h@znoI~tvD@%(gP;pXw;zCS3 z#*R8xHs42fJc&pD;s$L)eUHPyi@zS=EIqH&(PhQ~yh_M=M8HXIEY z92hp-BsGg44b!HLH0|d~fYySIy`}U*&Pr(V<9;b_DkLmkYr88EE%8Oa>r13l$~`?X zPcQ_Q(AX$MJfv|xF%hYt*`hc8?7*15I%Olw`*b<2ExN-ayY*?wltN*T86J`!U40+88qh*l~QZ*9_W8(sglE`j>x zQ_fSomX=k9o<~;t4`qK@8SM~01Dwdh;!qV!P)Z-|#C>a$VA;FV%uTGpHe`?e~< zd|5`~6cP}yZ=yVw#S5ku);N#QHcc#I(JGyjL}*admGqK8?TaqApY&M5LpI!bztSqg zY5A)AyK6M3*F84kt0^iKx(4~jN~%}bvg@O3r3)KF6bz9Jt3^OKxj z-Yp;LSXdD9xJw8iJj1a+9@&dpVl_MGehhb>v(`I5ub?B}fkEQcHExLA+&3?AihONU ziDl}Lrf2Y&SHqzUdk+FXFam@m6iVhyv}QFlg*j}EHX_}7YE~Rs2&60>q@xIjOhT3S zOdYP%leFh^*w8;h3p!j4X&ixOqD`n4{!omdDAPR#2H$ouQxc3U>=ZSkl^&G`rZ&7@8%0L<6F?^evDZKq)bg<36e3+7vasQ!L!C zHeajnWhaX`dsB56x-NTsP<8p5>PFWE$-)C2KE2Dg=c;;qPsk!@5hxzbD~GSe<=20p zxE{ga-=@#I5)&(0bv^+)P=g~Fnrxo`gtxL*$~w8DP+0N-gN*&Hrr`GF$*7Jja}l8X z!=2|iS@Mnr*Vm+z-SfnTYSv1ryByi9JXPyEteeB())S$Mlem;LwdYb9NnT8F2*Z~z zhJ($5_Y5ggMXUA#HGYHIaS_>wGX6YMJs)YiSK}FjF)?Z*%^CPE$Kh_lu0c`RuCmQBgaL5Z0h1N`pMiho*q6GA4JtR8&$)tm}(XVL^Oi2bt)A)TWSfHk}59 z6H1_hPAn3d6XMP&ydIQTfBF<}-Y$iP;4u4^Zhuj7l)21=7yfBQl+_;Z^-|sT^iDnb zwv)M*{4>@qQf--59!qud669(K20)25Vfl#Ium{%~AWSu|r!dhJPMiRQXPFc;tVR@r z^{zAqAooJ3L}EF$hUDd}vW0F#w9+0P!%s+~hH{?GmCg#??rYaxWcs#0wc%gC3npJz z3-mfw$TK*PA`23&dU2TGp?NMj$E0cY>DND zj!f5+C>$hoJli(ueraXw5lyq?=9(t@*}eT|I!5xwZzd@>2!~0oy(0;XU7t9U*8g_= zj*;Xkte#*txRWwSWs^A_Ehf=zyrcT%(wx`(>s%2lv`Yt##*s#Zo-40o1+o-r44YTp zc@V9Tq2kCl1(j7TmIlK%e9>!h2HBseAQ3OSM%H5ah2BeM`hnJLB7(wWEM6h>cN)iM zDAmEenqcB#MPw?Z9hY2lsn=uvjb7x6`h;tUkz>lPPrf$hlQM%*OL~YC>(b!PV8|4r zf&D1}*&@9s#0K)|bhOMWoo$%CP)N1d?`GfOuj(8)p%9g?SSUgCv7Rf|*pxlcObz(m zELOrX0nZ5xaB_5jsXWrvuK!`MMDc?|VGQ=A7cRWyFHCnG@i7%!nzwdRA5b#CF$Kf=!b=3)6et#7Vnzn-kk?x0 zCt^3|9=(|PP^%a5&V4@3%miLSrM^7G(bz5Adi%iJ5R=+>gcAAhQy)DrG|i}TFp)s$Zk!%$h7!T z(5vWeT4l6-c~PlL+`*6o)@g4(@UW;-Lh^gmDcw^mk3PP_Z z2snV)KrBcP;Vx^B==}VG#>_bDN*J04E$*^Qmh5Q=H$>+kJ?tzv*|k`)xt`ST)9ksB z8#ta>Vpm4pzH~@7GK~1GbMG5Hv$DB-Dr1>tWRdg1+QrG3L9no*ov0wiR^5}LSsYpE zCK;T=|8(NXOKP)~w#W`^wvR?lk93PG-(f`4Y3$he_+pT8Tre0*eteBD&bUW< za2F?c&}8sNAG2)ZG+K7#hF22{W?r`msBKcspVZFC^A$*5<;{F*u`Dt$Sr$~gSEvrONn?Or6 z-h=9K`jiLgBQv2VVxz6G!q`ohC-XZ6K9_!J`qC6`SUpyq!yvblrM?I z({@J*r3iN_#{rE?1t_UtFKop<>L-(fV8z<3j$p-SZ70RIA*n^~$yx3n zdB-jN-WQVPjz`ojOX{6AfZSg!O0$|sb27AjYH@JO0)ud)RNgD&ptFhjL&ZYJcf-;4 zrk-+My}QpJFS&Jhdb~Sd$m=knj3U znVFt|k83`?ci)WYW1rT6RyZo0taBZ1PL{1*Tw7EHeRphRmToycN|F-DHB;{LRP-;R zy7G2|h=m4^dg9#8p362S$0|^kwp00pTUeIU-A{YHO760)7WbSC4T@pN<$(&GL?Wwv zOjJDv^*s42K1g;fn3lA|^MQ+TPe6X99XpO8`-su;$e7n!m3#zJwzCh7coNwct=zIq zK7~GEoqSqAcE^_6lOZS6UeqM6ISKF8C#tyJq#W0nd_B7RtvlhC%ACn5B*Q8(jSR|L z5IsMQk_s;!A6AYGYYdwFuwbgy0;@YfYsnyVpTS`y{KyE`t9LwuafDI>Ly=&5Fdryf z>`nrmMpJAv-(cLf`l((_vvA-_U1;p6zbW?V8G<+lf`wt1F$MYpkAZEKO(LBM^THOD zMQ`}#96iseti(HJqbfJX1+9!e4ZE4lsuwIq`G6a*U*fHzTeL%KIbtcn+J}c8dHeD~ zsSGu$`NR{A&12%nyC+lpDn%b75664S?K^oOgg%_TEKamhh|1IAM)O1G@s z1aA?aYUpvBGz8;+dSkJoVp-V2WeN%*>7bd9KPkzvD;Y{;UVl^Bub$>cd)Q?{{|-YV z{VFh<5*{#_1}|-^CoZDais!1jQNog&ArFwd5}+jp3;UGBvK$_h*+Uh}jk7s9RI7Oy zPg%bfw%|8s5Gt_4s>rNexsqsrey4t;Qo0P;6+LX9Fnvgqe7L-o!kqL_mGKAgfnmmcn(fUz|f{%MJ~7Iaa_lD&Y&h;LGNH-&> zSit?WpFw-@WLa{&+ku)is56hMcf3v5qK@8+bFm0-Vx1Q{gzdDS<>GVkE;_HdR{72m zx&~G-hImcdX6w~F9WKm`whrloHHMo&DLQ2K<-?-YSEkgEj&UDjqMcva3DLfO^>WGn zPpzBkpx+hPl_!E`lV*+Q%0qp(FalrzY)%wZz&Hpjz_peq__F33k?*w#-p_N<>J zF(`1dY(aVPEJKd&H2u>1K*5Ct5>3lhZR~~5RF$S@uc#iX4l-g=d`=De%p(DOW5`eK(mjAmh(u#Vz*bHk8QebwZ2wHU`*DkI;=`+v}V-ek)8J&!2P_96JBKv_XJom z<&$%oEnZQifmTOJHjc6%jEH6j%?c=T^84i`Hdd$1=9@HUA11OtD!RqX?K%SSbGSv?0Gdn*3+J2Xryn|W|0NTEC z=A-t#lZfo#4P*7hin!vI4Ije!WjA}t0v_P)1J3nAVCL%JTfW`q{7O3(xmyo%pT*Lo z(G0~2jp7~sQZ^;Ix!lbAa<7P)&D22?lj*C&w$aak^FuhDKZmM)Vt=HMy?d1)E^zn6 zwPWXuHB}uixqomQ=rXMA(8jc;Daz1}{q*84b0*&W-EBRUE2k#4EHvSnilq4L!qIcD z%#073r_V2#+Ng#b9-gxrJO8Ee(4js#6*t`T5*hyOuAI?M^{GctD#_50z|D$~HZ2;x z>IKs;9ny>GsBSr;Je<(eovLrwMAmtzt|(GMUeaqXWDHF#2L(Uh?Quh$X)U|^r0K|q z{(6Zpu2^@6^*tcC#N`0b;+euRY%li1SSfaEQxBJ7y~2((yP{A!5P>+Q&978AaNJIB=%*uX5r zCvrz@_m6xi*j5Ib@uY?n+z{iNIlULs(n}tFVy`JI-9;4CUT)h?HfhD9}4^<+Yk* zS#JUlUa|_fO_)!xWxvsbZm$fQ7KYY7=6Z0+A{Do)-75dq-J05yc}S^`@3EFh;>$PV zcuewofwmeyecPN{cjts+k#anc!(Ea%64tqREp)r@{n}Jr&`GNb&gS2uZ9%8u9T0?g zsX&lUqizKU_I1gvCg{Dzw3P?ekGQ%qF-LXEi#OF>?H zfZOBXmq&^0t8Hme;+~t-`MX#@hFl~Mah>a&kp{xODsJ7a`$%%BB(C<>Esy>9dHS7s|NH2=HRn;u1Uc zV*xxh$Pn8q`j|)JeL|b?p%L7wURJKImE+v@iCF7lnME$?5s#4}kGc6yM_(&v3{3r~+^cb^`iz?yThNY^8X^A4lVZl_I(7|vJPtmU1mxx4dZJyfJClSPZK6l=Q=Lk zF&mR6o%3fzM#~G=rtkXX<`!gwXeq(sn&Ems6k2qwYhtiy9qH zWRLuwMI}kx6jx-(9GBiea8;_-qmEh}>1?_o(jtx{;f{l~eC773D|Ft+Gbxr|tUasi zEm0=LUROtCi>Ac*8cVp|OUQ-JpZ|{e9>pq z{#-#*7&d!QeuM;JJ&j`BSdhf)p6xKQ&&c~?R_KTy+onY%0C^&W_jB`u2Jx!fU!oDv zn4@|JjY9=h(5|fxY?_WsljiyM&JK}Fgh%s$G1+cmUpiA`2-=5fC?ZLCx%D;=jwB+H zx{jY3Tbd#4Vt#SrnQ01dNugk#q8C0aU5sVOp-@ImmpMjXFFd^d>uo;Lq&77@{R;(2 z9G!JSAMejLHfXad2t9?CQ2onI7c=u%@C;`c3M)L4l48rp78O0aQlLa?DH@YN9O)K6 z<7XoduU{KLYgL~{sNFhC`t!p8z!xLB0=QaY`;O&6=i`oZIPI(O9;9L^)F;J`wlvFf z6utY}HpuX?DdHTB@5PGMzPA`)4ut2vw2qv<@mSAWA`lV0rvQyzwO62I;)(Nd*6{XJ zM!t{9kMtoWu08w<<%?zZskqWDI1U71dcq@dVZoeYUO1JCPHgXenLF zGQ0dSTyeyQWi;5KA)&fp*?;cxBhNjL;=kZS#pM0tbtE36GRjBrd`>VPado<)D>+EjUct$uWbT2|6wsBWc|6VIoS#lJ2|K&d{~ZPWi# zEJ9(JTq0?}rN?&M(wAkFM3lqE&OoWC>zEE=@M_XAO)+C|ZWst3ro18ai6a?ma_%%K zZ1;F@W#wSe-G`4M8z07{S7#)&J}Qu6k9;X=_OMGbxjO{TN(M*T)%l>Li~i&tSB&h6 zILp}>v5&m7-?RruX*yGU!dW2)-fCmJSMd6$#X?S+6;N@AK&q(O(leT-Xc}y3I)|Es z(mMiHj!lc!zzZf7#Mw=FV^PYSA4q)9-6!xVIvO->ExDRip=y&x80{A4*+{V_CyAvX zis(AHn~MXUS_Dp!VxO|f>@t2i)^MmNE9oMFTQq+7M8A%nN&ZuCA{P2Vnl$DbBdZ=u zq;<$k_Tl;X$IwzIG`;Hzb)lugSmA)@>U(h1ItZF}ka4Ikztgnj)olTr2a4V9zTN0S z5?7Q|atvwejJ@ZV=s;z`GAAoSn9$FmZdmJhVVC&0j59*v2#Uo@6n9-@HdI-_zlGiNJw~;@MJ;QW0OVVZz+q_wr|*Ns_Y^V35dIh zCBqIkFr?Jys*dVF?x%P}Igfng7T%B={ai9-+U;YW8G<$BqwdM#(G=!XFR{7uJdVpd zjGfs7Z#>23V*lllS>#XhTwX+{@*l>Dixzc#|YC)Pom$(il?`D|RYF?T* z-^&#+uQ|(ms5C=)3cxXT0!Mh^-N6iYPv2GW&WjI)IP+b*j|(r+#AoZ+$300I=^Ol4 zKbK^!2(A~eSlk)%uad;hON@CgcSj)gvI0HL)!3`EoB=E%vI6Bx?_Vr}an@fStgU7C zLFVleJ~W}_9rLAF;np~og8Tys57!xR#xD54?Q_xmCDIAr8}uttj!#0uuTZX%~P!sD&4`2b7A^1)coHhW8x%jV7sw~~T< zS?fuB386$!=0T=w<-!keJU70?3I?Gi%kxlGB{Vxx%zqpl5pd)XYn>jeVwsK8g>YeoUKkf7tAmT3aI=wj$cM?;a8= z8X%DRgjMHZsllP|6ph!~2Q&?Qcz)SZ7pIEUMtmk<^BsxT zrJ0;y51R|%L^)P-0+K9z{s94w!5R%n#&7UgjmAv!V_V^@{g z;mjDSyT9|(vz{6iPuhIQdlLc@S5J5hm<9B{NKjN`VsIUmaZ0pR7d!ssw4GAq)tozM zxm7x;8@(jBx6LI>IWOkO+KJD#7>$}5I@BILC*joCBlkYAH5TGadW4{-L6)|Qd&O6F zA0_c1>hm$-_pcE({gNJLB3#lWd;{%X-Cx>RSAyF2{{X1o09o-DeJiax!FV>6rjmE-4=9>c_q^+QC*U=>QjWt z?((h`Ua1@H*IH1#Ca+p#2Ev21b6YyaPX_UDNUFTYuMBmiCp~y*_gqV1lABeng9_)& ziy;Esp&=Z9W>@~z zkhzF5Ug&`;;Zf2&^8xby+(i`2G0JP^L<>jW3ZBea@*246kM)?l6MpCkQapBCHuI>t z4>!1$0?`{p_z^Em0FPCD4O>r2VX{Y$9)*q_I|eB!DM4y#YLJ$e7Nn=A2N@a~LZ+ss zkh!@zbo%sZ$kx^ttfbCEE-o&RmzNiG{rYw2_U+qHcz8Gz6B7f)$HzlSNl8#vRu)uL zR0LI3RY5Oaynq@S8lc9;MyR#56>4v9hq}7Dpn-t_XmD^48X6jcK7INGO-@ciGcz;L z!omWyv;>~*`ZxURfqy;lKk9+a&CT!Sb8>S0QQ!nmYyKMki1jPc&-{O=`YS)jj~Kp| zv;A%OO8OmytupFeI7lSoKL;cNiL;A(i~g$sOqLcG`M2D#Y(Ry?rNyvp3&7Y;{zuH) z;E+giSirUq;7f|X1OAg)TLLfuVDkR6yozXJePPw>zA31B`L07(A1`fUJ!9fnW# zkJSTrkO4;EL71QDC-3}GmT-$7d~@LbH~Mj5%^36lD}E#{ta%&%f1`gJKgNH5WbjW! z+y47++YbSEpzZeOAoxl4A7sDwAJ~9@-hsaLU)TT+(m&An0|_b21;gKJ0k(hG1#sB_ z`_3E&i(>dkO^9TGdA8JpZ#YB#1H8Y-_F?P|E=fA#&25V(vPwgA&IaPBt&)5=IRT(iUXHH8bQ06!8Q z7k?2j^Ar_a`IYVK1#A-s5!?&5ZVqtvr$7tW62XPv`+i3PT#m;64;HZD0(NZlug=?+ z01KdoeMACZ{TfI>6%upr+fn&rim_l9EMWTv`J)JG82v7|?04v4QE(j^2Pnb8xERiU z3v8eQfejCv-#Bj@2wVxPL1NUvxo_bcupd$XkOSnLz)a+pnctYdcgznAKV@JSu;Bm% z*gsi-#s=tdz8~~Iac*Z}mGppgtC_z6fI9|e%KB^Lw^{%=44|7+Zc%{cGvA&hPF2$NWFr|EKt2-EjEH z{;ybmMf+pP7WXgqe{G8&sejGw@B{r{b$*ZKSB@V`V19TH1oJSnv7zA)>=?*_q z|C)pOVR|@#6yB}uWdEoS!~9#^+Y-KI{-_Uqum3w%jIci$LqF>OQNo|{!!rIV{OYkE zOa6*)r~F6iUvoQjf0h2q@ngwf@$HoVNDV=ogK!D%=B78CA~rYR1cJQQwo=LMlQ{JB zR-R;VE5+SOE4T7kKd0VX<%mB`f9BuG4?>uLyOZwV*uk}v?%>_QzmsmCaD26I$Ii`4 zST5G)SNkyvfFCdlNH#Yyg3+6s7{QX?QjB1)?V}TrU=+ZqH|#zTDluZer9dzcixCXO z{__+90p|OkN#S$iy&#%{`1PC^{CC^0;k$EUX=!Q9IkBRm;@5LxZEbBxUtb?GF)@Ko zojL{C*w{c$PEL@AhX>^6=LZD`2SXttA<(^h_b_L~2?+^MYHBK!o}Lcn=jTJ^<>gRK zO$}6EUk^1kH9;L69Z+9iAN2nHduVug7#bTJ!<-Gz&dx&f^Yj0n4S#Kze=q*^!2cN! zY)?KIWq)_R`Xi!kYOo4{S0Yz^P0t<|i-_pY-Pyj?U7-EbPxYa5DiX3AzI6=Ym6bvMIo+12ea##Ta zAR)#O11+G}!jsPL(QNw&Mnnz#4#?n90nmKcZ+*838JAc(&~Y9DhlV0R!-S9{}TD(r+C%d{2#O zi@&CaG5i$%GalF&6@HG%+1VNL^z?-M{rxe|F@=SNK~YgrP-0>tl#!7EWoKtY z1qB6AWo0E)S62tMw6s8P-n@Z&dwVha(|`A-JI?<%{nrEk_dW1+pNeMwO+fDe{B14F zutkApW*~uoYy2tTkT7f!Fw_607AD4_X9g;mng8-(1_EY4z)bs-;P0}ua6P;d`-?#F zC-r|P|8MX?%<%g9cL9qIwhtKi7mpf{!{%WKe(M2@^;-n=s9)t{(SK_oGzHi~eBXos z5+(X;J;aPALg0U2kB=bQR*q2sF*BeLWZwwL5GaN%Y+Kb3nwbiL_^JVH2B@|hf4d$S zNsPeT5rBsv{y{oS#LR$$Al)J$Md17>9j-^C!7`c_CIIb0{gZTz0A>;d4qT6eAo)!- ztO5LL!;EG|AQ-+`4s&h?X0V6??3nMJvhUNa8kqkV@E9^?OwHE!_k3H|JCe8ff0Y0u z|E3@PgLh#GaP7D7JN|FAze5Pi|33VT@cTOWdZ!*IVTW zyd;4m%nL7b;JC59yx9axoK0_VuwMy&EBHRb<-dvWI)xU*y&&$aQ>2g}vlG5sr@-gw zva+%ee4Y+JbFHhZ3mF&~KxSrUkcEW>WNmE?`TF`|&d~z`0-&2WZ$c3f5tua!{JeEs zTpUzdT8depz|UF3Ym`^7UO}&4zs5Xg{qy={d3kvU#lPvl9{AS-|CcmD2aze4c-`ts$=nEO|BbTkwj8;jXnXJ%$% z_R^i5olt*&KQuKph55ff|Ng!UocV9~*8~5Lcwp;3MoIBCPy*l-`0x{Bm=6-40-_{D z!qePVKoU|?g5Pz%1zgG>>JfyL5E=Ze>2|;-0|Iw_6@Ub$0DVmAjKlV)PgSxA{+_|93mLqR-iyqfX_}25d4^@pg>?gI|Sgtbb#R- z!;ZaheI+=f_5L>fVp!ljTn@)UaArFVkic;X?Bn3LlZVs)kyqGLKiPhTeV=u@woU}@ zbfXqGWs&#fL#wEOE_S>oZftdC3RzYw`gd5q_1JZ^jAZf$-gjM)P`SAK-fn5>%RD{{ zcz3O;q}f!syl+0oTRJ*+^Cm~eQBteROHwUvoZ@HJ$N45-W;}LFYckbwK0diA`1b7? zJ%*L`w`VfCbrxfs4U4=F9ys81`?LOm1kzLc?!{TgQj~jtPhyX|P|EbQyxg=fg?`_?o7QjkY*;a_OjfEu5Ae-< zpI#_F_9okP{#<9O78g@^&^#2tt^ZHN|AHWg+55~9$gF%G+kMJ^F??Yi8`Ze`xz8ZYXG_ZL&O^6h@sF7s$Hwgq!=B4~yq2+EtpwY>nVAJ@Efa^*3L5$2N6q zg&#O@z&JUY5{tq+7S*ja&-eO)g*h@nQQ~s4(jiuQ4Jy@^qBz>SkVOc^XRbE>n{r_g zq4V(+Srv#gl!7=oVI?C^Iag4f++4sj%~6Ka9Le3MV)gK$s-&6ca+2M(@#^ao#UF_s zeTw4A_aefiBu=a-Eb1Sab=+9HTzIyXjp^F>y)zH$nF-m0#~3wk--T{)aOpCP=_-xi z^{9HCtQy^0GF6`T@ccX4L4De)-t_jO1h%~h$|*7{nFLiy`5?v%%@V8WL3p*u+G@OE zJjY|l00JNPgkF}utcSPJd>2O=qeqTE5Kqk_4MGK7f2ViFY&=GT@GfM?!qs-HEhD5u zV%6u7^LR(m5x0fWx@OKu3s+7>L6spP*@+mTmca(25N1lC~m3YrRic#cz zWrktClKjT$S9jla7apot&N+cjAM6^WrK^fL@i~P~1!@dYBXy5mI|b|ne*|D+-y-;% z04q0QPdxW4y3H>CDaAFLq>F}7L|8;lL|4u;)lmTjY+~U$E+^)09L@OfO`2XwncL#0 zI<-gvlU|R-J^<%=xp^$#AniMSx~krcwxUGwyAVM%?_|{3*Uj>1kCT@*OK_PlRZf%? zq9zCz>Is6Vg6@&MVjT{hHAmLTNC=(RxmPbg0bZE%e|91_g=1FhFp)Ae(nF^OMNm-iH?SaUe!vEszUNwPq^ zdKLkblYXYkUVfk{a~E=W$Lw|I@JpAe{>hFkvn+N=;3EeTiKV!gCqq}AsaO3xs>=;4 zbDj$w@DV+=?zj6cM1NZiuXn)S!M6dd$OY`M}neDpsti+TgCU_U#9;FkAHqCTY^}!!(RyTa? zmN#~0r0Krhm*GaS+1JI+)`#2{CLWtjYY_lqx>Y+wEqQG_-tgU1)sz(8A!^vUv!(;? zUv3#?SAI?#9;&}%5-TxQ@|gtEZ~9r}3qZUwzPaFMQGP$;s=h;C(I5 zLys;_^(RYfTXkJ5#U&I;7Af%4ms7#M4-H}O<)6xT9@j1OSao4qu2PlImn*dG(KS;< zPaN*|eM77)QXo6v{<=s`p!uwIzwo9y--P*_q2l%{At?=)Guxs_n`S zGn_tE?V}2XF3-H^9wOIRD?0b?*|pC-_7!jR*5)RAI#pvtG~~zp7kw5_B5G-CyR%)S zS^$R%wC^1^-8BXel?FH4-lwf);BC;rAMrB&6HnfLvWViSbgOcE=9cSidCSs{V|1TI zd?s{0aB2{Asdvx)`y88(JYx5Xh zEua2ahO>)twB{z=!-w6zi++osXE4_GPp3(R01QgdzN+MpWu~6Xr(VyRE)IBksq(K! zKXZHTmdD5LC%TvXBwbF6F2p?{%F;de1@wZaG^UrN9ib2}Q`bZ$7)3B5wS40u5yiwwbkaU}0jihup8$IJ^F z>w;3fB>hOT=P|TZqU0)cIqJI5rI<*A%UK7lJ4Wlw+IG0{Uj~F{4pVraob5^6U)0ST zHftLGY@fv&z1R3syIb-~JHIqbqE#+uDdh+N%=@&zoT@(Of$}a{Q`w_cy1B7x_uP+I zY}QxOpR;URBjbt8o9*s&IZ>e1iY^G1)thk7+M^8m(=_$v(p}H(L)2Z3AG%}kCi3IU z$dZTh!C^f3-PDzy$y2qm3vUj!h^vwGg zd{a6nI)G38{isJpb@!j!ji{@>8@bq>W9c8X)_!zH1!$OO=d4hbv!(~x-kqvGAN1x` ze$T<%5C?m1sopKcOLRF!u1!g%pD4UluwS~pVPV|QSb`0lO)Qft$gWGs3q>qG*1#8J z_jBAeV){5q455H?`f?V1-gp(6V1gGaTZ0 z{-jiIkla+xCi%g`)Z0hYzYeo;zZ;pKeGzvYI8vKDST7MXcT}k zJg!Z^Gb%(ZCX~Vw?mZ~E9^pp?y>!zs88P0Ddhx>HPYxf;L@_EC(dY z0>)HFhS3?re(R2O1LKuPc*6varw!zYM#65(hLb5b5LAM0`&eg*uBrwM`|)Cz$;a$U zgs&n`W-|-gyYHlSA3Lg}43V#K-_H}JUzS$n zS{t?0dFP)Z`V>V+gHP9w?^?ovi0;u=)(+1CWY_tpj7=Tn>x@DMEn99qB zUvbQ&ZV1p3M<^uk=byS3cp%_0VuZO#nq7y7UAGmR#U38JPfoq;9f|eIWKU>#R^;#4 zqW7||5DY$?JvgOL60LM0kV}O_gQOB?k zOz0=;$w8~gmY)}RA9FxEXP?C>HE34ue1b^cgj=FQx&WT=Fu#2k$)KlcW2y}48v^ce zLT_`bBNo{nM|Ny!ER6?w8^F&`EjFyHik#{OqT5z%Ug|VB^TSc~=h^LR1X^ za4Hzm<#gdoZ3G(tDp^Hd_TgOQB{_NkG(3gqR5fW}PPGzLJh3;`ykXXqlI_Dj3yKe( zRNSJ7x=oEUW7Nmky}+z zYbwPgiI-`(rN%hKi^8cqxle*OwK=FAnGYN9$cQd~|1mw!^Pb9ZaBKFdq)cd7;ma;h z;DsBskz_J9Y;u9RPRJ0o&FG~4%kP4LQ#W2cy-DjyDw|H76h`G;UseZTguQ%vQ@=IG zP#d_#!Plw(5IVb*M#Hn_RJGmfyS5rRyxv~z{V#d5N}mDCQ7pow>~c45yrl*=kI=Nl zXvSOb4?7Iu0n76tAs>CAy#|(r1~1Z~>9}VFt*70ej#f>3o=u3lN-I<>g(r0QU^id- zUF_+L-L(adBgZ#BscCam6Ij$#nsn2&+aOycxh@@v!t)w1&Oz!tyPl#SK<8_XwQ`n- zroD}zae}Kf zoXQe3#JRoZW@^#n0Rc)^x`en{JCrS!UHh6^dkF?d0N3R&rvaD9O^dTJ3!+iV5PNX0aSr67YCC?=J`In+pX^J6K#R0PqbzHu^H`|{=8o1fK&@P)4G&mPdW6qApql9IHF zl#8CB?GR@th?3@GjmQcV7S!fO5Vc8Aixb_Z*&ux@#YZP@?v%Yi!yN_@Y@E|4T63*G zyb)l-5<#>P<)`BjbQB*-s<2oc#L^~aXXC{Yny2YDi&ICArg`xBsU78HJ3*@TVjU;0 zf_mYm+>AT;;~mAvWT}ZP9zUvfIZig{&I^g3PHAa~J9eh|fpe_K!o8q?I-~_b&PN1F z#*vvdLa@av(Sr}XNHcfoMQ8xMv(lv_OstxbA-yz~~IbL$4KY3zb*nB6jY zC1}{T9838=Ha2CPobcSMd(|Ks6Q|pDWVbneyBe-fy5kRCUC1$ZpLqc+h#;~UXPEQ~ z5kw5F$tQuo-w98l*CptwH;dU5lElQJ`#^6lK(kmcJ3KV@@$P$JoccD=g_CL ztPXy*C+4JDmo1CckzE-ce4S=fIvO_vqV@))Zob(-UL%+4-+Zd?u`+i7+@pZlWhp+^ zWbuz4)#?W1QqjV;y|)har?9ilUeQ0Qa(Ryx%A4S-DGhd?yJM~z=k5eHx@vNZ%W8R- z<4f^b?$pOEv=p4BY>t!mH7;?Pbdr_5z~V=${Gh-}WrRBq>74;Q1vc!5Y`XR`k!dgn zuvUjY;_n_gD}Y#wT*$e_bXd1AfP2?N+7ymBy20H_?*)#I$>*hmwaoYr-s>&o||7(!NVpiv@Shy{tH-gmR?O0j&w)VGu{|nnp2aYu&(Ae2S$= z1OauEN40nS3;Ku0c$aDX{rqs;HI~(*-cm?`P2g07pxNi9So?)2R6>+DdgXKZs@+So zHH6n}i7t6%XKS`dj;BKy$6m$agRONnM)qYNhnwz?AHRQNT>+U;{rsB5QodJR2u|2u&k7aneEq-vlySsSjCq@CAO7P<{7$)>RQQlY8EF z$;6pO(LBs4ONnrRWF^UZ8W*XmHj}PGRx=kJ|JoS>g&}-AvBRpkxy1l>kp?rzPL%DFr)B)P#ORVH;qQNUc z&-q||v5JKzhKmz~ROd%qSQi(1>`TBJ1wJBqdWTEx)8^5WB+X;vJ%#oQ7fgI{NnF4y z7Lzsvsb;R_od7LmGTF)a8XF45UQzZpTpqO7$4%m zA2g_8NLm+JMUpKq-O0-#UwitwM%#cKQXqdSC&q#J^726d(x;&uZzK3&e8!WEQ%?RG zU2C@{2xYbRR5!Iapd`cQU*4P$`K(^7(;fJhCIH-3?-?ERYe=>+LqvsUVQ;eZiCd); zAJ?X}^S{r3r9y;0Lhl7EzVfy7c?O|aTBR^Tk`L<)_#2A}Czf^Qrs!5`>_Yq|YCfT5 z$*PeS@BNf;B(tvpVJf2@ts(aoR^xR~95j7-QZ-Mh@0;qR7wpXURug&vDXMpA>3agh%{Ho8mJhi|E zW#Epi_W-w?vJ4w7SBCF_gv942XD&tTMtTKeds@6S;1mPe>!D-vHA>OklOt^c;c{V= zOBy7>O-5X{53$QG<^(Azs3Om*gi14vZ76k{DL;>;xX@e`oJgkApkZaN^jvVsC}~~V zXCr+sHM9XcB$xvwo{E=`cb<1&<^kCxzgPts3n^P92XQ)EfT53?J@)?3Rq}COdnQ8; z7^nIhIb2lEj-01oZ#e&X6EWz0@4zT!ga~|s{`;30vcOf~*T${nzxf6)7d!-F0Ekr} zj)S-c;^zO72xEaU!PsDohyEKIf93&l5FqM;_y)xPEw=tC4j40x{imN;ezx-WdBDdA zVi|~ks_%a*9c%;R@2&iODWE?HBHW+;qfHYN6Px4X|6hC86JphM#z#|Q+C>v+2sUXt zV?sB{CQ!SL4k99LDYy`<3xi-rv>VYy7KM2_MO=sp78Ep9$u21Y7ts#r;>Ao*&_Y1k zMrrL^_z#oH7-uo1@@{{>^X_;3&iBr}@7}rh{h4tFzB&KD@Ao_R+;i_cfA0CFuR;u+ zaK>DI5oYVhBJV25cUI@4M~|ZO=g&v@cxi+WoJLrD7h&gJb7~7@V0eB?3NEXhR7p+ zt<8&%^3GfCQWxZ4d6BEF1H?`0eE6V5w07;+<4;bSBmAcn|1Wjg?%lf=9Dj1s z9O3^`@&8Jv;iK&fjz2kRj_`k_`2Ss}&8K%AxxYKPw>%f2i>k?f7|b$xDGzmd8enRBYgN^-qr!JlY{02|EKoaOBiXdKpyD)ICy5D#(FwE z=OvwELd34Q#N1vHz9AQRerw7^*f2Wp+5jck0AGSc^teHtzW->;Ol@GiB)5dxu{(mA=Z8z%KXach;TsF!1E_Yi2`$I@W>%-w=5e_@^>LBGgV{ud#4n3EN ziP$vO7`xm0)Xpwn40Mb_ymw<9(&q8!Gv~;WBi44;!n7sNIdO@}a3|)`d@QqbLC^bI zH`^Evvhy%-oE3-FSqznjX~T|76HB1ozn{%2e=4{?2l-mp!L3`jA{_YV)d4<05#cbt z$~lW&>ZT33=5&dHSR_yE66a=z^-)Zp>V;Ft;Sm<5``Kz{x52Zx-0E>r> zVaDrxW&8zf5ZkiyOw%<$|C^9m&8NV%nNywcI@@a>Xk*0mW;*ifQebDV=1+gld$TbA z0)5Qh>KJBg0^g;OFLWIg=$mubL4jusvFJ}FWfQ0%74}v_W^^4Ccs6&eg97gu#IUjg zN`+Oxt~YMXy2$x%){%dKcg$oQw=jW{1;Cf<Pjmx4>_Vb0{;X^=&1o zC&gi(V`l$>Bz!_+W+}hTk}^`B?cV;zOc~3f&CIc^1Z0;zz_D5IiyImC zA!RIUbC+oqQV-sr2zR=nF*A{=huPK(&91zv?jS$lPa({QKAenrqS4eiyI5 z-~W}Zk3nz$wmtM9JW%(45BLsr|F_8BfB)@4eUxhdJj@Jdeef(Y{*B`R5B?QCyu9X$ zxdTJ!KiJ{OODDuAz@%DZp+%2qm^b*V4c`6?H-h+7S()x^D z_z}~4Ssal5dyVzMg9i}~4vco}*wHrsQTBZ)t32mgXp^>yL1QAu5C_Ds*ZD48y41G* zCCg^F(zxb^STr_b)f^D!`kjAC9)2SLhfj3Al7BV0sbw5{ocKMZR_vy z+UaIKuE!%b!AZ;t|7Q|^?AWn^sdrl+#3nf5ex~pz>pgHN=)mG9HidtN_!0iG#Bn{D z}b>Kd+V z|1tiv5fyKVVP#f8HN<{k8D#r%O!c-qrp8v*7Sgxdx%Njs3(<+h#pAu|C_X z{nmek`JSD$uh81mesKt_hu)yEiy!zu6b`&rcKvcc@CVjRe<*mZ3+&vN^Kao0T7TSY z4rV9z$H8r1ht)n@svHDU;W=>pE#ml_iE%X*jdu zQ7+k6V%N`BwYM&Z-hEjZv(kXy+ZWQIo^+k%_IJ3hrT2Y+gSW3kuU`$c)7-eB*X@hb zd)CZ)*2?y6z}8;cquBMQfqo(v2iva&)}!vtY8yq;fZN+wVfS2{emWO^{agv`jjnv( z1UPv6BJ6r*^PJ4&V4v$|{WO1ztSnN$dGkVVvai9eM-RNG1UcCEs=)g9uI*a@es5ob z-A@pBPi*6$-)jSVi_g(U-uj$NKIr%M71;eC<~`lRZ+};qy}>=(HvkTsAr70}&%@tI zd?rb{cJ=SNz~0`TuKNeBWL-b^W9fIgz+AlJqx0Onc~f)j`MQ1J=eqm^gT|Hzzsd8H zxwPf7Wh%s9YOZvyJQndM?XPF`k2=@ua;s|p!%A z#zE|KaR_^ZE)Ht1)5W3fHM)2*rnyWG{nZ$mQLfH(=x@-4J#htx;1XBxy7gbm!ap0c!omiXikVUBBGqV2nP??#6Y zAC5L|-01ywOM6D-iKi~=q;A@XZ6)K@2=8Y+#~n6p+Ekfci;cQzBgU|wH30t)Ansc4 z+_|%Bwgn4q#P(^Ew%z(DjsZ)aZo9MwvzrQ zu7g#Gdu+#VtFo`gb5rNNV86yXU>{|_8CeF08IP?=y;~QyIWKjU803Cjw{D#~52on* zEYFZ(S>jgr8+9k^6RmxQk^Tl`R*!!M=1}DR3A%bNM~#Pa-sp{xO&f=Ndm!#Rfikvg z=AeRhS%xBWVJxe@HMqyxNee><=XEYpmyAv4otxEjiE7N7x{9v#PUdA~Y`@dos-81d za|UyscLC<@tOGqaV&;&&>mYNUX3k}MT0M7)hi$$Ox;0=jx0E)wsn-IiIV+Y8zVCIi zE$Jwq%xlQp9OowO_nPH9muk+hvUv+&aPtzJ+mwFDj1465w{PE;Ym)2R*}}7v3k*(g zC;JLlhqwJs7X9>o*@s;jmo3VFI4)bZ{mJz#YG2Bgx(-tB;ug66mD(4(dEKhoq2=8# z`$eDsYV4}g>o4_Dz|FMZz_3FdLm4#;6Htay{v^GQybYA0Ok=2n!yFV2b6`kgoWkLb zsI~-K+G1(NF}_VWPO$>=7DUD=-uXTPDS!9x-{)G!3CIo9ak7pJ{$y<+>qf%jsyLQm z*$M37@zxy9%*?!s`0G3mv|g`AI1jSPcNxlw6DJbC4(oXOd4?p*LI?3&hrU-y<;s;S zOW>aZ{^qV-yPBh;qoss8s0%v3z??Ck)1%~g;J|^V+#|FR@-t4-#MN=)hc4HLzy@{K z_{`m~VM9=-)+6P$8}dV!dyYeY4RQ$2SL!ZRFT^22UDQe4z&{2z+PZaXW%!}XeMcO6 z$MEj=5^T&|xNxBo{lpGktp6G4e~E1f?jA^UVqzlUC|rxW)InX;N!|Rzw?>vC{5jf{ z8;7D!UN?&N>#&X&KgXHaHi7+fyt{hu-O&FU;=h}kn&Nlan|yCOe*8G48M`)|#3OH$ z@1HCSJv?*xwH9*!KjPhbq(g@ex%`(eUrzc1q)D50{RQ+mmwAW>Wh6ayz0r*uH+V0f zMgP&nIdM(wA8O)UWvS0Lmubwyyez}AckbLt?Q6*febLLv_wCiISKWC!2M-=}I79f6 z=JFsf^L&ePFZ(qT4k6!WNb~5?qwc;#ztx7Facqms!@MjL))tNho{t|sd>C!pwynwE zC9+S3y68t-6KN6iAnxO^mh@QkNiV|29enrEwbfInPRaFao<4orwcB{S=??V2n64>3 z1?B!gylmfWr}R_U-!l%^is6ZL4cRHczmNKOU-2G5*tJ(aXJY+~8_(7fPNi;0J%@hg z*%#Ilj>Ye5-Ums2bf_PfFRUpXOZ}`1sR!1N2yM|XF6)h0!kWUdqM!FZuPb#Zk+5^Q zS9UJ?b^YY=hmmr=>>13FrFR)jqcC3s6JC^QOt{Tr^6l}^YA4O1am;ItJO3==wD3KQ zFNz}&c@JCjJp=-OxF$b`T*N!h|2n-FGY|8!3{}B>9nZ>{{rmSP<70A7LoUbAn3rW( z7V<}4qfp+gIF?~q$T^OQW#tW}u?)*XJ}6=T1C)Oq?HRhJfzH?@tQA>T?~6OM_gapgn@0JWrE4eueVvAI`FW;20_VPUvSG)0ijFguN)1W1UHP@q3vv0%giu un^sqbS(haF^)(ki)AE!T3?bK+ucg!`<0*B{xi4?Y>@ep4A=8*`75P6_hR4|e literal 0 HcmV?d00001 diff --git a/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/pch.cpp b/GoogleTestAdapter/GoogleTestProjectTemplate/pch.cpp similarity index 100% rename from GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/pch.cpp rename to GoogleTestAdapter/GoogleTestProjectTemplate/pch.cpp diff --git a/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/pch.h b/GoogleTestAdapter/GoogleTestProjectTemplate/pch.h similarity index 100% rename from GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/pch.h rename to GoogleTestAdapter/GoogleTestProjectTemplate/pch.h diff --git a/GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/test.cpp b/GoogleTestAdapter/GoogleTestProjectTemplate/test.cpp similarity index 100% rename from GoogleTestAdapter/ProjectTemplates/Test/GoogleTest/test.cpp rename to GoogleTestAdapter/GoogleTestProjectTemplate/test.cpp diff --git a/GoogleTestAdapter/ItemTemplates/Test/.gitignore b/GoogleTestAdapter/ItemTemplates/Test/.gitignore deleted file mode 100644 index 071f467a1..000000000 --- a/GoogleTestAdapter/ItemTemplates/Test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -GoogleTestIT.zip diff --git a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj index 9e83effe0..13feddd62 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj +++ b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj @@ -49,14 +49,6 @@ - - CopyIfNewer - true - - - CopyIfNewer - true - CopyIfNewer true @@ -95,6 +87,20 @@ {fdc95d92-5e1e-4bdf-aa35-181851fce755} DiaResolver + + {87A1108A-3819-4B31-99EA-217F3E11E958} + GoogleTestItemTemplate + ItemTemplates + false + TemplateProjectOutputGroup%3b + + + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544} + GoogleTestProjectTemplate + ProjectTemplates + false + TemplateProjectOutputGroup%3b + {44c04e51-d543-4155-a57e-bbeb73d3f8e5} TestAdapter @@ -177,12 +183,5 @@ - - - - - - - \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest index cd150046d..bcd9b6f78 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest +++ b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest @@ -27,12 +27,12 @@ - - + + diff --git a/GoogleTestAdapter/ProjectTemplates/Test/.gitignore b/GoogleTestAdapter/ProjectTemplates/Test/.gitignore deleted file mode 100644 index 20f1f01b3..000000000 --- a/GoogleTestAdapter/ProjectTemplates/Test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -GoogleTestPT.zip From eb7a4aa6d4384a14f19e36f0c392fe69ae556591 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 22 Nov 2017 14:15:02 -0800 Subject: [PATCH 73/92] Update SetVersion.ps1 (#92) --- GoogleTestAdapter/SetVersion.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoogleTestAdapter/SetVersion.ps1 b/GoogleTestAdapter/SetVersion.ps1 index bef19a23c..8487d6b61 100644 --- a/GoogleTestAdapter/SetVersion.ps1 +++ b/GoogleTestAdapter/SetVersion.ps1 @@ -13,7 +13,7 @@ $diatests_assembly_info = "DiaResolver.Tests\Properties\AssemblyInfo.cs" $packaging_gta_assembly_info = "Packaging.GTA\Properties\AssemblyInfo.cs" $packaging_tafgt_assembly_info = "Packaging.TAfGT\Properties\AssemblyInfo.cs" -$projecttemplates_vstemplate = "ProjectTemplates\Test\GoogleTest\GoogleTest.vstemplate" +$projecttemplates_vstemplate = "GoogleTestProjectTemplate\GoogleTest.vstemplate" $testadapter_assembly_info = "TestAdapter\Properties\AssemblyInfo.cs" $testadaptertests_assembly_info = "TestAdapter.Tests\Properties\AssemblyInfo.cs" From d7e70313aec2ec41b151e4836585449fa8024fc3 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Thu, 30 Nov 2017 11:39:03 -0800 Subject: [PATCH 74/92] Add null check for native method that returns null on fail (#94) * add null check for native method that returns null on fail * move null check out of loop * add an error to the log on failure and add a null check in the other place it's used as well --- GoogleTestAdapter/DiaResolver/PeParser.cs | 13 +++++++++++-- GoogleTestAdapter/DiaResolver/Resources.Designer.cs | 9 +++++++++ GoogleTestAdapter/DiaResolver/Resources.resx | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/GoogleTestAdapter/DiaResolver/PeParser.cs b/GoogleTestAdapter/DiaResolver/PeParser.cs index 7da561970..ac8256fa4 100644 --- a/GoogleTestAdapter/DiaResolver/PeParser.cs +++ b/GoogleTestAdapter/DiaResolver/PeParser.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 11/2017. using GoogleTestAdapter.Common; using Microsoft.Win32.SafeHandles; @@ -253,6 +253,11 @@ private static void ProcessImports(string executable, ILogger logger, FuncOriginalFirstThunk != 0u) { shouldContinue = predicate(GetString(image, directoryEntry->Name)); @@ -318,7 +323,11 @@ public static string ExtractPdbPath(string executable, ILogger logger) { uint size = 0u; var dbgDir = (IMAGE_DEBUG_DIRECTORY*)NativeMethods.ImageDirectoryEntryToData(image.MappedAddress, 0, 6, &size); - if (dbgDir->SizeOfData > 0) + if (dbgDir == null) + { + logger.LogError(Resources.ImageDirectoryEntryToData); + } + else if (dbgDir->SizeOfData > 0) { var pdbInfo = (PdbInfo*)NativeMethods.ImageRvaToVa(image.FileHeader, image.MappedAddress, dbgDir->AddressOfRawData, IntPtr.Zero); pdbPath = PtrToStringUtf8(new IntPtr(&pdbInfo->PdbFileName)); diff --git a/GoogleTestAdapter/DiaResolver/Resources.Designer.cs b/GoogleTestAdapter/DiaResolver/Resources.Designer.cs index e7c93ab87..25dc83539 100644 --- a/GoogleTestAdapter/DiaResolver/Resources.Designer.cs +++ b/GoogleTestAdapter/DiaResolver/Resources.Designer.cs @@ -78,6 +78,15 @@ internal static string GenerateFullPDBMessage { } } + /// + /// Looks up a localized string similar to ImageDirectoryEntryToData failed!. + /// + internal static string ImageDirectoryEntryToData { + get { + return ResourceManager.GetString("ImageDirectoryEntryToData", resourceCulture); + } + } + /// /// Looks up a localized string similar to Failed to locate line number for {0}. /// diff --git a/GoogleTestAdapter/DiaResolver/Resources.resx b/GoogleTestAdapter/DiaResolver/Resources.resx index 4508571f7..435ceab19 100644 --- a/GoogleTestAdapter/DiaResolver/Resources.resx +++ b/GoogleTestAdapter/DiaResolver/Resources.resx @@ -149,4 +149,7 @@ Cannot load {0}. {0} represents unlocalized file path (e.g c:\test\foo.pdb) + + ImageDirectoryEntryToData failed! + \ No newline at end of file From 7e86d56a9d1e83db15363c3844f4489f3a7fe85d Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Tue, 23 Jan 2018 13:23:43 -0800 Subject: [PATCH 75/92] Silence tr1 namespace build warnings (#115) * silence tr1 namespace issues though cmake * add preprocessor def to fix tr1 failures when building tests --- GoogleTestNuGet/Build.ps1 | 1 + SampleTests/CrashingTests/CrashingTests.vcxproj | 8 ++++---- SampleTests/LoadTests/LoadTests.vcxproj | 8 ++++---- SampleTests/LongRunningTests/LongRunningTests.vcxproj | 8 ++++---- SampleTests/Tests/Tests.vcxproj | 8 ++++---- SampleTests/Tests_1.7.0/Tests_1.7.0.vcxproj | 8 ++++---- 6 files changed, 21 insertions(+), 20 deletions(-) diff --git a/GoogleTestNuGet/Build.ps1 b/GoogleTestNuGet/Build.ps1 index a9606129e..f8a363a0c 100644 --- a/GoogleTestNuGet/Build.ps1 +++ b/GoogleTestNuGet/Build.ps1 @@ -186,6 +186,7 @@ function Build-Binaries { $CMakeArgs += "-A", $Platform $CMakeArgs += "-D", "BUILD_SHARED_LIBS=$(Convert-BooleanToOnOff $DynamicLibraryLinkage)" $CMakeArgs += "-D", "gtest_force_shared_crt=$(Convert-BooleanToOnOff $DynamicCRTLinkage)" + $CMakeArgs += "-D", "CMAKE_CXX_FLAGS=/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" $CMakeArgs += $CMakeDir Invoke-Executable cmake $CMakeArgs diff --git a/SampleTests/CrashingTests/CrashingTests.vcxproj b/SampleTests/CrashingTests/CrashingTests.vcxproj index 1c696e0f5..d2ecc1125 100644 --- a/SampleTests/CrashingTests/CrashingTests.vcxproj +++ b/SampleTests/CrashingTests/CrashingTests.vcxproj @@ -95,7 +95,7 @@ Level3 Disabled - _VARIADIC_MAX=10;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -110,7 +110,7 @@ Level3 Disabled - _VARIADIC_MAX=10;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -127,7 +127,7 @@ MaxSpeed true true - _VARIADIC_MAX=10;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -146,7 +146,7 @@ MaxSpeed true true - _VARIADIC_MAX=10;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) diff --git a/SampleTests/LoadTests/LoadTests.vcxproj b/SampleTests/LoadTests/LoadTests.vcxproj index 79601eeaf..2cdc15ffe 100644 --- a/SampleTests/LoadTests/LoadTests.vcxproj +++ b/SampleTests/LoadTests/LoadTests.vcxproj @@ -93,7 +93,7 @@ Level3 Disabled - _VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -108,7 +108,7 @@ NotUsing Level3 Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -125,7 +125,7 @@ MaxSpeed true true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -144,7 +144,7 @@ MaxSpeed true true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) diff --git a/SampleTests/LongRunningTests/LongRunningTests.vcxproj b/SampleTests/LongRunningTests/LongRunningTests.vcxproj index 3c81aa1fa..74e32469e 100644 --- a/SampleTests/LongRunningTests/LongRunningTests.vcxproj +++ b/SampleTests/LongRunningTests/LongRunningTests.vcxproj @@ -90,7 +90,7 @@ Disabled true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) - _VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) DebugFull @@ -104,7 +104,7 @@ true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) false - _VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) DebugFull @@ -119,7 +119,7 @@ true true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) - _VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) true @@ -135,7 +135,7 @@ true true $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) - _VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;_MBCS;%(PreprocessorDefinitions) true diff --git a/SampleTests/Tests/Tests.vcxproj b/SampleTests/Tests/Tests.vcxproj index f37c56bba..001c67f76 100644 --- a/SampleTests/Tests/Tests.vcxproj +++ b/SampleTests/Tests/Tests.vcxproj @@ -90,7 +90,7 @@ Level3 Disabled true - _VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -104,7 +104,7 @@ Level3 Disabled true - _VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -119,7 +119,7 @@ true true true - _VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) @@ -136,7 +136,7 @@ true true true - _VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.8.0\fused-src;%(AdditionalIncludeDirectories) diff --git a/SampleTests/Tests_1.7.0/Tests_1.7.0.vcxproj b/SampleTests/Tests_1.7.0/Tests_1.7.0.vcxproj index 222fc33a0..68eb553b3 100644 --- a/SampleTests/Tests_1.7.0/Tests_1.7.0.vcxproj +++ b/SampleTests/Tests_1.7.0/Tests_1.7.0.vcxproj @@ -95,7 +95,7 @@ NotUsing Level3 Disabled - GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.7.0\fused-src;%(AdditionalIncludeDirectories) true @@ -110,7 +110,7 @@ NotUsing Level3 Disabled - GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.7.0\fused-src;%(AdditionalIncludeDirectories) true @@ -127,7 +127,7 @@ MaxSpeed true true - GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.7.0\fused-src;%(AdditionalIncludeDirectories) true @@ -146,7 +146,7 @@ MaxSpeed true true - GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) + _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;GTEST_1_7_0;_VARIADIC_MAX=10;%(PreprocessorDefinitions) $(ProjectDir)..\3rdparty\gtest-1.7.0\fused-src;%(AdditionalIncludeDirectories) true From 3739a0bd88f6ffc7df5f0ef0c243b018e7058386 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 2 May 2018 13:09:22 -0700 Subject: [PATCH 76/92] Only run executor on gtest dlls, only run tests if there are tests (#129) --- GoogleTestAdapter/TestAdapter/TestExecutor.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/GoogleTestAdapter/TestAdapter/TestExecutor.cs b/GoogleTestAdapter/TestAdapter/TestExecutor.cs index 3bafa021e..dec15155e 100644 --- a/GoogleTestAdapter/TestAdapter/TestExecutor.cs +++ b/GoogleTestAdapter/TestAdapter/TestExecutor.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Linq; @@ -177,7 +177,11 @@ private static void AddTestCasesOfExecutable(List allTestCasesInExecut if (testrunIsCanceled()) return; + if (!GoogleTestDiscoverer.IsGoogleTestExecutable(executable, settings.TestDiscoveryRegex, logger)) + return; + var discoverer = new GoogleTestDiscoverer(logger, settings); + settings.ExecuteWithSettingsForExecutable(executable, () => { allTestCasesInExecutables.AddRange(discoverer.GetTestsFromExecutable(executable)); @@ -204,6 +208,9 @@ private bool IsVisualStudioProcessAvailable() private void DoRunTests(ICollection testCasesToRun, IRunContext runContext, IFrameworkHandle frameworkHandle) { + if (testCasesToRun.Count == 0) + return; + bool isRunningInsideVisualStudio = !string.IsNullOrEmpty(runContext.SolutionDirectory); var reporter = new VsTestFrameworkReporter(frameworkHandle, isRunningInsideVisualStudio, _logger); var launcher = new DebuggedProcessLauncher(frameworkHandle); From 922aec803769d98736abdfb0ba55464260e351eb Mon Sep 17 00:00:00 2001 From: Justin Goshi Date: Wed, 23 May 2018 10:51:08 -1000 Subject: [PATCH 77/92] Support for working directory and environment set through CMakeLists.txt (#131) * Support for working directory and environment set through CMakeLists.txt * Update the adapter to remove mention of CTest * Fix test code build breaks * Addressing PR comments --- .../Helpers/ProcessExecutorTests.cs | 2 + .../Helpers/TestProcessLauncherTests.cs | 3 +- GoogleTestAdapter/Core/Core.csproj | 24 +++--- .../Framework/IDebuggedProcessLauncher.cs | 6 +- .../Core/Framework/IProcessExecutor.cs | 7 +- GoogleTestAdapter/Core/GoogleTestConstants.cs | 3 +- .../Core/Helpers/ProcessExecutor.cs | 34 ++++++--- .../Core/Helpers/ProcessLauncher.cs | 29 ++++++-- .../Core/Helpers/TestProcessLauncher.cs | 21 ++++-- .../Core/Runners/ParallelTestRunner.cs | 2 +- .../Core/Runners/PreparingTestRunner.cs | 4 +- .../Core/Runners/SequentialTestRunner.cs | 69 +++++++++++++----- .../Core/Settings/ITestPropertySettings.cs | 10 +++ .../ITestPropertySettingsContainer.cs | 8 ++ .../Core/Settings/SettingsWrapper.cs | 13 +++- .../Core/TestCases/TestCaseFactory.cs | 5 +- .../TestAdapter/CommonFunctions.cs | 6 +- .../Framework/DebuggedProcessLauncher.cs | 23 +++++- .../Settings/TestPropertySettings.cs | 27 +++++++ .../Settings/TestPropertySettingsContainer.cs | 73 +++++++++++++++++++ .../Settings/TestPropertySettingsProvider.cs | 59 +++++++++++++++ .../TestAdapter/TestAdapter.csproj | 29 +++++--- .../TestAdapter/TestPropertySettings.xsd | 33 +++++++++ 23 files changed, 409 insertions(+), 81 deletions(-) create mode 100644 GoogleTestAdapter/Core/Settings/ITestPropertySettings.cs create mode 100644 GoogleTestAdapter/Core/Settings/ITestPropertySettingsContainer.cs create mode 100644 GoogleTestAdapter/TestAdapter/Settings/TestPropertySettings.cs create mode 100644 GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsContainer.cs create mode 100644 GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsProvider.cs create mode 100644 GoogleTestAdapter/TestAdapter/TestPropertySettings.xsd diff --git a/GoogleTestAdapter/Core.Tests/Helpers/ProcessExecutorTests.cs b/GoogleTestAdapter/Core.Tests/Helpers/ProcessExecutorTests.cs index 5fa700238..ad3b6cd85 100644 --- a/GoogleTestAdapter/Core.Tests/Helpers/ProcessExecutorTests.cs +++ b/GoogleTestAdapter/Core.Tests/Helpers/ProcessExecutorTests.cs @@ -24,6 +24,7 @@ public void ExecuteProcessBlocking_PingLocalHost() Path.Combine(Environment.SystemDirectory, "ping.exe"), "localhost", "", + null, null, s => output.Add(s)); @@ -44,6 +45,7 @@ public void ExecuteProcessBlocking_SampleTests() TestResources.Tests_DebugX86, null, null, + null, "", s => output.Add(s)); diff --git a/GoogleTestAdapter/Core.Tests/Helpers/TestProcessLauncherTests.cs b/GoogleTestAdapter/Core.Tests/Helpers/TestProcessLauncherTests.cs index 45d7eb832..03edb91d0 100644 --- a/GoogleTestAdapter/Core.Tests/Helpers/TestProcessLauncherTests.cs +++ b/GoogleTestAdapter/Core.Tests/Helpers/TestProcessLauncherTests.cs @@ -31,7 +31,7 @@ public void GetOutputOfCommand_WhenDebugging_InvokesDebuggedProcessLauncherCorre int processId = -4711; var mockLauncher = new Mock(); mockLauncher.Setup(l => - l.LaunchProcessWithDebuggerAttached(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) + l.LaunchProcessWithDebuggerAttached(It.IsAny(), It.IsAny(), null, It.IsAny(), It.IsAny())) .Returns(processId); new TestProcessLauncher(TestEnvironment.Logger, TestEnvironment.Options, true) @@ -42,6 +42,7 @@ public void GetOutputOfCommand_WhenDebugging_InvokesDebuggedProcessLauncherCorre mockLauncher.Verify(l => l.LaunchProcessWithDebuggerAttached( It.Is(s => s == "theCommand"), It.Is(s => s == "theDir"), + null, It.Is(s => s == "theParams"), It.Is(s => s == "") ), Times.Exactly(1)); diff --git a/GoogleTestAdapter/Core/Core.csproj b/GoogleTestAdapter/Core/Core.csproj index 400d9f7c0..17089af1f 100644 --- a/GoogleTestAdapter/Core/Core.csproj +++ b/GoogleTestAdapter/Core/Core.csproj @@ -42,15 +42,15 @@ - $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.Core.dll.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.Core.dll.lcl Microsoft StrongName - - - false + + + false @@ -85,6 +85,8 @@ + + @@ -160,12 +162,12 @@ --> - - - - Microsoft - StrongName - - + + + + Microsoft + StrongName + + \ No newline at end of file diff --git a/GoogleTestAdapter/Core/Framework/IDebuggedProcessLauncher.cs b/GoogleTestAdapter/Core/Framework/IDebuggedProcessLauncher.cs index 320868129..b772d7b8b 100644 --- a/GoogleTestAdapter/Core/Framework/IDebuggedProcessLauncher.cs +++ b/GoogleTestAdapter/Core/Framework/IDebuggedProcessLauncher.cs @@ -1,9 +1,11 @@ -namespace GoogleTestAdapter.Framework +using System.Collections.Generic; + +namespace GoogleTestAdapter.Framework { public interface IDebuggedProcessLauncher { - int LaunchProcessWithDebuggerAttached(string command, string workingDirectory, string param, string pathExtension); + int LaunchProcessWithDebuggerAttached(string command, string workingDirectory, IDictionary additionalEnvVars, string param, string pathExtension); } } \ No newline at end of file diff --git a/GoogleTestAdapter/Core/Framework/IProcessExecutor.cs b/GoogleTestAdapter/Core/Framework/IProcessExecutor.cs index 47aab9076..05660e8c5 100644 --- a/GoogleTestAdapter/Core/Framework/IProcessExecutor.cs +++ b/GoogleTestAdapter/Core/Framework/IProcessExecutor.cs @@ -1,6 +1,7 @@ -// This file has been modified by Microsoft on 6/2017. +// This file has been modified by Microsoft on 5/2018. using System; +using System.Collections.Generic; using System.IO; namespace GoogleTestAdapter.Framework @@ -8,7 +9,7 @@ namespace GoogleTestAdapter.Framework public interface IProcessExecutor { - int ExecuteCommandBlocking(string command, string parameters, string workingDir, string pathExtension, Action reportOutputLine); + int ExecuteCommandBlocking(string command, string parameters, string workingDir, IDictionary envVars, string pathExtension, Action reportOutputLine); void Cancel(); } @@ -23,7 +24,7 @@ public static int ExecuteBatchFileBlocking(this IProcessExecutor executor, strin } string command = Path.Combine(Environment.SystemDirectory, "cmd.exe"); - return executor.ExecuteCommandBlocking(command, $"/C \"{batchFile}\" {parameters}", workingDir, pathExtension, + return executor.ExecuteCommandBlocking(command, $"/C \"{batchFile}\" {parameters}", workingDir, null, pathExtension, reportOutputLine); } } diff --git a/GoogleTestAdapter/Core/GoogleTestConstants.cs b/GoogleTestAdapter/Core/GoogleTestConstants.cs index 23f9b895e..312a0c276 100644 --- a/GoogleTestAdapter/Core/GoogleTestConstants.cs +++ b/GoogleTestAdapter/Core/GoogleTestConstants.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 5/2018. using System; @@ -7,6 +7,7 @@ namespace GoogleTestAdapter public static class GoogleTestConstants { + public const string TestPropertySettingsName = "TestPropertySettingsForGoogleAdapter"; public const string SettingsName = "GoogleTestAdapterSettings"; public const string SettingsExtension = ".gta.runsettings"; public const string DurationsExtension = ".gta.testdurations"; diff --git a/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs b/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs index 953f58ff4..ea4acf0e2 100644 --- a/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs +++ b/GoogleTestAdapter/Core/Helpers/ProcessExecutor.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections; @@ -34,11 +34,11 @@ public ProcessExecutor(IDebuggerAttacher debuggerAttacher, ILogger logger) _logger = logger; } - public int ExecuteCommandBlocking(string command, string parameters, string workingDir, string pathExtension, Action reportOutputLine) + public int ExecuteCommandBlocking(string command, string parameters, string workingDir, IDictionary envVars, string pathExtension, Action reportOutputLine) { try { - return NativeMethods.ExecuteCommandBlocking(command, parameters, workingDir, pathExtension, _debuggerAttacher, reportOutputLine, processId => _processId = processId); + return NativeMethods.ExecuteCommandBlocking(command, parameters, workingDir, envVars, pathExtension, _debuggerAttacher, reportOutputLine, processId => _processId = processId); } catch (Win32Exception ex) @@ -96,12 +96,12 @@ protected override void Dispose(bool disposing) private const uint INFINITE = 0xFFFFFFFF; internal static int ExecuteCommandBlocking( - string command, string parameters, string workingDir, string pathExtension, + string command, string parameters, string workingDir, IDictionary envVars, string pathExtension, IDebuggerAttacher debuggerAttacher, Action reportOutputLine, Action reportProcessId) { using (var pipeStream = new ProcessOutputPipeStream()) { - var processInfo = CreateProcess(command, parameters, workingDir, pathExtension, pipeStream._writingEnd); + var processInfo = CreateProcess(command, parameters, workingDir, envVars, pathExtension, pipeStream._writingEnd); reportProcessId(processInfo.dwProcessId); using (var process = new SafeWaitHandle(processInfo.hProcess, true)) using (var thread = new SafeWaitHandle(processInfo.hThread, true)) @@ -136,12 +136,27 @@ public static void CreatePipe(out SafePipeHandle readingEnd, out SafePipeHandle throw new Win32Exception(Marshal.GetLastWin32Error(), "Could not set handle information"); } - private static StringBuilder CreateEnvironment(string pathExtension) + private static StringBuilder CreateEnvironment(string pathExtension, IDictionary additionalEnvVars) { StringDictionary envVariables = new ProcessStartInfo().EnvironmentVariables; + if (additionalEnvVars != null) + { + foreach (var entry in additionalEnvVars) + { + envVariables[entry.Key] = entry.Value; + } + } + if (!string.IsNullOrEmpty(pathExtension)) - envVariables["PATH"] = Utils.GetExtendedPath(pathExtension); + { + var path = Utils.GetExtendedPath(pathExtension); + if (envVariables.ContainsKey("PATH")) + { + path += $";{envVariables["PATH"]}"; + } + envVariables["PATH"] = path; + } var envVariablesList = new List(); foreach (DictionaryEntry entry in envVariables) @@ -159,7 +174,8 @@ private static StringBuilder CreateEnvironment(string pathExtension) return result; } - private static PROCESS_INFORMATION CreateProcess(string command, string parameters, string workingDir, string pathExtension, + private static PROCESS_INFORMATION CreateProcess(string command, string parameters, string workingDir, + IDictionary envVars, string pathExtension, SafePipeHandle outputPipeWritingEnd) { var startupinfoex = new STARTUPINFOEX @@ -190,7 +206,7 @@ private static PROCESS_INFORMATION CreateProcess(string command, string paramete lpThreadAttributes: null, bInheritHandles: true, dwCreationFlags: CREATE_EXTENDED_STARTUPINFO_PRESENT | CREATE_SUSPENDED, - lpEnvironment: CreateEnvironment(pathExtension), + lpEnvironment: CreateEnvironment(pathExtension, envVars), lpCurrentDirectory: workingDir, lpStartupInfo: startupinfoex, lpProcessInformation: out processInfo)) diff --git a/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs b/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs index 2f231f411..488152842 100644 --- a/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs +++ b/GoogleTestAdapter/Core/Helpers/ProcessLauncher.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections.Generic; @@ -29,26 +29,26 @@ public ProcessLauncher(ILogger logger, string pathExtension, Action reportP public List GetOutputOfCommand(string command) { int dummy; - return GetOutputOfCommand("", command, "", false, false, out dummy); + return GetOutputOfCommand("", null, command, "", false, false, out dummy); } public List GetOutputOfCommand(string workingDirectory, string command, string param, bool printTestOutput, bool throwIfError) { int dummy; - return GetOutputOfCommand(workingDirectory, command, param, printTestOutput, throwIfError, out dummy); + return GetOutputOfCommand(workingDirectory, null, command, param, printTestOutput, throwIfError, out dummy); } - public List GetOutputOfCommand(string workingDirectory, string command, string param, bool printTestOutput, + public List GetOutputOfCommand(string workingDirectory, IDictionary envVars, string command, string param, bool printTestOutput, bool throwIfError, out int processExitCode) { var output = new List(); - processExitCode = LaunchProcess(workingDirectory, command, param, printTestOutput, throwIfError, output); + processExitCode = LaunchProcess(workingDirectory, envVars, command, param, printTestOutput, throwIfError, output); return output; } - private int LaunchProcess(string workingDirectory, string command, string param, bool printTestOutput, + private int LaunchProcess(string workingDirectory, IDictionary additionalEnvVars, string command, string param, bool printTestOutput, bool throwIfError, List output) { var processStartInfo = new ProcessStartInfo(command, param) @@ -61,8 +61,23 @@ private int LaunchProcess(string workingDirectory, string command, string param, WorkingDirectory = workingDirectory }; + if (additionalEnvVars != null) + { + foreach (var entry in additionalEnvVars) + { + processStartInfo.EnvironmentVariables[entry.Key] = entry.Value; + } + } + if (!string.IsNullOrEmpty(_pathExtension)) - processStartInfo.EnvironmentVariables["PATH"] = Utils.GetExtendedPath(_pathExtension); + { + var path = Utils.GetExtendedPath(_pathExtension); + if (processStartInfo.EnvironmentVariables.ContainsKey("PATH")) + { + path += $";{processStartInfo.EnvironmentVariables["PATH"]}"; + } + processStartInfo.EnvironmentVariables["PATH"] = path; + } Process process = Process.Start(processStartInfo); if (process != null) diff --git a/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs b/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs index 08ee5d7c8..f4df720e2 100644 --- a/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs +++ b/GoogleTestAdapter/Core/Helpers/TestProcessLauncher.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections.Generic; @@ -23,26 +23,31 @@ public TestProcessLauncher(ILogger logger, SettingsWrapper settings, bool isBein _isBeingDebugged = isBeingDebugged; } - public List GetOutputOfCommand(string workingDirectory, string command, string param, bool printTestOutput, bool throwIfError, IDebuggedProcessLauncher debuggedLauncher) + { + return GetOutputOfCommand(workingDirectory, null, command, param, printTestOutput, throwIfError, debuggedLauncher); + } + + public List GetOutputOfCommand(string workingDirectory, IDictionary envVars, string command, string param, bool printTestOutput, + bool throwIfError, IDebuggedProcessLauncher debuggedLauncher) { int dummy; - return GetOutputOfCommand(workingDirectory, command, param, printTestOutput, throwIfError, debuggedLauncher, out dummy); + return GetOutputOfCommand(workingDirectory, envVars, command, param, printTestOutput, throwIfError, debuggedLauncher, out dummy); } - public List GetOutputOfCommand(string workingDirectory, string command, string param, bool printTestOutput, + public List GetOutputOfCommand(string workingDirectory, IDictionary envVars, string command, string param, bool printTestOutput, bool throwIfError, IDebuggedProcessLauncher debuggedLauncher, out int processExitCode) { if (_isBeingDebugged) { var output = new List(); - processExitCode = LaunchProcessWithDebuggerAttached(workingDirectory, command, param, printTestOutput, debuggedLauncher); + processExitCode = LaunchProcessWithDebuggerAttached(workingDirectory, envVars, command, param, printTestOutput, debuggedLauncher); return output; } var actualLauncher = new ProcessLauncher(_logger, _settings.GetPathExtension(command), processId => _processId = processId); - return actualLauncher.GetOutputOfCommand(workingDirectory, command, param, printTestOutput, + return actualLauncher.GetOutputOfCommand(workingDirectory, envVars, command, param, printTestOutput, throwIfError, out processExitCode); } @@ -77,7 +82,7 @@ public static void KillProcess(int processId, ILogger logger) } - private int LaunchProcessWithDebuggerAttached(string workingDirectory, string command, string param, bool printTestOutput, + private int LaunchProcessWithDebuggerAttached(string workingDirectory, IDictionary envVars, string command, string param, bool printTestOutput, IDebuggedProcessLauncher handle) { _logger.LogInfo(String.Format(Resources.AttachDebuggerMessage, command)); @@ -85,7 +90,7 @@ private int LaunchProcessWithDebuggerAttached(string workingDirectory, string co { _logger.DebugInfo(Resources.DebuggerAttachedOutputMessage); } - _processId = handle.LaunchProcessWithDebuggerAttached(command, workingDirectory, param, _settings.GetPathExtension(command)); + _processId = handle.LaunchProcessWithDebuggerAttached(command, workingDirectory, envVars, param, _settings.GetPathExtension(command)); Process process = Process.GetProcessById(_processId.Value); var waiter = new ProcessWaiter(process); waiter.WaitForExit(); diff --git a/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs b/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs index 74e934153..a18b83e93 100644 --- a/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections.Generic; diff --git a/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs b/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs index 10025237f..5b335f46a 100644 --- a/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.IO; @@ -128,7 +128,7 @@ private void RunBatch(BatchType batchType, string workingDirectory, string batch else { new TestProcessLauncher(_logger, _settings, isBeingDebugged).GetOutputOfCommand( - workingDirectory, batch, "", false, false, null, out batchExitCode); + workingDirectory, null, batch, "", false, false, null, out batchExitCode); } if (batchExitCode == 0) diff --git a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs index 2a3de9fd9..ecb429963 100644 --- a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections.Generic; @@ -55,14 +55,46 @@ public void RunTests(IEnumerable testCasesToRun, string baseDir, _settings.ExecuteWithSettingsForExecutable(executable, () => { - RunTestsFromExecutable( - executable, - finalWorkingDir, - groupedTestCases[executable], - finalParameters, - isBeingDebugged, - debuggedLauncher, - executor); + var testsWithNoTestPropertySettings = groupedTestCases[executable]; + + if (_settings.TestPropertySettingsContainer != null) + { + testsWithNoTestPropertySettings = new List(); + + foreach (var testCase in groupedTestCases[executable]) + { + ITestPropertySettings settings; + if (_settings.TestPropertySettingsContainer.TryGetSettings(testCase.FullyQualifiedName, out settings)) + { + RunTestsFromExecutable( + executable, + settings.WorkingDirectory, + settings.Environment, + Enumerable.Repeat(testCase, 1), + finalParameters, + isBeingDebugged, + debuggedLauncher, + executor); + } + else + { + testsWithNoTestPropertySettings.Add(testCase); + } + } + } + + if (testsWithNoTestPropertySettings.Count != 0) + { + RunTestsFromExecutable( + executable, + finalWorkingDir, + null, + testsWithNoTestPropertySettings, + finalParameters, + isBeingDebugged, + debuggedLauncher, + executor); + } }, _logger); } @@ -80,7 +112,7 @@ public void Cancel() // ReSharper disable once UnusedParameter.Local - private void RunTestsFromExecutable(string executable, string workingDir, + private void RunTestsFromExecutable(string executable, string workingDir, IDictionary envVars, IEnumerable testCasesToRun, string userParameters, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, IProcessExecutor executor) { @@ -95,7 +127,7 @@ private void RunTestsFromExecutable(string executable, string workingDir, break; } var streamingParser = new StreamingStandardOutputTestResultParser(arguments.TestCases, _logger, _frameworkReporter); - var results = RunTests(executable, workingDir, isBeingDebugged, debuggedLauncher, arguments, resultXmlFile, executor, streamingParser).ToArray(); + var results = RunTests(executable, workingDir, envVars, isBeingDebugged, debuggedLauncher, arguments, resultXmlFile, executor, streamingParser).ToArray(); try { @@ -121,12 +153,12 @@ private void RunTestsFromExecutable(string executable, string workingDir, } } - private IEnumerable RunTests(string executable, string workingDir, bool isBeingDebugged, + private IEnumerable RunTests(string executable, string workingDir, IDictionary envVars, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, CommandLineGenerator.Args arguments, string resultXmlFile, IProcessExecutor executor, StreamingStandardOutputTestResultParser streamingParser) { try { - return TryRunTests(executable, workingDir, isBeingDebugged, debuggedLauncher, arguments, resultXmlFile, executor, streamingParser); + return TryRunTests(executable, workingDir, envVars, isBeingDebugged, debuggedLauncher, arguments, resultXmlFile, executor, streamingParser); } catch (Exception e) { @@ -143,7 +175,7 @@ public static void LogExecutionError(ILogger logger, string executable, string w logger.LogError(String.Format(Resources.ExecuteSteps, threadName, workingDir, Environment.NewLine, executable, arguments)); } - private IEnumerable TryRunTests(string executable, string workingDir, bool isBeingDebugged, + private IEnumerable TryRunTests(string executable, string workingDir, IDictionary envVars, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, CommandLineGenerator.Args arguments, string resultXmlFile, IProcessExecutor executor, StreamingStandardOutputTestResultParser streamingParser) { @@ -151,13 +183,13 @@ private IEnumerable TryRunTests(string executable, string workingDir if (_settings.UseNewTestExecutionFramework) { DebugUtils.AssertIsNotNull(executor, nameof(executor)); - consoleOutput = RunTestExecutableWithNewFramework(executable, workingDir, arguments, executor, streamingParser); + consoleOutput = RunTestExecutableWithNewFramework(executable, workingDir, envVars, arguments, executor, streamingParser); } else { _processLauncher = new TestProcessLauncher(_logger, _settings, isBeingDebugged); consoleOutput = - _processLauncher.GetOutputOfCommand(workingDir, executable, arguments.CommandLine, + _processLauncher.GetOutputOfCommand(workingDir, envVars, executable, arguments.CommandLine, _settings.PrintTestOutput && !_settings.ParallelTestExecution, false, debuggedLauncher); } @@ -171,7 +203,8 @@ private IEnumerable TryRunTests(string executable, string workingDir return testResults; } - private List RunTestExecutableWithNewFramework(string executable, string workingDir, CommandLineGenerator.Args arguments, IProcessExecutor executor, + private List RunTestExecutableWithNewFramework(string executable, string workingDir, IDictionary envVars, + CommandLineGenerator.Args arguments, IProcessExecutor executor, StreamingStandardOutputTestResultParser streamingParser) { string pathExtension = _settings.GetPathExtension(executable); @@ -199,7 +232,7 @@ private List RunTestExecutableWithNewFramework(string executable, string }; _processExecutor = executor; _processExecutor.ExecuteCommandBlocking( - executable, arguments.CommandLine, workingDir, pathExtension, + executable, arguments.CommandLine, workingDir, envVars, pathExtension, reportOutputAction); streamingParser.Flush(); diff --git a/GoogleTestAdapter/Core/Settings/ITestPropertySettings.cs b/GoogleTestAdapter/Core/Settings/ITestPropertySettings.cs new file mode 100644 index 000000000..717692219 --- /dev/null +++ b/GoogleTestAdapter/Core/Settings/ITestPropertySettings.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace GoogleTestAdapter.Settings +{ + public interface ITestPropertySettings + { + IDictionary Environment { get; } + string WorkingDirectory { get; } + } +} diff --git a/GoogleTestAdapter/Core/Settings/ITestPropertySettingsContainer.cs b/GoogleTestAdapter/Core/Settings/ITestPropertySettingsContainer.cs new file mode 100644 index 000000000..e784e35a3 --- /dev/null +++ b/GoogleTestAdapter/Core/Settings/ITestPropertySettingsContainer.cs @@ -0,0 +1,8 @@ + +namespace GoogleTestAdapter.Settings +{ + public interface ITestPropertySettingsContainer + { + bool TryGetSettings(string testName, out ITestPropertySettings settings); + } +} diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index b60174ed0..018aa8bad 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections.Generic; @@ -46,6 +46,7 @@ public class SettingsWrapper .ToArray(); private readonly IGoogleTestAdapterSettingsContainer _settingsContainer; + private readonly ITestPropertySettingsContainer _testPropertySettingsContainer; public RegexTraitParser RegexTraitParser { private get; set; } private int _nrOfRunningExecutions; @@ -54,14 +55,22 @@ public class SettingsWrapper private IGoogleTestAdapterSettings _currentSettings; public SettingsWrapper(IGoogleTestAdapterSettingsContainer settingsContainer) + : this(settingsContainer, null) + { + } + + public ITestPropertySettingsContainer TestPropertySettingsContainer => _testPropertySettingsContainer; + + public SettingsWrapper(IGoogleTestAdapterSettingsContainer settingsContainer, ITestPropertySettingsContainer testPropertySettingsContainer) { _settingsContainer = settingsContainer; + _testPropertySettingsContainer = testPropertySettingsContainer; _currentSettings = _settingsContainer.SolutionSettings; } public virtual SettingsWrapper Clone() { - return new SettingsWrapper(_settingsContainer) { RegexTraitParser = RegexTraitParser }; + return new SettingsWrapper(_settingsContainer, _testPropertySettingsContainer) { RegexTraitParser = RegexTraitParser }; } // needed for mocking diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs index a3eeb6b68..34638102b 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections.Generic; @@ -45,7 +45,7 @@ public IList CreateTestCases(Action reportTestCase = null) { var launcher = new ProcessLauncher(_logger, _settings.GetPathExtension(_executable), null); int processExitCode; - standardOutput = launcher.GetOutputOfCommand("", _executable, GoogleTestConstants.ListTestsOption, + standardOutput = launcher.GetOutputOfCommand("", null, _executable, GoogleTestConstants.ListTestsOption, false, false, out processExitCode); if (!CheckProcessExitCode(processExitCode, standardOutput)) @@ -138,6 +138,7 @@ private IList NewCreateTestcases(Action reportTestCase, List _executable, GoogleTestConstants.ListTestsOption, "", + null, _settings.GetPathExtension(_executable), lineAction); }, TaskCreationOptions.AttachedToParent); diff --git a/GoogleTestAdapter/TestAdapter/CommonFunctions.cs b/GoogleTestAdapter/TestAdapter/CommonFunctions.cs index 85875176e..9a434a3d7 100644 --- a/GoogleTestAdapter/TestAdapter/CommonFunctions.cs +++ b/GoogleTestAdapter/TestAdapter/CommonFunctions.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 8/2017. +// This file has been modified by Microsoft on 5/2018. using System; using System.Collections.Generic; @@ -53,7 +53,9 @@ public static void CreateEnvironment(IRunSettings runSettings, IMessageLogger me projectSettings.GetUnsetValuesFrom(ourRunSettings.SolutionSettings); } - var settingsWrapper = new SettingsWrapper(ourRunSettings); + var testSettings = runSettings.GetSettings(GoogleTestConstants.TestPropertySettingsName) as TestPropertySettingsProvider; + + var settingsWrapper = new SettingsWrapper(ourRunSettings, testSettings?.TestPropertySettings); var loggerAdapter = new VsTestFrameworkLogger(messageLogger, () => settingsWrapper.DebugMode, () => settingsWrapper.TimestampOutput); var regexParser = new RegexTraitParser(loggerAdapter); diff --git a/GoogleTestAdapter/TestAdapter/Framework/DebuggedProcessLauncher.cs b/GoogleTestAdapter/TestAdapter/Framework/DebuggedProcessLauncher.cs index 5c7e5f6d2..b5ffcd959 100644 --- a/GoogleTestAdapter/TestAdapter/Framework/DebuggedProcessLauncher.cs +++ b/GoogleTestAdapter/TestAdapter/Framework/DebuggedProcessLauncher.cs @@ -15,10 +15,31 @@ public DebuggedProcessLauncher(IFrameworkHandle handle) } public int LaunchProcessWithDebuggerAttached(string command, string workingDirectory, string param, string pathExtension) + { + return LaunchProcessWithDebuggerAttached(command, workingDirectory, null, param, pathExtension); + } + + public int LaunchProcessWithDebuggerAttached(string command, string workingDirectory, IDictionary additionalEnvVars, string param, string pathExtension) { IDictionary envVariables = new Dictionary(); + if (additionalEnvVars != null) + { + foreach (var envVar in additionalEnvVars) + { + envVariables[envVar.Key] = envVar.Value; + } + } + if (!string.IsNullOrEmpty(pathExtension)) - envVariables["PATH"] = Utils.GetExtendedPath(pathExtension); + { + var path = Utils.GetExtendedPath(pathExtension); + if (envVariables.ContainsKey("PATH")) + { + path += $";{envVariables["PATH"]}"; + } + envVariables["PATH"] = path; + } + return _frameworkHandle.LaunchProcessWithDebuggerAttached(command, workingDirectory, param, envVariables); } } diff --git a/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettings.cs b/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettings.cs new file mode 100644 index 000000000..5db12677f --- /dev/null +++ b/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettings.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using GoogleTestAdapter.Settings; +using System.Collections.Generic; + +namespace GoogleTestAdapter.TestAdapter.Settings +{ + public class TestPropertySettings : ITestPropertySettings + { + public IDictionary Environment { get; private set; } + + public string WorkingDirectory { get; private set; } + + public TestPropertySettings(TestPropertySettingsContainer.TestProperties test) + { + var environment = new Dictionary(); + foreach (var envVar in test.Environment) + { + environment.Add(envVar.Name, envVar.Value); + } + + this.Environment = environment; + this.WorkingDirectory = test.WorkingDirectory; + } + } +} diff --git a/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsContainer.cs b/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsContainer.cs new file mode 100644 index 000000000..a3f30de78 --- /dev/null +++ b/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsContainer.cs @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using GoogleTestAdapter.Settings; +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using System.Collections.Generic; +using System.Xml; +using System.Xml.Serialization; + +namespace GoogleTestAdapter.TestAdapter.Settings +{ + [XmlRoot(GoogleTestConstants.TestPropertySettingsName)] + public class TestPropertySettingsContainer : TestRunSettings, ITestPropertySettingsContainer + { + public class EnvVar + { + public string Name { get; set; } + public string Value { get; set; } + } + + public class TestProperties + { + public string Name { get; set; } + public string Command { get; set; } + public List Environment { get; set; } + public string WorkingDirectory { get; set; } + } + + private IDictionary _tests; + + public TestPropertySettingsContainer() + : base(GoogleTestConstants.TestPropertySettingsName) + { + } + + public List Tests { get; set; } + + public override XmlElement ToXml() + { + var document = new XmlDocument(); + using (XmlWriter writer = document.CreateNavigator().AppendChild()) + { + new XmlSerializer(typeof(RunSettingsContainer)) + .Serialize(writer, this); + } + return document.DocumentElement; + } + + public bool TryGetSettings(string testName, out ITestPropertySettings settings) + { + EnsureTestPropertiesMap(); + return _tests.TryGetValue(testName, out settings); + } + + private void EnsureTestPropertiesMap() + { + if (_tests != null) + { + return; + } + + _tests = new Dictionary(); + if (this.Tests != null) + { + foreach (var t in this.Tests) + { + var propertySettings = new TestPropertySettings(t); + _tests.Add(t.Name, propertySettings); + } + } + } + } +} diff --git a/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsProvider.cs b/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsProvider.cs new file mode 100644 index 000000000..0cd63e263 --- /dev/null +++ b/GoogleTestAdapter/TestAdapter/Settings/TestPropertySettingsProvider.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; +using System; +using System.ComponentModel.Composition; +using System.Reflection; +using System.Xml; +using System.Xml.Schema; +using System.Xml.Serialization; + +namespace GoogleTestAdapter.TestAdapter.Settings +{ + [Export(typeof(ISettingsProvider))] + [SettingsName(GoogleTestConstants.TestPropertySettingsName)] + public class TestPropertySettingsProvider : ISettingsProvider + { + public string Name => GoogleTestConstants.TestPropertySettingsName; + + public TestPropertySettingsContainer TestPropertySettings { get; set; } + + public void Load(XmlReader reader) + { + ValidateArg.NotNull(reader, nameof(reader)); + + var schemaSet = new XmlSchemaSet(); + var schemaStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("TestPropertySettings.xsd"); + schemaSet.Add(null, XmlReader.Create(schemaStream)); + + var settings = new XmlReaderSettings + { + Schemas = schemaSet, + ValidationType = ValidationType.Schema, + ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings + }; + + settings.ValidationEventHandler += (object o, ValidationEventArgs e) => throw e.Exception; + + using (var newReader = XmlReader.Create(reader, settings)) + { + try + { + if (newReader.Read() && newReader.Name.Equals(this.Name)) + { + XmlSerializer deserializer = new XmlSerializer(typeof(TestPropertySettingsContainer)); + this.TestPropertySettings = deserializer.Deserialize(newReader) as TestPropertySettingsContainer; + } + } + catch (InvalidOperationException e) when (e.InnerException is XmlSchemaValidationException) + { + throw new InvalidRunSettingsException( + String.Format(Resources.Invalid, GoogleTestConstants.TestPropertySettingsName), + e.InnerException); + } + } + } + } +} diff --git a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj index 68fff4904..47b5d2e37 100644 --- a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj +++ b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj @@ -44,15 +44,15 @@ - $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.TestAdapter.dll.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.TestAdapter.dll.lcl Microsoft StrongName - - - false + + + false @@ -213,6 +213,9 @@ + + + @@ -229,6 +232,10 @@ Resources.Designer.cs Designer + + Designer + TestPropertySettings.xsd + Designer @@ -271,12 +278,12 @@ $(DevEnvDir)CommonExtensions\Microsoft\TestWindow\vstest.console.exe "$(SolutionDir)..\SampleTests\Debug\Tests_gta.exe" /Settings:"$(SolutionDir)..\SampleTests\SampleTests.gta.runsettings" /TestCaseFilter:"DisplayName=TestMath.AddPasses" /TestAdapterPath:"$(TargetDir)" - - - - Microsoft - StrongName - - + + + + Microsoft + StrongName + + \ No newline at end of file diff --git a/GoogleTestAdapter/TestAdapter/TestPropertySettings.xsd b/GoogleTestAdapter/TestAdapter/TestPropertySettings.xsd new file mode 100644 index 000000000..c191de572 --- /dev/null +++ b/GoogleTestAdapter/TestAdapter/TestPropertySettings.xsd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From c7e35fa700720ca421b32856cf099d3f1089521a Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Thu, 24 May 2018 17:30:04 -0700 Subject: [PATCH 78/92] switch the tafgt package to async (#132) * switch the tafgt package to async * get service async --- .../GoogleTestExtensionOptionsPage.cs | 16 ++++++---- .../GoogleTestExtensionOptionsPage.cs | 2 +- .../VsPackage.TAfGT/VsPackage.TAfGT.csproj | 29 ++++++++++++------- 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index 90bb61a3f..0d819e02b 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 5/2018. using GoogleTestAdapter.Settings; using GoogleTestAdapter.TestAdapter.Settings; @@ -15,11 +15,13 @@ using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.ServiceModel; +using System.Threading; +using Task = System.Threading.Tasks.Task; namespace GoogleTestAdapter.VsPackage { - [PackageRegistration(UseManagedResourcesOnly = true)] + [PackageRegistration(AllowsBackgroundLoading = true, UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [Guid(PackageGuidString)] [SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "pkgdef, VS and vsixmanifest are valid VS terms")] @@ -27,7 +29,7 @@ namespace GoogleTestAdapter.VsPackage [ProvideOptionPage(typeof(ParallelizationOptionsDialogPage), OptionsCategoryName, "Parallelization", 110, 502, true)] [ProvideOptionPage(typeof(GoogleTestOptionsDialogPage), OptionsCategoryName, "Google Test", 110, 503, true)] [ProvideMenuResource("Menus.ctmenu", 1)] - public sealed partial class GoogleTestExtensionOptionsPage : Package, IGoogleTestExtensionOptionsPage, IDisposable + public sealed partial class GoogleTestExtensionOptionsPage : AsyncPackage, IGoogleTestExtensionOptionsPage, IDisposable { private readonly string _debuggingNamedPipeId = Guid.NewGuid().ToString(); @@ -40,13 +42,15 @@ public sealed partial class GoogleTestExtensionOptionsPage : Package, IGoogleTes // ReSharper disable once NotAccessedField.Local private DebuggerAttacherServiceHost _debuggerAttacherServiceHost; - protected override void Initialize() + protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) { - base.Initialize(); + await base.InitializeAsync(cancellationToken, progress); - var componentModel = (IComponentModel)GetGlobalService(typeof(SComponentModel)); + var componentModel = await GetServiceAsync(typeof(SComponentModel)) as IComponentModel; _globalRunSettings = componentModel.GetService(); + await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + _generalOptions = (GeneralOptionsDialogPage)GetDialogPage(typeof(GeneralOptionsDialogPage)); _parallelizationOptions = (ParallelizationOptionsDialogPage)GetDialogPage(typeof(ParallelizationOptionsDialogPage)); _googleTestOptions = (GoogleTestOptionsDialogPage)GetDialogPage(typeof(GoogleTestOptionsDialogPage)); diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs index c0d37dc76..82fc793cf 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs @@ -6,7 +6,7 @@ namespace GoogleTestAdapter.VsPackage { - [ProvideAutoLoad(UIContextGuid)] + [ProvideAutoLoad(UIContextGuid, PackageAutoLoadFlags.BackgroundLoad)] [ProvideUIContextRule(UIContextGuid, OptionsCategoryName, "VCProject & TestExplorer", new string[] { "VCProject", "TestExplorer" }, new string[] { VSConstants.UICONTEXT.VCProject_string, TestExplorerContextGuid })] diff --git a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj index 9cb3a9132..e77c63205 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj +++ b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj @@ -160,9 +160,15 @@ False + + True + True + + True + False @@ -196,6 +202,7 @@ True False + False True @@ -211,15 +218,15 @@ - $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.dll.lcl + $(MSBuildThisFileDirectory)..\..\loc\lcl\{Lang}\GoogleTestAdapter.VsPackage.TAfGT.dll.lcl Microsoft StrongName - - - false + + + false @@ -274,12 +281,12 @@ - - - - Microsoft - StrongName - - + + + + Microsoft + StrongName + + \ No newline at end of file From d8e598a1d4d5e2026da92397eb6773c4a24fa7ff Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 27 Jun 2018 11:36:40 -0700 Subject: [PATCH 79/92] Use new vsixlangpack schema and fix package load in non-english localizations (#134) --- .../Packaging.TAfGT/cs/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/de/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/es/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/fr/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/it/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/ja/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/ko/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/pl/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/pt-BR/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/ru/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/tr/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/zh-Hans/Extension.vsixlangpack | 11 +++++++---- .../Packaging.TAfGT/zh-Hant/Extension.vsixlangpack | 11 +++++++---- 13 files changed, 91 insertions(+), 52 deletions(-) diff --git a/GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack index b41be315c..8f4d6cd57 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/cs/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Testovací adaptér pro Google Test - + + + + Testovací adaptér pro Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack index d913f9a58..864e25bc9 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/de/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Testadapter für Google Test - + + + + Testadapter für Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack index 02c289aad..1d54d7048 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/es/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Test Adapter para Google Test - + + + + Test Adapter para Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack index a4c6113d1..662c6181d 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/fr/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Adaptateur de test pour Google Test - + + + + Adaptateur de test pour Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack index bbdc82478..a1613a4e7 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/it/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Test Adapter for Google Test - + + + + Test Adapter for Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack index bbdc82478..a1613a4e7 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/ja/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Test Adapter for Google Test - + + + + Test Adapter for Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack index bbdc82478..a1613a4e7 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/ko/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Test Adapter for Google Test - + + + + Test Adapter for Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack index bbdc82478..a1613a4e7 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/pl/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Test Adapter for Google Test - + + + + Test Adapter for Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack index 1ed57191a..5a7028758 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/pt-BR/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Adaptador de Teste para o Google Test - + + + + Adaptador de Teste para o Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack index c05354360..d0657a5ae 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/ru/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Адаптер теста для Google Test - + + + + Адаптер теста для Google Test + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack index 0df5f9d7d..ef0f0361d 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/tr/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - Google Test için Test Bağdaştırıcısı - + + + + Google Test için Test Bağdaştırıcısı + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack index 9e5aebc01..6bd1f1da1 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/zh-Hans/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - 适用于 Google Test 的测试适配器 - + + + + 适用于 Google Test 的测试适配器 + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack b/GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack index 6b169336d..516be1c87 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack +++ b/GoogleTestAdapter/Packaging.TAfGT/zh-Hant/Extension.vsixlangpack @@ -1,4 +1,7 @@ - - - 適用於 Google Test 的測試配接器 - + + + + 適用於 Google Test 的測試配接器 + + + \ No newline at end of file From 30c927f399043eb469d7203556bc04f96163a7dc Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Fri, 20 Jul 2018 19:42:06 +0200 Subject: [PATCH 80/92] readded TAfGT projects --- GoogleTestAdapter/GoogleTestAdapter.sln | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index 352ea2362..e5b2c47e9 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27120.0 @@ -25,6 +24,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VsPackage.GTA", "VsPackage. EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "VsPackage.Shared", "VsPackage.Shared\VsPackage.Shared.shproj", "{AC75F34E-190B-402A-8C46-91B0FA02450F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VsPackage.TAfGT", "VsPackage.TAfGT\VsPackage.TAfGT.csproj", "{55294B5F-A075-43F2-B0E9-2B11925E8B91}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestAdapter", "TestAdapter\TestAdapter.csproj", "{44C04E51-D543-4155-A57E-BBEB73D3F8E5}" ProjectSection(ProjectDependencies) = postProject {FDC95D92-5E1E-4BDF-AA35-181851FCE755} = {FDC95D92-5E1E-4BDF-AA35-181851FCE755} @@ -68,6 +69,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Dynamic.GTA", "Common.Dynamic.GTA\Common.Dynamic.GTA.csproj", "{17F4B73F-E4D3-4E40-98FC-788B1D0F8225}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Dynamic.TAfGT", "Common.Dynamic.TAfGT\Common.Dynamic.TAfGT.csproj", "{9041BDED-FA1B-4C17-B7EA-7B750C470C23}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VsPackage.GTA.Tests.Unit", "VsPackage.GTA.Tests.Unit\VsPackage.GTA.Tests.Unit.csproj", "{87F26371-0005-4301-9C49-A6DF4F06B81C}" ProjectSection(ProjectDependencies) = postProject {12952B24-C70B-4A26-839A-EE4183BE8CC0} = {12952B24-C70B-4A26-839A-EE4183BE8CC0} @@ -114,8 +117,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DllProject", "..\SampleTest EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DllTests", "..\SampleTests\DllDependentProject\DllDependentProject.vcxproj", "{2E3221EB-86DA-427D-84EC-DEFD3F966D9A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewProjectWizard", "NewProjectWizard\NewProjectWizard.csproj", "{483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packaging.GTA", "Packaging.GTA\Packaging.GTA.csproj", "{4735D8CC-FA30-432D-854C-2984A7DA5DD2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packaging.TAfGT", "Packaging.TAfGT\Packaging.TAfGT.csproj", "{B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SemaphoreExe", "SemaphoreExe\SemaphoreExe.vcxproj", "{F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{C5996129-A88E-45E1-A7B0-0B145B4FA0D8}" @@ -161,6 +168,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Donations", "Donations", "{ EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution + VsPackage.Shared\VsPackage.Shared.projitems*{55294b5f-a075-43f2-b0e9-2b11925e8b91}*SharedItemsImports = 4 VsPackage.Shared\VsPackage.Shared.projitems*{ac75f34e-190b-402a-8c46-91b0fa02450f}*SharedItemsImports = 13 VsPackage.Shared\VsPackage.Shared.projitems*{e6276cad-e4c3-4b25-876a-65b265ebff1a}*SharedItemsImports = 4 EndGlobalSection @@ -173,6 +181,10 @@ Global {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|Any CPU.Build.0 = Debug|Any CPU {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|Any CPU.Build.0 = Release|Any CPU + {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55294B5F-A075-43F2-B0E9-2B11925E8B91}.Release|Any CPU.Build.0 = Release|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|Any CPU.Build.0 = Debug|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -213,6 +225,10 @@ Global {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|Any CPU.Build.0 = Debug|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|Any CPU.ActiveCfg = Release|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|Any CPU.Build.0 = Release|Any CPU + {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9041BDED-FA1B-4C17-B7EA-7B750C470C23}.Release|Any CPU.Build.0 = Release|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|Any CPU.Build.0 = Debug|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -253,10 +269,18 @@ Global {BAB53542-85AA-4780-9F48-2984C036189A}.Release|Any CPU.ActiveCfg = Release|Win32 {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Debug|Any CPU.ActiveCfg = Debug|Win32 {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|Any CPU.ActiveCfg = Release|Win32 + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|Any CPU.Build.0 = Release|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|Any CPU.Build.0 = Debug|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|Any CPU.Build.0 = Release|Any CPU + {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3AEAD11-8EA3-4AB0-9DB0-643BFAAEB9B2}.Release|Any CPU.Build.0 = Release|Any CPU {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.ActiveCfg = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.Build.0 = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.ActiveCfg = Release|Win32 From 09beb83d082f3d31e047caf24c4835436334d9be Mon Sep 17 00:00:00 2001 From: Christian Soltenborn Date: Sat, 21 Jul 2018 11:19:26 +0200 Subject: [PATCH 81/92] fixed a couple of TODOs --- .../Core/GoogleTestDiscoverer.cs | 2 +- .../Core/Runners/SequentialTestRunner.cs | 25 +++---------------- .../Core/TestCases/TestCaseFactory.cs | 2 +- GoogleTestAdapter/DiaResolver/PeParser.cs | 8 +++--- .../TestAdapter.Tests/CommonFunctionsTests.cs | 6 +++++ .../TestAdapter/CommonFunctions.cs | 8 ++---- .../TestAdapter/TestAdapter.csproj | 3 +++ 7 files changed, 21 insertions(+), 33 deletions(-) diff --git a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs index 8ec2dd320..c995f154d 100644 --- a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs +++ b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs @@ -89,7 +89,7 @@ public static bool IsGoogleTestExecutable(string executable, string customRegex, if (PeParser.FindImport(executable, GoogleTestConstants.GoogleTestDllMarker, StringComparison.OrdinalIgnoreCase, logger) || Utils.BinaryFileContainsStrings(executable, Encoding.ASCII, GoogleTestConstants.GoogleTestExecutableMarkers)) { - logger.DebugInfo($"Google Test indicators found in executable {executable}"); // TODO localization + logger.DebugInfo($"Google Test indicators found in executable {executable}"); return true; } } diff --git a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs index b14373572..0dad03116 100644 --- a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs @@ -55,16 +55,6 @@ public void RunTests(IEnumerable testCasesToRun, bool isBeingDebugged, string workingDir = _settings.GetWorkingDirForExecution(executable, _testDir, _threadId); string userParameters = _settings.GetUserParametersForExecution(executable, _testDir, _threadId); - //RunTestsFromExecutable( - // executable, - // workingDir, - // groupedTestCases[executable], - // userParameters, - // isBeingDebugged, - // debuggedLauncher, - // executor); - - // TODO what is this? var testsWithNoTestPropertySettings = groupedTestCases[executable]; if (_settings.TestPropertySettingsContainer != null) @@ -80,7 +70,7 @@ public void RunTests(IEnumerable testCasesToRun, bool isBeingDebugged, executable, workingDir, settings.Environment, - Enumerable.Repeat(testCase, 1), + Enumerable.Repeat(testCase, 1), // TODO this appears to be highly inefficient. Why not collect them and run them alltogether? If environments might differ, we should still group them accordingly. userParameters, isBeingDebugged, debuggedLauncher, @@ -179,21 +169,14 @@ private IEnumerable RunTests(string executable, string workingDir, I public static void LogExecutionError(ILogger logger, string executable, string workingDir, string arguments, Exception exception, string threadName = "") { - logger.LogError($"{threadName}Failed to run test executable '{executable}': {exception.Message}"); + logger.LogError(String.Format(Resources.RunExecutableError, threadName, executable, exception.Message)); if (exception is AggregateException aggregateException) { exception = aggregateException.Flatten(); } logger.DebugError($@"{threadName}Exception:{Environment.NewLine}{exception}"); - logger.LogError( - $"{threadName}{Common.Resources.TroubleShootingLink}"); - logger.LogError( - $"{threadName}In particular: launch command prompt, change into directory '{workingDir}', and execute the following command to make sure your tests can be run in general.{Environment.NewLine}{executable} {arguments}"); - // TODO - //logger.LogError(String.Format(Resources.RunExecutableError, threadName, executable, exception.Message)); - //logger.DebugError(String.Format(Resources.StackTrace, threadName, Environment.NewLine, exception.StackTrace)); - //logger.LogError(String.Format(Common.Resources.TroubleShootingLink, threadName)); - //logger.LogError(String.Format(Resources.ExecuteSteps, threadName, workingDir, Environment.NewLine, executable, arguments)); + logger.LogError(String.Format(Common.Resources.TroubleShootingLink, threadName)); + logger.LogError(String.Format(Resources.ExecuteSteps, threadName, workingDir, Environment.NewLine, executable, arguments)); } private IEnumerable TryRunTests(string executable, string workingDir, IDictionary envVars, bool isBeingDebugged, diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs index 86f56d304..17b8401bf 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs @@ -267,7 +267,7 @@ private TestCase CreateTestCase(TestCaseDescriptor descriptor, TestCaseLocation descriptor.FullyQualifiedName, _executable, descriptor.DisplayName, "", 0); } - // TODO needed? + // TODO replacement for more complex regex in TestCaseResolver? internal static string StripTestSymbolNamespace(string symbol) { var suffixLength = GoogleTestConstants.TestBodySignature.Length; diff --git a/GoogleTestAdapter/DiaResolver/PeParser.cs b/GoogleTestAdapter/DiaResolver/PeParser.cs index 9c64b721d..8de9cf61e 100644 --- a/GoogleTestAdapter/DiaResolver/PeParser.cs +++ b/GoogleTestAdapter/DiaResolver/PeParser.cs @@ -255,8 +255,6 @@ private static void ProcessImports(string executable, ILogger logger, FuncSizeOfData > 0) { diff --git a/GoogleTestAdapter/TestAdapter.Tests/CommonFunctionsTests.cs b/GoogleTestAdapter/TestAdapter.Tests/CommonFunctionsTests.cs index 83cd6a1fd..f79698fbc 100644 --- a/GoogleTestAdapter/TestAdapter.Tests/CommonFunctionsTests.cs +++ b/GoogleTestAdapter/TestAdapter.Tests/CommonFunctionsTests.cs @@ -17,6 +17,12 @@ public class CommonFunctionsTests private readonly Mock _mockRunSettings = new Mock(MockBehavior.Strict); private readonly Mock _mockMessageLogger = new Mock(); + [TestInitialize] + public void SetUp() + { + _mockRunSettings.Setup(rs => rs.GetSettings(It.Is(s => s == GoogleTestConstants.TestPropertySettingsName))).Returns((ISettingsProvider)null); + } + [TestCleanup] public void TearDown() { diff --git a/GoogleTestAdapter/TestAdapter/CommonFunctions.cs b/GoogleTestAdapter/TestAdapter/CommonFunctions.cs index f9b6daa88..d3d5a1c45 100644 --- a/GoogleTestAdapter/TestAdapter/CommonFunctions.cs +++ b/GoogleTestAdapter/TestAdapter/CommonFunctions.cs @@ -61,12 +61,8 @@ public static void CreateEnvironment(IRunSettings runSettings, IMessageLogger me projectSettings.GetUnsetValuesFrom(ourRunSettings.SolutionSettings); } - var settingsWrapper = new SettingsWrapper(ourRunSettings, solutionDir); - - // TODO what is this? - //var testSettings = runSettings.GetSettings(GoogleTestConstants.TestPropertySettingsName) as TestPropertySettingsProvider; - - //var settingsWrapper = new SettingsWrapper(ourRunSettings, testSettings?.TestPropertySettings); + var testSettings = runSettings.GetSettings(GoogleTestConstants.TestPropertySettingsName) as TestPropertySettingsProvider; + var settingsWrapper = new SettingsWrapper(ourRunSettings, testSettings?.TestPropertySettings, solutionDir); var loggerAdapter = new VsTestFrameworkLogger(messageLogger, () => settingsWrapper.DebugMode, () => settingsWrapper.TimestampOutput); var regexParser = new RegexTraitParser(loggerAdapter); diff --git a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj index 7d94fc200..dd78aff21 100644 --- a/GoogleTestAdapter/TestAdapter/TestAdapter.csproj +++ b/GoogleTestAdapter/TestAdapter/TestAdapter.csproj @@ -204,6 +204,9 @@ + + + From 59b7db52f02a28249e42e89d1f288baa0fcfe6de Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Mon, 29 Oct 2018 15:00:39 -0700 Subject: [PATCH 82/92] Update GoogleTest.vstemplate (#144) --- .../GoogleTestProjectTemplate/GoogleTest.vstemplate | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate index 93e3df519..4f1188b2a 100644 --- a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate @@ -1,7 +1,7 @@ Google Test - A Google Test based unit testing project. + Write C++ unit tests using Google Test. Includes a copy of the Google Test library for use. VC Microsoft.VisualC.Project.GoogleTest 1000 @@ -29,4 +29,4 @@ - \ No newline at end of file + From 16c09bc6e6efacec9f6f4523ac7a40c6bc0a3d08 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Tue, 30 Oct 2018 15:53:42 -0700 Subject: [PATCH 83/92] update reference (#145) --- GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj index e77c63205..ed3a341f3 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj +++ b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj @@ -202,7 +202,7 @@ True False - + False True From 4d19c29fc3bef5b94885517b6977cfd168e0884d Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Fri, 11 Jan 2019 14:10:29 -0800 Subject: [PATCH 84/92] Update Google Test reference to 1.8.1 + fixes to support VS2019 (#148) * update googletest release to 1.8.1 * update vsix to install on dev16 * update nuget package references to 1.8.1 and add 2019 as supported version * update nuget references in project to latest version * remove flag that is being removed * fix debug build and update default toolset for project template * allow v142 toolset --- .../GoogleTest.vcxproj | 4 +- .../GoogleTest.vstemplate | 2 +- .../Packaging.TAfGT/Packaging.TAfGT.csproj | 6 +-- .../source.extension.vsixmanifest | 20 ++++---- .../TestAdapter/Framework/VsVersion.cs | 4 +- .../VsPackage.TAfGT/VsPackage.TAfGT.csproj | 2 +- GoogleTestNuGet/Build.ps1 | 51 +++++++++++-------- GoogleTestNuGet/googletest.nuspec.tt | 2 +- GoogleTestNuGet/googletest.targets.tt | 18 +++---- ThirdParty/googletest | 2 +- 10 files changed, 61 insertions(+), 50 deletions(-) diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj index 2b6f47d1d..ae8fa98f2 100644 --- a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj @@ -23,7 +23,7 @@ Win32Proj $targetplatformversion$ Application - v141 + v142 Unicode @@ -53,7 +53,6 @@ pch.h Disabled WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true EnableFastChecks $rtdebug$ Level3 @@ -69,7 +68,6 @@ pch.h Disabled X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true EnableFastChecks $rtdebug$ Level3 diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate index 4f1188b2a..470b68558 100644 --- a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate @@ -26,7 +26,7 @@ - + diff --git a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj index 13feddd62..1f21716fe 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj +++ b/GoogleTestAdapter/Packaging.TAfGT/Packaging.TAfGT.csproj @@ -49,15 +49,15 @@ - + CopyIfNewer true - + CopyIfNewer true - + CopyIfNewer true diff --git a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest index bcd9b6f78..82b8c6516 100644 --- a/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest +++ b/GoogleTestAdapter/Packaging.TAfGT/source.extension.vsixmanifest @@ -13,10 +13,10 @@ Unit Test, C++, Google Test, GoogleTest, GTest, Test Explorer, Testing - - - - + + + + @@ -28,16 +28,16 @@ - - - + + + - - - + + + NuGet Package Manager diff --git a/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs b/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs index f0085cea1..fee9f1515 100644 --- a/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs +++ b/GoogleTestAdapter/TestAdapter/Framework/VsVersion.cs @@ -16,7 +16,7 @@ namespace GoogleTestAdapter.TestAdapter.Framework [SuppressMessage("ReSharper", "InconsistentNaming")] public enum VsVersion { - Unknown = -1, VS2012 = 0, VS2012_1 = 11, VS2013 = 12, VS2015 = 14, VS2017 = 15 + Unknown = -1, VS2012 = 0, VS2012_1 = 11, VS2013 = 12, VS2015 = 14, VS2017 = 15, VS2019 = 16 } public static class VsVersionExtensions @@ -36,6 +36,8 @@ public static int Year(this VsVersion version) return 2015; case VsVersion.VS2017: return 2017; + case VsVersion.VS2019: + return 2019; default: throw new InvalidOperationException(); } diff --git a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj index ed3a341f3..67f7c2a00 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj +++ b/GoogleTestAdapter/VsPackage.TAfGT/VsPackage.TAfGT.csproj @@ -44,6 +44,7 @@ $(FlavoredTargetFrameworkVersion) true false + False true @@ -70,7 +71,6 @@ prompt 4 true - False diff --git a/GoogleTestNuGet/Build.ps1 b/GoogleTestNuGet/Build.ps1 index f8a363a0c..e86c8570a 100644 --- a/GoogleTestNuGet/Build.ps1 +++ b/GoogleTestNuGet/Build.ps1 @@ -126,6 +126,7 @@ function Add-Signing { ) $xml = [xml](Get-Content "$Directory\$ProjectName.vcxproj") + $ProjectNameDebug = -join("$ProjectName", "d") $MicroBuildProps = $xml.CreateElement("Import", "http://schemas.microsoft.com/developer/msbuild/2003") $MicroBuildProps.SetAttribute("Project", "$PSScriptRoot\..\NuGetPackages\MicroBuild.Core.0.2.0\build\MicroBuild.Core.props") @@ -141,16 +142,26 @@ function Add-Signing { $RealSignGroup.AppendChild($DelaySign) | Out-Null $FileSignGroup = $xml.CreateElement("ItemGroup", "http://schemas.microsoft.com/developer/msbuild/2003") - $FilesToSign = $xml.CreateElement("FilesToSign", "http://schemas.microsoft.com/developer/msbuild/2003") - $FilesToSign.SetAttribute("Include", "`$(OutDir)\$ProjectName.dll") - $FilesToSign.SetAttribute("Condition", "'`$(RealSign)' == 'True' and '`$(TargetExt)' == '.dll'") - $Authenticode = $xml.CreateElement("Authenticode", "http://schemas.microsoft.com/developer/msbuild/2003") - $Authenticode.set_InnerXML("Microsoft") - $StrongName = $xml.CreateElement("StrongName", "http://schemas.microsoft.com/developer/msbuild/2003") - $StrongName.set_InnerXML("StrongName") - $FilesToSign.AppendChild($Authenticode) | Out-Null - $FilesToSign.AppendChild($StrongName) | Out-Null - $FileSignGroup.AppendChild($FilesToSign) | Out-Null + $FilesToSignRel = $xml.CreateElement("FilesToSign", "http://schemas.microsoft.com/developer/msbuild/2003") + $FilesToSignRel.SetAttribute("Include", "`$(OutDir)\$ProjectName.dll") + $FilesToSignRel.SetAttribute("Condition", "'`$(RealSign)' == 'True' and '`$(TargetExt)' == '.dll' and '`$(Configuration)' == 'RelWithDebInfo'") + $AuthenticodeRel = $xml.CreateElement("Authenticode", "http://schemas.microsoft.com/developer/msbuild/2003") + $AuthenticodeRel.set_InnerXML("Microsoft") + $StrongNameRel = $xml.CreateElement("StrongName", "http://schemas.microsoft.com/developer/msbuild/2003") + $StrongNameRel.set_InnerXML("StrongName") + $FilesToSignRel.AppendChild($AuthenticodeRel) | Out-Null + $FilesToSignRel.AppendChild($StrongNameRel) | Out-Null + $FileSignGroup.AppendChild($FilesToSignRel) | Out-Null + $FilesToSignDebug = $xml.CreateElement("FilesToSign", "http://schemas.microsoft.com/developer/msbuild/2003") + $FilesToSignDebug.SetAttribute("Include", "`$(OutDir)\$ProjectNameDebug.dll") + $FilesToSignDebug.SetAttribute("Condition", "'`$(RealSign)' == 'True' and '`$(TargetExt)' == '.dll' and '`$(Configuration)' == 'Debug'") + $AuthenticodeDebug = $xml.CreateElement("Authenticode", "http://schemas.microsoft.com/developer/msbuild/2003") + $AuthenticodeDebug.set_InnerXML("Microsoft") + $StrongNameDebug = $xml.CreateElement("StrongName", "http://schemas.microsoft.com/developer/msbuild/2003") + $StrongNameDebug.set_InnerXML("StrongName") + $FilesToSignDebug.AppendChild($AuthenticodeDebug) | Out-Null + $FilesToSignDebug.AppendChild($StrongNameDebug) | Out-Null + $FileSignGroup.AppendChild($FilesToSignDebug) | Out-Null $MicroBuildTargets = $xml.CreateElement("Import", "http://schemas.microsoft.com/developer/msbuild/2003") $MicroBuildTargets.SetAttribute("Project", "$PSScriptRoot\..\NuGetPackages\MicroBuild.Core.0.2.0\build\MicroBuild.Core.targets") @@ -252,12 +263,12 @@ function Build-NuGet { $DestinationPath = $_[1] if ($DynamicLibraryLinkage) { - Copy-CreateItem -Path "$BuildPath\Debug\gtest.dll" -Destination "$DestinationPath\Debug\gtest.dll" - Copy-CreateItem -Path "$BuildPath\Debug\gtest.lib" -Destination "$DestinationPath\Debug\gtest.lib" - Copy-CreateItem -Path "$BuildPath\Debug\gtest.pdb" -Destination "$DestinationPath\Debug\gtest.pdb" - Copy-CreateItem -Path "$BuildPath\Debug\gtest_main.dll" -Destination "$DestinationPath\Debug\gtest_main.dll" - Copy-CreateItem -Path "$BuildPath\Debug\gtest_main.lib" -Destination "$DestinationPath\Debug\gtest_main.lib" - Copy-CreateItem -Path "$BuildPath\Debug\gtest_main.pdb" -Destination "$DestinationPath\Debug\gtest_main.pdb" + Copy-CreateItem -Path "$BuildPath\Debug\gtestd.dll" -Destination "$DestinationPath\Debug\gtestd.dll" + Copy-CreateItem -Path "$BuildPath\Debug\gtestd.lib" -Destination "$DestinationPath\Debug\gtestd.lib" + Copy-CreateItem -Path "$BuildPath\Debug\gtestd.pdb" -Destination "$DestinationPath\Debug\gtestd.pdb" + Copy-CreateItem -Path "$BuildPath\Debug\gtest_maind.dll" -Destination "$DestinationPath\Debug\gtest_maind.dll" + Copy-CreateItem -Path "$BuildPath\Debug\gtest_maind.lib" -Destination "$DestinationPath\Debug\gtest_maind.lib" + Copy-CreateItem -Path "$BuildPath\Debug\gtest_maind.pdb" -Destination "$DestinationPath\Debug\gtest_maind.pdb" Copy-CreateItem -Path "$BuildPath\RelWithDebInfo\gtest.dll" -Destination "$DestinationPath\Release\gtest.dll" Copy-CreateItem -Path "$BuildPath\RelWithDebInfo\gtest.lib" -Destination "$DestinationPath\Release\gtest.lib" @@ -266,10 +277,10 @@ function Build-NuGet { Copy-CreateItem -Path "$BuildPath\RelWithDebInfo\gtest_main.lib" -Destination "$DestinationPath\Release\gtest_main.lib" Copy-CreateItem -Path "$BuildPath\RelWithDebInfo\gtest_main.pdb" -Destination "$DestinationPath\Release\gtest_main.pdb" } else { - Copy-CreateItem -Path "$BuildPath\Debug\gtest.lib" -Destination "$DestinationPath\Debug\gtest.lib" - Copy-CreateItem -Path "$BuildPath\Debug\gtest.pdb" -Destination "$DestinationPath\Debug\gtest.pdb" - Copy-CreateItem -Path "$BuildPath\Debug\gtest_main.lib" -Destination "$DestinationPath\Debug\gtest_main.lib" - Copy-CreateItem -Path "$BuildPath\Debug\gtest_main.pdb" -Destination "$DestinationPath\Debug\gtest_main.pdb" + Copy-CreateItem -Path "$BuildPath\Debug\gtestd.lib" -Destination "$DestinationPath\Debug\gtestd.lib" + Copy-CreateItem -Path "$BuildPath\gtest.dir\Debug\gtest.pdb" -Destination "$DestinationPath\Debug\gtest.pdb" + Copy-CreateItem -Path "$BuildPath\Debug\gtest_maind.lib" -Destination "$DestinationPath\Debug\gtest_maind.lib" + Copy-CreateItem -Path "$BuildPath\gtest_main.dir\Debug\gtest_main.pdb" -Destination "$DestinationPath\Debug\gtest_main.pdb" Copy-CreateItem -Path "$BuildPath\RelWithDebInfo\gtest.lib" -Destination "$DestinationPath\Release\gtest.lib" Copy-CreateItem -Path "$BuildPath\gtest.dir\RelWithDebInfo\gtest.pdb" -Destination "$DestinationPath\Release\gtest.pdb" diff --git a/GoogleTestNuGet/googletest.nuspec.tt b/GoogleTestNuGet/googletest.nuspec.tt index d3a8a4a68..097e38c68 100644 --- a/GoogleTestNuGet/googletest.nuspec.tt +++ b/GoogleTestNuGet/googletest.nuspec.tt @@ -5,7 +5,7 @@ <#= PackageName #> - 1.8.0 + 1.8.1 Microsoft microsoft,visualcpp https://github.com/Microsoft/TestAdapterForGoogleTest diff --git a/GoogleTestNuGet/googletest.targets.tt b/GoogleTestNuGet/googletest.targets.tt index 9c9e67062..232474fed 100644 --- a/GoogleTestNuGet/googletest.targets.tt +++ b/GoogleTestNuGet/googletest.targets.tt @@ -5,7 +5,7 @@ <#@ parameter type="System.String" name="PathToBinaries" #> <#@ parameter type="System.String" name="ConfigurationType" #> - + >true> @@ -16,12 +16,12 @@ - $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x64\Debug\gtest.lib;%(AdditionalDependencies) - $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x64\Debug\gtest_main.lib;%(AdditionalDependencies) + $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x64\Debug\gtestd.lib;%(AdditionalDependencies) + $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x64\Debug\gtest_maind.lib;%(AdditionalDependencies) $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x64\Release\gtest.lib;%(AdditionalDependencies) $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x64\Release\gtest_main.lib;%(AdditionalDependencies) - $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x86\Debug\gtest.lib;%(AdditionalDependencies) - $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x86\Debug\gtest_main.lib;%(AdditionalDependencies) + $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x86\Debug\gtestd.lib;%(AdditionalDependencies) + $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x86\Debug\gtest_maind.lib;%(AdditionalDependencies) $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x86\Release\gtest.lib;%(AdditionalDependencies) $(MSBuildThisFileDirectory)..\..\\<#= PathToBinaries #>\x86\Release\gtest_main.lib;%(AdditionalDependencies) @@ -31,8 +31,8 @@ <# if (ConfigurationType == "dyn") { #> - - + + <# } #> @@ -47,8 +47,8 @@ <# if (ConfigurationType == "dyn") { #> - - + + <# } #> diff --git a/ThirdParty/googletest b/ThirdParty/googletest index ec44c6c16..2fe3bd994 160000 --- a/ThirdParty/googletest +++ b/ThirdParty/googletest @@ -1 +1 @@ -Subproject commit ec44c6c1675c25b9827aacd08c02433cccde7780 +Subproject commit 2fe3bd994b3189899d93f1d5a881e725e046fdc2 From 74444d0fd580b0a20f4c01da24a4b641bf4af5c8 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Fri, 8 Mar 2019 17:05:37 -0800 Subject: [PATCH 85/92] Fix GTA build (#153) * added support for asynchronous package loading (#243) * clean up merge --- .../source.extension.vsixmanifest | 62 +++--- .../AsyncPackageRegistrationAttribute.cs | 192 ++++++++++++++++++ .../AsyncPackage/ExtensionMethods.cs | 48 +++++ .../AsyncPackage/ProvideAutoLoadAttribute.cs | 118 +++++++++++ .../GoogleTestExtensionOptionsPage.cs | 49 ++++- .../VsPackage.GTA/VsPackage.GTA.csproj | 104 ++++++---- .../VsPackage.GTA/packages.config | 19 +- .../GoogleTestExtensionOptionsPage.cs | 46 ++--- .../GoogleTestExtensionOptionsPage.cs | 19 +- 9 files changed, 549 insertions(+), 108 deletions(-) create mode 100644 GoogleTestAdapter/VsPackage.GTA/AsyncPackage/AsyncPackageRegistrationAttribute.cs create mode 100644 GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ExtensionMethods.cs create mode 100644 GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ProvideAutoLoadAttribute.cs diff --git a/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest b/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest index 16efffb82..e07d7e9df 100644 --- a/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest +++ b/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest @@ -1,34 +1,34 @@  - - - Google Test Adapter - Adds support for the C++ unit testing framework Google Tests. - https://github.com/csoltenborn/GoogleTestAdapter - LICENSE.txt - Resources\Icons\Icon.ico - Resources\Preview.png - Unit Test, C++, Google Test, GoogleTest, GTest, Test Explorer, Testing - - - - - - - - - - - - - - - - - - - - - - + + + Google Test Adapter + Adds support for the C++ unit testing framework Google Tests. + https://github.com/csoltenborn/GoogleTestAdapter + LICENSE.txt + Resources\Icons\Icon.ico + Resources\Preview.png + Unit Test, C++, Google Test, GoogleTest, GTest, Test Explorer, Testing + + + + + + + + + + + + + + + + + + + + + + diff --git a/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/AsyncPackageRegistrationAttribute.cs b/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/AsyncPackageRegistrationAttribute.cs new file mode 100644 index 000000000..f5b0b9a80 --- /dev/null +++ b/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/AsyncPackageRegistrationAttribute.cs @@ -0,0 +1,192 @@ +//------------------------------------------------------------------------------ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.VisualStudio.AsyncPackageHelpers { + + using System; + using System.Globalization; + using System.IO; + using System.ComponentModel; + using System.ComponentModel.Design; + using Microsoft.VisualStudio.Shell; + using Microsoft.VisualStudio.Shell.Interop; + + /// + /// This attribute is defined on a package to get it to be registered. It + /// is internal because packages are meant to be registered, so it is + /// implicit just by having a package in the assembly. + /// + [AttributeUsage(AttributeTargets.Class, Inherited=true, AllowMultiple=false)] + public sealed class AsyncPackageRegistrationAttribute : RegistrationAttribute + { + private RegistrationMethod registrationMethod = RegistrationMethod.Default; + private bool useManagedResources = false; + private bool allowsBackgroundLoad = false; + private string satellitePath = null; + + /// + /// Select between specifying the Codebase entry or the Assembly entry in the registry. + /// This can be overriden during registration + /// + public RegistrationMethod RegisterUsing + { + get + { + return registrationMethod; + } + set + { + registrationMethod = value; + } + } + + /// + /// For managed resources, there should not be a native ui dll registered. + /// + public bool UseManagedResourcesOnly + { + get { return useManagedResources; } + set { useManagedResources = value; } + } + + /// + /// Package is safe to load on a background thread. + /// + public bool AllowsBackgroundLoading + { + get { return allowsBackgroundLoad; } + set { allowsBackgroundLoad = value; } + } + + /// + /// To specify a resource dll located in a different location then the default, + /// set this property. This can be useful if your package is installed in the GAC. + /// If this is not set, the directory where the package is located will be use. + /// + /// Note that the dll should be located at the following path: + /// SatellitePath\lcid\PackageDllNameUI.dll + /// + public string SatellitePath + { + get { return satellitePath; } + set { satellitePath = value; } + } + + private string RegKeyName(RegistrationContext context) + { + return String.Format(CultureInfo.InvariantCulture, "Packages\\{0}", context.ComponentType.GUID.ToString("B")); + } + + /// + /// Called to register this attribute with the given context. The context + /// contains the location where the registration information should be placed. + /// it also contains such as the type being registered, and path information. + /// + /// This method is called both for registration and unregistration. The difference is + /// that unregistering just uses a hive that reverses the changes applied to it. + /// + /// + /// Contains the location where the registration information should be placed. + /// It also contains other information such as the type being registered + /// and path of the assembly. + /// + public override void Register(RegistrationContext context) { + Type t = context.ComponentType; + + Key packageKey = null; + try + { + packageKey = context.CreateKey(RegKeyName(context)); + + //use a friendly description if it exists. + DescriptionAttribute attr = TypeDescriptor.GetAttributes(t)[typeof(DescriptionAttribute)] as DescriptionAttribute; + if (attr != null && !String.IsNullOrEmpty(attr.Description)) { + packageKey.SetValue(string.Empty, attr.Description); + } + else { + packageKey.SetValue(string.Empty, t.Name); + } + + packageKey.SetValue("InprocServer32", context.InprocServerPath); + packageKey.SetValue("Class", t.FullName); + + // If specified on the command line, let the command line option override + if (context.RegistrationMethod != RegistrationMethod.Default) + { + registrationMethod = context.RegistrationMethod; + } + + // Select registration method + switch (registrationMethod) + { + case RegistrationMethod.Assembly: + case RegistrationMethod.Default: + packageKey.SetValue("Assembly", t.Assembly.FullName); + break; + + case RegistrationMethod.CodeBase: + packageKey.SetValue("CodeBase", context.CodeBase); + break; + } + + Key childKey = null; + if (!useManagedResources) + { + try + { + childKey = packageKey.CreateSubkey("SatelliteDll"); + + // Register the satellite dll + string satelliteDllPath; + if (SatellitePath != null) + { + // Use provided path + satelliteDllPath = context.EscapePath(SatellitePath); + } + else + { + // Default to package path + satelliteDllPath = context.ComponentPath; + } + childKey.SetValue("Path", satelliteDllPath); + childKey.SetValue("DllName", String.Format(CultureInfo.InvariantCulture, "{0}UI.dll", Path.GetFileNameWithoutExtension(t.Assembly.ManifestModule.Name))); + } + finally + { + if (childKey != null) + childKey.Close(); + } + } + + if (allowsBackgroundLoad) + { + packageKey.SetValue("AllowsBackgroundLoad", true); + } + + if (typeof(IVsPackageDynamicToolOwner).IsAssignableFrom(context.ComponentType) || + typeof(IVsPackageDynamicToolOwnerEx).IsAssignableFrom(context.ComponentType)) + { + packageKey.SetValue("SupportsDynamicToolOwner", Microsoft.VisualStudio.PlatformUI.Boxes.BooleanTrue); + } + } + finally + { + if (packageKey != null) + packageKey.Close(); + } + } + + /// + /// Unregister this package. + /// + /// + public override void Unregister(RegistrationContext context) + { + context.RemoveKey(RegKeyName(context)); + } + + } +} diff --git a/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ExtensionMethods.cs b/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ExtensionMethods.cs new file mode 100644 index 000000000..1fc1376f8 --- /dev/null +++ b/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ExtensionMethods.cs @@ -0,0 +1,48 @@ +using System; +using System.Runtime.InteropServices; +using Microsoft.VisualStudio.Shell.Interop; +using System.Threading.Tasks; +using Microsoft.VisualStudio.Shell; + +namespace Microsoft.VisualStudio.AsyncPackageHelpers +{ + public static class ExtensionMethods + { + /// + /// Helper method to use async/await with IAsyncServiceProvider implementation + /// + /// IAsyncServciceProvider instance + /// Type of the Visual Studio service requested + /// Service object as type of T + public static async Task GetServiceAsync(this IAsyncServiceProvider asyncServiceProvider, Type serviceType) where T : class + { + T returnValue = null; + + await ThreadHelper.JoinableTaskFactory.RunAsync(async () => + { + object serviceInstance = null; + Guid serviceTypeGuid = serviceType.GUID; + serviceInstance = await asyncServiceProvider.QueryServiceAsync(ref serviceTypeGuid); + + // We have to make sure we are on main UI thread before trying to cast as underlying implementation + // can be an STA COM object and doing a cast would require calling QueryInterface/AddRef marshaling + // to main thread via COM. + await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); + returnValue = serviceInstance as T; + }); + + return returnValue; + } + + /// + /// Gets if async package is supported in the current instance of Visual Studio + /// + /// an IServiceProvider instance, usually a Package instance + /// true if async packages are supported + public static bool IsAsyncPackageSupported(this IServiceProvider serviceProvider) + { + IAsyncServiceProvider asyncServiceProvider = serviceProvider.GetService(typeof(SAsyncServiceProvider)) as IAsyncServiceProvider; + return asyncServiceProvider != null; + } + } +} \ No newline at end of file diff --git a/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ProvideAutoLoadAttribute.cs b/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ProvideAutoLoadAttribute.cs new file mode 100644 index 000000000..cf0f3103a --- /dev/null +++ b/GoogleTestAdapter/VsPackage.GTA/AsyncPackage/ProvideAutoLoadAttribute.cs @@ -0,0 +1,118 @@ +//------------------------------------------------------------------------------ +// +// Copyright (c) Microsoft Corporation, All rights reserved. +// This code sample is provided "AS IS" without warranty of any kind, +// it is not recommended for use in a production environment. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.VisualStudio.AsyncPackageHelpers +{ + + using System; + using System.Globalization; + using Microsoft.VisualStudio.Shell; + + [Flags] + public enum PackageAutoLoadFlags + { + /// + /// Indicates no special auto-load behavior. This is the default flag value if not specified. + /// + None = 0x0, + + /// + /// When set package will not auto load in newer Visual Studio versions with rule based UI contexts + /// + SkipWhenUIContextRulesActive = 0x1, + + /// + /// When set, if the associated package is marked as allowing background loads (via the ), + /// then the package will be loaded asynchronously, in the background, when the associated UI context is triggered. + /// + BackgroundLoad = 0x2 + } + + /// + /// This attribute registers the package as an extender. The GUID passed in determines + /// what is being extended. The attributes on a package do not control the behavior of + /// the package, but they can be used by registration tools to register the proper + /// information with Visual Studio. + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] + public sealed class ProvideAutoLoadAttribute : RegistrationAttribute + { + + private Guid loadGuid = Guid.Empty; + + /// + /// Specify that the package should get loaded when this context is active. + /// + /// Context which should trigger the loading of your package. + public ProvideAutoLoadAttribute(string cmdUiContextGuid) : this(cmdUiContextGuid, PackageAutoLoadFlags.None) + { + } + + /// + /// Specify that the package should get loaded when this context is active. + /// + /// Context which should trigger the loading of your package. + public ProvideAutoLoadAttribute(string cmdUiContextGuid, PackageAutoLoadFlags flags = PackageAutoLoadFlags.None) + { + loadGuid = new Guid(cmdUiContextGuid); + Flags = flags; + } + + /// + /// Context Guid which triggers the loading of the package. + /// + public Guid LoadGuid + { + get + { + return loadGuid; + } + } + + /// + /// Specifies the options for package auto load entry + /// + public PackageAutoLoadFlags Flags + { + get; + private set; + } + + /// + /// The reg key name of this AutoLoad. + /// + private string RegKeyName + { + get + { + return string.Format(CultureInfo.InvariantCulture, "AutoLoadPackages\\{0}", loadGuid.ToString("B")); + } + } + + /// + /// Called to register this attribute with the given context. The context + /// contains the location where the registration information should be placed. + /// it also contains such as the type being registered, and path information. + /// + public override void Register(RegistrationContext context) + { + using (Key childKey = context.CreateKey(RegKeyName)) + { + childKey.SetValue(context.ComponentType.GUID.ToString("B"), (int)Flags); + } + } + + /// + /// Unregister this AutoLoad specification. + /// + public override void Unregister(RegistrationContext context) + { + context.RemoveValue(RegKeyName, context.ComponentType.GUID.ToString("B")); + } + } +} diff --git a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs index e49755ce4..faeff3bbc 100644 --- a/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.GTA/GoogleTestExtensionOptionsPage.cs @@ -1,6 +1,10 @@ -// This file has been modified by Microsoft on 9/2017. +// This file has been modified by Microsoft on 3/2019. +using GoogleTestAdapter.TestAdapter.Settings; using GoogleTestAdapter.VsPackage.ReleaseNotes; +using Microsoft.VisualStudio; +using Microsoft.VisualStudio.AsyncPackageHelpers; +using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using System; @@ -9,15 +13,52 @@ namespace GoogleTestAdapter.VsPackage { - [ProvideAutoLoad(UIContextGuids.SolutionExists)] - public partial class GoogleTestExtensionOptionsPage + [AsyncPackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] + [Microsoft.VisualStudio.AsyncPackageHelpers.ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string, PackageAutoLoadFlags.BackgroundLoad)] + [Microsoft.VisualStudio.Shell.ProvideAutoLoad(UIContextGuids.SolutionExists)] + public partial class GoogleTestExtensionOptionsPage : Package, IAsyncLoadablePackageInitialize { private const string PackageGuidString = "e7c90fcb-0943-4908-9ae8-3b6a9d22ec9e"; private const string OptionsCategoryName = "Google Test Adapter"; + private bool _isAsyncLoadSupported; + + protected override void Initialize() + { + base.Initialize(); + + _isAsyncLoadSupported = this.IsAsyncPackageSupported(); + if (!_isAsyncLoadSupported) + { + var componentModel = (IComponentModel)GetGlobalService(typeof(SComponentModel)); + _globalRunSettings = componentModel.GetService(); + DoInitialize(); + } + } + + IVsTask IAsyncLoadablePackageInitialize.Initialize(IAsyncServiceProvider serviceProvider, IProfferAsyncService profferService, + IAsyncProgressCallback progressCallback) + { + if (!_isAsyncLoadSupported) + { + throw new InvalidOperationException("Async Initialize method should not be called when async load is not supported."); + } + + return ThreadHelper.JoinableTaskFactory.RunAsync(async () => + { + var componentModel = await serviceProvider.GetServiceAsync(typeof(SComponentModel)); + _globalRunSettings = componentModel.GetService(); + + await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); + + DoInitialize(); + + return null; + }).AsVsTask(); + } private void DisplayReleaseNotesIfNecessary() { - var thread = new Thread(DisplayReleaseNotesIfNecessaryProc); + var thread = new System.Threading.Thread(DisplayReleaseNotesIfNecessaryProc); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } diff --git a/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj b/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj index 649bdab33..f9b9c0288 100644 --- a/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj +++ b/GoogleTestAdapter/VsPackage.GTA/VsPackage.GTA.csproj @@ -44,6 +44,7 @@ $(FlavoredTargetFrameworkVersion) true false + False true @@ -69,6 +70,9 @@ False + + + Component @@ -136,82 +140,92 @@ + + $(NuGetPackages)CommonMark.NET.0.15.1\lib\net45\CommonMark.dll + + ..\..\NuGetPackages\VSSDK.DTE.7.0.4\lib\net20\envdte.dll False - $(NuGetPackages)VSSDK.DTE.7.0.4\lib\net20\envdte.dll - True + False + ..\..\NuGetPackages\VSSDK.DTE.10.10.0.4\lib\net20\envdte100.dll False - $(NuGetPackages)VSSDK.DTE.10.10.0.4\lib\net20\envdte100.dll - True + False + ..\..\NuGetPackages\VSSDK.DTE.8.8.0.4\lib\net20\envdte80.dll False - $(NuGetPackages)VSSDK.DTE.8.8.0.4\lib\net20\envdte80.dll - True + False + ..\..\NuGetPackages\VSSDK.DTE.9.9.0.4\lib\net20\envdte90.dll False - $(NuGetPackages)VSSDK.DTE.9.9.0.4\lib\net20\envdte90.dll - True + False + ..\..\NuGetPackages\VSSDK.DTE.9.9.0.4\lib\net20\envdte90a.dll False - $(NuGetPackages)VSSDK.DTE.9.9.0.4\lib\net20\envdte90a.dll - True - - - $(NuGetPackages)CommonMark.NET.0.15.1\lib\net45\CommonMark.dll + False - - $(NuGetPackages)VSSDK.ComponentModelHost.11.0.4\lib\net45\Microsoft.VisualStudio.ComponentModelHost.dll + + ..\..\NuGetPackages\VSSDK.ComponentModelHost.12.0.4\lib\net45\Microsoft.VisualStudio.ComponentModelHost.dll False - $(NuGetPackages)VSSDK.GraphModel.11.0.4\lib\net45\Microsoft.VisualStudio.GraphModel.dll + ..\..\NuGetPackages\VSSDK.GraphModel.11.0.4\lib\net45\Microsoft.VisualStudio.GraphModel.dll False - $(NuGetPackages)VSSDK.OLE.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.OLE.Interop.dll - True + ..\..\NuGetPackages\VSSDK.OLE.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.OLE.Interop.dll False - - $(NuGetPackages)VSSDK.Shell.11.11.0.0\lib\net45\Microsoft.VisualStudio.Shell.11.0.dll - True + + ..\..\NuGetPackages\VSSDK.Shell.12.12.0.4\lib\net45\Microsoft.VisualStudio.Shell.12.0.dll + False - $(NuGetPackages)VSSDK.Shell.Immutable.10.10.0.4\lib\net40\Microsoft.VisualStudio.Shell.Immutable.10.0.dll - True + ..\..\NuGetPackages\VSSDK.Shell.Immutable.10.10.0.4\lib\net40\Microsoft.VisualStudio.Shell.Immutable.10.0.dll False - $(NuGetPackages)VSSDK.Shell.Immutable.11.11.0.4\lib\net45\Microsoft.VisualStudio.Shell.Immutable.11.0.dll - True + ..\..\NuGetPackages\VSSDK.Shell.Immutable.11.11.0.4\lib\net45\Microsoft.VisualStudio.Shell.Immutable.11.0.dll + False + + + ..\..\NuGetPackages\VSSDK.Shell.Immutable.12.12.0.4\lib\net45\Microsoft.VisualStudio.Shell.Immutable.12.0.dll False - $(NuGetPackages)VSSDK.Shell.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.dll - True + ..\..\NuGetPackages\VSSDK.Shell.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.dll False - $(NuGetPackages)VSSDK.Shell.Interop.10.10.0.0\lib\net20\Microsoft.VisualStudio.Shell.Interop.10.0.dll + ..\..\NuGetPackages\VSSDK.Shell.Interop.10.10.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.10.0.dll + False False - $(NuGetPackages)VSSDK.Shell.Interop.11.11.0.0\lib\net20\Microsoft.VisualStudio.Shell.Interop.11.0.dll + ..\..\NuGetPackages\VSSDK.Shell.Interop.11.11.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.11.0.dll + False False + + ..\..\NuGetPackages\VSSDK.Shell.Interop.12.12.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.12.0.dll + False + False + + + True + - $(NuGetPackages)VSSDK.Shell.Interop.10.10.0.0\lib\net20\Microsoft.VisualStudio.Shell.Interop.8.0.dll + ..\..\NuGetPackages\VSSDK.Shell.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.8.0.dll False - $(NuGetPackages)VSSDK.Shell.Interop.10.10.0.0\lib\net20\Microsoft.VisualStudio.Shell.Interop.9.0.dll + ..\..\NuGetPackages\VSSDK.Shell.Interop.9.9.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.9.0.dll False @@ -223,29 +237,33 @@ True - $(NuGetPackages)VSSDK.TextManager.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.dll - True + ..\..\NuGetPackages\VSSDK.TextManager.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.dll False + ..\..\NuGetPackages\VSSDK.TextManager.Interop.10.10.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.10.0.dll False - $(NuGetPackages)VSSDK.TextManager.Interop.10.10.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.10.0.dll - True + False - $(NuGetPackages)VSSDK.TextManager.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.8.0.dll - True + ..\..\NuGetPackages\VSSDK.TextManager.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.8.0.dll + False False - $(NuGetPackages)VSSDK.TextManager.Interop.9.9.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.9.0.dll - True + ..\..\NuGetPackages\VSSDK.TextManager.Interop.9.9.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.9.0.dll + False + + + ..\..\NuGetPackages\VSSDK.Threading.12.0.4\lib\net45\Microsoft.VisualStudio.Threading.dll False + + + ..\..\NuGetPackages\VSSDK.DTE.7.0.4\lib\net20\stdole.dll False - $(NuGetPackages)VSSDK.DTE.7.0.4\lib\net20\stdole.dll - True + False @@ -253,8 +271,12 @@ + + + + diff --git a/GoogleTestAdapter/VsPackage.GTA/packages.config b/GoogleTestAdapter/VsPackage.GTA/packages.config index 5e0560398..cb463d7a3 100644 --- a/GoogleTestAdapter/VsPackage.GTA/packages.config +++ b/GoogleTestAdapter/VsPackage.GTA/packages.config @@ -5,29 +5,34 @@ - - + + - + - - + + - - + + + + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index 0d819e02b..0b48ed17d 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -1,4 +1,4 @@ -// This file has been modified by Microsoft on 5/2018. +// This file has been modified by Microsoft on 3/2019. using GoogleTestAdapter.Settings; using GoogleTestAdapter.TestAdapter.Settings; @@ -7,7 +7,6 @@ using GoogleTestAdapter.VsPackage.Helpers; using GoogleTestAdapter.VsPackage.OptionsPages; using Microsoft.VisualStudio; -using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using System; @@ -15,13 +14,10 @@ using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.ServiceModel; -using System.Threading; -using Task = System.Threading.Tasks.Task; namespace GoogleTestAdapter.VsPackage { - [PackageRegistration(AllowsBackgroundLoading = true, UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [Guid(PackageGuidString)] [SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "pkgdef, VS and vsixmanifest are valid VS terms")] @@ -29,7 +25,7 @@ namespace GoogleTestAdapter.VsPackage [ProvideOptionPage(typeof(ParallelizationOptionsDialogPage), OptionsCategoryName, "Parallelization", 110, 502, true)] [ProvideOptionPage(typeof(GoogleTestOptionsDialogPage), OptionsCategoryName, "Google Test", 110, 503, true)] [ProvideMenuResource("Menus.ctmenu", 1)] - public sealed partial class GoogleTestExtensionOptionsPage : AsyncPackage, IGoogleTestExtensionOptionsPage, IDisposable + public sealed partial class GoogleTestExtensionOptionsPage : IGoogleTestExtensionOptionsPage, IDisposable { private readonly string _debuggingNamedPipeId = Guid.NewGuid().ToString(); @@ -42,32 +38,38 @@ public sealed partial class GoogleTestExtensionOptionsPage : AsyncPackage, IGoog // ReSharper disable once NotAccessedField.Local private DebuggerAttacherServiceHost _debuggerAttacherServiceHost; - protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) + private void DoInitialize() { - await base.InitializeAsync(cancellationToken, progress); - - var componentModel = await GetServiceAsync(typeof(SComponentModel)) as IComponentModel; - _globalRunSettings = componentModel.GetService(); - - await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + InitializeOptions(); + InitializeCommands(); + InitializeDebuggerAttacherService(); + DisplayReleaseNotesIfNecessary(); + } - _generalOptions = (GeneralOptionsDialogPage)GetDialogPage(typeof(GeneralOptionsDialogPage)); - _parallelizationOptions = (ParallelizationOptionsDialogPage)GetDialogPage(typeof(ParallelizationOptionsDialogPage)); - _googleTestOptions = (GoogleTestOptionsDialogPage)GetDialogPage(typeof(GoogleTestOptionsDialogPage)); + private void InitializeOptions() + { + _generalOptions = (GeneralOptionsDialogPage) GetDialogPage(typeof(GeneralOptionsDialogPage)); + _parallelizationOptions = + (ParallelizationOptionsDialogPage) GetDialogPage(typeof(ParallelizationOptionsDialogPage)); + _googleTestOptions = (GoogleTestOptionsDialogPage) GetDialogPage(typeof(GoogleTestOptionsDialogPage)); _globalRunSettings.RunSettings = GetRunSettingsFromOptionPages(); _generalOptions.PropertyChanged += OptionsChanged; _parallelizationOptions.PropertyChanged += OptionsChanged; _googleTestOptions.PropertyChanged += OptionsChanged; + } + private void InitializeCommands() + { SwitchCatchExceptionsOptionCommand.Initialize(this); SwitchBreakOnFailureOptionCommand.Initialize(this); SwitchParallelExecutionOptionCommand.Initialize(this); SwitchPrintTestOutputOptionCommand.Initialize(this); + } - DisplayReleaseNotesIfNecessary(); - + private void InitializeDebuggerAttacherService() + { var logger = new ActivityLogLogger(this, () => _generalOptions.DebugMode); var debuggerAttacher = new VsDebuggerAttacher(this); _debuggerAttacherServiceHost = new DebuggerAttacherServiceHost(_debuggingNamedPipeId, debuggerAttacher, logger); @@ -103,15 +105,11 @@ protected override void Dispose(bool disposing) try { - // Cannot simply do ".?" because Code Analysis does not understand that. - if (_debuggerAttacherServiceHost != null) - { - _debuggerAttacherServiceHost.Close(); - } + _debuggerAttacherServiceHost?.Close(); } catch (CommunicationException) { - _debuggerAttacherServiceHost.Abort(); + _debuggerAttacherServiceHost?.Abort(); } } base.Dispose(disposing); diff --git a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs index 82fc793cf..4dccad96f 100644 --- a/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.TAfGT/GoogleTestExtensionOptionsPage.cs @@ -1,22 +1,39 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. +using GoogleTestAdapter.TestAdapter.Settings; using Microsoft.VisualStudio; +using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.Shell; +using System; +using System.Threading; namespace GoogleTestAdapter.VsPackage { + [PackageRegistration(AllowsBackgroundLoading = true, UseManagedResourcesOnly = true)] [ProvideAutoLoad(UIContextGuid, PackageAutoLoadFlags.BackgroundLoad)] [ProvideUIContextRule(UIContextGuid, OptionsCategoryName, "VCProject & TestExplorer", new string[] { "VCProject", "TestExplorer" }, new string[] { VSConstants.UICONTEXT.VCProject_string, TestExplorerContextGuid })] - public partial class GoogleTestExtensionOptionsPage + public partial class GoogleTestExtensionOptionsPage : AsyncPackage { private const string PackageGuidString = "6fac3232-df1d-400a-95ac-7daeaaee74ac"; private const string UIContextGuid = "7517f9ae-397f-48e1-8e1b-dac609d9f52d"; private const string TestExplorerContextGuid = "ec25b527-d893-4ec0-a814-d2c9f1782997"; private const string OptionsCategoryName = "Test Adapter for Google Test"; + protected override async System.Threading.Tasks.Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) + { + await base.InitializeAsync(cancellationToken, progress); + + var componentModel = await GetServiceAsync(typeof(SComponentModel)) as IComponentModel; + _globalRunSettings = componentModel.GetService(); + + await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + + DoInitialize(); + } + private void DisplayReleaseNotesIfNecessary() { // TAfGT does not display release notes. From a64df6d9a529349ac1c62b2b4ea1075318049704 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 20 Mar 2019 16:54:27 -0700 Subject: [PATCH 86/92] fix copyright (#154) --- GoogleTestNuGet/googletest.nuspec.tt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoogleTestNuGet/googletest.nuspec.tt b/GoogleTestNuGet/googletest.nuspec.tt index 097e38c68..cb2d4ce47 100644 --- a/GoogleTestNuGet/googletest.nuspec.tt +++ b/GoogleTestNuGet/googletest.nuspec.tt @@ -11,7 +11,7 @@ https://github.com/Microsoft/TestAdapterForGoogleTest https://raw.githubusercontent.com/Microsoft/TestAdapterForGoogleTest/dev15/GoogleTestNuGet/license%20(MIT).txt true - © Microsoft Corporation. All rights reserved. + © Microsoft Corporation. All rights reserved. Google Test compiled for Windows. native googletest google test gtest c++ cpp https://raw.githubusercontent.com/Microsoft/TestAdapterForGoogleTest/dev15/GoogleTestAdapter/Resources/Icons/Icon_128.png From 8a2f19a26575ed05c11ea06604b5fbd159dc0108 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Mon, 25 Mar 2019 14:19:27 -0700 Subject: [PATCH 87/92] Add signing project for nuget packages (#155) * add signing project for nupkgs --- GoogleTestNuGet/googletest.SignNuGet.proj | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 GoogleTestNuGet/googletest.SignNuGet.proj diff --git a/GoogleTestNuGet/googletest.SignNuGet.proj b/GoogleTestNuGet/googletest.SignNuGet.proj new file mode 100644 index 000000000..10015327a --- /dev/null +++ b/GoogleTestNuGet/googletest.SignNuGet.proj @@ -0,0 +1,24 @@ + + + + + + {9C5FB75F-BE2A-4358-A2C8-E950EB2A027A} + $(FlavoredTargetFrameworkVersion) + + + $(MSBuildThisFileDirectory)\..\GoogleTestAdapter\Packages + $(MSBuildThisFileDirectory)\..\GoogleTestAdapter\Packages + library + 2008 + + + + + + NuGet + + + + + \ No newline at end of file From c91ebb97679f1746ee4b5da5e32dfe557f020fd0 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 24 Apr 2019 16:39:01 -0700 Subject: [PATCH 88/92] cleanup merge --- .../Contracts/IProcessExecutor.cs | 4 +- .../Core/Runners/PreparingTestRunner.cs | 10 ++-- .../Core/Runners/SequentialTestRunner.cs | 2 +- .../Core/Settings/SettingsWrapper.cs | 7 --- .../Core/TestCases/TestCaseFactory.cs | 9 ++-- .../Core/TestCases/TestCaseResolver.cs | 2 +- GoogleTestAdapter/GoogleTestAdapter.sln | 37 ++++----------- .../NativeDebuggedProcessExecutor.cs | 17 ++----- .../GoogleTestExtensionOptionsPage.cs | 47 ++----------------- .../OptionsPages/GeneralOptionsDialogPage.cs | 2 +- 10 files changed, 30 insertions(+), 107 deletions(-) diff --git a/GoogleTestAdapter/Core/ProcessExecution/Contracts/IProcessExecutor.cs b/GoogleTestAdapter/Core/ProcessExecution/Contracts/IProcessExecutor.cs index 4cd68a08d..1a327482a 100644 --- a/GoogleTestAdapter/Core/ProcessExecution/Contracts/IProcessExecutor.cs +++ b/GoogleTestAdapter/Core/ProcessExecution/Contracts/IProcessExecutor.cs @@ -8,7 +8,7 @@ namespace GoogleTestAdapter.ProcessExecution.Contracts { public interface IProcessExecutor { - int ExecuteCommandBlocking(string command, string parameters, string workingDir, IDictionary envVars, string pathExtension, Action reportOutputLine); + int ExecuteCommandBlocking(string command, string parameters, string workingDir, string pathExtension, Action reportOutputLine); void Cancel(); } @@ -23,7 +23,7 @@ public static int ExecuteBatchFileBlocking(this IProcessExecutor executor, strin } string command = Path.Combine(Environment.SystemDirectory, "cmd.exe"); - return executor.ExecuteCommandBlocking(command, $"/C \"{batchFile}\" {parameters}", workingDir, null, pathExtension, + return executor.ExecuteCommandBlocking(command, $"/C \"{batchFile}\" {parameters}", workingDir, pathExtension, reportOutputLine); } } diff --git a/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs b/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs index 996c8b913..3230fe2e1 100644 --- a/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/PreparingTestRunner.cs @@ -56,12 +56,12 @@ public void RunTests(IEnumerable testCasesToRun, bool isBeingDebugged, Stopwatch stopwatch = Stopwatch.StartNew(); string batch = _settings.GetBatchForTestSetup(_testDirectory, _threadId); - SafeRunBatch(TestSetup, _settings.SolutionDir, batch, processExecutorFactory); + SafeRunBatch(BatchType.TestSetup, _settings.SolutionDir, batch, processExecutorFactory); _innerTestRunner.RunTests(testCasesToRun, isBeingDebugged, processExecutorFactory); batch = _settings.GetBatchForTestTeardown(_testDirectory, _threadId); - SafeRunBatch(TestTeardown, _settings.SolutionDir, batch, processExecutorFactory); + SafeRunBatch(BatchType.TestTeardown, _settings.SolutionDir, batch, processExecutorFactory); stopwatch.Stop(); _logger.DebugInfo(String.Format(Resources.ExecutionTime, _threadName, stopwatch.Elapsed)); @@ -85,7 +85,7 @@ public void Cancel() } - private void SafeRunBatch(string batchType, string workingDirectory, string batch, IProcessExecutorFactory processExecutorFactory) + private void SafeRunBatch(BatchType batchType, string workingDirectory, string batch, IProcessExecutorFactory processExecutorFactory) { string batchTypeString = (batchType == BatchType.TestSetup) ? Resources.TestSetupBatchFile : Resources.TestTeardownBatchFile; @@ -101,7 +101,7 @@ private void SafeRunBatch(string batchType, string workingDirectory, string batc try { - RunBatch(batchType, workingDirectory, batch, processExecutorFactory); + RunBatch(batchTypeString, workingDirectory, batch, processExecutorFactory); } catch (Exception e) { @@ -109,7 +109,7 @@ private void SafeRunBatch(string batchType, string workingDirectory, string batc } } - private void RunBatch(string batchType, string workingDirectory, string batch, IProcessExecutorFactory processExecutorFactory) + private void RunBatch(string batchTypeString, string workingDirectory, string batch, IProcessExecutorFactory processExecutorFactory) { var executor = processExecutorFactory.CreateExecutor(false, _logger); int batchExitCode = executor.ExecuteBatchFileBlocking(batch, "", workingDirectory, "", s => { }); diff --git a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs index 16065a433..2e2321e5c 100644 --- a/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs +++ b/GoogleTestAdapter/Core/Runners/SequentialTestRunner.cs @@ -80,7 +80,7 @@ public void Cancel() // ReSharper disable once UnusedParameter.Local - private void RunTestsFromExecutable(string executable, string workingDir, IDictionary envVars, + private void RunTestsFromExecutable(string executable, string workingDir, IEnumerable testCasesToRun, string userParameters, bool isBeingDebugged, IDebuggedProcessExecutorFactory processExecutorFactory) { diff --git a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs index 19caab9ad..62f10f06b 100644 --- a/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs +++ b/GoogleTestAdapter/Core/Settings/SettingsWrapper.cs @@ -474,13 +474,6 @@ public virtual List TraitsRegexesAfter public virtual bool TimestampOutput => _currentSettings.TimestampOutput ?? OptionTimestampOutputDefaultValue; - public static readonly string OptionShowReleaseNotes = Resources.OptionShowReleaseNotes; - public const bool OptionShowReleaseNotesDefaultValue = true; - public static readonly string OptionShowReleaseNotesDescription = Resources.OptionShowReleaseNotesDescription; - - public virtual bool ShowReleaseNotes => _currentSettings.ShowReleaseNotes ?? OptionShowReleaseNotesDefaultValue; - - public static readonly string OptionAdditionalTestExecutionParams = Resources.OptionAdditionalTestExecutionParams; public const string OptionAdditionalTestExecutionParamsDefaultValue = ""; public const string OptionAdditionalTestExecutionParamsDescription = diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs index 3e4b03db8..c1847e11a 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseFactory.cs @@ -90,7 +90,6 @@ void OnReportOutputLine(string line) _executable, finalParams, workingDir, - null, _settings.GetPathExtension(_executable), OnReportOutputLine); }, TaskCreationOptions.AttachedToParent); @@ -170,12 +169,12 @@ private bool CheckProcessExitCode(int processExitCode, ICollection stand { if (processExitCode != 0) { - string messsage = String.Format(Resources.CouldNotListTestCases, _executable, processExitCode); - messsage += Environment.NewLine + String.Format(Resources.CommandExecuted, _executable, GoogleTestConstants.ListTestsOption, Path.GetDirectoryName(_executable)); + string message = String.Format(Resources.CouldNotListTestCases, _executable, processExitCode); + message += Environment.NewLine + String.Format(Resources.CommandExecuted, _executable, GoogleTestConstants.ListTestsOption, Path.GetDirectoryName(_executable)); if (standardOutput.Count(s => !string.IsNullOrEmpty(s)) > 0) - messsage += Environment.NewLine + Resources.OutputOfCommand + Environment.NewLine + string.Join(Environment.NewLine, standardOutput); + message += Environment.NewLine + Resources.OutputOfCommand + Environment.NewLine + string.Join(Environment.NewLine, standardOutput); else - messsage += Environment.NewLine + Resources.NoOutput; + message += Environment.NewLine + Resources.NoOutput; _logger.LogError(message); return false; diff --git a/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs b/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs index 4312bc118..abbe49dc1 100644 --- a/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs +++ b/GoogleTestAdapter/Core/TestCases/TestCaseResolver.cs @@ -123,7 +123,7 @@ private void AddSymbolsFromBinary(string binary, string pdb, bool resolveMainMet { _allTestMethodSymbols.AddRange(diaResolver.GetFunctions("*" + GoogleTestConstants.TestBodySignature)); _allTraitSymbols.AddRange(diaResolver.GetFunctions("*" + TraitAppendix)); - _logger.DebugInfo(String.Format(Resources.FoundTestMethod, testMethodSymbols.Count, traitSymbols.Count, binary, pdb)); + _logger.DebugInfo(String.Format(Resources.FoundTestMethod, _allTestMethodSymbols.Count, _allTraitSymbols.Count, binary, pdb)); if (resolveMainMethod) { diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index 9729647bf..a3c7b5d28 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -174,10 +174,6 @@ Global {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Debug|Any CPU.Build.0 = Debug|Any CPU {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|Any CPU.Build.0 = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x64.ActiveCfg = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x64.Build.0 = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x86.ActiveCfg = Release|Any CPU - {E6276CAD-E4C3-4B25-876A-65B265EBFF1A}.Release|x86.Build.0 = Release|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Debug|Any CPU.Build.0 = Debug|Any CPU {44C04E51-D543-4155-A57E-BBEB73D3F8E5}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -218,10 +214,6 @@ Global {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Debug|Any CPU.Build.0 = Debug|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|Any CPU.ActiveCfg = Release|Any CPU {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|Any CPU.Build.0 = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x64.ActiveCfg = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x64.Build.0 = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x86.ActiveCfg = Release|Any CPU - {17F4B73F-E4D3-4E40-98FC-788B1D0F8225}.Release|x86.Build.0 = Release|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Debug|Any CPU.Build.0 = Debug|Any CPU {87F26371-0005-4301-9C49-A6DF4F06B81C}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -262,18 +254,10 @@ Global {BAB53542-85AA-4780-9F48-2984C036189A}.Release|Any CPU.ActiveCfg = Release|Win32 {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Debug|Any CPU.ActiveCfg = Debug|Win32 {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|Any CPU.ActiveCfg = Release|Win32 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x64.ActiveCfg = Release|x64 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x64.Build.0 = Release|x64 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x86.ActiveCfg = Release|Win32 - {2E3221EB-86DA-427D-84EC-DEFD3F966D9A}.Release|x86.Build.0 = Release|Win32 {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Debug|Any CPU.Build.0 = Debug|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|Any CPU.Build.0 = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x64.ActiveCfg = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x64.Build.0 = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x86.ActiveCfg = Release|Any CPU - {4735D8CC-FA30-432D-854C-2984A7DA5DD2}.Release|x86.Build.0 = Release|Any CPU {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.ActiveCfg = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Debug|Any CPU.Build.0 = Debug|Win32 {F48AD2EC-96B3-41C6-9F89-3542EC7A3D43}.Release|Any CPU.ActiveCfg = Release|Win32 @@ -298,21 +282,16 @@ Global {05C435E1-603C-4402-B28C-E54932F3131C}.Debug|Any CPU.Build.0 = Debug|x64 {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.ActiveCfg = Release|x64 {05C435E1-603C-4402-B28C-E54932F3131C}.Release|Any CPU.Build.0 = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x64.ActiveCfg = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x64.Build.0 = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x64.Deploy.0 = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x86.ActiveCfg = Release|x64 - {05C435E1-603C-4402-B28C-E54932F3131C}.Release|x86.Build.0 = Release|x64 + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544}.Release|Any CPU.Build.0 = Release|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87A1108A-3819-4B31-99EA-217F3E11E958}.Release|Any CPU.Build.0 = Release|Any CPU {41791F46-44CF-459B-9F77-049CE1C9D203}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Debug|x64.ActiveCfg = Debug|x64 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Debug|x64.Build.0 = Debug|x64 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Debug|x86.ActiveCfg = Debug|Win32 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Debug|x86.Build.0 = Debug|Win32 {41791F46-44CF-459B-9F77-049CE1C9D203}.Release|Any CPU.ActiveCfg = Release|Win32 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Release|x64.ActiveCfg = Release|x64 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Release|x64.Build.0 = Release|x64 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Release|x86.ActiveCfg = Release|Win32 - {41791F46-44CF-459B-9F77-049CE1C9D203}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/GoogleTestAdapter/TestAdapter/ProcessExecution/NativeDebuggedProcessExecutor.cs b/GoogleTestAdapter/TestAdapter/ProcessExecution/NativeDebuggedProcessExecutor.cs index 7bed939f0..007bf6c6d 100644 --- a/GoogleTestAdapter/TestAdapter/ProcessExecution/NativeDebuggedProcessExecutor.cs +++ b/GoogleTestAdapter/TestAdapter/ProcessExecution/NativeDebuggedProcessExecutor.cs @@ -34,7 +34,7 @@ public NativeDebuggedProcessExecutor(IDebuggerAttacher debuggerAttacher, bool pr _logger = logger; } - public int ExecuteCommandBlocking(string command, string parameters, string workingDir, IDictionary envVars, string pathExtension, Action reportOutputLine) + public int ExecuteCommandBlocking(string command, string parameters, string workingDir, string pathExtension, Action reportOutputLine) { try { @@ -174,17 +174,9 @@ public static void CreatePipe(out SafePipeHandle readingEnd, out SafePipeHandle throw new Win32Exception(Marshal.GetLastWin32Error(), "Could not set handle information"); } - private static StringBuilder CreateEnvironment(string pathExtension, IDictionary additionalEnvVars) + private static StringBuilder CreateEnvironment(string pathExtension) { StringDictionary envVariables = new ProcessStartInfo().EnvironmentVariables; - - if (additionalEnvVars != null) - { - foreach (var entry in additionalEnvVars) - { - envVariables[entry.Key] = entry.Value; - } - } if (!string.IsNullOrEmpty(pathExtension)) { @@ -212,8 +204,7 @@ private static StringBuilder CreateEnvironment(string pathExtension, IDictionary return result; } - private static PROCESS_INFORMATION CreateProcess(string command, string parameters, string workingDir, - IDictionary envVars, string pathExtension, + private static PROCESS_INFORMATION CreateProcess(string command, string parameters, string workingDir, string pathExtension, SafePipeHandle outputPipeWritingEnd) { var startupinfoex = new STARTUPINFOEX @@ -244,7 +235,7 @@ private static PROCESS_INFORMATION CreateProcess(string command, string paramete lpThreadAttributes: null, bInheritHandles: true, dwCreationFlags: CREATE_EXTENDED_STARTUPINFO_PRESENT | CREATE_SUSPENDED, - lpEnvironment: CreateEnvironment(pathExtension, envVars), + lpEnvironment: CreateEnvironment(pathExtension), lpCurrentDirectory: workingDir, lpStartupInfo: startupinfoex, lpProcessInformation: out processInfo)) diff --git a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs index 2b7ce1bcb..83ee135e5 100644 --- a/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/GoogleTestExtensionOptionsPage.cs @@ -21,16 +21,13 @@ namespace GoogleTestAdapter.VsPackage { - [AsyncPackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] - [Microsoft.VisualStudio.AsyncPackageHelpers.ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string, PackageAutoLoadFlags.BackgroundLoad)] - [PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [Guid(PackageGuidString)] [SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "pkgdef, VS and vsixmanifest are valid VS terms")] - [ProvideOptionPage(typeof(GeneralOptionsDialogPage), OptionsCategoryName, SettingsWrapper.PageGeneralName, 0, 0, true)] - [ProvideOptionPage(typeof(ParallelizationOptionsDialogPage), OptionsCategoryName, SettingsWrapper.PageParallelizationName, 0, 0, true)] - [ProvideOptionPage(typeof(GoogleTestOptionsDialogPage), OptionsCategoryName, SettingsWrapper.PageGoogleTestName, 0, 0, true)] -// [Microsoft.VisualStudio.Shell.ProvideAutoLoad(UIContextGuids.SolutionExists)] + [ProvideOptionPage(typeof(GeneralOptionsDialogPage), OptionsCategoryName, "General", 110, 501, true)] + [ProvideOptionPage(typeof(ParallelizationOptionsDialogPage), OptionsCategoryName, "Parallelization", 110, 502, true)] + [ProvideOptionPage(typeof(GoogleTestOptionsDialogPage), OptionsCategoryName, "Google Test", 110, 503, true)] + // [Microsoft.VisualStudio.Shell.ProvideAutoLoad(UIContextGuids.SolutionExists)] [ProvideMenuResource("Menus.ctmenu", 1)] public sealed partial class GoogleTestExtensionOptionsPage : Package, IGoogleTestExtensionOptionsPage, IAsyncLoadablePackageInitialize, IDisposable { @@ -44,42 +41,6 @@ public sealed partial class GoogleTestExtensionOptionsPage : Package, IGoogleTes private DebuggerAttacherServiceHost _debuggerAttacherServiceHost; - private bool _isAsyncLoadSupported; - - protected override void Initialize() - { - base.Initialize(); - - _isAsyncLoadSupported = this.IsAsyncPackageSupported(); - if (!_isAsyncLoadSupported) - { - var componentModel = (IComponentModel) GetGlobalService(typeof(SComponentModel)); - _globalRunSettings = componentModel.GetService(); - DoInitialize(); - } - } - - IVsTask IAsyncLoadablePackageInitialize.Initialize(IAsyncServiceProvider serviceProvider, IProfferAsyncService profferService, - IAsyncProgressCallback progressCallback) - { - if (!_isAsyncLoadSupported) - { - throw new InvalidOperationException("Async Initialize method should not be called when async load is not supported."); - } - - return ThreadHelper.JoinableTaskFactory.RunAsync(async () => - { - var componentModel = await serviceProvider.GetServiceAsync(typeof(SComponentModel)); - _globalRunSettings = componentModel.GetService(); - - await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); - - DoInitialize(); - - return null; - }).AsVsTask(); - } - private void DoInitialize() { InitializeOptions(); diff --git a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs index 414da297c..4131315ad 100644 --- a/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs +++ b/GoogleTestAdapter/VsPackage.Shared/OptionsPages/GeneralOptionsDialogPage.cs @@ -247,7 +247,7 @@ public bool SkipOriginCheck } private bool _skipOriginCheck = SettingsWrapper.OptionSkipOriginCheckDefaultValue; - [Category(SettingsWrapper.CategoryMiscName)] + [LocalizedCategory("CategoryMiscName")] [DisplayName(SettingsWrapper.OptionExitCodeTestCase)] [Description(SettingsWrapper.OptionExitCodeTestCaseDescription)] public string ExitCodeTestCase From 411d9dd3830bab875fcc7fde05092842920d03f8 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Fri, 3 May 2019 16:35:28 -0700 Subject: [PATCH 89/92] Add new project wizard and localization --- .../Core/GoogleTestDiscoverer.cs | 4 +- GoogleTestAdapter/GoogleTestAdapter.sln | 6 + .../GoogleTest.vcxproj | 13 +- .../GoogleTest.vstemplate | 6 +- .../GoogleTestProjectTemplate.csproj | 5 +- .../packages.config.template | 4 + .../Properties/Settings.Designer.cs | 22 +- .../NewProjectWizard/WizardImplementation.cs | 13 +- .../Packaging.GTA/Packaging.GTA.csproj | 596 +++++++- ...GoogleTestAdapter.Common.Resources.cs.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.cs.resx | 150 ++ .../cs/GoogleTestAdapter.Resources.cs.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.cs.resx | 226 +++ ...ProjectWizard.Properties.Resources.cs.resx | 153 ++ .../Packaging.GTA/cs/VSPackage.cs.resx | 1252 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.de.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.de.resx | 150 ++ .../de/GoogleTestAdapter.Resources.de.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.de.resx | 226 +++ ...ProjectWizard.Properties.Resources.de.resx | 153 ++ .../Packaging.GTA/de/VSPackage.de.resx | 1252 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.es.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.es.resx | 150 ++ .../es/GoogleTestAdapter.Resources.es.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.es.resx | 226 +++ ...ProjectWizard.Properties.Resources.es.resx | 153 ++ .../Packaging.GTA/es/VSPackage.es.resx | 1252 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.fr.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.fr.resx | 150 ++ .../fr/GoogleTestAdapter.Resources.fr.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.fr.resx | 226 +++ ...ProjectWizard.Properties.Resources.fr.resx | 153 ++ .../Packaging.GTA/fr/VSPackage.fr.resx | 1252 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.it.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.it.resx | 150 ++ .../it/GoogleTestAdapter.Resources.it.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.it.resx | 226 +++ ...ProjectWizard.Properties.Resources.it.resx | 153 ++ .../Packaging.GTA/it/VSPackage.it.resx | 1252 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.ja.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.ja.resx | 150 ++ .../ja/GoogleTestAdapter.Resources.ja.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.ja.resx | 226 +++ ...ProjectWizard.Properties.Resources.ja.resx | 153 ++ .../Packaging.GTA/ja/VSPackage.ja.resx | 1251 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.ko.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.ko.resx | 150 ++ .../ko/GoogleTestAdapter.Resources.ko.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.ko.resx | 226 +++ ...ProjectWizard.Properties.Resources.ko.resx | 153 ++ .../Packaging.GTA/ko/VSPackage.ko.resx | 1251 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.pl.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.pl.resx | 150 ++ .../pl/GoogleTestAdapter.Resources.pl.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.pl.resx | 226 +++ ...ProjectWizard.Properties.Resources.pl.resx | 153 ++ .../Packaging.GTA/pl/VSPackage.pl.resx | 1252 ++++++++++++++++ ...gleTestAdapter.Common.Resources.pt-BR.resx | 132 ++ ...stAdapter.DiaResolver.Resources.pt-BR.resx | 150 ++ .../GoogleTestAdapter.Resources.pt-BR.resx | 561 ++++++++ ...stAdapter.TestAdapter.Resources.pt-BR.resx | 226 +++ ...jectWizard.Properties.Resources.pt-BR.resx | 153 ++ .../Packaging.GTA/pt-BR/VSPackage.pt-BR.resx | 1252 ++++++++++++++++ ...GoogleTestAdapter.Common.Resources.ru.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.ru.resx | 150 ++ .../ru/GoogleTestAdapter.Resources.ru.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.ru.resx | 226 +++ ...ProjectWizard.Properties.Resources.ru.resx | 153 ++ .../Packaging.GTA/ru/VSPackage.ru.resx | 1253 +++++++++++++++++ .../source.extension.vsixmanifest | 5 +- ...GoogleTestAdapter.Common.Resources.tr.resx | 132 ++ ...eTestAdapter.DiaResolver.Resources.tr.resx | 150 ++ ...gleTestAdapter.Resources.tr.resources.resx | 561 ++++++++ ...eTestAdapter.TestAdapter.Resources.tr.resx | 226 +++ ...ProjectWizard.Properties.Resources.tr.resx | 153 ++ .../Packaging.GTA/tr/VSPackage.tr.resx | 1252 ++++++++++++++++ ...eTestAdapter.Common.Resources.zh-HANS.resx | 132 ++ ...Adapter.DiaResolver.Resources.zh-HANS.resx | 150 ++ .../GoogleTestAdapter.Resources.zh-HANS.resx | 561 ++++++++ ...Adapter.TestAdapter.Resources.zh-HANS.resx | 226 +++ ...ctWizard.Properties.Resources.zh-HANS.resx | 153 ++ .../zh-Hans/VSPackage.zh-HANS.resx | 1251 ++++++++++++++++ ...eTestAdapter.Common.Resources.zh-HANT.resx | 132 ++ ...Adapter.DiaResolver.Resources.zh-HANT.resx | 150 ++ .../GoogleTestAdapter.Resources.zh-HANT.resx | 561 ++++++++ ...Adapter.TestAdapter.Resources.zh-HANT.resx | 226 +++ ...ctWizard.Properties.Resources.zh-HANT.resx | 153 ++ .../zh-Hant/VSPackage.zh-HANT.resx | 1251 ++++++++++++++++ GoogleTestAdapter/SetVersion.ps1 | 2 + 89 files changed, 32804 insertions(+), 31 deletions(-) create mode 100644 GoogleTestAdapter/GoogleTestProjectTemplate/packages.config.template create mode 100644 GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Common.Resources.cs.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.DiaResolver.Resources.cs.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Resources.cs.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.TestAdapter.Resources.cs.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/cs/NewProjectWizard.Properties.Resources.cs.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/cs/VSPackage.cs.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Common.Resources.de.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.DiaResolver.Resources.de.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Resources.de.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.TestAdapter.Resources.de.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/de/NewProjectWizard.Properties.Resources.de.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/de/VSPackage.de.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Common.Resources.es.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.DiaResolver.Resources.es.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Resources.es.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.TestAdapter.Resources.es.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/es/NewProjectWizard.Properties.Resources.es.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/es/VSPackage.es.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Common.Resources.fr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.DiaResolver.Resources.fr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Resources.fr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.TestAdapter.Resources.fr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/fr/NewProjectWizard.Properties.Resources.fr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/fr/VSPackage.fr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Common.Resources.it.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.DiaResolver.Resources.it.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Resources.it.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.TestAdapter.Resources.it.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/it/NewProjectWizard.Properties.Resources.it.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/it/VSPackage.it.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Common.Resources.ja.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.DiaResolver.Resources.ja.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Resources.ja.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.TestAdapter.Resources.ja.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ja/NewProjectWizard.Properties.Resources.ja.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ja/VSPackage.ja.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Common.Resources.ko.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.DiaResolver.Resources.ko.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Resources.ko.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.TestAdapter.Resources.ko.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ko/NewProjectWizard.Properties.Resources.ko.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ko/VSPackage.ko.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Common.Resources.pl.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.DiaResolver.Resources.pl.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Resources.pl.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.TestAdapter.Resources.pl.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pl/NewProjectWizard.Properties.Resources.pl.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pl/VSPackage.pl.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Common.Resources.pt-BR.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.DiaResolver.Resources.pt-BR.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Resources.pt-BR.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.TestAdapter.Resources.pt-BR.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pt-BR/NewProjectWizard.Properties.Resources.pt-BR.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/pt-BR/VSPackage.pt-BR.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Common.Resources.ru.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.DiaResolver.Resources.ru.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Resources.ru.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.TestAdapter.Resources.ru.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ru/NewProjectWizard.Properties.Resources.ru.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/ru/VSPackage.ru.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Common.Resources.tr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.DiaResolver.Resources.tr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Resources.tr.resources.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.TestAdapter.Resources.tr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/tr/NewProjectWizard.Properties.Resources.tr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/tr/VSPackage.tr.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Common.Resources.zh-HANS.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.DiaResolver.Resources.zh-HANS.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Resources.zh-HANS.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.TestAdapter.Resources.zh-HANS.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hans/NewProjectWizard.Properties.Resources.zh-HANS.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hans/VSPackage.zh-HANS.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Common.Resources.zh-HANT.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.DiaResolver.Resources.zh-HANT.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Resources.zh-HANT.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.TestAdapter.Resources.zh-HANT.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hant/NewProjectWizard.Properties.Resources.zh-HANT.resx create mode 100644 GoogleTestAdapter/Packaging.GTA/zh-Hant/VSPackage.zh-HANT.resx diff --git a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs index dc4955fcb..fe0da0c3e 100644 --- a/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs +++ b/GoogleTestAdapter/Core/GoogleTestDiscoverer.cs @@ -57,13 +57,13 @@ private static void DiscoverTests(string executable, ITestFrameworkReporter repo void ReportTestCases(TestCase testCase) { reporter.ReportTestsFound(testCase.Yield()); - logger.DebugInfo("Added testcase " + testCase.DisplayName); + logger.DebugInfo(String.Format(Resources.AddedTestCase, testCase.DisplayName)); nrOfTestCases++; } var factory = new TestCaseFactory(executable, logger, settings, diaResolverFactory, processExecutorFactory); factory.CreateTestCases(ReportTestCases); - logger.LogInfo("Found " + nrOfTestCases + " tests in executable " + executable); + logger.LogInfo(String.Format(Resources.NumberOfTestsMessage, nrOfTestCases, executable)); }); } diff --git a/GoogleTestAdapter/GoogleTestAdapter.sln b/GoogleTestAdapter/GoogleTestAdapter.sln index a3c7b5d28..d03e3158f 100644 --- a/GoogleTestAdapter/GoogleTestAdapter.sln +++ b/GoogleTestAdapter/GoogleTestAdapter.sln @@ -160,6 +160,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Donations", "Donations", "{ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LeakCheckTests", "..\SampleTests\LeakCheckTests\LeakCheckTests.vcxproj", "{41791F46-44CF-459B-9F77-049CE1C9D203}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewProjectWizard", "NewProjectWizard\NewProjectWizard.csproj", "{483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution VsPackage.Shared\VsPackage.Shared.projitems*{ac75f34e-190b-402a-8c46-91b0fa02450f}*SharedItemsImports = 13 @@ -292,6 +294,10 @@ Global {87A1108A-3819-4B31-99EA-217F3E11E958}.Release|Any CPU.Build.0 = Release|Any CPU {41791F46-44CF-459B-9F77-049CE1C9D203}.Debug|Any CPU.ActiveCfg = Debug|Win32 {41791F46-44CF-459B-9F77-049CE1C9D203}.Release|Any CPU.ActiveCfg = Release|Win32 + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj index ae8fa98f2..e8ca1a686 100644 --- a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vcxproj @@ -44,9 +44,14 @@ Create + + + - + + + Use @@ -109,4 +114,10 @@ true + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + \ No newline at end of file diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate index 470b68558..376953dac 100644 --- a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTest.vstemplate @@ -18,15 +18,11 @@ test.cpp pch.cpp pch.h + packages.config.template NewProjectWizard, Version=0.1.0.0, Culture=neutral, PublicKeyToken=1924acebdd4c8a75 Microsoft.NewProjectWizard.WizardImplementation - - - - - diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj index b7ace52af..d0c01a95e 100644 --- a/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/GoogleTestProjectTemplate.csproj @@ -45,7 +45,10 @@ 4 - + + Designer + + diff --git a/GoogleTestAdapter/GoogleTestProjectTemplate/packages.config.template b/GoogleTestAdapter/GoogleTestProjectTemplate/packages.config.template new file mode 100644 index 000000000..32ff18b92 --- /dev/null +++ b/GoogleTestAdapter/GoogleTestProjectTemplate/packages.config.template @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/GoogleTestAdapter/NewProjectWizard/Properties/Settings.Designer.cs b/GoogleTestAdapter/NewProjectWizard/Properties/Settings.Designer.cs index 76a8519d9..a24aadea6 100644 --- a/GoogleTestAdapter/NewProjectWizard/Properties/Settings.Designer.cs +++ b/GoogleTestAdapter/NewProjectWizard/Properties/Settings.Designer.cs @@ -8,21 +8,17 @@ // //------------------------------------------------------------------------------ -namespace NewProjectWizard.Properties -{ - - +namespace NewProjectWizard.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } diff --git a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs index 8c67292ce..58acd563b 100644 --- a/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs +++ b/GoogleTestAdapter/NewProjectWizard/WizardImplementation.cs @@ -25,6 +25,7 @@ public class WizardImplementation : IWizard private const string RuntimeDebug = "$rtdebug$"; private const string RuntimeRelease = "$rtrelease$"; private const string RunSilent = "$runsilent$"; + private const string NuGetPackage = "$nugetpackage$"; private List projects = new List(); private int selectedProjectIndex; private IWizard nugetWizard; @@ -127,11 +128,13 @@ public void RunStarted(object automationObject, string nugetPackage = "Microsoft.googletest.v140.windesktop.msvcstl." + consumeGTestAs + ".rt-" + runtimeLibs; // Work around so we can choose the package for the nuget wizard - string tmpWizardData = Path.GetTempFileName(); - File.AppendAllText(tmpWizardData, ""); - File.AppendAllText(tmpWizardData, replacementsDictionary[WizardData].Replace("$nugetpackage$", nugetPackage)); - File.AppendAllText(tmpWizardData, ""); - customParams[0] = tmpWizardData; + //string tmpWizardData = Path.GetTempFileName(); + //File.AppendAllText(tmpWizardData, ""); + //File.AppendAllText(tmpWizardData, replacementsDictionary[WizardData].Replace("$nugetpackage$", nugetPackage)); + //File.AppendAllText(tmpWizardData, ""); + //customParams[0] = tmpWizardData; + + replacementsDictionary[NuGetPackage] = nugetPackage; try { diff --git a/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj b/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj index a299cef5c..4b5cb8a01 100644 --- a/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj +++ b/GoogleTestAdapter/Packaging.GTA/Packaging.GTA.csproj @@ -1,11 +1,12 @@  - + 15.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + Debug @@ -17,7 +18,7 @@ Properties Packaging.GTA Packaging.GTA - $(FlavoredTargetFrameworkVersion) + v4.6 false false true @@ -48,7 +49,9 @@ - + + Designer + Designer @@ -74,6 +77,26 @@ {fdc95d92-5e1e-4bdf-aa35-181851fce755} DiaResolver + + {87A1108A-3819-4B31-99EA-217F3E11E958} + GoogleTestItemTemplate + ItemTemplates + false + TemplateProjectOutputGroup%3b + + + {A56C1F19-EAA6-4C99-BAC3-2B14D0CCC544} + GoogleTestProjectTemplate + ProjectTemplates + false + TemplateProjectOutputGroup%3b + + + {483FE0C7-4E8D-4591-BE45-EAC6B2EA5F4F} + NewProjectWizard + BuiltProjectOutputGroup%3bBuiltProjectOutputGroupDependencies%3bGetCopyToOutputDirectoryItems%3bSatelliteDllsProjectOutputGroup%3b + DebugSymbolsProjectOutputGroup%3b + {44c04e51-d543-4155-a57e-bbeb73d3f8e5} TestAdapter @@ -83,6 +106,320 @@ VsPackage.GTA + + + cs + GoogleTestAdapter.Common.Dynamic + + + cs + GoogleTestAdapter.DiaResolver + + + cs + GoogleTestAdapter.Core + + + cs + GoogleTestAdapter.TestAdapter + + + cs + NewProjectWizard + + + cs + GoogleTestAdapter.VsPackage.GTA + + + de + GoogleTestAdapter.Common.Dynamic + + + de + GoogleTestAdapter.DiaResolver + + + de + GoogleTestAdapter.Core + + + de + GoogleTestAdapter.TestAdapter + + + de + NewProjectWizard + + + de + GoogleTestAdapter.VsPackage.GTA + + + es + GoogleTestAdapter.Common.Dynamic + + + es + GoogleTestAdapter.DiaResolver + + + es + GoogleTestAdapter.Core + + + es + GoogleTestAdapter.TestAdapter + + + es + NewProjectWizard + + + es + GoogleTestAdapter.VsPackage.GTA + + + fr + GoogleTestAdapter.Common.Dynamic + + + fr + GoogleTestAdapter.DiaResolver + + + fr + GoogleTestAdapter.Core + + + fr + GoogleTestAdapter.TestAdapter + + + fr + NewProjectWizard + + + fr + GoogleTestAdapter.VsPackage.GTA + + + it + GoogleTestAdapter.Common.Dynamic + + + it + GoogleTestAdapter.DiaResolver + + + it + GoogleTestAdapter.Core + + + it + GoogleTestAdapter.TestAdapter + + + it + NewProjectWizard + + + it + GoogleTestAdapter.VsPackage.GTA + + + ja + GoogleTestAdapter.Common.Dynamic + + + ja + GoogleTestAdapter.DiaResolver + + + ja + GoogleTestAdapter.Core + + + ja + GoogleTestAdapter.TestAdapter + + + ja + NewProjectWizard + + + ja + GoogleTestAdapter.VsPackage.GTA + + + ko + GoogleTestAdapter.Common.Dynamic + + + ko + GoogleTestAdapter.DiaResolver + + + ko + GoogleTestAdapter.Core + + + ko + GoogleTestAdapter.TestAdapter + + + ko + NewProjectWizard + + + ko + GoogleTestAdapter.VsPackage.GTA + + + pl + GoogleTestAdapter.Common.Dynamic + + + pl + GoogleTestAdapter.DiaResolver + + + pl + GoogleTestAdapter.Core + + + pl + GoogleTestAdapter.TestAdapter + + + pl + NewProjectWizard + + + pl + GoogleTestAdapter.VsPackage.GTA + + + pt-BR + GoogleTestAdapter.Common.Dynamic + + + pt-BR + GoogleTestAdapter.DiaResolver + + + pt-BR + GoogleTestAdapter.Core + + + pt-BR + GoogleTestAdapter.TestAdapter + + + pt-BR + NewProjectWizard + + + pt-BR + GoogleTestAdapter.VsPackage.GTA + + + ru + GoogleTestAdapter.Common.Dynamic + + + ru + GoogleTestAdapter.DiaResolver + + + ru + GoogleTestAdapter.Core + + + ru + GoogleTestAdapter.TestAdapter + + + ru + NewProjectWizard + + + ru + GoogleTestAdapter.VsPackage.GTA + + + tr + GoogleTestAdapter.Common.Dynamic + + + tr + GoogleTestAdapter.DiaResolver + + + tr + GoogleTestAdapter.Core + + + tr + GoogleTestAdapter.TestAdapter + + + tr + NewProjectWizard + + + tr + GoogleTestAdapter.VsPackage.GTA + + + zh-Hans + GoogleTestAdapter.Common.Dynamic + + + zh-Hans + GoogleTestAdapter.DiaResolver + + + zh-Hans + GoogleTestAdapter.Core + + + zh-Hans + GoogleTestAdapter.TestAdapter + + + zh-Hans + NewProjectWizard + + + zh-Hans + GoogleTestAdapter.VsPackage.GTA + + + zh-Hant + GoogleTestAdapter.Common.Dynamic + + + zh-Hant + GoogleTestAdapter.DiaResolver + + + zh-Hant + GoogleTestAdapter.Core + + + zh-Hant + GoogleTestAdapter.TestAdapter + + + zh-Hant + NewProjectWizard + + + zh-Hant + GoogleTestAdapter.VsPackage.GTA + + PreserveNewest @@ -101,7 +438,260 @@ PreserveNewest true + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + $(SolutionDir)Keys\Key_Debug.snk + $(SolutionDir)Keys\Key_Release.snk + + + + + + + + + + + + + + + + Program $(DevEnvDir)devenv.exe diff --git a/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Common.Resources.cs.resx b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Common.Resources.cs.resx new file mode 100644 index 000000000..bcd9a869b --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Common.Resources.cs.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Testovací adaptér pro Google Test: Spouští se testy... + + + Testovací adaptér pro Google Test + + + {0}Nahlédněte do oddílu pro odstraňování problémů s Testovacím adaptérem pro Google Test na stránce https://go.microsoft.com/fwlink/?linkid=848168. + + + Testovací adaptér pro Google Test: Spouští se zjišťování testů... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.DiaResolver.Resources.cs.resx b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.DiaResolver.Resources.cs.resx new file mode 100644 index 000000000..4cee69474 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.DiaResolver.Resources.cs.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nešlo najít soubor .pdb pro soubor {0}. Nenačtou se žádná zdrojová umístění pro vaše testy. + + + Nepodařilo se najít číslo řádku pro {0}. + + + Použijte možnost linkeru /DEBUG:FULL (Visual Studio 2017) nebo /DEBUG (Visual Studio 2015 a starší) – nepoužívejte /DEBUG:FASTLINK! + + + ImageDirectoryEntryToData failed! + + + Nejde načíst {0}. + + + Nešlo najít msdia.dll pro analýzu souborů *.pdb. Nenačtou se žádná zdrojová umístění pro vaše testy. + + + UnMapAndLoad se selhal! + + + Analyzuje se soubor PDB {0}. + + + Pokusy o nalezení PDB: {0} + + + Pokud chcete načíst zdrojová umístění pro vaše testy, zajistěte prosím generování *plných* souborů PDB pro jejich spustitelné soubory. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Resources.cs.resx b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Resources.cs.resx new file mode 100644 index 000000000..446cbb990 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.Resources.cs.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Pokud se tato možnost povolí, případný připojený ladicí program zachytí selhání kontrolního výrazu a automaticky přejde do interaktivního režimu. +Možnost Google Testu: {0} + + + {0}>>>>>>>>>>>>>>> Výstup příkazu {1} {2} + + + Nešlo vytvořit seznam testovacích případů pro spustitelný soubor {0}: spuštění procesu se nezdařilo s ukončovacím kódem {1}. + + + Názvy testů vytvořené Google Testem můžou obsahovat znak /, který způsobí, že Visual Studio název za znakem / odstraní, pokud okno Průzkumníka testů není dostatečně široké. Hodnota této možnosti, pokud není prázdná, nahradí znak / tak, aby k tomuto chování nedošlo. Poznámka: Znaky \, mezera ( ), | a - způsobují stejné chování (znaky ., _, : a :: se považují za funkční). Mějte také na paměti, že regulární výrazy vlastností se vyhodnocují ve vztahu k zobrazovaným názvům testů (a musí tak být konzistentní s touto možností). + + + Počet skutečných dob trvání testovacích případů: {0} + + + {0}Byly shromážděny výsledky testu (počet: {1}) z výstupu konzoly. + + + Proces se ukončil s kódem {0}. + + + Byl ukončen proces {0} spuštěný v {1}. + + + {0}{1}: Úspěšně spustil {2}. + + + Při spuštění vybírat testy náhodně + + + {0}Spuštění bylo zrušeno: {1} + + + Byla překročena maximální povolená délka příkazového řádku ({0}) zahrnující tento počet testů: {1}. (Délka dalšího řetězce je {2}.) + + + Našly se symboly testovacích metod (počet: {0}) a symboly vlastností (počet: {1}) v binárním souboru {2}. + + + Časový limit zjišťování testů v s + + + {0}{1}: Byla zachycena výjimka; zpráva: {2}, provedený příkaz: {3}. + + + {0} – adresář řešení (k dispozici jen uvnitř sady Visual Studio) + + + Maximální počet vláken + + + Pokud se tato možnost nastaví na true a spouštění testu se zruší, spuštěné spustitelné soubory testu se aktivně ukončí. Poznámka: Ukončení testovací procesu může mít různorodé vedlejší účinky, především to, že Google Test nebude moct provést žádné úlohy související s vypínáním. + + + {0}Výjimka při spouštění testů: {1} + + + Nenašel se žádný soubor s indikátorem Google Test pro spustitelný soubor {0}. + + + 0: Počáteční hodnota se vypočítá ze systémového času. 1<=n<={0}: Použije se zadaná počáteční hodnota. Podívejte se na poznámku k možnosti {1}. +Možnost Google Testu: {2} + + + {0}Vypadá to, že některé testovací případy (počet: {1}) se nespustily - opakujete testovací běh, ale testy se mezitím změnily? Testovací případy:{2}{3} + + + Další parametry spuštění testu + + + Našel se soubor s indikátorem Google Test pro spustitelný soubor {0}. + + + Ve skutečných dobách trvání byl nalezen tento počet očekávaných dob trvání: {0}. + + + Rozšíření PATH + + + Regulární výraz {0} nešlo analyzovat: {1}. + + + Spuštění testů se zopakuje tolikrát, kolikrát se určí (-1: neomezeně). +Možnost Google Test: {0} + + + {0}Zejména: Spusťte příkazový řádek, přepněte na adresář {1} a zadejte následující příkaz, abyste se ujistili, že obecně je možné spouštět vaše testy.{2}{3} {4} + + + Použití rozdělovače na základě počtu testů + + + Neznámý literál: {0} + + + Použít nový systém spouštění testů (experimentální) + + + Nešlo analyzovat pár {0}. Zpráva o výjimce: {1} + + + Našly se testy (počet: {0}) ve spustitelném souboru {1}. + + + Všimněte si, že při souběžném spouštění testů se na testovací konzole nezobrazí žádný výstup testů! + + + Výstup příkazu: + + + Vypíše výstup spustitelných souborů Google Testu do okna Výstup testů. + + + Dávkový soubor rozboru testů + + + {0}Spuštění trvalo {1}. + + + Pracovní adresář + + + Dávkový soubor rozboru testu + + + V možnostech je vybráno paralelní provádění, ale testy jsou prováděny postupně, protože je připojen ladicí program. + + + Neplatný soubor {0}. {1} + + + Po zjišťování testů + + + {0} odpovídá výchozímu regulárnímu výrazu {1}. + + + Žádný známý testovací případ pro výsledek testu u řádku {0} – opakujete testovací běh, ale testy se mezitím změnily? + + + Zjišťování testů bylo zrušeno po {0} s pro spustitelný soubor {1}. + + + Paralelní spouštění testů se provádí prostřednictvím různých vláken, z nichž každé má přiřazený určitý počet testů, které má spustit. Vlákna pak postupně vyvolávají potřebné spustitelné soubory, aby se získaly výsledky příslušného testu. + + + {0}Testovací případ už v analyzátoru: {1} + + + Další parametry pro spustitelný soubor Google Test. Zástupné symboly: + + + Nejhorší rozdíly (počet: {0}): + + + XmlNode nejde analyzovat: {0}. Zpráva o výjimce: {1} + + + Ukončit proces při zrušení + + + {0}Nepodařilo se spustit spustitelný soubor testu {1}: {2} + + + Směrodatná odchylka: {0} ms + + + Regulární výrazy pro přiřazení vlastností + + + Počet očekávaných dob trvání testovacích případů: {0} + + + Pokud se tato možnost nastaví na true, po aktualizaci rozšíření se zobrazí dialog se zprávou k vydání verze. + + + Využijte nový systém spouštění testů. Výhody: detekce chybového ukončení testu a výpis výstupu testu fungují i v režimu ladění. + + + >>> Statistika plánování <<< + + + Po aktualizaci zobrazit zprávu k vydání verze + + + Byl proveden příkaz: {0} {1}, pracovní adresář: {2}. + + + Výjimka při překladu míst pro testy a jejich vlastností v {0}\n{1} + + + {0} neodpovídá výchozímu regulárnímu výrazu {1}. + + + Počet opakování testu + + + Příkaz nevytvořil žádný výstup. + + + {0}{1}: Nenašel se soubor: {2}. + + + Neplatný regulární výraz {0}, zpráva o výjimce: {1} + + + Zastavit při selhání + + + Parsování informací symbolů ladění pro spustitelné soubory testů, ze kterých se získají informace o zdrojovém umístění a vlastnostech (definovaných pomocí maker v souboru GTA_Traits.h). +Pokud se tato možnost nastaví na false, při zjišťování vlastností se vynechá krok 2 a v účinnosti zůstanou jen regulární výrazy vlastností. + + + Oddělovač názvů testů + + + {0}Do sady Visual Studio byly ohlášeny výsledky testů (počet: {1}); spustitelný soubor: {2}, doba trvání: {3}. + + + Maximální počet vláken, která se mají použít ke spouštění testů (0: jedno vlákno pro každý procesor) + + + {0}<<<<<<<<<<<<<<< Konec výstupu + + + {0} nesmí být nikdy < 0. + + + Různé + + + Výstup časového razítka + + + {0} odpovídá vlastnímu regulárnímu výrazu {1}. + + + Výstup testu: + + + Neznámý stav testovacího případu: {0} + + + Pokud tato hodnota není prázdná, nastaví pracovní adresář pro spouštění testů (výchozí: {0}) +Příklad: {1}\MyTestDir +Zástupné symboly: + + + Průměrný rozdíl mezi očekávanou a skutečnou dobou trvání: {0} ms + + + {0}Byly shromážděny výsledky testu (počet: {1}) z výsledného souboru XML {2}. + + + Pokud se tato možnost nastaví na true, testy se budou spouštět v náhodném pořadí. Poznámka: Skutečně náhodného pořadí je možné docílit jen v případě, že se žádný z testů nespouští paralelně. Jinak se spustitelné soubory testů s největší pravděpodobností spustí více než jednou – náhodné pořadí se pak omezí na příslušná spuštění. +Možnost Google Testu: {0} + + + Ladicí program se připojuje k programu {0}. + + + {0} neodpovídá vlastnímu regulárnímu výrazu {1}. + + + Když se tato možnost nastaví na true, do testovací konzole se vypíše výstup ladění. + + + Pokud se tato možnost nastaví na true, spustí se všechny (vybrané) testy, a to i v případě, že se zakázaly. +Možnost Google Testu: {0} + + + {0} – adresář obsahující spustitelný soubor testu + + + Provedení testu + + + Vypsat informace o ladění + + + {0}Nešlo odstranit adresář testů {1}: {2} + + + Náhodné testy: Počáteční hodnota + + + !! Tento test se pravděpodobně CHYBOVĚ UKONČIL !! + + + důvodem je pravděpodobně chybové ukončení testu {0} + + + Soubor s výsledky testu {0} nešlo analyzovat (úplně) – pravděpodobně se spustitelný soubor testu chybově ukončil. Zpráva o výjimce: {1} + + + {0}Do sady Visual Studio během byly spuštění testu ohlášeny výsledky testů (počet: {1}); spustitelný soubor: {2}. + + + Spustit i zakázané testy + + + Počet sekund, po kterých se zjišťování testů bude považovat za neúspěšné. 0: žádný časový limit + + + Dávkový soubor nastavení testu + + + Pokud tato hodnota není prázdná, obsah se připojí k proměnné PATH daného spuštění testu a procesů zjišťování. +Příklad: C:\MyBins;{0}\MyOtherBins; +Zástupné symboly: + + + Byl přidán testovací případ {0}. + + + Běží testy (počet: {0})... + + + {0}Byly vytvořeny výsledky (počet: {1}) testů, které se nenašly ve výsledném souboru XML ani ve výstupu konzoly. + + + Testovací případ už v analyzátoru: {0} + + + Otestujte, jestli jde následující příkazy úspěšně spustit na příkazovém řádku (přesvědčte se, že v CESTĚ jsou všechny požadované binární soubory):{0}{1} + + + Dávkový soubor nastavení testů + + + Poznámka: Z důvodu omezení rozhraní testování částí sady Visual Studio se při ladění testů výstup spustitelného souboru testu nedá zobrazit v testovací konzole! + + + {0}{1}: Byl ukončen s kódem {2}; byl proveden příkaz: {3}. + + + Zachytit výjimky + + + Chování modulu runtime + + + Nešlo ukončit proces {0} spuštěný v {1}: {2} + + + Test {0}: očekáváno {1} ms, skutečnost {2} ms + + + Nastavení pro spustitelný soubor testu {0}: {1} + + + Nešlo analyzovat dobu trvání na řádku {0}. + + + Výstupní soubor neexistuje. Nedošlo k chybovému ukončení testů? + + + Spustitelný soubor {0} pocházel z jiného počítače a byl zablokován, aby se ochránil tento počítač. + + + Provádění testů v tomto počtu vláken: {0} + + + Před zjišťováním testů + + + {0}Trasování zásobníku:{1}{2} + + + SettingsWrapper už běží s nastavením pro spustitelný soubor ve vlákně {0}; nemůže ho používat i vlákno {1}. + + + Paralelní spouštění testů + + + Nešlo najít zdrojové umístění pro test {0}. + + + Spuštění už běží s nastavením pro spustitelný soubor {0}; nejde přepnout na nastavení pro {1}. + + + Nebylo nakonfigurováno žádné nastavení pro spustitelný soubor testu {0}; běží s nastavením řešení: {1}. + + + Vypršel časový limit regulárního výrazu {0}: {1} + + + Nešlo přečíst dobu trvání testů: {0} + + + Parsovat informace symbolů + + + Paralelizace + + + Použití rozdělovače na základě dob trvání testů + + + Umožňuje přepsat nebo přidat vlastnosti pro testovací případy, které odpovídají určitému regulárnímu výrazu. Vlastnosti se vytvářejí ve 3 fázích. Nejdříve se vlastnosti přiřadí k testům podle možnosti Vlastnosti před. Pak se vlastnosti testů (definované pomocí maker v souboru GTA_Traits.h) přidají do testů, což přepíše vlastnosti z fáze 1 novými hodnotami. Nakonec se vyhodnotí možnost Vlastnosti po, a to opět způsobem, při kterém dojde k přepsání hodnot. +Syntaxe: {0} odděluje regulární výrazy od vlastností, název a hodnota vlastnosti jsou oddělené pomocí {1} a každý pár regulárního výrazu a vlastnosti se odděluje řetězcem {2}. +Příklad: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + Pokud tato hodnota není prázdná, tento regulární výraz se použije ke zjištění spustitelných souborů Google Testu, které obsahují vaše testy. +Výchozí regulární výraz: {0} + + + Dávkový soubor, který se spustí před spuštěním testu. Pokud se testy spouští paralelně, dávkový soubor se spustí jednou pro každé vlákno. Zástupné symboly: + + + Pokud se tato možnost nastaví na true, do výstupu testu a ladění se přidá časové razítko. + + + Obnovuje se nastavení řešení: {0}. + + + Vypsat výstup testu + + + Nic k zařazení do sestavy + + + Google Test standardně zachytává výjimky. Příslušný test bude neúspěšný a spouštění testů bude pokračovat dále. Když zvolíte false, výjimky se budou předávat dál, což ladicímu programu umožní je zachytit. +Možnost Google Testu: {0} + + + Regulární výraz pro zjišťování testů + + + Dávkový soubor, který se spustí po spuštění testu. Pokud se testy spouští paralelně, dávkový soubor se spustí jednou pro každé vlákno. Zástupné symboly: + + + {0} – cesta k adresáři, který můžou testy použít +{1} – ID vlákna, které spouští aktuální testy + + + {0} – spustitelný soubor, který obsahuje testy + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.TestAdapter.Resources.cs.resx b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.TestAdapter.Resources.cs.resx new file mode 100644 index 000000000..6b2ed1a46 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/cs/GoogleTestAdapter.TestAdapter.Resources.cs.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument neobsahuje uzel RunSettings! Ruší se slučování nastavení... + + + Nepovedlo se najít proces. + + + Verze sady Visual Studio: {0} + + + {0} vyžaduje minimálně Visual Studio 2012 Update 1 – aktualizujte si prosím instalaci sady Visual Studio. + + + Nešlo určit verzi sady Visual Studio. {0} vyžaduje minimálně Visual Studio 2012 Update 1. + + + Nešlo připojit ladicí program k procesu {0}:{1}{2} + + + Vlastnost má stejný název jako základní vlastnost testů, takže se bude při filtrování testovacích případů ignorovat: {0} + + + Filtr testovacích případů: {0} + + + Následující chyby a upozornění se vyskytly během {0} {1}:{2} + + + Nenašla se verze sady Visual Studio: {0} + + + Neznámý literál výčtu: {0} + + + Neznámý literál výčtu: {0} + + + Výjimka při spouštění testů: {0} + + + Zjišťování testů bylo dokončeno; celková doba trvání: {0}. + + + Ladění je možné, jenom když je nainstalován GoogleTestAdapter do sady Visual Studio – instalace NuGet to nepodporuje (a další funkce, jako jsou možnosti sady Visual Studio, panel nástrojů a nastavení řešení). + + + Spuštění testu bylo zrušeno. + + + Neznámá verze sady Visual Studio: {0} + + + Soubor nastavení testu řešení nešlo parsovat. Zkontrolujte ho: {0} +Výjimka: {1} + + + (povolit režim ladění pro další informace) + + + Nebyl zadán žádný filtr testovacích případů. + + + Nastavení řešení: {0} + + + Výjimka při zjišťování testů: {0} + + + CHYBA: {0} + + + zjišťování testů + + + Filtr testovacích případů je neplatný: {0} + + + Spuštění Google Testu bylo dokončeno; celková doba trvání: {0}. + + + Další informace o tomto problému by mohly být v ActivityLog.xml sady Visual Studio (viz např. https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/). + + + Ladicí program se připojil k procesu {0}; trvalo to {1} ms. + + + {0} se shoduje s hodnotou {1}. + + + {0} neodpovídá hodnotě {1}. + + + Nešlo připojit ladicí program k procesu {0}; není k dispozici žádná chybová zpráva. + + + spuštění testu + + + Neplatná hodnota {0} + + + Upozornění: {0} + + + Soubor nastavení testu řešení se našel na cestě {0}, ale neobsahuje uzel {1}. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/cs/NewProjectWizard.Properties.Resources.cs.resx b/GoogleTestAdapter/Packaging.GTA/cs/NewProjectWizard.Properties.Resources.cs.resx new file mode 100644 index 000000000..e348b5fcf --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/cs/NewProjectWizard.Properties.Resources.cs.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konfigurace projektu testů + + + Propojit dynamicky (doporučeno) + + + Spotřebovat Google Test jako: + + + Knihovny C++ runtime: + + + Nejde najít NuGet.VisualStudio.Interop.dll. Průvodce nemůže pokračovat. + + + <Žádný projekt> + + + Nenašla se sada Windows SDK. + + + Statická knihovna (.lib) + + + Vyberte projekt k testování (nepovinné): + + + Propojit staticky + + + Dynamická knihovna (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/cs/VSPackage.cs.resx b/GoogleTestAdapter/Packaging.GTA/cs/VSPackage.cs.resx new file mode 100644 index 000000000..a7703e999 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/cs/VSPackage.cs.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Obecné + + + Paralelizace + + + Google Test + + + Testovací adaptér pro Google Test + + + Povolí testovací nástroje sady Visual Studio s testy jednotek vytvořenými pro Google Test. Podmínky použití a oznámení třetích stran jsou k dispozici v instalačním adresáři rozšíření. + + + + + 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 + 6WgAYkUAAAAAAAAAAAAAAAAAAAAAAAAA + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Common.Resources.de.resx b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Common.Resources.de.resx new file mode 100644 index 000000000..9d10b34e6 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Common.Resources.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Testadapter für Google Test: Die Testausführung wird gestartet... + + + Testadapter für Google Test + + + {0}Informationen finden Sie im Abschnitt zur Problembehandlung für den Testadapter für Google Test unter https://go.microsoft.com/fwlink/?linkid=848168. + + + Testadapter für Google Test: Die Testermittlung wird gestartet... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.DiaResolver.Resources.de.resx b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.DiaResolver.Resources.de.resx new file mode 100644 index 000000000..9915e2ab9 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.DiaResolver.Resources.de.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Die PDB-Datei der Datei "{0}" wurde nicht gefunden. Sie erhalten keine Quellspeicherorte für Ihre Tests. + + + Fehler beim Finden der Zeilennummer für "{0}". + + + Verwenden Sie die Linkeroption /DEBUG:FULL (Visual Studio 2017) oder /DEBUG (Visual Studio 2015 und früher). Verwenden Sie nicht /DEBUG:FASTLINK. + + + ImageDirectoryEntryToData failed! + + + "{0}" kann nicht geladen werden. + + + Die Datei "msdia.dll" zum Analysieren von PDB-Dateien wurde nicht gefunden. Sie erhalten keine Quellspeicherorte für Ihre Tests. + + + Fehler bei UnMapAndLoad. + + + Die PDB-Datei "{0}" wird analysiert. + + + Versuche zum Finden der PDB-Datei: {0} + + + Um die Quellspeicherorte für Ihre Tests zu erhalten, stellen Sie sicher, dass Sie *vollständige* PDB-Dateien für Ihre ausführbaren Testdateien generieren. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Resources.de.resx b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Resources.de.resx new file mode 100644 index 000000000..151e0a10a --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.Resources.de.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bei Aktivierung fängt ein möglicherweise angefügter Debugger Assertionsfehler ab und wechselt automatisch in den interaktiven Modus. +Google Test-Option: {0}. + + + {0}>>>>>>>>>>>>>>> Ausgabe des Befehls "{1} {2}" + + + Für die ausführbare Datei "{0}" konnten keine Testfälle aufgelistet werden: Fehler beim Prozess. Exitcode: {1}. + + + Von Google Test generierte Testnamen könnten das Zeichen "/" enthalten. Dies führt dazu, dass Visual Studio den Namen nach "/" abschneidet, wenn das Test-Explorer-Fenster nicht breit genug ist. Wenn der Wert dieser Option nicht leer ist, ersetzt er das Zeichen "/", um dieses Verhalten zu vermeiden. Beachten Sie, dass "\", " ", "|" und "-" das gleiche Verhalten hervorrufen (".", "_", ":" und "::" funktionieren). Beachten Sie auch, dass reguläre Ausdrücke von Merkmalen anhand der Anzeigenamen der Tests bewertet werden (und daher mit dieser Option konsistent sein müssen). + + + Anzahl der tatsächlichen Zeiträume für Testfälle: {0} + + + {0}Aus der Konsolenausgabe wurden {1} Testergebnisse erfasst. + + + Der Prozess wurde mit Code {0} beendet. + + + Der Prozess "{0}" (Beginn: {1}) wurde beendet. + + + {0}{1}: "{2}" wurde erfolgreich ausgeführt. + + + Tests pro Ausführung zufällig ausführen + + + {0}Die Ausführung wurde abgebrochen: {1} + + + Die maximal zulässige Befehlszeilenlänge ({0}) wurde nach Einbeziehen von {1} Tests überschritten (nächste Zeichenfolgenlänge ist {2}). + + + In der Binärdatei "{2}" wurden {0} Testmethodensymbole und {1} Merkmalsymbole gefunden. + + + Timeout für die Testermittlung in Sekunden + + + {0}{1}: Ausnahme aufgetreten, Meldung: {2}. Ausgeführter Befehl: {3} + + + {0} – Verzeichnis der Projektmappe (nur in Visual Studio verfügbar) + + + Maximale Anzahl von Threads + + + Bei TRUE werden ausgeführte ausführbare Testdateien aktiv beendet, wenn die Testausführung abgebrochen wird. Beachten Sie, dass das Beenden eines Testprozesses verschiedene Nebenwirkungen haben kann; insbesondere könnte Google Test nicht mehr in der Lage sein, zum Herunterfahren notwendige Aufgaben auszuführen. + + + {0}Ausnahme beim Ausführen von Tests: {1} + + + Für die ausführbare Datei "{0}" wurde keine Google Test-Indikatordatei gefunden. + + + 0: Startwert wird aus der Systemzeit berechnet, 1<=n<={0}: Angegebener Startwert wird verwendet. Siehe Hinweis zu Option "{1}". +Google Test-Option: {2} + + + {0}{1} Testfälle wurden offenbar nicht ausgeführt. Möglicherweise wiederholen Sie einen Testlauf, aber die Tests wurden in der Zwischenzeit geändert? Testfälle:{2}{3} + + + Zusätzliche Testausführungsparameter + + + Für die ausführbare Datei "{0}" wurde eine Google Test-Indikatordatei gefunden. + + + {0} erwartete Zeiträume wurden bei den tatsächlichen Zeiträumen gefunden. + + + PATH-Erweiterung + + + Der reguläre Ausdruck "{0}" kann nicht analysiert werden: {1} + + + Hiermit werden Tests so oft ausgeführt wie ausgewählt (-1: unendlich). +Google Test-Option: {0} + + + {0}Im Einzelnen: Starten Sie die Eingabeaufforderung, wechseln Sie in das Verzeichnis "{1}", und führen Sie den folgenden Befehl aus, um sicherzustellen, dass die Tests im Allgemeinen ausgeführt werden können.{2}{3} {4} + + + Die Teilung wird basierend auf der Anzahl von Tests verwendet. + + + Unbekanntes Literal: {0} + + + Neues Testausführungsframework verwenden (experimentell) + + + Das Paar "{0}" konnte nicht analysiert werden. Ausnahmemeldung: {1} + + + In der ausführbaren Datei "{1}" wurden {0} Tests gefunden. + + + Beachten Sie, dass in der Testkonsole keine Testausgabe angezeigt wird, wenn Tests gleichzeitig ausgeführt werden. + + + Ausgabe des Befehls: + + + Hiermit drucken Sie die Ausgabe von ausführbaren Google Test-Dateien im Testausgabefenster. + + + Batchdatei für Testbereinigung + + + {0}Ausführungsdauer: {1} + + + Arbeitsverzeichnis + + + Batchdatei für Testbereinigung + + + In den Optionen wurde die parallele Ausführung ausgewählt, die Tests werden jedoch sequenziell ausgeführt, da der Debugger angefügt ist. + + + Ungültige Datei "{0}". {1} + + + Nach der Testermittlung + + + "{0}" entspricht dem regulären Standardausdruck "{1}". + + + Kein bekannter Testfall für das Testergebnis in der Zeile "{0}". Möglicherweise wiederholen Sie einen Testlauf, aber die Tests haben sich in der Zwischenzeit geändert? + + + Die Testermittlung wurde für die ausführbare Datei "{1}" nach {0} Sekunden abgebrochen. + + + Parallele Testausführung wird durch verschiedene Threads erzielt, denen jeweils eine Reihe Tests zur Ausführung zugewiesen wird. Die Threads rufen dann nacheinander die erforderlichen ausführbaren Dateien auf, um die entsprechenden Testergebnisse zu generieren. + + + {0}Der Testfall ist im Analyzer bereits enthalten: {1} + + + Zusätzliche Parameter für die ausführbare Google Test-Datei. Platzhalter: + + + Die {0} größten Unterschiede: + + + XmlNode konnte nicht analysiert werden: {0}. Ausnahmemeldung: {1} + + + Prozesse bei Abbrechen beenden + + + {0}Fehler beim Ausführen der ausführbaren Testdatei "{1}": {2} + + + Standardabweichung: {0} ms + + + Reguläre Ausdrücke für Merkmalzuweisung + + + Anzahl der erwarteten Zeiträume für Testfälle: {0} + + + Bei TRUE wird nach der Aktualisierung der Erweiterung ein Dialogfeld mit Anmerkungen zu dieser Version angezeigt. + + + Hiermit nutzen Sie das neue Testausführungsframework. Vorteile: Testabsturzerkennung und Testergebnisausgabe funktionieren auch im Debugmodus. + + + >>> Statistiken werden geplant <<< + + + Anmerkungen zu dieser Version nach dem Update anzeigen + + + Ausgeführter Befehl: {0} {1}. Arbeitsverzeichnis: {2} + + + Ausnahme beim Auflösen von Testspeicherorten und Merkmalen in "{0}".\n{1} + + + {0} entspricht nicht dem regulären Standardausdruck "{1}". + + + Anzahl der Testwiederholungen + + + Der Befehl hat keine Ausgabe generiert. + + + {0}{1}: Die Datei wurde nicht gefunden: {2} + + + Ungültiger regulärer Ausdruck "{0}", Ausnahmemeldung: {1} + + + Bei Fehler unterbrechen + + + Hiermit analysieren Sie Debugsymbolinformationen für ausführbare Testdateien, um Quellspeicherortinformationen und Merkmale (definiert über die Makros in "GTA_Traits.h") zu erhalten. +Bei Festlegung auf FALSE wird Schritt 2 der Merkmalermittlung ausgelassen, und nur die regulären Ausdrücke von Merkmalen treten in Kraft. + + + Trennzeichen für Testnamen + + + {0}{1} Testergebnisse wurden an Visual Studio gemeldet. Ausführbare Datei: {2}. Dauer: {3} + + + Maximale Anzahl von Threads, die für die Testausführung verwendet werden können (0: ein Thread pro Prozessor). + + + {0}<<<<<<<<<<<<<<< Ende der Ausgabe + + + "{0}" darf nie < 0 sein. + + + Verschiedenes + + + Zeitstempelausgabe + + + "{0}" entspricht dem benutzerdefinierten regulären Ausdruck "{1}". + + + Testausgabe: + + + Unbekannter Testfallstatus: {0} + + + Wenn diese Option nicht leer ist, wird hiermit das Arbeitsverzeichnis zur Ausführung der Tests festgelegt (Standard: {0}) +Beispiel: {1}\MyTestDir +Platzhalter: + + + Durchschnittliche Differenz zwischen der erwarteten und der tatsächlichen Dauer: {0} ms + + + {0}Aus der XML-Ergebnisdatei "{2}" wurden {1} Testergebnisse erfasst. + + + Bei TRUE werden Tests in zufälliger Reihenfolge ausgeführt. Beachten Sie, dass eine echte zufällige Reihenfolge nur vorliegt, wenn alle Tests in nicht paralleler Weise ausgeführt werden. Andernfalls werden die ausführbaren Testdateien wahrscheinlich mehrmals ausgeführt – die zufällige Reihenfolge ist dann auf die entsprechenden Ausführungen beschränkt. +Google Test-Option: {0}. + + + Der Debuggerprozess wird an "{0}" angefügt. + + + {0} entspricht nicht dem benutzerdefinierten regulären Ausdruck "{1}". + + + Bei TRUE wird die Debugausgabe in der Testkonsole ausgegeben. + + + Bei TRUE werden alle (ausgewählten) Tests auch dann ausgeführt, wenn sie deaktiviert wurden. +Google Test-Option: {0}. + + + {0} – Verzeichnis, das die ausführbare Testdatei enthält. + + + Testlauf + + + Debuginformationen drucken + + + {0}Das Testverzeichnis "{1}" konnte nicht gelöscht werden: {2} + + + Tests zufällig ausführen: Startwert + + + !! Dieser Test ist wahrscheinlich ABGESTÜRZT !! + + + Möglicherweise ist der Test "{0}" abgestürzt. + + + Die Testergebnisdatei "{0}" konnte nicht (vollständig) analysiert werden. Ihre ausführbare Testdatei ist möglicherweise abgestürzt. Ausnahmemeldung: {1} + + + {0}Bei der Testausführung wurden {1} Testergebnisse an Visual Studio gemeldet. Ausführbare Datei: {2} + + + Auch deaktivierte Tests ausführen + + + Anzahl von Sekunden, nach denen ein Fehler bei der Testermittlung angenommen wird. 0: Unendliches Timeout. + + + Batchdatei für Testeinrichtung + + + Wenn diese Option nicht leer ist, wird der Inhalt der PATH-Variablen des Testausführungs- und Ermittlungsprozesses angehängt. +Beispiel: C:\MyBins;{0}\MyOtherBins; +Platzhalter: + + + Der Testfall "{0}" wurde hinzugefügt. + + + {0} Tests werden ausgeführt... + + + {0}Es wurden {1} Testergebnisse für Tests erstellt, die weder in der XML-Ergebnisdatei noch in der Konsolenausgabe gefunden wurden. + + + Der Testfall ist im Analyzer bereits enthalten: {0} + + + Testen Sie, ob die folgenden Befehle erfolgreich in der Befehlszeile ausgeführt werden können. (Stellen Sie sicher, dass sich alle erforderlichen Binärdateien im PATH befinden.){0}{1} + + + Batchdatei für Testeinrichtung + + + Beachten Sie, dass aufgrund der Einschränkungen des VS-Frameworks für Komponententests die Ausgabe der ausführbaren Testdatei beim Debuggen von Tests nicht in der Testkonsole angezeigt werden kann! + + + {0}{1}: Beendet mit Code "{2}". Ausgeführter Befehl: {3} + + + Ausnahmen abfangen + + + Laufzeitverhalten + + + Der Prozess "{0}" konnte nicht beendet werden. Beginn: {1}. {2} + + + Test "{0}": {1} ms erwartet, tatsächlich: {2} ms + + + Einstellungen für ausführbare Testdatei "{0}": {1} + + + Die Dauer in der Zeile "{0}" konnte nicht analysiert werden. + + + Die Ausgabedatei ist nicht vorhanden. Sind die Tests abgestürzt? + + + Die ausführbare Datei "{0}" kam von einem anderen Computer und wurde zum Schutz dieses Computers blockiert. + + + Es werden Tests in {0} Threads ausgeführt. + + + Vor der Testermittlung + + + {0}Stapelüberwachung:{1}{2} + + + SettingsWrapper wird bereits mit Einstellungen einer ausführbaren Datei im Thread "{0}" ausgeführt. Diese können nicht außerdem vom Thread "{1}" verwendet werden. + + + Parallele Testausführung + + + Der Quellspeicherort für den Test "{0}" wurde nicht gefunden. + + + Die Ausführung erfolgt bereits mit Einstellungen für die ausführbare Datei "{0}". Ein Wechsel zu den Einstellungen für "{1}" ist nicht möglich. + + + Für die ausführbare Testdatei "{0}" wurden keine Einstellungen konfiguriert. Sie wird mit folgenden Projektmappeneinstellungen ausgeführt: {1} + + + Timeout des regulären Ausdrucks "{0}": {1} + + + Die Werte für die Testdauer konnten nicht gelesen werden: {0} + + + Symbolinformationen analysieren + + + Parallelisierung + + + Die Teilung wird basierend auf Testzeiträumen verwendet. + + + Ermöglicht das Überschreiben/Hinzufügen von Merkmalen für Testfälle, die mit einem regulären Ausdruck übereinstimmen. Merkmale werden in 3 Phasen erstellt. Zunächst werden Merkmale den Tests entsprechend der Option "Merkmale vor" zugewiesen. Anschließend werden die Merkmale der Tests (definiert über die Makros in "GTA_Traits.h") den Tests hinzugefügt, wobei die Merkmale von Phase 1 mit neuen Werten überschrieben werden. Schließlich wird die Option "Merkmale nach" ausgewertet, wobei vorhandene Werte erneut überschrieben werden. +Syntax: "{0}" trennt den regulären Ausdruck von den Merkmalen, Name und Wert des Merkmals werden durch "{1}" getrennt, und jedes Paar von regulärem Ausdruck und Merkmal wird durch "{2}" getrennt. +Beispiel: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium. + + + Wenn diese Option nicht leer ist, werden mit diesem regulären Ausdruck die ausführbaren Google Test-Dateien ermittelt, die Ihre Tests enthalten. +Standardmäßiger regulärer Ausdruck: {0}. + + + Vor der Testausführung auszuführende Batchdatei. Wenn Tests parallel ausgeführt werden, wird die Batchdatei einmal pro Thread ausgeführt. Platzhalter: + + + Bei TRUE wird der Test- und Debugausgabe ein Zeitstempel hinzugefügt. + + + Projektmappeneinstellungen werden wiederhergestellt: {0} + + + Testausgabe drucken + + + Keine Berichtsdaten. + + + Google Test fängt Ausnahmen standardmäßig ab; beim entsprechenden Test tritt ein Fehler auf, und die Testausführung wird fortgesetzt. Bei Auswahl von FALSE können Ausnahmen durchlaufen und werden vom Debugger abgefangen. +Google Test-Option: {0}. + + + Regulärer Ausdruck für Testermittlung + + + Nach der Testausführung auszuführende Batchdatei. Wenn Tests parallel ausgeführt werden, wird die Batchdatei einmal pro Thread ausgeführt. Platzhalter: + + + {0} – Pfad eines Verzeichnisses, das von den Tests verwendet werden kann. +{1} – ID des Threads, der die aktuellen Tests ausführt. + + + {0} – ausführbare Datei, die die Tests enthält. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.TestAdapter.Resources.de.resx b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.TestAdapter.Resources.de.resx new file mode 100644 index 000000000..b86395a3f --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/de/GoogleTestAdapter.TestAdapter.Resources.de.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument enthält keinen RunSettings-Knoten! Das Zusammenführen von Einstellungen wird abgebrochen... + + + Der Prozess wurde nicht gefunden. + + + Visual Studio-Version: {0} + + + Für {0} ist mindestens Visual Studio 2012 Update 1 erforderlich. Aktualisieren Sie Ihre Visual Studio-Installation. + + + Die Visual Studio-Version konnte nicht ermittelt werden. Für {0} ist mindestens Visual Studio 2012 Update 1 erforderlich. + + + Der Debugger konnte nicht an den Prozess "{0}" angefügt werden:{1}{2} + + + Das Merkmal besitzt denselben Namen wie die Basistesteigenschaft und wird daher bei der Testfallfilterung ignoriert: {0} + + + Testfallfilter: {0} + + + Bei "{0} {1}" sind die folgenden Fehler und Warnungen aufgetreten:{2} + + + Die Visual Studio-Version wurde nicht ermittelt: {0} + + + Unbekanntes Enumerationsliteral: {0} + + + Unbekanntes Enumerationsliteral: {0} + + + Ausnahme beim Ausführen von Tests: {0} + + + Testermittlung abgeschlossen, Gesamtdauer: {0} + + + Debuggen ist nur möglich, wenn GoogleTestAdapter in Visual Studio installiert wurde. Dieses Feature (und weitere Features wie Visual Studio-Optionen, -Symbolleiste und -Projektmappeneinstellungen) wird von der NuGet-Installation nicht unterstützt. + + + Testausführung abgebrochen. + + + Unbekannte Visual Studio-Version: {0} + + + Die Datei mit den Projektmappen-Testeinstellungen konnte nicht analysiert werden. Prüfen Sie folgende Datei: {0} +Ausnahme: {1} + + + (Aktivieren Sie den Debugmodus, um weitere Informationen zu erhalten.) + + + Es wurde kein Testfallfilter angegeben. + + + Projektmappeneinstellungen: {0} + + + Ausnahme beim Ermitteln von Tests: {0} + + + FEHLER: {0} + + + Testermittlung + + + Der Testfallfilter ist ungültig: {0} + + + Google Test-Ausführung abgeschlossen, Gesamtdauer: {0} + + + Möglicherweise enthält "Visual Studio ActivityLog.xml" weitere Informationen zu diesem Problem (z. B. https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/). + + + Der Debugger wurde an den Prozess "{0}" angefügt. Dauer: {1} ms + + + "{0}" entspricht "{1}". + + + "{0}" entspricht nicht "{1}". + + + Der Debugger konnte nicht an den Prozess "{0}" angefügt werden. Es ist keine Fehlermeldung verfügbar. + + + Testausführung + + + Ungültig: {0} + + + Warnung: {0} + + + Eine Datei mit Projektmappen-Testeinstellungen wurde unter "{0}" gefunden, enthält aber keinen {1}-Knoten. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/de/NewProjectWizard.Properties.Resources.de.resx b/GoogleTestAdapter/Packaging.GTA/de/NewProjectWizard.Properties.Resources.de.resx new file mode 100644 index 000000000..7e3812b52 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/de/NewProjectWizard.Properties.Resources.de.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Testprojektkonfiguration + + + Dynamisch verknüpfen (empfohlen) + + + Nutzen Sie Google Test als: + + + C++-Laufzeitbibliotheken: + + + "NuGet.VisualStudio.Interop.dll" wurde nicht gefunden. Der Assistent kann nicht fortgesetzt werden. + + + <Kein Projekt> + + + Das Windows-SDK wurde nicht gefunden. + + + Statische Bibliothek (LIB) + + + Wählen Sie das zu testende Projekt aus (optional): + + + Statisch verknüpfen + + + Dynamische Bibliothek (DLL) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/de/VSPackage.de.resx b/GoogleTestAdapter/Packaging.GTA/de/VSPackage.de.resx new file mode 100644 index 000000000..0e625064b --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/de/VSPackage.de.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAwAAAAAAAEACAAbJQAAxgAAAEBAAAABAAgAKBYAAOElAAAwMAAAAQAIAKgOAAAJPAAAICAAAAEA + CACoCAAAsUoAABgYAAABAAgAyAYAAFlTAAAQEAAAAQAIAGgFAAAhWgAAAAAAAAEAIAAdFwAAiV8AAEBA + AAABACAAKEIAAKZ2AAAwMAAAAQAgAKglAADOuAAAICAAAAEAIACoEAAAdt4AABgYAAABACAAiAkAAB7v + AAAQEAAAAQAgAGgEAACm+AAAiVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IA + rs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACSwSURBVHhe7Z1fyGVV+ceP + P6iQvBCGLiIjQyPFEsMpDImERCEpkUiwbowilC7sorqpm0AJ0iQvRC8cEoKC/lxkeDFSMBAyQyhKGVoh + GdmVDAhNSFf9+pw53zPPPLPW2mufvfY5+5z9fGDxPOtZa+/1nL2f55m93/c9ay46ceLEYs7ccMMN/0X+ + 5z//WbzjHe9Y2mp0sclcJEhPSeirw5Dj56RLnjp16qLlwEz5v5UMNqA24CRlQ0oX9GvPl9JhyPFz0EG6 + tc2ZKAAbsknwATaa9D7nyOkw5Pg56EDfyiAKwEbUBFxOR9KGnMPqMOT4Oejg+4Bt7kQB6IECCKngSQVc + SZfse1xKhyHHz0GH3JidM1eiAFRC4NhG8CA1lgowSOmpuX11GHL8HHQozQuiAFRD4Njm8QGlfk6CDcaU + 7rH23DGhn9Whdt6ciQLQE4JHUkGE9AFFPxdo2NVyaFznkU1S5w39Qh265iGDKAC98EEG2BRMdjynI23L + kRqnX7PGnHWomWfnz5koAJWUAolWE3ToKZmaK/zxoed1KI0J7MFZogBUUgqqXNDldAt2mkX93PGhX6hD + aR6oj5Rt7kQB6IGCCqkAkm0THalmoT/kvHPToWsekuZtcycKQCUKGkAqgGTbRPdyyLnmqkPNPCTN2+ZO + FIBKFCwEkKS1bap7/NiYutZCevqcB3al566r1yW9be5EAaiEgFEA+UBqoXu5DXa5divkc+01pi89WCzi + 68A9vg4srO306dOLSy65ZHHmzJnBchfscu0WHDlyZCl1T0r3zs4B9Ll/HTgKQM8C4MfuuOOOpR7shh// + +McXFAGvg++L2A8gqKYUYME04L5Y6Pv7ZuXciQJQiQ+iSP7pwT3x98Xa4r5dSBSASiKI9gdfrCWxqR/3 + 8CxRACohcHwQSQbTQffI6564d2eJAlAJgeSDKRdcwW7IJb/V456dTxSAnvjACqZBTfLrflnb3IkC0INc + YAW7g79jyN2XrvuFbe5EAaikK5iC3cAfMXUlvL9f0q1trkQBqCQXTMH0yCU8diuDKADVEDQKrAik6aBX + APCF2d4f3TtL3L8oANUQPD6AfD/YPv4VwIPNJr/V4/5FAeiND6Zgt/gnAJ/gahD37kKiAPTAB5D0YHfk + ngCkW2nvV9y7s0QBqMQGkHQFV7A7/BOAT2zdJ0nNjXt3ligAlSiwFEzggy3YPqknAHuP/P2iyab5cyb2 + A+jYD8BiAyclhe3ndPHpT396pW1Gzffh+/hTsqWOHct/kVpziG5tEPsBBEUIGEkFjg8k9cHare7R/Cnh + fZf0n6H0uVri/RmqWxmcJQpAARtEwgdPKphyc1IBORXkk9eFtW3D95w/fXWQbm3AvLkTBaBAKqCQXX3p + QnPAz50C1qecjkx9hjGo8adGB/peatzOmytRAAwKEkFfAePHIDdfei4owc7dNTk/rT3FWP7X+NOlg+9b + GAuiAKwhUHywpGw2qJC+7205XXOngnxD0mQD67OVYyEf5I9sklo/p0NuzM4JogBcgA8cSR84GhOpuSXd + yl1jfUPSZEOm/LXHtEY+WKxPkNOhNE/Szp8zUQAMucAR1oYs9bvOBSnbLrB+SsqGpMmGzH2e1th1anSo + nQfY5k4UgBU1gYNU0Pg5oH4O5uk4HTMFvF/+c1kbchv+ez9SuqfmGKvnzjMnogD8j1yAQFeQaD5SLQfz + us63C7r80pg+mz7zWNjzl3SomVc6fu5EAfgfBAUBoQBRcKSkAkhS0Ffrwp5nSli/vG7B7m0tSfkA3i4f + 7Ly++tyJArCCgPBBQT8VLNhoFmuzx1gd/NhUyPks3UrQ+Biwhl/PSq1t/YI+OjKIArBGAdEVOIBUEJVs + VofS2C7J+WV17ytjY8Fafj363jew8/ro1jZnogCsICBywZ8KvBqbdCiN7Qr5gNRnSPmoMWuTHBPvg9eR + mzadZ+5EATDYoO7SJQkia1NQ2WPsHK/vCta2zfquvtf9nDHJ+eD92bTp+LkTBWAgBJFNCvW9raTvAta2 + zSP/BX35PLbv9vwlPRjO7PcDGEpqPwFRE8i73A8A1Pd2kbLbY+64446VdTNK+wF0+YR84YUXZv19/qHE + E8BI2OAt6bvE+iKwya+Ur9bmj22FfOD8dl3JsdefE1EARsAGaU7fNTm/kLQuv7HRxkA+WFI+BcOJAtAY + H6Q5HdTfBSm/RM1nQPrjWlPjRzCMKACNyQWptyNpuyTli2xdupVjUONHMJwoAI0hQBWkSNkkFbzIXQZy + yhdrq9ElW1PrRzCcKACNIUB9YtBPBe8ugzjli7WldMuYvufW9vYxfZgLUQBGwgZvTpfcBfghX2p8RQf1 + JceAtbS21rVyGz7MhSgAI2CDtKTvEvzoSiDvN1J+j+l/yjetb30KhhMFoDE+SLv0XVPyUVI2JG1b/pd8 + 28b6cyAKQGNyQZoL5F2SSyrvO8hXP28scv5YPRhOFIDGEKAKUqRsklMJ5JwvOR2ZGxuD1DpeD4YTBaAx + BKhPDPrbTJ4SWlc+SYecj6V5reHcah6/fmpO0I8oACOhIO3Stwnr2WaTSP2cjtRc4ftDYR3bLFpL/oCf + E/QnCsAI2CCt0bcF69nmwaccqWNS52iB/Chdo5KvQT1RABpjg7ZG3wVKHusHssYn/zlak7o23k/1x1h/ + bkQBaIxNDh/IsOvgTfmFTf7YcT+3NNaC3PmR9MHbg2FEARgBBSlSgTuFoLXJ4xOJlhuH0lgr+pyfOcFw + ogA0xgYvkqZgtbIrwMdAa6bWtzY/nhtDb43Oj9T57ZrWr2A4UQAa45PDBq9Hc7aJ/EGmfLQ65Mb8vBbY + cyJpfk3J1mvPlSgAjSE4FaA+eKXvKni9D7Scj5Ab8/Na4M8vmVoTqTnBMKIANIbgVKCWsAG9LbReV4JB + bszrreCcnE/nz60Jdk4wjCgAI1ETwNuGdbV2rX81eis4X9c57bqt158jUQBGoJQofmybsG5X0uR8z+kt + 0fWo9SEYThSAxuQCFkpjrahJjJwfff2rWasPrNfKt6COKAAD4D8FURKUghe2EcCcs+u8OT9KOtjzSre2 + oaTWETnfQP8xS7AZUQAGkgpMH6S5MfQxKK23iY6kyWZlK7QOSMqPlG/Q2oc5EgVgQ+x/CWZJBWkqgP28 + VtSs11dH0mSzYy3xa9BA0q5pffjIRz4STwEbEgVgA+xjpw1a2wdrz+ktqVlvE11SNqTsLfFraB1JrWnn + SY9Xgc2IAjAABaQNRk/KpvmvvfbaWh9KKila6gJbyr4p//rXv1bahYXFroPUuGwt/ZgrUQB6Yh/9FZBq + PkCRPkAZF8eOHTuvvwmXXHLJeWuOrSNp2Frw+OOPr7Tz8etLpnwC+vEU0J8oAD3wyQ9INQtzaNLtfHj6 + 6acXzz///FIfwpkzZ9bntOuMpUvKNpQ//OEPi5/97Ger3tnrk1s/ZQPbjyLQjygAG0CwEXRCug9WzZNN + 83j0f+KJJ5b6GPg1W+sCWwt++tOfLq9JF1rP+uF9DPoRBaAS/y9LTWL44JT+gx/8oFmw6hUAOH9uzSG6 + R/bceF9Yi2siOC826SB/kBqTzevxFFBPFIAK7KO/l6kAVKCmxnjcffXVV5f6UOx6kFtzqA7qg2xg7UPg + mvhXAWH9QdJkQ1odkFEE6ogC0EEqkGwAgtdzY6+88srycbcV9957b9aHTXWL7EiatUm3PgzlySefXF4j + i19PUjakX58+c6IIdBMFoBIfiF5HAnpu3qOPPrqeN5Qbb7xxccstt6x654JeOvj1a3RQ30pa6jh8OHr0 + 6No+lIcffnil5f0U2GjSS3ODNFEACvT5F8QGn6QNwh/96EfNHv0vvfTSxT333LPqnVvTrpdLiC4dSZNN + pOZKx5eLL754bRvC66+/vv7VYG496Uhaybd4CigTBSCDDRwbVJDTU3Dsn/70p8Xx48dXluF89atfXRw5 + cmSpyzckzdo20ZE02ZBdx+ELPrXiqaeeWl6zGrp8gygCeaIAVKBAAgIrJcEGnT3mkUceOW/eEG666aZl + A78ezdo20SVlQ9Ych08f//jH17ahPPDAA2t/OKfVRckfqwd5ogAk0L8YCh4rbQAK7HbMzufRn8faFvDo + f999963Pz3rSwfuwqS6w0aR3HfflL3+52avAm2++ubx2oDWQNGur1eMpIE0UAEcqUBR8qcBCqoEde/nl + l5ePs6341re+lV1rDB1Jkw1ZOo5XAXxEbwHX7sUXX1yvgZQfKR88dg5EEbiQKAAZckHmdS/t2Pe///2l + 3oLPfvazi+uuu269FtT4N0SXlA3ZddzVV1+99LUVXEP5Arl1Ncf37ZzgQqIAGOy/EARNKqhSupfAez+P + sS247LLLFl/60pfWayLlW86nVrrARpNeOg5f8bkFXEOupeD88kNoXdmtTwIbLZ4CzicKwAoFhgLFo6DS + uA846XDixInFyZMnV71hsA7v/UgFtXT5AWPrSJpsyNJc+dwCridN2HX8uiWfNB5F4BxRABwKFEsqkCzW + dvr06aY/9b/11lsX11xzzap3jlygj6VLyoYszcVnfJd9KLqm1hetK5tFY9IlW/lzKEQB+B/2X3+RChZs + qWCyx/FHLLY/hCuuuGL5OO3xa29LF9ho0nPH6VXAH78JnO+hhx5anwvpz2vXR9KXbsEeTwFnmX0BSAWC + DSQfVAqs1PgzzzyzePbZZ5d6C772ta+t16NBbu1t6kiabMjUXBqfoRVcW66xxa4rvD+gvpVRBKIAJFHg + 2CBCl0yN8332xx57bN0fyt1337246qqrljrnpOXW3rYuKRsyN5fPcNdddy37LeAa85oFfi3vDzbwY8E5 + Zl0A+BeA4FCgWBQ0GpeuALI66NGfNgTOee211y7uvPPO886VW3tXusBGk56ae/vtty8/Uws474MPPrjU + cz5KlnwVc99ReLYFQI9/BEkqUGRLjXvY3outrVqhL/poXevP1HQkTTZkai6fSXOHkttGzPqgdayO9OPI + Ob8KxCvAChsUAhtNusat3np7Lx6XL7/88lUvv+5UdEnZkKm5fKavfOUr62OG4rcRs+uWyPk/V2ZZAHzF + 90EhXUElG9Lq0HJ7r+uvv/68R3+tNXVdYKNJt3Ph5ptvXn5Gf9wmcE67jZjw69q1SmNzfQqYXQGoTX50 + SdmQVm+9vdfXv/71tV7ya6o6kiYb0o6D/YxD8duI5fyC3JjV51gEZlUA+iS/dGuzcoztvfx3/PdNl5QN + 6efyGfmsmj8Uu42YX0vYfkmHuRWB2f4MIBcIFuxqjNt5bF1FvwVjbe+1C11go0m3c/msfGZ/zKbYbcQ8 + fu2SjpwbsykAtrKXAsGCXU194Fd+Lb/jP9b2XrvUkTTZkHZc24i1wG4jBloj51tOl5zTU8AsCkBt8qNb + KaQj92l7r13qkrIh7bi2EZNtKH4bsZJvOV2gz6UIzOoVoCYQJIUdg33a3mvXusBGk67xsbcRA7tel460 + 9jlw8AVAlbzr5kuXlM2O7eP2XlPQkTTZkDQYYxsxnRty55U95yfM4SngoAtA3+SXLrDRYN+399qlLikb + Ujr/tVnrbcS4V5zPNov6yJKf6IdeBGbxCqAbCvbmdulIGrZ9395r17rARpPOONei9TZiwLnVLPRzfmpM + +qFzsAXA/usvaVvq5ntd8lC295qCjqTJhqSNuY0Y5PyxOqiPVDvkp4CDLACpG8ZNtQ3szc/pPE7a7aiG + wDmnsL3XLnVJ2ZBqY28jpvW1hvUDcn7BoRaBg34F0A0H6Vbam5+C751/97vfXfWGM5XtvXatC2w06WNs + I6a9A4Dz2vVSfekpeYgcXAGgUuuGcUN9MOmmS6qprznwwx/+cG0bytS295qCjqTJhmz5KsD5uIcWu16q + Xxo7xL0DDqoA6DFNN0yUbrCah62nXnrppVVvOFPd3muXuqRsSJquVQuef/75C7YR8z4I6wuor3noh/Yq + cJCvANww2+wN9zffSo1pey+NDWXK23vtWhfYaPD+97+/+TZidu8AkA/WF/WhZD8kDqYApB791cDeUKt7 + GDt27FiTG80a+7C91xR0JE02rlnLbcTsdwX8uvTB2gU2P/+QngIOogD4G2JvqKS9sSld8je/+c3ysbEV + +7S91y51SWvTNmItYBsxtm4Dv67H+oGkWR/hUIrAQb0C2Jvmb6LwN1IS5r691651IZu2EWsF99ZvI2bX + 936InI+HwN4XAFVi3RCkbpi3yZ6Csdjea3c6SEcyBrfddtso24jp/HYt8D7ZvtWRh/AUsNcFIHUDuDH2 + BoJssvsbCb/61a9ie68d6l7aMb4wBLINQduIlXzK+WF1yX0vAntbALoufO6GWdSP7b2moXs0xqsA17QV + 3OvSNmLIGn8l97kI7P0rADcEdDMgd8M82Bl/9NFH1+cZyiFt77UrXdLyyU9+cnH06NHkWF9Yi3suvB+Q + 8sujufvMXhYAVVzdHKRuhr1hOd3eUL4/3urR/1C399q2LolNffSW24hxz/WrQe8HUusK6wf4ufv6FLB3 + BcAnPyB1M/wNSumSsb3XdHUPY2NvIyY4v1+DPj6A9VNzse1jEdjbVwDdgNRNsTrk7LG91/R1SdF6G7FS + DOR8EjouNbYv7FUB6Kqw/kbaGwT2Zsb2XvuhS2JTv+U2YsQAseAp+SRdPtmxfXsK2JsCYC8sF1rS3gzp + wt4gpI6L7b32S/doG7FW8Br44osv9vYPUmP7VAT27hXAXmiBTTfEjlsdScMW23vtpy4JXHP2DmgBaxAT + SKj1CaljLCnbVNmLAqCKmroJgNQNSY3rhiBje6/91SWxIcfeRkxr52A8N2dfngImXwByFzIXGCU9tvfa + f92CbaxtxFhTrYucr/tQBPbuFUDoxuhip26A1WN7r8PSJa+88srm24hpHbUSJV/3gUkXAPvoD/5CIzWW + myNie6/D0iWxtd5G7P7771/1zlLyo6Qjp76N2GQLgH180sUEe6GRGkvNUT+29zpM3TLmNmJ9fLI6kjbl + V4HJvwJwQcFeVJDdX3Dfj+29Dl9Hck/G3kZM1Ppn5VSZZAGwj/5cUKS/oLrQ/oIL9fl7bz+2KbG91zR1 + yTG3EQPWLPmR0nXMVJ8CJlcAfPIDUhdSkgaSmivo873vP//5zyvLMDhfbO81XV3whOZtm8I2YsSQJXXu + kk/qI6dYBCb7CqCLJuyFRWpcUk1zeHzje9/YWsDWVLG91/R1XgVabiNm9w5gHSu1JtLbwPpl7VNiUgXA + /usPumj2QmrMX1w1YKz19l5sTZVaO/Rp6XDzzTc33UZMewdwPq2H1Holm3TJqT0FTKYA5C6Mv5DSUxdX + xPZe89ZB96wF2kYMtAaSZtdN2fw4/SkVgUkUAH9B/MVDWl1j4C/umNt7BWfRvZiyzj3j3sk+lCeffHL9 + KiD8upIpv0B95FSKwGSeAOwFlNTFQ9oLCbqQIInt4YcfXveH4rf3AuvHXHVJe4+mqHPv2EasFcSWyK2L + pC9d+DlTYecFQJVQF85fHGy6oHY8dUH5tc0bb7yx1IfCOb/xjW+sekGK1L2Yms5vbtivQf0hsHdAbhsx + oT6SZm3SJafwFHBRqy/HbIK9AP4i2YsKuXHpbO30ne98Z9lvAX9Z9j//Vr0gBd/LP3PmzOQlf9nn/5fg + ITz44IPr74Hk4lLIpriUbuedOnXqopW6dSZZADx2LKUj+XvwVl/zDYISPFGwi5Biz0pI2Sx+7gsvvLCz + ArCzVwCSnw9Ps8hmm7+wXudmRPIH24JY0zZixGAuLgU2mnQ/d5evAjspAPrAfHh/sWSzDVIXDtjKqeX2 + XkFQAzFH7EFXjCJpuXH0XRWBSfwWwF+MlPQXDklrub1XEPSB/SUUn5BKbmFtOX0XbL0A+EpXczGwq2kc + 2XJ7ryDoC/H40EMPrXpnUYwqXq2tS9/FU8BWC0Bt8lsdaZvgh5cnT55c9YJgNzz77LPnbTPn47Ymxq2+ + 7SKws1eA2guTkmzvVfoPHYJgmxCLxKTHx3JtvG+TrRUAW9n6XhgvW27vFQRDIRb93xnUxHVO3+Y2Ylsp + ADXJDzmdeaL19l5B0IJW24hJ39arwFZfAXIfGujnpOa13t4rCFrSYhsxmxPbYPQCoEpW+qC5Dy47Elpu + 7xUErSE2W2wjBvS38RQwagGo+QC5i4C0+tNPP73coikIpkzLbcRg7CKw1VcAkfrgXreSx6onnnhiqQfB + 1Gm1jZjGx2S0AkDl4gP4D6G+/6ApXbTc3isIxoZYbbGNmPQxnwJGKQBymA+gDyH0oVMf1IOdx6lW23sF + wbZotY0Y0B+rCDQvAClHcx/O62A/eOvtvYJgm7TcRgzGKAKj/wyg9OG8HUmTreX2XkGwC1ptIzZWHjQt + AL5C5T4w6ANZO1I637dutb1XEOyKVtuISW/9FNCsAPRNftsHbDRge6/jx4+v+0Gwz7B3ADGdwuYCkiab + ckI6IFsWgVFeAeS01yE3hqRhe+CBB5YyCA6FVEz7XJD0OWFRjrSiSQGgIqU+gNUhN2aPje29gkNkqtuI + DS4AcqTrQ+XGrP7yyy/H9l7BwdJyGzFoUQSavQKUHM2NeT229woOnRbbiIE9xxAGFYCaCpT7EP4DxfZe + wRwg7odsIwa2P3TvgI0LgJJfDltSjpc+UGzvFcyJTbcRg9TYkFeBwa8A1jnAKcnUh7A6xPZewRzpu40Y + 5MaG5M5GBcD/6+8dFd4xzbP2+I5/MEeI+dptxCA3Jn3Tp4DeBSC1UMoxpHRhx4AtlHgcCoI5UrONGHQl + v/RNisDGrwDeSQtjNOnWSUlt75U7RxDMgdI2YuDzp6Qj+9KrAKQqjBa1DiHlkHcSkHr01/FBMEeIf7+N + mMjlD3i7ZN+ngI2eAKwzdnFAl7Q26RDbewXBOfw2YqmcsvmTyjE7tw/VBaBUWVKOpmzA96Nje68gOB/2 + vSi9CgifT6Ck11ifp4DeTwBaBGmbRX2knQtsleTnB8HcISfY+k4ob6QD/ZSuuXaslqoCkKooLGabhb4c + kqTF9l5BkMduIwY2r3yC2zGLxmqfAno9AXById3KlIOSPN7E9l5BUIZtxPyrQC63UrmHlL2GXgWAk2sh + oQVlTzkIx44d6+VYEMwV+1uBUm5JF9hS9hKdBUCPEpxY5BzJLc7fPcf/5xcEdfBbAX1XoCvPrI6kYYOa + 14CNfwjYpYP6P/nJT9a2IAi6IWfA5pLPq1TOpWwligXAVhA5kFs8p/OnjmyMGARBPeQMuePzCknL4ed3 + PQX0/hkA6OQea5f+61//etkPgqAfv/jFL1baOcipVO4JFYfSHEt1AdCJldhIv5ik5rD9UfzaLwg2g6cA + bSHmUY55Ham8lCzRWQA4iRbwC6UWs3P4k1/pQRD0hxwCm0c2x6wO6nt7jmwB0LsDJ/En4uSSuUXY7OC5 + 555bzw2CoD/kkN04xOaczz/bRyr3Sj8HqHoCkPQnV9+PwalTp9bHBkGwGeQQuSQ9lXPgxyy+b6n6GYBO + rhP5xfzCyNy7SxAE/VABsDmonINcPnqZorMAcHDuBLmFgUeXIAiGwx/RkV/KMelg887qoDklkgUg9c5g + T24XScF/8FGzeBAE3ZBL5JTNP5rNSauDH8v9HKD4BMCBkvZkknICrP6Xv/xlKYMgaINyyuef16E05ikW + ACV1zcns2F//+telDIKgDcqprpyszVfR+QSQOpnV/QKM/f3vf1/1giBoQe6/F7eU8jVH5w8Ba/AFIf72 + Pwja8tZbb62081+3cwmf0lMMLgB+ATYzKC0YBEF/yDO7UYjNsU2THwYVAL8Y/Pvf/17rQRC0g9zy5BI+ + lZspBhWA1GJvvPHGWg+CoB3klqU2+dGRKQY/AaQWyC0WBEEblHe1uqRn8BOAPzGPKbnFgiDYHL0C5JIc + Unb0HIN/CAjeidKCQRBsxtve9ralJNfIMeWd8s3KVCFIMbgA+AXe+c53rrQgCFry9re/faWln77p90l+ + 2KgApBZAF12LBkHQhlzC53LT01kA/MHq5xZ717vetZRBELTF51YuB1M6MkWxAHCgTiR0Mr+A4BUgt1gQ + BJtjX69zOZjTbY5aql4BaheDd7/73dnFgiDYHHILavPR52aKqleAPosBjyq2HwTBMC677LJ1TiGV1Kkc + LOWmp1gASicqLfa+971vqQdB0AZyCpRXNueglI8lOn8GwEl0Ii1mZWqxD3zgA0sZBEEbbE6Ra2o+L1P5 + WKLzFYCT+BNp0dRi6Ndcc81SD4KgDcop5aOah/yz+L4nWQBOnTp10UpdU0p4r1955ZVJ54Ig6I9yyqLE + tvmH9HmnfiqnofMJALoS3uvID33oQ0s9CIJhHD16dJlT5BjYXBPYUuOy5egsAP5kduGUXQt+4hOfOG9u + EASb8dGPfnQpyadcPiJL4zmqfgbAiXQyJFiZWvD6669fyiAINod8qs2lXC6WyBYA+87AifzJ6OcWRD9y + 5Mj60SUIgs0gh8ilLkrJn3v/h+qfAUjmEj6l33bbbetjgyDoDzkkbG5ZSrnYRVUB4ISlRVI6XH311Ysr + rrhi1QuCoA/kznXXXbfUfZ6B+jW5mKOqAGyCHPjMZz5T5UgQBOfzuc99bqVdmORImmzg59RQLACld4cS + 1oFbbrklviIcBD3hb/9vuummVe8sNq+QNNlUBHy/K4ernwB0Ur8AupAuqTlf+MIXzpsXBEEZcsaivJMu + aXPO92voLABdvw2wzgjpmksl4w+Dap0KgrlCjvBrP/uvv01sqwube6B+zRP8Rj8DSDkB2DUmJyS/+MUv + LmUQBGVsrthcy+nKN9uvpXcBKDmh5mHeVVddtbjrrruS40EQnIUcIVcgl2uQyyPm9aGqAPjXAPAOgRa3 + Y0jpt99+++KDH/zgUg+C4BzkyLXXXrvMkS5snknafIPaH+APegVAppwQqfFvfvObi0svvXRpC4LgHOSG + csjmU0632DzrQ3UBSD0FIGk5B/048pJLLll8+9vfXs8JgrlDLtx///3LP/lVAitfpIPNLasjrV77rz9s + 9ARgyTkl51OO8t3me++9d2kLgrlDLtgNP5Q7yhuoybNN6FUAfGUpOSU95Sg2/kDo7rvvXtqCYK6QA+SC + UH4gfc6UdMk+//rDoCeAlCMefQjrqGx33nnn8gLkjg2CQ4bYJweET2jlimwlfVN6F4DcUwBSjngnNaYm + G/BTz/j1YDAniPVS8is3vK1L7/uvP1x04sSJldqPG2644b8r9TzkkHUshZ0HJ0+eXDzyyCPrfhAcGsqH + ++67r/ov/br6YpPkh8E/BLSknMNGky6peUgaF4SfhPIliCA4RC6++OLF9773vd7Jj1RTX+ND2fgJAOxT + gJzzukiN6wNIR54+fXrx+OOPL5577rn1eBDsK4rtG2+8cXHPPfect7uPYt7r4PsWP7bpv/4wqACAfxVI + faiUzWLnAfozzzyzeOyxx5Z92YNg3yCW+TWfftJvY115YHVIjaWOgyHJD4MLAKR+HuAdhb42ngZ+/vOf + L44fP760BcG+QPzeeuuti89//vMX7OlnY97Hf25MurUNTX4YpQBYZ8E6nrKBHfe2V155ZfHLX/4yXguC + SaO45avvfKPPf6nHxjaU+jndMpkCALnfCkDqA8iGBOm5D03/b3/72+Kpp55a/sZAtiDYJTZu2cGXbbxK + 3+azMWuPTc21upctkh+aFQDoehXwH8KTmpvSz5w5s/jtb3+7+N3vfrd4/fXXl7Yg2CaKY35rdfPNNy8+ + 9alPVf+Az6IxxbD00rGtkh+aFgCwRSD3QaQjQXppbk5/7bXXFr///e8Xf/zjHxcvvfTSeWNWBsEQbDzx + iP/hD3948bGPfWxx+eWXr+PLzgGrW2TvGvc6tEx+aF4AIPczAa+L3PgmOq8Jr7766uIf//jH4p///Ofi + zTffXP4w8a233lqOB0EXiif+deer6+95z3sW733ve5fbdKce74VsijPpKQml+WB1aJ38MEoBgE1eB1ro + uXHoOjb00HN0HZc7vus4S2l8jOSHpn8JaEk5nPpwSPrSoXQhvB1p9dxxubHQQ/d6SnYdJ7DZY7uO65oL + YyU/jFYAIOW4Ppz/4L7vdUjNQdo5KXLnDD30nG7BrtZ1HJJWM9fqwtvGTH4YtQCA/wD6cEj7YX3fX4jc + xaJJTx0beuhDdKRtUDpOsmZuSpeEsZMfRvsZQIrcDweRYD+8JXexRG489NBb6F5acsdCaj50zdtG4ovR + nwAspacBGhcCvNQ8f6HA2kIPfQzdgl0th8Y5XvOslF02u842kx+2WgAg9wF1YTz2Qgn17TGhhz62jrQt + R2qcfupclm0nP2z1FcDT9atCT81NCj30MXUvhe9D6nivwy4SX+y0AIhSIfDSjoUe+q50pFA/JcHqll0m + vtj6K0CK1IXQBStdzNBD35WOVLPQ1zxkjikkP0ziCcCSehoQNTcm9NC3pXtpx3JMJfHF5AqApaYY5C5+ + 6KFvS/fSM7Wkt0y6AIhSIRBdNyn00MfSc0w58cVeFABLTTFIMeQGhx56LfuQ9Ja9KwCeTQtCELRg3xLe + s/cFIEUUhWAM9j3ZL2Sx+H/fhIcDqijXBgAAAABJRU5ErkJggigAAABAAAAAgAAAAAEACAAAAAAAABAA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQkJCAEVFRQBKSkoAT09PAFNTUwBXV1cAWlpaAF5eXgBgYGAAZmZm + AG1tbQBwcHAAdnZ2AH9/fwCJiYkAkZGRAJWVlQCcnJwAoaGhAKWlpQCvr68Aubm5AMHBwQDFxcUAysrK + AM3NzQDR0dEA1NTUANjY2ADf398A4ODgAOTk5ADq6uoA7e3tAPHx8QD29vYA+Pj4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Allgemein + + + Parallelisierung + + + Google Test + + + Testadapter für Google Test + + + Ermöglicht die Verwendung von Visual Studio-Testtools mit Komponententests, die für Google Test geschrieben wurden. Die Nutzungsbedingungen und Drittanbieterhinweise stehen im Installationsverzeichnis der Erweiterung zur Verfügung. + + + + + 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 + AAAAAAA= + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Common.Resources.es.resx b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Common.Resources.es.resx new file mode 100644 index 000000000..b45675dd8 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Common.Resources.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test Adapter para Google Test: iniciando la ejecución de pruebas... + + + Test Adapter para Google Test + + + {0}Compruebe la sección de solución de problemas de Test Adapter para Google Test en https://go.microsoft.com/fwlink/?linkid=848168. + + + Test Adapter para Google Test: iniciando la detección de pruebas... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.DiaResolver.Resources.es.resx b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.DiaResolver.Resources.es.resx new file mode 100644 index 000000000..a6c53c24a --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.DiaResolver.Resources.es.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + No se encontró el archivo .pdb del archivo "{0}" y no se obtendrán las ubicaciones de origen de las pruebas. + + + No se encontró el número de línea para {0}. + + + Use la opción del enlazador /DEBUG:FULL (Visual Studio 2017) o /DEBUG (Visual Studio 2015 y versiones posteriores). No use /DEBUG:FASTLINK. + + + ImageDirectoryEntryToData failed! + + + No se puede cargar {0}. + + + No se encontró el archivo msdia.dll para analizar los archivos *.pdb y no se obtendrán las ubicaciones de origen de las pruebas. + + + Error de UnMapAndLoad. + + + Analizando el archivo PDB {0}. + + + Intentos de encontrar el archivo PDB: {0} + + + Asegúrese de generar archivos PDB *completos* para los ejecutables de las pruebas a fin de obtener las ubicaciones de origen de estas. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Resources.es.resx b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Resources.es.resx new file mode 100644 index 000000000..ee4f820cd --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.Resources.es.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Si habilita esta opción, un depurador potencialmente asociado detectará errores de aserción y entrará automáticamente en modo interactivo. +Opción de Google Test: {0} + + + {0}>>>>>>>>>>>>>>> Salida del comando "{1} {2}" + + + No se pueden enumerar los casos de prueba para el ejecutable "{0}": error de ejecución del proceso con el código de salida {1}. + + + Los nombres de prueba producidos por Google Test pueden contener el carácter "/", lo que provoca que Visual Studio corte el nombre después de "/" si la ventana del Explorador de pruebas no es lo suficientemente ancha. El valor de esta opción, si no está vacío, reemplazará al carácter "/" para evitar ese comportamiento. Tenga en cuenta que "\", " ", "|" y "-" producen el mismo comportamiento (". ", "_", ":" y "::" se sabe que funcionan). Tenga en cuenta también que los rasgos de regexes se comparan con los nombres para mostrar de las pruebas (y, por tanto, deben ser coherentes con esta opción). + + + Número de duraciones de casos de prueba reales: {0} + + + {0}Se recopilaron {1} resultados de pruebas de la salida de la consola. + + + El proceso se cerró con el código {0}. + + + El proceso {0} finalizado se inició el {1} + + + {0}{1}: "{2}" se ejecutó correctamente. + + + Orden aleatorio de las pruebas por ejecución + + + {0}La ejecución se ha cancelado: {1} + + + Se superó la longitud máxima permitida de la línea de comandos ({0}) después de incluir {1} pruebas (la longitud de la cadena siguiente es {2}). + + + Se encontraron {0} símbolos del método de prueba y {1} símbolos de rasgos en el archivo binario {2}. + + + Tiempo de expiración para la detección de la prueba en s + + + {0}{1}: se detectó una excepción, mensaje: "{2}". Comando ejecutado: "{3}" + + + {0} - directorio de la solución (solo disponible en Visual Studio) + + + Número máximo de subprocesos + + + Si es true, la ejecución de archivos ejecutables de prueba se termina activamente si se cancela la ejecución de la prueba. Tenga en cuenta que la terminación de un proceso de prueba puede tener todo tipo de efectos secundarios; en particular, Google Test no podrá realizar ninguna tarea de apagado. + + + {0}Excepción durante la ejecución de las pruebas: {1} + + + No se encontró ningún archivo indicador de Google Test para el ejecutable {0}. + + + 0: el valor de inicialización se calcula a partir de la hora del sistema, 1<=n<={0}: se utiliza el valor de inicialización dado. Consulte la nota de la opción "{1}". +Opción de Google Test: {2} + + + {0}Parece que {1} casos de prueba no se han ejecutado. ¿Está repitiendo una serie de pruebas, pero estas han cambiado durante el proceso? Casos de prueba:{2}{3} + + + Parámetros de ejecución de prueba adicionales + + + Se encontró un archivo indicador de Google Test para el ejecutable {0}. + + + Se encontraron {0} duraciones esperadas en las duraciones reales. + + + Extensión de PATH + + + No se puede analizar la instancia de regex "{0}": {1} + + + Las pruebas se ejecutarán el número de veces seleccionado (-1: infinito). +Opción de Google Test: {0} + + + {0}En concreto: inicie el símbolo del sistema, cambie al directorio "{1}" y ejecute el comando siguiente para asegurarse de que las pruebas pueden ejecutarse en general. {2}{3} {4} + + + Se usa un separador en función del número de pruebas. + + + Literal desconocido: {0} + + + Utilice el nuevo marco de ejecución de pruebas (experimental) + + + No se puede analizar el par "{0}". Mensaje de la excepción: {1} + + + Se encontraron {0} pruebas en el ejecutable {1}. + + + Tenga en cuenta que la consola de pruebas no mostrará ningún resultado si se ejecutan pruebas de forma simultánea. + + + Salida del comando: + + + Imprimir el resultado de los ejecutables de Google Test en la ventana Resultados de pruebas. + + + Archivo por lotes de desmontaje de pruebas + + + {0}La ejecución tardó {1} + + + Directorio de trabajo + + + Archivo por lotes de desmontaje de la prueba + + + La ejecución en paralelo se ha seleccionado como opción, pero las pruebas se ejecutan secuencialmente porque el depurador está asociado. + + + Archivo {0} no válido. {1} + + + Después de la detección de pruebas + + + {0} coincide con la instancia de regex predeterminada {1} + + + No hay ningún caso de prueba conocido para el resultado de la prueba de la línea "{0}". ¿Está repitiendo una serie de pruebas, pero estas han cambiado durante el proceso? + + + La detección de pruebas se canceló después de {0} s para el ejecutable {1}. + + + La ejecución de pruebas paralelas se consigue mediante subprocesos diferentes, cada uno de los cuales tiene asignado un número de pruebas para ejecutar. Los subprocesos invocarán entonces secuencialmente los ejecutables necesarios para producir los resultados de la prueba correspondientes. + + + {0}El caso de prueba ya está en el analizador: {1} + + + Parámetros adicionales para el ejecutable de Google Test. Marcadores de posición: + + + {0} peores diferencias: + + + No se pudo analizar XmlNode: "{0}". Mensaje de la excepción: {1} + + + Terminar procesos al cancelar + + + {0}No se pudo ejecutar el archivo ejecutable "{1}" de la prueba: {2} + + + Desviación estándar: {0} ms + + + Regexes para asignación de rasgo + + + Número de duraciones de casos de prueba esperadas: {0} + + + Si es true, se muestra un cuadro de diálogo con las notas de la versión una vez que la extensión se ha actualizado. + + + Utilice el nuevo marco de ejecución de pruebas. Ventajas: la detección de los bloqueos de la prueba y la impresión del resultado de la prueba también funcionan en modo de depuración. + + + >>> Estadísticas de programación <<< + + + Mostrar las notas de la versión después de la actualización + + + Comando ejecutado: "{0} {1}". Directorio de trabajo: "{2}" + + + Excepción al resolver los rasgos y las ubicaciones de las pruebas en {0}\n{1} + + + {0} no coincide con la instancia de regex predeterminada {1} + + + Número de repeticiones de prueba + + + El comando no generó ningún resultado. + + + {0}{1}: no se encontró el archivo: {2} + + + Expresión regular "{0}" no válida. Mensaje de la excepción: {1} + + + Interrumpir en caso de error + + + Analizar la información de símbolos de depuración para los archivos ejecutables de prueba a fin de obtener la información y los rasgos de la ubicación de origen (definidos a través de las macros en GTA_Traits.h). +Si se establece en false, se descartará el paso 2 de la detección y solo será efectivo regexes. + + + Separador de nombres de prueba + + + {0}Se notificaron {1} resultados de pruebas para Visual Studio. Archivo ejecutable: "{2}". Duración: {3} + + + El número máximo de subprocesos que se utilizará para la ejecución de la prueba (0: un subproceso para cada procesador). + + + {0}<<<<<<<<<<<<<<< Final de salida + + + {0} nunca debe ser < 0 + + + Varios + + + Resultado de marca de tiempo + + + {0} coincide con la instancia de regex personalizada {1} + + + Resultado de la prueba: + + + Estado de caso de prueba desconocido: {0} + + + Si no está vacío, establecerá el directorio de trabajo para ejecutar las pruebas (predeterminado: {0}) +Ejemplo: {1}\MyTestDir +Marcadores de posición: + + + Promedio de diferencia entre la duración real y la esperada: {0} ms + + + {0}Se recopilaron resultados de pruebas ({1}) del archivo XML de resultados {2}. + + + Si es true, las pruebas se ejecutarán en orden aleatorio. Tenga en cuenta que solo se da un verdadero orden aleatorio al ejecutar todas las pruebas de manera no paralela. De lo contrario, los ejecutables de prueba probablemente se ejecutarán más de una vez; en ese caso, el orden aleatorio se restringe a las ejecuciones correspondientes. +Opción de Googe Test: {0} + + + Asociando el depurador a {0}. + + + {0} no coincide con la instancia de regex personalizada {1} + + + Si es true, se imprimirá el resultado de la depuración en la consola de prueba. + + + Si es true, se ejecutarán todas las pruebas (seleccionadas), incluso si se han deshabilitado. +Opción de Google Test: {0} + + + {0} - directorio que contiene el ejecutable de prueba + + + Ejecución de pruebas + + + Imprimir información de depuración + + + {0}No se puede eliminar el directorio de prueba "{1}": {2} + + + Orden aleatorio de pruebas: valor de inicialización + + + ¡Esta prueba probablemente se ha BLOQUEADO! + + + probablemente el motivo es un bloqueo de la prueba {0} + + + No se pudo analizar (por completo) el archivo de resultados de pruebas {0}. Probablemente el ejecutable de la prueba se ha bloqueado. Mensaje de la excepción: {1} + + + {0}Se notificaron {1} resultados de pruebas para Visual Studio durante la ejecución de las pruebas. Archivo ejecutable: "{2}" + + + Ejecutar también pruebas deshabilitadas + + + Número de segundos para que se suponga que la detección de la prueba no se ha completado correctamente. 0: tiempo de expiración infinito + + + Archivo por lotes de configuración de la prueba + + + Si no está vacío, el contenido se anexará a la variable de PATH de los procesos de detección y ejecución de la prueba. +Ejemplo: C:\MyBins; {0}\MyOtherBins; +Marcadores de posición: + + + Se agregó el caso de prueba "{0}". + + + Ejecutando {0} pruebas... + + + {0}Se crearon {1} resultados de algunas pruebas que no se han encontrado en el archivo XML de resultados ni en la salida de la consola. + + + El caso de prueba ya está en el analizador: {0} + + + Compruebe si los comandos siguientes pueden ejecutarse correctamente en la línea de comandos (asegúrese de que todos los binarios requeridos están en la RUTA DE ACCESO):{0}{1} + + + Archivo por lotes de instalación de pruebas + + + Tenga en cuenta que debido a las restricciones del marco de Unit Testing de VS, el resultado del archivo ejecutable de la prueba no puede mostrarse en la consola de prueba al depurar pruebas. + + + {0}{1}: se cerró con el código {2}. Comando ejecutado: "{3}" + + + Detectar excepciones + + + Comportamiento en tiempo de ejecución + + + No se puede finalizar el proceso {0} iniciado el {1}: {2} + + + Prueba {0}: duración esperada {1} ms, duración real {2} ms. + + + Configuración del ejecutable "{0}" de la prueba: {1} + + + No se puede analizar la duración de la línea "{0}". + + + El archivo de salida no existe. ¿Se bloquearon las pruebas? + + + El ejecutable {0} procede de otro equipo y se bloqueó para ayudar a proteger este equipo. + + + Ejecutando pruebas en {0} subprocesos. + + + Antes de la detección de pruebas + + + {0}Seguimiento de la pila:{1}{2} + + + SettingsWrapper ya se está ejecutando con la configuración de un ejecutable en el subproceso "{0}". No lo puede usar también el subproceso "{1}". + + + Ejecución de pruebas paralelas + + + No se encontró la ubicación de origen de la prueba {0}. + + + La ejecución ya se está realizando con la configuración para el ejecutable {0}. No se puede cambiar a la configuración para {1}. + + + El ejecutable "{0}" de la prueba no tiene valores configurados. La ejecución se realiza con la configuración de la solución: {1} + + + Se agotó el tiempo de espera de la instancia de regex "{0}": {1} + + + No se pueden leer las duraciones de las pruebas: {0} + + + Analizar la información de símbolos + + + Paralelización + + + Se usa un separador en función de las duraciones de las pruebas. + + + Permite agregar o reemplazar rasgos para los casos de prueba que coinciden con una expresión regular. Lso rasgos se generan en 3 fases. En primer lugar, se asignan rasgos a pruebas de acuerdo con la opción "Traits before". A continuación, los rasgos de las pruebas (definidos a través de las macros en GTA_Traits.h) se agregan a las pruebas, reemplazando los rasgos de la fase 1 por nuevos valores. Por último, se comparan con la opción "Traits after", de nuevo reemplazando. +Sintaxis: {0} separa el regex de los rasgos, el nombre del rasgo y el valor están separados por {1} y cada par de regex y rasgo está separado por {2}. +Ejemplo: MySuite\. *{0}tipo{1}Small{2}MySuite2\. * | MySuite3\. *{0}Tipo{1}Medio + + + Si no vacío, se utilizará este regex para detectar los archivos ejecutables de Google Test que contienen las pruebas. +Regex predeterminado: {0} + + + Archivo por lotes que se ejecutará antes de la ejecución de la prueba. Si las pruebas se ejecutan en paralelo, el archivo por lotes se ejecutará una vez por subproceso. Marcadores de posición: + + + Si es true, se agrega una marca de tiempo al resultado de la prueba y la depuración. + + + Restaurando la configuración de la solución: {0} + + + Resultados de la prueba de impresión + + + No hay nada que notificar. + + + Google Test detecta las excepciones de forma predeterminada; se produce un error en la prueba correspondiente y continúa la ejecución de la prueba. Si elige false se permite el paso de las excepciones, con lo que el depurador las detectará. +Opción de Google Test: {0} + + + Regex para la detección de la prueba + + + Archivo por lotes que se ejecutará después de la ejecución de la prueba. Si las pruebas se ejecutan en paralelo, el archivo por lotes se ejecutará una vez por subproceso. Marcadores de posición: + + + {0} - ruta de acceso de un directorio que puede se puede utilizar por las pruebas +{1} - identificador del subproceso que ejecuta las pruebas actuales + + + {0} - archivo ejecutable que contiene las pruebas + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.TestAdapter.Resources.es.resx b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.TestAdapter.Resources.es.resx new file mode 100644 index 000000000..24aa5a050 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/es/GoogleTestAdapter.TestAdapter.Resources.es.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ¡RunSettingsDocument no contiene un nodo RunSettings! Cancelando la combinación de parámetros de configuración... + + + No se encontró el proceso. + + + Versión de Visual Studio: {0} + + + {0} requiere como mínimo Visual Studio 2012 Update 1. Actualice la instalación de Visual Studio. + + + No se puede identificar la versión de Visual Studio. {0} requiere como mínimo Visual Studio 2012 Update 1. + + + No se puede asociar el depurador al proceso {0}:{1}{2} + + + El rasgo tiene el mismo nombre que la propiedad de prueba base, por tanto, se omitirá en el filtrado de casos de prueba: {0} + + + Filtro de casos de prueba: {0} + + + Se produjeron los errores y advertencias siguientes durante la {0} {1}:{2} + + + No se encontró la versión de Visual Studio: {0} + + + Literal de enumeración desconocido: {0} + + + Literal de enumeración desconocido: {0} + + + Excepción durante la ejecución de las pruebas: {0} + + + Detección de pruebas completada. Duración total: {0} + + + La depuración solo es posible si GoogleTestAdapter se ha instalado en Visual Studio. La instalación de NuGet no admite esta opción (ni otras características, como la configuración de la solución, la barra de herramientas y las opciones de Visual Studio). + + + Ejecución de pruebas cancelada. + + + Versión de Visual Studio desconocida: {0} + + + No se pudo analizar el archivo de configuración de prueba de la solución, archivo de comprobación: {0} +Excepción: {1} + + + (habilitar el modo de depuración para obtener más información) + + + No se ha proporcionado ningún filtro de casos de prueba. + + + Configuración de la solución: {0} + + + Excepción durante la detección de pruebas: {0} + + + ERROR: {0} + + + detección de pruebas + + + El filtro del caso de prueba no es válido: {0} + + + Ejecución de Google Test completada. Duración total: {0} + + + Puede que haya más información sobre el problema en el archivo ActivityLog.xml de Visual Studio (consulte, por ejemplo, https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/). + + + El depurador se asoció al proceso {0}. Se tardó {1} ms. + + + {0} coincide con {1} + + + {0} no coincide con {1} + + + No se puede asociar el depurador al proceso {0}. Mensaje de error no disponible. + + + ejecución de pruebas + + + {0} no válido. + + + Advertencia: {0} + + + El archivo de configuración de prueba de la solución se encontró en "{0}", pero no contiene el nodo {1} + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/es/NewProjectWizard.Properties.Resources.es.resx b/GoogleTestAdapter/Packaging.GTA/es/NewProjectWizard.Properties.Resources.es.resx new file mode 100644 index 000000000..8a2c03823 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/es/NewProjectWizard.Properties.Resources.es.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Configuración del proyecto de prueba + + + Vincular dinámicamente (recomendado) + + + Consumir Google Test como: + + + Bibliotecas en tiempo de ejecución de C++: + + + No se encuentra NuGet.VisualStudio.Interop.dll. El asistente no puede continuar. + + + <No hay ningún proyecto> + + + No se encontró Windows SDK. + + + Biblioteca estática (.lib) + + + Seleccionar proyecto para probar (opcional): + + + Vincular estáticamente + + + Biblioteca dinámica (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/es/VSPackage.es.resx b/GoogleTestAdapter/Packaging.GTA/es/VSPackage.es.resx new file mode 100644 index 000000000..06f0c99b7 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/es/VSPackage.es.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + General + + + Paralelización + + + Google Test + + + Test Adapter para Google Test + + + Habilita las herramientas de prueba de Visual Studio con las pruebas unitarias escritas para Google Test. Los términos de uso y los avisos de terceros están disponibles en el directorio de instalación de la extensión. + + + + + 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 + EQAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Common.Resources.fr.resx b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Common.Resources.fr.resx new file mode 100644 index 000000000..a42d31f99 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Common.Resources.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Adaptateur de test pour Google Test : démarrage de l'exécution de tests... + + + Adaptateur de test pour Google Test + + + {0}Consultez la section de résolution des problèmes de l'adaptateur de test pour Google Test sur https://go.microsoft.com/fwlink/?linkid=848168 + + + Adaptateur de test pour Google Test : démarrage de la découverte de tests... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.DiaResolver.Resources.fr.resx b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.DiaResolver.Resources.fr.resx new file mode 100644 index 000000000..59ce8dd80 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.DiaResolver.Resources.fr.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Le fichier .pdb du fichier '{0}' est introuvable. Vous n'obtiendrez aucun emplacement source pour vos tests. + + + Échec de la localisation du numéro de ligne pour {0} + + + Utilisez l'option de l'éditeur de liens /DEBUG:FULL (Visual Studio 2017) ou /DEBUG (Visual Studio 2015 et versions antérieures) - N'utilisez pas /DEBUG:FASTLINK ! + + + ImageDirectoryEntryToData failed! + + + Impossible de charger {0}. + + + Le fichier msdia.dll est introuvable pour l'analyse des fichiers *.pdb. Vous n'obtiendrez aucun emplacement source pour vos tests. + + + Échec de UnMapAndLoad ! + + + Analyse du fichier PDB {0} + + + Tentatives de localisation du fichier PDB : {0} + + + Si vous souhaitez obtenir les emplacements sources de vos tests, veillez à générer des fichiers PDB *complets* pour vos exécutables de test. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Resources.fr.resx b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Resources.fr.resx new file mode 100644 index 000000000..2b135fba0 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.Resources.fr.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + S'il est activé, tout débogueur potentiellement attaché intercepte les échecs d'assertion et passe automatiquement en mode interactif. +Option Google Test : {0} + + + {0}>>>>>>>>>>>>>>> Sortie de la commande '{1} {2}' + + + Impossible de lister les cas de test pour l'exécutable '{0}' : échec de l'exécution du processus. Code de sortie {1} + + + Les noms de tests produits par Google Test peuvent contenir le caractère '/', ce qui amène Visual Studio à couper le nom après le signe '/' si la fenêtre de l'Explorateur de tests n'est pas assez large. La valeur de cette option, si elle n'est pas vide, remplace le caractère '/' pour éviter ce comportement. Notez que '\', ' ', '|' et '-' entraînent le même comportement ('.', '_', ':', et '::' fonctionnent correctement). Notez également que les regex de caractéristiques sont évalués par rapport aux noms d'affichages des tests (et qu'ils doivent donc être cohérents par rapport à cette option). + + + Nombre de durées réelles de cas de test : {0} + + + {0}Collecte effectuée de {1} résultats des tests à partir de la sortie de console + + + Le processus s'est arrêté avec le code {0} + + + Arrêt du processus {0} démarré le {1} + + + {0}{1} : exécution réussie de '{2}' + + + Lecture aléatoire des tests par exécution + + + {0}L'exécution a été annulée : {1} + + + La longueur maximale autorisée pour la ligne de commande ({0}) a été dépassée après l'inclusion de {1} tests (longueur de la prochaine chaîne {2}) + + + {0} symboles de méthodes de test et {1} symboles de caractéristiques trouvés dans le fichier binaire {2} + + + Délai d'expiration de la découverte de tests en secondes + + + {0}{1} : exception interceptée. Message : '{2}'. Commande exécutée : '{3}' + + + {0} - répertoire de la solution (disponible uniquement dans Visual Studio) + + + Nombre maximal de threads + + + Si la valeur est true, les exécutables de test en cours d'exécution s'arrêtent quand l'exécution du test est annulée. Notez que l'arrêt d'un processus de test peut avoir toutes sortes d'effets secondaires ; par exemple, Google Test ne peut effectuer aucune tâche d'arrêt. + + + {0}Exception levée durant l'exécution des tests : {1} + + + Fichier indicateur Google Test introuvable pour l'exécutable {0} + + + 0 : la valeur initiale est calculée à partir de l'heure du système, 1<=n<={0} : la valeur initiale donnée est utilisée. Consultez la remarque de l'option '{1}'. +Option Google Test : {2} + + + {0}{1} les cas de test semblent ne pas avoir été exécutés - Est-ce que vous répétez une série de tests alors que des tests ont changé dans l'intervalle ? Cas de test :{2}{3} + + + Paramètres d'exécution de tests supplémentaires + + + Fichier indicateur Google Test trouvé pour l'exécutable {0} + + + {0} durées attendues ont été trouvées dans les durées réelles + + + Extension de PATH + + + Impossible d'analyser le regex '{0}' : {1} + + + Les tests sont exécutés en fonction du nombre de répétitions sélectionné (-1 : infini). +Option Google Test : {0} + + + {0}En particulier : lancez l'invite de commandes, accédez au répertoire '{1}', puis exécutez la commande suivante pour vérifier si vos tests peuvent s'exécuter de manière générale.{2}{3} {4} + + + Utilisation du séparateur en fonction du nombre de tests + + + Littéral inconnu : {0} + + + Utiliser le nouveau framework d'exécution de tests (expérimental) + + + Impossible d'analyser la paire '{0}'. Message d'exception : {1} + + + {0} tests trouvés dans l'exécutable {1} + + + Notez qu'aucune sortie de test ne s'affiche dans la console de test quand les tests sont exécutés simultanément ! + + + Sortie de la commande : + + + Permet d'afficher la sortie des exécutables Google Test dans la fenêtre Sortie des tests. + + + Fichier de commandes de nettoyage des tests + + + {0}L'exécution a duré {1} + + + Répertoire de travail + + + Fichier de commandes de nettoyage des tests + + + L'exécution parallèle est activée dans les options, mais les tests sont exécutés de manière séquentielle, car le débogueur est attaché. + + + Fichier non valide {0}. {1} + + + Après la découverte de tests + + + {0} correspond au regex par défaut {1} + + + Aucun cas de test n'est connu pour le résultat de test de la ligne '{0}' - Est-ce que vous répétez une série de tests alors que des tests ont changé dans l'intervalle ? + + + La découverte de tests a été annulée après {0} s pour l'exécutable {1} + + + L'exécution parallèle des tests s'effectue via différents threads, chacun d'eux étant chargé d'exécuter un certain nombre de tests. Les threads appellent ensuite séquentiellement les exécutables nécessaires pour produire les résultats des tests correspondants. + + + {0}Cas de test déjà présent dans l'analyseur : {1} + + + Paramètres supplémentaires pour l'exécutable Google Test. Espaces réservés : + + + {0} plus mauvaises différences : + + + Impossible d'analyser XmlNode : '{0}'. Message d'exception : {1} + + + Terminer les processus en cas d'annulation + + + {0}Échec de l'exécution de l'exécutable de test '{1}' : {2} + + + Écart type : {0} ms + + + Regex pour l'assignation de caractéristiques + + + Nombre de durées attendues de cas de test : {0} + + + Si la valeur est true, une boîte de dialogue contenant les notes de publication s'affiche après la mise à jour de l'extension. + + + Utilisez le nouveau framework d'exécution de tests. Avantages : la détection des incidents de tests et l'affichage des sorties de tests fonctionnent également en mode débogage. + + + >>> Statistiques de planification <<< + + + Afficher les notes de publication après la mise à jour + + + Commande exécutée : '{0} {1}', répertoire de travail : '{2}' + + + Exception levée durant la résolution des emplacements et des caractéristiques de tests dans {0}\n{1} + + + {0} ne correspond pas au regex par défaut {1} + + + Nombre de répétitions de tests + + + La commande n'a produit aucune sortie + + + {0}{1} : fichier introuvable : {2} + + + Expression régulière non valide "{0}", message d'exception : {1} + + + Arrêter en cas d'échec + + + Permet d'analyser les informations liées aux symboles de débogage des exécutables de test pour obtenir les informations et les caractéristiques relatives à l'emplacement source (définies via les macros de GTA_Traits.h). +Si ceci a la valeur false, l'étape 2 de la découverte des caractéristiques est ignorée, et seuls les regex des caractéristiques sont pris en compte. + + + Séparateur de noms de tests + + + {0}{1} résultats des tests signalés à Visual Studio. Exécutable : '{2}'. Durée : {3} + + + Nombre maximal de threads à utiliser pour l'exécution des tests (0 : un thread pour chaque processeur). + + + {0}<<<<<<<<<<<<<<< Fin de la sortie + + + {0} ne doit jamais être < 0 + + + Divers + + + Sortie de l'horodatage + + + {0} correspond au regex personnalisé {1} + + + Sortie de test : + + + État du cas de test inconnu : {0} + + + Si la valeur n'est pas vide, permet de définir le répertoire de travail pour l'exécution des tests (valeur par défaut : {0}) +Exemple : {1}\MyTestDir +Espaces réservés : + + + Différence moyenne entre la durée attendue et la durée réelle : {0} ms + + + {0}Collecte effectuée de {1} résultat(s) de(s) test(s) à partir du fichier XML de résultats {2} + + + Si la valeur est true, les tests sont exécutés dans un ordre aléatoire. Notez qu'un véritable ordre aléatoire est obtenu uniquement au moment de l'exécution de tous les tests de manière non parallèle. Sinon, les exécutables de test sont plutôt exécutés plusieurs fois, l'ordre aléatoire étant limité aux exécutions correspondantes. +Option Google Test : {0} + + + Attachement du débogueur à {0} + + + {0} ne correspond pas au regex personnalisé {1} + + + Si la valeur est true, la sortie de débogage est affichée sur la console de test. + + + Si la valeur est true, tous les tests (sélectionnés) sont exécutés, même s'ils ont été désactivés. +Option Google Test : {0} + + + {0} - répertoire contenant l'exécutable de test + + + Exécution des tests + + + Afficher les informations de débogage + + + {0}Impossible de supprimer le répertoire de tests '{1}' : {2} + + + Lecture aléatoire des tests : valeur initiale + + + !! Ce test est probablement bloqué en raison d'un INCIDENT !! + + + raison probable : un incident lié au test {0} + + + Impossible d'analyser (complètement) le fichier de résultats des tests {0} - Un incident a probablement eu lieu avec votre exécutable de test. Message d'exception : {1} + + + {0}{1} résultats des tests signalés à Visual Studio durant l'exécution des tests. Exécutable : '{2}' + + + Exécuter également les tests désactivés + + + Seuil en secondes au-delà duquel la découverte de tests est considérée comme un échec. 0 : délai d'expiration infini + + + Fichier de commandes de préparation des tests + + + Si sa valeur n'est pas vide, le contenu est ajouté à la variable PATH des processus d'exécution et de découverte des tests. +Exemple : C:\MyBins;{0}\MyOtherBins; +Espaces réservés : + + + Ajout effectué du cas de test '{0}' + + + Exécution de {0} tests... + + + {0}Création effectuée de {1} résultats des tests pour les tests introuvables dans le fichier XML de résultats et la sortie de console + + + Cas de test déjà présent dans l'analyseur : {0} + + + Permet de tester si les commandes suivantes peuvent s'exécuter correctement sur la ligne de commande (vérifiez que tous les fichiers binaires nécessaires se trouvent dans PATH) :{0}{1} + + + Fichier de commandes de préparation des tests + + + Notez qu'en raison de restrictions du framework de tests unitaires VS, la sortie de l'exécutable de test ne peut pas être affichée dans la console de test durant le débogage des tests ! + + + {0}{1} : sortie avec le code {2}, commande exécutée : '{3}' + + + Intercepter les exceptions + + + Comportement au moment de l'exécution + + + Impossible de terminer le processus {0} commencé le {1} : {2} + + + Test {0} : durée attendue : {1} ms. Durée réelle : {2} ms + + + Paramètres de l'exécutable de test '{0}' : {1} + + + Impossible d'analyser la durée à la ligne '{0}' + + + Le fichier de sortie n'existe pas. Est-ce que vos tests ont été perturbés par un incident ? + + + L'exécutable {0} provient d'un autre ordinateur et a été bloqué pour protéger cet ordinateur. + + + Exécution des tests sur {0} threads + + + Avant la découverte de tests + + + {0}Arborescence des appels de procédure :{1}{2} + + + SettingsWrapper s'exécute déjà avec les paramètres d'un exécutable sur le thread '{0}', il ne peut pas également être utilisé par le thread '{1}' + + + Exécution parallèle des tests + + + L'emplacement source du test {0} est introuvable + + + L'exécution est déjà en cours avec certains paramètres pour l'exécutable {0}. Impossible de changer de paramètres pour {1} + + + Aucun paramètre configuré pour l'exécutable de test '{0}' ; exécution avec les paramètres de la solution : {1} + + + Le regex '{0}' a expiré : {1} + + + Impossible de lire les durées des tests : {0} + + + Analyser les informations de symboles + + + Parallélisation + + + Utilisation du séparateur en fonction des durées de tests + + + Permet de remplacer/d'ajouter des caractéristiques pour les cas de test qui correspondent à un regex. Les caractéristiques comportent 3 phases. Tout d'abord, les caractéristiques sont assignées aux tests en fonction de l'option 'Caractéristiques avant'. Ensuite, les caractéristiques des tests (définies via les macros de GTA_Traits.h) sont ajoutées aux tests pour remplacer les caractéristiques de la phase 1 par de nouvelles valeurs. Enfin, l'option 'Caractéristiques après' est évaluée, une fois de plus selon le mode du remplacement. +Syntaxe : {0} sépare le regex des caractéristiques. Le nom et la valeur de la caractéristique sont séparés par {1}, et chaque paire associant un regex à une caractéristique est séparée par {2}. +Exemple : MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + Si sa valeur n'est pas vide, ce regex est utilisé pour découvrir les exécutables Google Test contenant vos tests. +Regex par défaut : {0} + + + Fichier de commandes à exécuter avant l'exécution des tests. Si les tests sont exécutés en parallèle, le fichier de commandes est exécuté une fois par thread. Espaces réservés : + + + Si la valeur est true, un horodatage est ajouté à la sortie de test et à la de sortie de débogage. + + + Restauration des paramètres de la solution : {0} + + + Afficher la sortie des tests + + + Rien à signaler. + + + Google Test intercepte les exceptions par défaut. Le test correspondant donne lieu à un échec et l'exécution des tests se poursuit. Si vous choisissez la valeur false, les exceptions peuvent passer, ce qui permet au débogueur de les intercepter. +Option Google Test : {0} + + + Regex pour la découverte de tests + + + Fichier de commandes à exécuter après l'exécution des tests. Si les tests sont exécutés en parallèle, le fichier de commandes est exécuté une fois par thread. Espaces réservés : + + + {0} - chemin d'un répertoire utilisable par les tests +{1} - ID du thread exécutant les tests actuels + + + {0} - exécutable contenant les tests + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.TestAdapter.Resources.fr.resx b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.TestAdapter.Resources.fr.resx new file mode 100644 index 000000000..07f32d59d --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/fr/GoogleTestAdapter.TestAdapter.Resources.fr.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument ne contient aucun nœud RunSettings ! Annulation de la fusion des paramètres... + + + Processus introuvable + + + Version de Visual Studio : {0} + + + {0} nécessite au moins Visual Studio 2012 Update 1. Mettez à jour votre installation de Visual Studio. + + + Impossible d'identifier la version de Visual Studio. {0} nécessite au moins Visual Studio 2012 Update 1. + + + Impossible d'attacher le débogueur au processus {0} :{1}{2} + + + La caractéristique a le même nom que la propriété de test de base. Elle va donc être ignorée pour le filtrage de cas de test : {0} + + + Filtre de cas de test : {0} + + + Les erreurs et avertissements suivants se sont produits durant {0} {1} :{2} + + + Version de Visual Studio introuvable : {0} + + + Littéral enum inconnu : {0} + + + Littéral enum inconnu : {0} + + + Exception levée durant l'exécution des tests : {0} + + + Découverte de tests effectuée. Durée totale : {0} + + + Le débogage est possible uniquement si GoogleTestAdapter est installé dans Visual Studio. L'installation de NuGet ne prend pas en charge ce cas de figure (ni les autres fonctionnalités telles que les options, la barre d'outils et les paramètres de solution Visual Studio). + + + Exécution de tests annulée. + + + Version inconnue de Visual Studio : {0} + + + Impossible d'analyser le fichier de paramètres de test de la solution. Vérifiez le fichier : {0} +Exception : {1} + + + (activez le mode débogage pour plus d'informations) + + + Aucun filtre de cas de test fourni + + + Paramètres de la solution : {0} + + + Exception levée durant la découverte de tests : {0} + + + ERREUR : {0} + + + la découverte de tests + + + Le filtre de cas de test est non valide : {0} + + + Exécution de Google Test effectuée. Durée totale : {0} + + + Il existe peut-être plus d'informations sur le problème dans le fichier ActivityLog.xml de Visual Studio (consultez par exemple la page https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/) + + + Débogueur attaché au processus {0} en {1} ms + + + {0} correspond à {1} + + + {0} ne correspond pas à {1} + + + Impossible d'attacher le débogueur au processus {0}, aucun message d'erreur disponible + + + l'exécution de tests + + + {0} non valide + + + Avertissement : {0} + + + Un fichier de paramètres de test de la solution a été trouvé sur '{0}', mais il ne contient pas le nœud {1} + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/fr/NewProjectWizard.Properties.Resources.fr.resx b/GoogleTestAdapter/Packaging.GTA/fr/NewProjectWizard.Properties.Resources.fr.resx new file mode 100644 index 000000000..3a4f2043c --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/fr/NewProjectWizard.Properties.Resources.fr.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Configuration du projet de test + + + Lien dynamique (recommandé) + + + Consommer Google Test en tant que : + + + Bibliothèques runtime C++ : + + + NuGet.VisualStudio.Interop.dll est introuvable. L'Assistant ne peut pas continuer. + + + <Aucun projet> + + + SDK Windows introuvable. + + + Bibliothèque statique (.lib) + + + Sélectionnez le projet à tester (facultatif) : + + + Lien statique + + + Bibliothèque dynamique (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/fr/VSPackage.fr.resx b/GoogleTestAdapter/Packaging.GTA/fr/VSPackage.fr.resx new file mode 100644 index 000000000..265439d5c --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/fr/VSPackage.fr.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Général + + + Parallélisation + + + Google Test + + + Adaptateur de test pour Google Test + + + Active l'utilisation des outils de test de Visual Studio avec les tests unitaires écrits pour Google Test. Les conditions d'utilisation et les notifications tierces sont disponibles dans le répertoire d'installation de l'extension. + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Common.Resources.it.resx b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Common.Resources.it.resx new file mode 100644 index 000000000..5cac13dde --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Common.Resources.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test Adapter for Google Test: avvio dell'esecuzione dei test... + + + Test Adapter for Google Test + + + {0}Vedere la sezione sulla risoluzione dei problemi di Test Adapter for Google Test disponibile all'indirizzo https://go.microsoft.com/fwlink/?linkid=848168 + + + Test Adapter for Google Test: avvio dell'individuazione dei test... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.DiaResolver.Resources.it.resx b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.DiaResolver.Resources.it.resx new file mode 100644 index 000000000..ebe6cc43c --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.DiaResolver.Resources.it.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Il file PDB del file '{0}' non è stato trovato. Non verrà recuperato alcun percorso di origine per i test. + + + Non è stato possibile individuare il numero di riga per {0} + + + Usare l'opzione /DEBUG:FULL (Visual Studio 2017) o /DEBUG (Visual Studio 2015 e versioni precedenti) del linker. Non usare /DEBUG:FASTLINK! + + + ImageDirectoryEntryToData failed! + + + Non è possibile caricare {0}. + + + Il file msdia.dll per analizzare i file *.pdb non è stato trovato. Non verrà recuperato alcun percorso di origine per i test. + + + UnMapAndLoad non riuscito. + + + Analisi del file PDB {0} + + + Tentativi di trovare il file PDB: {0} + + + Per recuperare i percorsi di origine dei test, assicurarsi di generare file PDB *completi* per gli eseguibili di test. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Resources.it.resx b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Resources.it.resx new file mode 100644 index 000000000..3d472d534 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.Resources.it.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Se questa opzione è abilitata, un debugger potenzialmente collegato rileverà gli errori di asserzione e passerà automaticamente alla modalità interattiva. +Opzione di Google Test: {0} + + + {0}>>>>>>>>>>>>>>> Output del comando '{1} {2}' + + + Non è stato possibile elencare i test case per l'eseguibile '{0}': l'esecuzione del processo non è riuscita. Codice di uscita: {1} + + + I nomi di test prodotti da Google Test potrebbero contenere il carattere '/'. In presenza di tale carattere, Visual Studio taglia il nome del file dopo '/' se la finestra Esplora test non è sufficientemente ampia. Se non è vuoto, il valore di questa opzione sostituisce il carattere '/' in modo da evitare tale comportamento. Si noti che lo stesso comportamento si verifica anche con '\', ' ', '|' e '-', mentre è stato sperimentato che '.', '_', ':' e '::' funzionano correttamente. Si noti anche che le espressioni regolari dei tratti vengono valutate in base ai nomi visualizzati dei test e devono pertanto essere coerenti con questa opzione. + + + Numero di durate effettive dei test case: {0} + + + {0}- raccolti {1} risultati di test dall'output della console + + + Il processo è stato terminato con il codice {0} + + + Il processo {0} avviato il giorno {1} è stato terminato + + + {0}- {1}: '{2}' è stato eseguito correttamente + + + Esegui test in ordine casuale per esecuzione + + + {0}- L'esecuzione è stata annullata: {1} + + + Dopo aver incluso {1} test è stata superata la lunghezza massima consentita per la riga di comando ({0}). La lunghezza della stringa successiva è {2}. + + + Nel file binario {2} sono stati trovati {0} simboli di metodo di test e {1} simboli di tratto + + + Timeout di individuazione dei test in s + + + {0}- {1}: è stata rilevata un'eccezione. Messaggio: '{2}'. Comando eseguito: '{3}' + + + {0} - directory della soluzione (disponibile solo in Visual Studio) + + + Numero massimo di thread + + + Se questa opzione è true, l'esecuzione degli eseguibili di test viene terminata in modo attivo se si annulla l'esecuzione dei test. Si noti che la terminazione di un processo di test potrebbe avere numerosi effetti collaterali. In particolare, Google Test non sarà in grado di eseguire attività di arresto del sistema. + + + {0}- Si è verificata un'eccezione durante l'esecuzione dei test: {1} + + + Non è stato trovato alcun file dell'indicatore di Google Test per l'eseguibile {0} + + + 0: l'inizializzazione viene calcolata a partire dall'ora di sistema. 1<=n<={0}: viene usata l'inizializzazione specificata. Vedere la nota dell'opzione '{1}'. +Opzione di Google Test: {2} + + + {0}- Sembra che {1} test case non siano stati eseguiti. Si sta ripetendo un'esecuzione dei test, ma nel frattempo i test sono cambiati? Test case:{2}{3} + + + Parametri aggiuntivi per l'esecuzione dei test + + + Il file dell'indicatore di Google Test per l'eseguibile {0} è stato trovato + + + Nelle durate effettive sono state trovate {0} durate previste + + + Estensione PATH + + + Non è stato possibile analizzare l'espressione regolare '{0}': {1} + + + I test verranno eseguiti per il numero di volte selezionato (-1: infinito). +Opzione di Google Test: {0} + + + {0}- In particolare, avviare il prompt dei comandi, passare alla directory '{1}' ed eseguire il comando seguente per assicurarsi che sia possibile eseguire i test a livello generale.{2}{3} {4} + + + Uso della barra di divisione in base al numero di test + + + Valore letterale sconosciuto: {0} + + + Usa il nuovo framework di esecuzione dei test (sperimentale) + + + Non è stato possibile analizzare la coppia '{0}'. Messaggio dell'eccezione: {1} + + + Nell'eseguibile {1} sono stati trovati {0} test + + + Si noti che quando si eseguono test contemporaneamente, non verrà visualizzato alcun output nella console dei test. + + + Output del comando: + + + Stampa l'output degli eseguibili di Google Test nella finestra di output dei test. + + + File batch di disinstallazione test + + + {0}- L'esecuzione ha impiegato {1} + + + Directory di lavoro + + + File batch di disinstallazione test + + + Nelle opzioni è selezionata l'esecuzione parallela, ma i test vengono eseguiti in sequenza perché il debugger è collegato. + + + Il file {0} non è valido. {1} + + + Dopo l'individuazione dei test + + + {0} corrisponde all'espressione regolare predefinita {1} + + + Non sono stati trovati test case noti per il risultato del test della riga '{0}'. Si sta ripetendo un'esecuzione dei test, ma nel frattempo i test sono cambiati? + + + L'individuazione dei test è stata annullata dopo {0} s per l'eseguibile {1} + + + Per l'esecuzione parallela dei test vengono usati vari thread e a ognuno di tali thread viene assegnato un numero di test da eseguire. I thread richiameranno quindi in sequenza gli eseguibili necessari per produrre i risultati dei test corrispondenti. + + + {0}Test case already in analyzer: {1} + + + Parametri aggiuntivi per l'eseguibile di Google Test. Segnaposto: + + + {0} peggiori differenze: + + + Non è stato possibile analizzare XmlNode: '{0}'. Messaggio dell'eccezione: {1} + + + Termina processi in caso di annullamento + + + {0}- Non è stato possibile eseguire l'eseguibile di test '{1}': {2} + + + Deviazione standard: {0} ms + + + Espressioni regolari per l'assegnazione dei tratti + + + Numero di durate previste dei test case: {0} + + + Se questa opzione è true, dopo l'aggiornamento dell'estensione verrà visualizzata una finestra di dialogo con le note sulla versione. + + + Consente di usare il nuovo framework di esecuzione dei test. Vantaggi: rilevamento degli arresti anomali dei test e stampa dell'output del test disponibile anche in modalità di debug. + + + >>> Statistiche di pianificazione <<< + + + Mostra note sulla versione dopo l'aggiornamento + + + Comando eseguito: '{0} {1}'. Directory di lavoro: '{2}' + + + Si è verificata un'eccezione durante la risoluzione di percorsi e tratti di test in {0}\n{1} + + + {0} non corrisponde all'espressione regolare predefinita {1} + + + Numero di ripetizioni dei test + + + Il comando non ha prodotto alcun output + + + {0}- {1}: il file {2} non è stato trovato + + + L'espressione regolare "{0}" non è valida. Messaggio dell'eccezione: {1} + + + Interrompi in caso di errore + + + Analizza le informazioni sui simboli di debug per gli eseguibili di test allo scopo di ottenere informazioni sulla posizione di origine e sui tratti (definiti tramite le macro in GTA_Traits.h). +Se questa opzione è impostata su false, il passaggio 2 dell'individuazione dei tratti verrà ignorato e verranno applicate solo le espressioni regolari dei tratti. + + + Separatore per nome del test + + + {0}- Sono stati restituiti {1} risultati del test a Visual Studio. Eseguibile: '{2}'. Durata: {3} + + + Numero massimo di thread da usare per l'esecuzione dei test (0: un solo thread per ogni processore). + + + {0}<<<<<<<<<<<<<<< Fine dell'output + + + {0} non deve mai essere minore di 0 + + + Varie + + + Output del timestamp + + + {0} corrisponde all'espressione regolare personalizzata {1} + + + Output del test: + + + Stato dei test case sconosciuto: {0} + + + Se non è vuoto, consente di impostare la directory di lavoro per l'esecuzione dei test (impostazione predefinita: {0}) +Esempio: {1}\MyTestDir +Segnaposto: + + + Differenza media tra durata prevista e durata effettiva: {0} ms + + + {0}- raccolto/i {1} risultato/i di test dal file XML di risultati {2} + + + Se questa opzione è true, i test verranno eseguiti in ordine casuale. Si noti che viene usato un ordine casuale effettivo solo quando si eseguono tutti i test in modalità non parallela. In caso contrario, è molto probabile che gli eseguibili di test vengano eseguiti più volte e che l'ordine casuale sia quindi limitato alle esecuzioni corrispondenti. +Opzione di Google Test: {0} + + + Collegamento del debugger a {0} + + + {0} non corrisponde all'espressione regolare personalizzata {1} + + + Se questa opzione è true, l'output del debug verrà stampato nella console di test. + + + Se questa opzione è true, verranno eseguiti tutti i test selezionati anche se sono stati disabilitati. +Opzione di Google Test: {0} + + + {0} - directory che contiene l'eseguibile del test + + + Esecuzione dei test + + + Stampa le informazioni di debug + + + {0}- Non è stato possibile eliminare la directory dei test '{1}': {2} + + + Esegui test in ordine casuale: inizializzazione + + + !! Possibile ARRESTO ANOMALO di questo test !! + + + il motivo è probabilmente un arresto anomalo del test {0} + + + Non è stato possibile analizzare (completamente) il file dei risultati del test {0}. È probabile che si sia verificato un arresto anomalo dell'eseguibile di test. Messaggio dell'eccezione: {1} + + + {0}- Durante l'esecuzione dei test sono stati restituiti {1} risultati del test a Visual Studio. Eseguibile: '{2}' + + + Esegui anche test disabilitati + + + Numero di secondi dopo i quali l'individuazione dei test verrà considerata non riuscita. 0: timeout infinito + + + File batch di installazione test + + + Se non è vuoto, il contenuto verrà aggiunto alla variabile PATH dei processi di individuazione ed esecuzione dei test. +Esempio: C:\MyBins;{0}\MyOtherBins; +Segnaposto: + + + Test case '{0}' aggiunto + + + Esecuzione di {0} test... + + + {0}- Sono stati creati {1} risultati di test per test non trovati né nel file XML dei risultati né nell'output della console + + + Test case already in analyzer: {0} + + + Testa se sia possibile eseguire i comandi seguenti nella riga di comando (assicurarsi che tutti i file binari necessari siano presenti nel PERCORSO):{0}{1} + + + File batch di installazione test + + + Si noti che a causa delle restrizioni del framework di testing unità di Visual Studio, non è possibile visualizzare l'output dell'eseguibile del test nella console di test durante il debug dei test. + + + {0}- {1}: terminato con il codice {2}. Comando eseguito: '{3}' + + + Rileva eccezioni + + + Comportamento del runtime + + + Non è stato possibile terminare il processo {0} avviato il giorno {1}: {2} + + + Test {0}: durata prevista {1} ms, durata effettiva {2} ms + + + Impostazioni per l'eseguibile di test '{0}': {1} + + + Non è stato possibile analizzare la durata alla riga '{0}' + + + Il file di output non esiste. Si è verificato un arresto anomalo dei test? + + + L'eseguibile {0} proviene da un altro computer ed è stato bloccato per proteggere questo computer. + + + Esecuzione dei test in {0} thread + + + Prima dell'individuazione dei test + + + {0}- Analisi dello stack:{1}{2} + + + SettingsWrapper è già in esecuzione con le impostazioni per un eseguibile nel thread '{0}' e non può essere usato dal thread '{1}' + + + Esecuzione parallela dei test + + + Il percorso di origine per il test {0} non è stato trovato + + + L'esecuzione è già in esecuzione con le impostazioni per l'eseguibile {0}. Non è possibile passare alle impostazioni per {1} + + + Non sono state configurate impostazioni per l'eseguibile di test '{0}'. Per l'esecuzione verranno usate le impostazioni della soluzione: {1} + + + Timeout dell'espressione regolare '{0}': {1} + + + Non è stato possibile leggere le durate dei test: {0} + + + Analizza informazioni sui simboli + + + Parallelizzazione + + + Uso della barra di divisione in base alle durate dei test + + + Consente di sostituire/aggiungere tratti per test case corrispondenti a un'espressione regolare. I tratti vengono realizzati in tre fasi. In primo luogo, i tratti vengono assegnati ai test in base all'opzione 'Tratti prima'. In seguito i tratti dei test, definiti tramite le macro in GTA_Traits.h, vengono aggiunti ai test, sostituendo quelli della fase 1 con nuovi valori. Infine, viene valutata l'opzione 'Tratti dopo', sempre in modo da sostituire i valori precedenti. +Sintassi: {0} consente di separare l'espressione regolare dai tratti. Il nome e il valore del tratto sono separati tramite {1} e ogni coppia di espressione regolare e tratto è separata tramite {2}. +Esempio: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + Se non è vuota, questa espressione regolare verrà usata per individuare gli eseguibili di Google Test che contengono i test. +Espressione regolare predefinita: {0} + + + File batch da eseguire prima dell'esecuzione dei test. Se i test vengono eseguiti in parallelo, il file batch verrà eseguito una sola volta per ogni thread. Segnaposto: + + + Se questa opzione è true, viene aggiunto un timestamp all'output del test e del debug. + + + Ripristino delle impostazioni della soluzione: {0} + + + Stampa output dei test + + + Nulla da segnalare. + + + Google Test rileva le eccezioni per impostazione predefinita. Il test corrispondente non riesce e l'esecuzione non viene interrotta. Se si sceglie false, le eccezioni non verranno bloccate e il debugger potrà rilevarle. +Opzione di Google Test: {0} + + + Espressione regolare per l'individuazione dei test + + + File batch da eseguire dopo l'esecuzione dei test. Se i test vengono eseguiti in parallelo, il file batch verrà eseguito una sola volta per ogni thread. Segnaposto: + + + {0} - percorso di una directory utilizzabile dai test +{1} - ID del thread che esegue i test correnti + + + {0} - eseguibile che contiene i test + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.TestAdapter.Resources.it.resx b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.TestAdapter.Resources.it.resx new file mode 100644 index 000000000..47d039546 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/it/GoogleTestAdapter.TestAdapter.Resources.it.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument non contiene alcun nodo RunSettings. Il merge delle impostazioni verrà annullato... + + + Il processo non è stato trovato + + + Versione di Visual Studio: {0} + + + Con {0} è richiesto almeno Visual Studio 2012 Update 1. Aggiornare l'installazione di Visual Studio. + + + Non è stato possibile identificare la versione di Visual Studio. Con {0} è richiesto almeno Visual Studio 2012 Update 1. + + + Non è stato possibile collegare il debugger al processo {0}:{1}{2} + + + Il nome del tratto è uguale a quello della proprietà dei test di base e verrà ignorato per il filtro dei test case: {0} + + + Filtro dei test case: {0} + + + Durante {0} {1} si sono verificati gli errori e avvisi seguenti:{2} + + + La versione di Visual Studio non è stata trovata: {0} + + + Valore letterale dell'enumerazione sconosciuto: {0} + + + Valore letterale dell'enumerazione sconosciuto: {0} + + + Si è verificata un'eccezione durante l'esecuzione dei test: {0} + + + L'individuazione dei test è stata completata. Durata complessiva: {0} + + + Il debug è possibile solo se Google Test Adapter è stato installato in Visual Studio. L'installazione di NuGet non supporta questa funzionalità e altre funzionalità quali le opzioni di Visual Studio, la barra degli strumenti e le impostazioni della soluzione. + + + L'esecuzione dei test è stata annullata. + + + Versione di Visual Studio sconosciuta: {0} + + + Non è stato possibile analizzare il file di impostazioni test della soluzione. Controllare il file: {0} +Eccezione: {1} + + + (per altre informazioni, abilitare la modalità di debug) + + + Non è stato specificato alcun filtro dei test case + + + Impostazioni della soluzione: {0} + + + Si è verificata un'eccezione durante l'individuazione dei test: {0} + + + ERRORE: {0} + + + individuazione dei test + + + Il filtro dei test case non è valido: {0} + + + L'esecuzione di Google Test è stata completata. Durata complessiva: {0} + + + Il file ActivityLog.xml di Visual Studio potrebbe contenere altre informazioni sul problema. Vedere https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/ + + + Il debugger è stato collegato al processo {0}. L'operazione ha richiesto {1} ms + + + {0} corrisponde a {1} + + + {0} non corrisponde a {1} + + + Non è stato possibile collegare il debugger al processo {0}. Non è disponibile alcun messaggio di errore + + + esecuzione dei test + + + Impostazione {0} non valida + + + Avviso: {0} + + + Il file di impostazioni test della soluzione è stato trovato alla posizione '{0}', ma non contiene il nodo {1} + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/it/NewProjectWizard.Properties.Resources.it.resx b/GoogleTestAdapter/Packaging.GTA/it/NewProjectWizard.Properties.Resources.it.resx new file mode 100644 index 000000000..5013a85c4 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/it/NewProjectWizard.Properties.Resources.it.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Configurazione progetto di test + + + Collega in modo dinamico (scelta consigliata) + + + Utilizza Google Test come: + + + Librerie di runtime C++: + + + NuGet.VisualStudio.Interop.dll non è stato trovato. La procedura guidata non può continuare. + + + <Nessun progetto> + + + Windows SDK non trovato. + + + Libreria statica (estensione lib) + + + Selezionare il progetto da testare (facoltativo): + + + Collega in modo statico + + + Libreria dinamica (estensione dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/it/VSPackage.it.resx b/GoogleTestAdapter/Packaging.GTA/it/VSPackage.it.resx new file mode 100644 index 000000000..c4c5272f4 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/it/VSPackage.it.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAwAAAAAAAEACAAbJQAAxgAAAEBAAAABAAgAKBYAAOElAAAwMAAAAQAIAKgOAAAJPAAAICAAAAEA + CACoCAAAsUoAABgYAAABAAgAyAYAAFlTAAAQEAAAAQAIAGgFAAAhWgAAAAAAAAEAIAAdFwAAiV8AAEBA + AAABACAAKEIAAKZ2AAAwMAAAAQAgAKglAADOuAAAICAAAAEAIACoEAAAdt4AABgYAAABACAAiAkAAB7v + AAAQEAAAAQAgAGgEAACm+AAAiVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IA + rs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACSwSURBVHhe7Z1fyGVV+ceP + P6iQvBCGLiIjQyPFEsMpDImERCEpkUiwbowilC7sorqpm0AJ0iQvRC8cEoKC/lxkeDFSMBAyQyhKGVoh + GdmVDAhNSFf9+pw53zPPPLPW2mufvfY5+5z9fGDxPOtZa+/1nL2f55m93/c9ay46ceLEYs7ccMMN/0X+ + 5z//WbzjHe9Y2mp0sclcJEhPSeirw5Dj56RLnjp16qLlwEz5v5UMNqA24CRlQ0oX9GvPl9JhyPFz0EG6 + tc2ZKAAbsknwATaa9D7nyOkw5Pg56EDfyiAKwEbUBFxOR9KGnMPqMOT4Oejg+4Bt7kQB6IECCKngSQVc + SZfse1xKhyHHz0GH3JidM1eiAFRC4NhG8CA1lgowSOmpuX11GHL8HHQozQuiAFRD4Njm8QGlfk6CDcaU + 7rH23DGhn9Whdt6ciQLQE4JHUkGE9AFFPxdo2NVyaFznkU1S5w39Qh265iGDKAC98EEG2BRMdjynI23L + kRqnX7PGnHWomWfnz5koAJWUAolWE3ToKZmaK/zxoed1KI0J7MFZogBUUgqqXNDldAt2mkX93PGhX6hD + aR6oj5Rt7kQB6IGCCqkAkm0THalmoT/kvHPToWsekuZtcycKQCUKGkAqgGTbRPdyyLnmqkPNPCTN2+ZO + FIBKFCwEkKS1bap7/NiYutZCevqcB3al566r1yW9be5EAaiEgFEA+UBqoXu5DXa5divkc+01pi89WCzi + 68A9vg4srO306dOLSy65ZHHmzJnBchfscu0WHDlyZCl1T0r3zs4B9Ll/HTgKQM8C4MfuuOOOpR7shh// + +McXFAGvg++L2A8gqKYUYME04L5Y6Pv7ZuXciQJQiQ+iSP7pwT3x98Xa4r5dSBSASiKI9gdfrCWxqR/3 + 8CxRACohcHwQSQbTQffI6564d2eJAlAJgeSDKRdcwW7IJb/V456dTxSAnvjACqZBTfLrflnb3IkC0INc + YAW7g79jyN2XrvuFbe5EAaikK5iC3cAfMXUlvL9f0q1trkQBqCQXTMH0yCU8diuDKADVEDQKrAik6aBX + APCF2d4f3TtL3L8oANUQPD6AfD/YPv4VwIPNJr/V4/5FAeiND6Zgt/gnAJ/gahD37kKiAPTAB5D0YHfk + ngCkW2nvV9y7s0QBqMQGkHQFV7A7/BOAT2zdJ0nNjXt3ligAlSiwFEzggy3YPqknAHuP/P2iyab5cyb2 + A+jYD8BiAyclhe3ndPHpT396pW1Gzffh+/hTsqWOHct/kVpziG5tEPsBBEUIGEkFjg8k9cHare7R/Cnh + fZf0n6H0uVri/RmqWxmcJQpAARtEwgdPKphyc1IBORXkk9eFtW3D95w/fXWQbm3AvLkTBaBAKqCQXX3p + QnPAz50C1qecjkx9hjGo8adGB/peatzOmytRAAwKEkFfAePHIDdfei4owc7dNTk/rT3FWP7X+NOlg+9b + GAuiAKwhUHywpGw2qJC+7205XXOngnxD0mQD67OVYyEf5I9sklo/p0NuzM4JogBcgA8cSR84GhOpuSXd + yl1jfUPSZEOm/LXHtEY+WKxPkNOhNE/Szp8zUQAMucAR1oYs9bvOBSnbLrB+SsqGpMmGzH2e1th1anSo + nQfY5k4UgBU1gYNU0Pg5oH4O5uk4HTMFvF/+c1kbchv+ez9SuqfmGKvnzjMnogD8j1yAQFeQaD5SLQfz + us63C7r80pg+mz7zWNjzl3SomVc6fu5EAfgfBAUBoQBRcKSkAkhS0Ffrwp5nSli/vG7B7m0tSfkA3i4f + 7Ly++tyJArCCgPBBQT8VLNhoFmuzx1gd/NhUyPks3UrQ+Biwhl/PSq1t/YI+OjKIArBGAdEVOIBUEJVs + VofS2C7J+WV17ytjY8Fafj363jew8/ro1jZnogCsICBywZ8KvBqbdCiN7Qr5gNRnSPmoMWuTHBPvg9eR + mzadZ+5EATDYoO7SJQkia1NQ2WPsHK/vCta2zfquvtf9nDHJ+eD92bTp+LkTBWAgBJFNCvW9raTvAta2 + zSP/BX35PLbv9vwlPRjO7PcDGEpqPwFRE8i73A8A1Pd2kbLbY+64446VdTNK+wF0+YR84YUXZv19/qHE + E8BI2OAt6bvE+iKwya+Ur9bmj22FfOD8dl3JsdefE1EARsAGaU7fNTm/kLQuv7HRxkA+WFI+BcOJAtAY + H6Q5HdTfBSm/RM1nQPrjWlPjRzCMKACNyQWptyNpuyTli2xdupVjUONHMJwoAI0hQBWkSNkkFbzIXQZy + yhdrq9ElW1PrRzCcKACNIUB9YtBPBe8ugzjli7WldMuYvufW9vYxfZgLUQBGwgZvTpfcBfghX2p8RQf1 + JceAtbS21rVyGz7MhSgAI2CDtKTvEvzoSiDvN1J+j+l/yjetb30KhhMFoDE+SLv0XVPyUVI2JG1b/pd8 + 28b6cyAKQGNyQZoL5F2SSyrvO8hXP28scv5YPRhOFIDGEKAKUqRsklMJ5JwvOR2ZGxuD1DpeD4YTBaAx + BKhPDPrbTJ4SWlc+SYecj6V5reHcah6/fmpO0I8oACOhIO3Stwnr2WaTSP2cjtRc4ftDYR3bLFpL/oCf + E/QnCsAI2CCt0bcF69nmwaccqWNS52iB/Chdo5KvQT1RABpjg7ZG3wVKHusHssYn/zlak7o23k/1x1h/ + bkQBaIxNDh/IsOvgTfmFTf7YcT+3NNaC3PmR9MHbg2FEARgBBSlSgTuFoLXJ4xOJlhuH0lgr+pyfOcFw + ogA0xgYvkqZgtbIrwMdAa6bWtzY/nhtDb43Oj9T57ZrWr2A4UQAa45PDBq9Hc7aJ/EGmfLQ65Mb8vBbY + cyJpfk3J1mvPlSgAjSE4FaA+eKXvKni9D7Scj5Ab8/Na4M8vmVoTqTnBMKIANIbgVKCWsAG9LbReV4JB + bszrreCcnE/nz60Jdk4wjCgAI1ETwNuGdbV2rX81eis4X9c57bqt158jUQBGoJQofmybsG5X0uR8z+kt + 0fWo9SEYThSAxuQCFkpjrahJjJwfff2rWasPrNfKt6COKAAD4D8FURKUghe2EcCcs+u8OT9KOtjzSre2 + oaTWETnfQP8xS7AZUQAGkgpMH6S5MfQxKK23iY6kyWZlK7QOSMqPlG/Q2oc5EgVgQ+x/CWZJBWkqgP28 + VtSs11dH0mSzYy3xa9BA0q5pffjIRz4STwEbEgVgA+xjpw1a2wdrz+ktqVlvE11SNqTsLfFraB1JrWnn + SY9Xgc2IAjAABaQNRk/KpvmvvfbaWh9KKila6gJbyr4p//rXv1bahYXFroPUuGwt/ZgrUQB6Yh/9FZBq + PkCRPkAZF8eOHTuvvwmXXHLJeWuOrSNp2Frw+OOPr7Tz8etLpnwC+vEU0J8oAD3wyQ9INQtzaNLtfHj6 + 6acXzz///FIfwpkzZ9bntOuMpUvKNpQ//OEPi5/97Ger3tnrk1s/ZQPbjyLQjygAG0CwEXRCug9WzZNN + 83j0f+KJJ5b6GPg1W+sCWwt++tOfLq9JF1rP+uF9DPoRBaAS/y9LTWL44JT+gx/8oFmw6hUAOH9uzSG6 + R/bceF9Yi2siOC826SB/kBqTzevxFFBPFIAK7KO/l6kAVKCmxnjcffXVV5f6UOx6kFtzqA7qg2xg7UPg + mvhXAWH9QdJkQ1odkFEE6ogC0EEqkGwAgtdzY6+88srycbcV9957b9aHTXWL7EiatUm3PgzlySefXF4j + i19PUjakX58+c6IIdBMFoBIfiF5HAnpu3qOPPrqeN5Qbb7xxccstt6x654JeOvj1a3RQ30pa6jh8OHr0 + 6No+lIcffnil5f0U2GjSS3ODNFEACvT5F8QGn6QNwh/96EfNHv0vvfTSxT333LPqnVvTrpdLiC4dSZNN + pOZKx5eLL754bRvC66+/vv7VYG496Uhaybd4CigTBSCDDRwbVJDTU3Dsn/70p8Xx48dXluF89atfXRw5 + cmSpyzckzdo20ZE02ZBdx+ELPrXiqaeeWl6zGrp8gygCeaIAVKBAAgIrJcEGnT3mkUceOW/eEG666aZl + A78ezdo20SVlQ9Ych08f//jH17ahPPDAA2t/OKfVRckfqwd5ogAk0L8YCh4rbQAK7HbMzufRn8faFvDo + f999963Pz3rSwfuwqS6w0aR3HfflL3+52avAm2++ubx2oDWQNGur1eMpIE0UAEcqUBR8qcBCqoEde/nl + l5ePs6341re+lV1rDB1Jkw1ZOo5XAXxEbwHX7sUXX1yvgZQfKR88dg5EEbiQKAAZckHmdS/t2Pe///2l + 3oLPfvazi+uuu269FtT4N0SXlA3ZddzVV1+99LUVXEP5Arl1Ncf37ZzgQqIAGOy/EARNKqhSupfAez+P + sS247LLLFl/60pfWayLlW86nVrrARpNeOg5f8bkFXEOupeD88kNoXdmtTwIbLZ4CzicKwAoFhgLFo6DS + uA846XDixInFyZMnV71hsA7v/UgFtXT5AWPrSJpsyNJc+dwCridN2HX8uiWfNB5F4BxRABwKFEsqkCzW + dvr06aY/9b/11lsX11xzzap3jlygj6VLyoYszcVnfJd9KLqm1hetK5tFY9IlW/lzKEQB+B/2X3+RChZs + qWCyx/FHLLY/hCuuuGL5OO3xa29LF9ho0nPH6VXAH78JnO+hhx5anwvpz2vXR9KXbsEeTwFnmX0BSAWC + DSQfVAqs1PgzzzyzePbZZ5d6C772ta+t16NBbu1t6kiabMjUXBqfoRVcW66xxa4rvD+gvpVRBKIAJFHg + 2CBCl0yN8332xx57bN0fyt1337246qqrljrnpOXW3rYuKRsyN5fPcNdddy37LeAa85oFfi3vDzbwY8E5 + Zl0A+BeA4FCgWBQ0GpeuALI66NGfNgTOee211y7uvPPO886VW3tXusBGk56ae/vtty8/Uws474MPPrjU + cz5KlnwVc99ReLYFQI9/BEkqUGRLjXvY3outrVqhL/poXevP1HQkTTZkai6fSXOHkttGzPqgdayO9OPI + Ob8KxCvAChsUAhtNusat3np7Lx6XL7/88lUvv+5UdEnZkKm5fKavfOUr62OG4rcRs+uWyPk/V2ZZAHzF + 90EhXUElG9Lq0HJ7r+uvv/68R3+tNXVdYKNJt3Ph5ptvXn5Gf9wmcE67jZjw69q1SmNzfQqYXQGoTX50 + SdmQVm+9vdfXv/71tV7ya6o6kiYb0o6D/YxD8duI5fyC3JjV51gEZlUA+iS/dGuzcoztvfx3/PdNl5QN + 6efyGfmsmj8Uu42YX0vYfkmHuRWB2f4MIBcIFuxqjNt5bF1FvwVjbe+1C11go0m3c/msfGZ/zKbYbcQ8 + fu2SjpwbsykAtrKXAsGCXU194Fd+Lb/jP9b2XrvUkTTZkHZc24i1wG4jBloj51tOl5zTU8AsCkBt8qNb + KaQj92l7r13qkrIh7bi2EZNtKH4bsZJvOV2gz6UIzOoVoCYQJIUdg33a3mvXusBGk67xsbcRA7tel460 + 9jlw8AVAlbzr5kuXlM2O7eP2XlPQkTTZkDQYYxsxnRty55U95yfM4SngoAtA3+SXLrDRYN+399qlLikb + Ujr/tVnrbcS4V5zPNov6yJKf6IdeBGbxCqAbCvbmdulIGrZ9395r17rARpPOONei9TZiwLnVLPRzfmpM + +qFzsAXA/usvaVvq5ntd8lC295qCjqTJhqSNuY0Y5PyxOqiPVDvkp4CDLACpG8ZNtQ3szc/pPE7a7aiG + wDmnsL3XLnVJ2ZBqY28jpvW1hvUDcn7BoRaBg34F0A0H6Vbam5+C751/97vfXfWGM5XtvXatC2w06WNs + I6a9A4Dz2vVSfekpeYgcXAGgUuuGcUN9MOmmS6qprznwwx/+cG0bytS295qCjqTJhmz5KsD5uIcWu16q + Xxo7xL0DDqoA6DFNN0yUbrCah62nXnrppVVvOFPd3muXuqRsSJquVQuef/75C7YR8z4I6wuor3noh/Yq + cJCvANww2+wN9zffSo1pey+NDWXK23vtWhfYaPD+97+/+TZidu8AkA/WF/WhZD8kDqYApB791cDeUKt7 + GDt27FiTG80a+7C91xR0JE02rlnLbcTsdwX8uvTB2gU2P/+QngIOogD4G2JvqKS9sSld8je/+c3ysbEV + +7S91y51SWvTNmItYBsxtm4Dv67H+oGkWR/hUIrAQb0C2Jvmb6LwN1IS5r691651IZu2EWsF99ZvI2bX + 936InI+HwN4XAFVi3RCkbpi3yZ6Csdjea3c6SEcyBrfddtso24jp/HYt8D7ZvtWRh/AUsNcFIHUDuDH2 + BoJssvsbCb/61a9ie68d6l7aMb4wBLINQduIlXzK+WF1yX0vAntbALoufO6GWdSP7b2moXs0xqsA17QV + 3OvSNmLIGn8l97kI7P0rADcEdDMgd8M82Bl/9NFH1+cZyiFt77UrXdLyyU9+cnH06NHkWF9Yi3suvB+Q + 8sujufvMXhYAVVzdHKRuhr1hOd3eUL4/3urR/1C399q2LolNffSW24hxz/WrQe8HUusK6wf4ufv6FLB3 + BcAnPyB1M/wNSumSsb3XdHUPY2NvIyY4v1+DPj6A9VNzse1jEdjbVwDdgNRNsTrk7LG91/R1SdF6G7FS + DOR8EjouNbYv7FUB6Kqw/kbaGwT2Zsb2XvuhS2JTv+U2YsQAseAp+SRdPtmxfXsK2JsCYC8sF1rS3gzp + wt4gpI6L7b32S/doG7FW8Br44osv9vYPUmP7VAT27hXAXmiBTTfEjlsdScMW23vtpy4JXHP2DmgBaxAT + SKj1CaljLCnbVNmLAqCKmroJgNQNSY3rhiBje6/91SWxIcfeRkxr52A8N2dfngImXwByFzIXGCU9tvfa + f92CbaxtxFhTrYucr/tQBPbuFUDoxuhip26A1WN7r8PSJa+88srm24hpHbUSJV/3gUkXAPvoD/5CIzWW + myNie6/D0iWxtd5G7P7771/1zlLyo6Qjp76N2GQLgH180sUEe6GRGkvNUT+29zpM3TLmNmJ9fLI6kjbl + V4HJvwJwQcFeVJDdX3Dfj+29Dl9Hck/G3kZM1Ppn5VSZZAGwj/5cUKS/oLrQ/oIL9fl7bz+2KbG91zR1 + yTG3EQPWLPmR0nXMVJ8CJlcAfPIDUhdSkgaSmivo873vP//5zyvLMDhfbO81XV3whOZtm8I2YsSQJXXu + kk/qI6dYBCb7CqCLJuyFRWpcUk1zeHzje9/YWsDWVLG91/R1XgVabiNm9w5gHSu1JtLbwPpl7VNiUgXA + /usPumj2QmrMX1w1YKz19l5sTZVaO/Rp6XDzzTc33UZMewdwPq2H1Holm3TJqT0FTKYA5C6Mv5DSUxdX + xPZe89ZB96wF2kYMtAaSZtdN2fw4/SkVgUkUAH9B/MVDWl1j4C/umNt7BWfRvZiyzj3j3sk+lCeffHL9 + KiD8upIpv0B95FSKwGSeAOwFlNTFQ9oLCbqQIInt4YcfXveH4rf3AuvHXHVJe4+mqHPv2EasFcSWyK2L + pC9d+DlTYecFQJVQF85fHGy6oHY8dUH5tc0bb7yx1IfCOb/xjW+sekGK1L2Yms5vbtivQf0hsHdAbhsx + oT6SZm3SJafwFHBRqy/HbIK9AP4i2YsKuXHpbO30ne98Z9lvAX9Z9j//Vr0gBd/LP3PmzOQlf9nn/5fg + ITz44IPr74Hk4lLIpriUbuedOnXqopW6dSZZADx2LKUj+XvwVl/zDYISPFGwi5Biz0pI2Sx+7gsvvLCz + ArCzVwCSnw9Ps8hmm7+wXudmRPIH24JY0zZixGAuLgU2mnQ/d5evAjspAPrAfHh/sWSzDVIXDtjKqeX2 + XkFQAzFH7EFXjCJpuXH0XRWBSfwWwF+MlPQXDklrub1XEPSB/SUUn5BKbmFtOX0XbL0A+EpXczGwq2kc + 2XJ7ryDoC/H40EMPrXpnUYwqXq2tS9/FU8BWC0Bt8lsdaZvgh5cnT55c9YJgNzz77LPnbTPn47Ymxq2+ + 7SKws1eA2guTkmzvVfoPHYJgmxCLxKTHx3JtvG+TrRUAW9n6XhgvW27vFQRDIRb93xnUxHVO3+Y2Ylsp + ADXJDzmdeaL19l5B0IJW24hJ39arwFZfAXIfGujnpOa13t4rCFrSYhsxmxPbYPQCoEpW+qC5Dy47Elpu + 7xUErSE2W2wjBvS38RQwagGo+QC5i4C0+tNPP73coikIpkzLbcRg7CKw1VcAkfrgXreSx6onnnhiqQfB + 1Gm1jZjGx2S0AkDl4gP4D6G+/6ApXbTc3isIxoZYbbGNmPQxnwJGKQBymA+gDyH0oVMf1IOdx6lW23sF + wbZotY0Y0B+rCDQvAClHcx/O62A/eOvtvYJgm7TcRgzGKAKj/wyg9OG8HUmTreX2XkGwC1ptIzZWHjQt + AL5C5T4w6ANZO1I637dutb1XEOyKVtuISW/9FNCsAPRNftsHbDRge6/jx4+v+0Gwz7B3ADGdwuYCkiab + ckI6IFsWgVFeAeS01yE3hqRhe+CBB5YyCA6FVEz7XJD0OWFRjrSiSQGgIqU+gNUhN2aPje29gkNkqtuI + DS4AcqTrQ+XGrP7yyy/H9l7BwdJyGzFoUQSavQKUHM2NeT229woOnRbbiIE9xxAGFYCaCpT7EP4DxfZe + wRwg7odsIwa2P3TvgI0LgJJfDltSjpc+UGzvFcyJTbcRg9TYkFeBwa8A1jnAKcnUh7A6xPZewRzpu40Y + 5MaG5M5GBcD/6+8dFd4xzbP2+I5/MEeI+dptxCA3Jn3Tp4DeBSC1UMoxpHRhx4AtlHgcCoI5UrONGHQl + v/RNisDGrwDeSQtjNOnWSUlt75U7RxDMgdI2YuDzp6Qj+9KrAKQqjBa1DiHlkHcSkHr01/FBMEeIf7+N + mMjlD3i7ZN+ngI2eAKwzdnFAl7Q26RDbewXBOfw2YqmcsvmTyjE7tw/VBaBUWVKOpmzA96Nje68gOB/2 + vSi9CgifT6Ck11ifp4DeTwBaBGmbRX2knQtsleTnB8HcISfY+k4ob6QD/ZSuuXaslqoCkKooLGabhb4c + kqTF9l5BkMduIwY2r3yC2zGLxmqfAno9AXById3KlIOSPN7E9l5BUIZtxPyrQC63UrmHlL2GXgWAk2sh + oQVlTzkIx44d6+VYEMwV+1uBUm5JF9hS9hKdBUCPEpxY5BzJLc7fPcf/5xcEdfBbAX1XoCvPrI6kYYOa + 14CNfwjYpYP6P/nJT9a2IAi6IWfA5pLPq1TOpWwligXAVhA5kFs8p/OnjmyMGARBPeQMuePzCknL4ed3 + PQX0/hkA6OQea5f+61//etkPgqAfv/jFL1baOcipVO4JFYfSHEt1AdCJldhIv5ik5rD9UfzaLwg2g6cA + bSHmUY55Ham8lCzRWQA4iRbwC6UWs3P4k1/pQRD0hxwCm0c2x6wO6nt7jmwB0LsDJ/En4uSSuUXY7OC5 + 555bzw2CoD/kkN04xOaczz/bRyr3Sj8HqHoCkPQnV9+PwalTp9bHBkGwGeQQuSQ9lXPgxyy+b6n6GYBO + rhP5xfzCyNy7SxAE/VABsDmonINcPnqZorMAcHDuBLmFgUeXIAiGwx/RkV/KMelg887qoDklkgUg9c5g + T24XScF/8FGzeBAE3ZBL5JTNP5rNSauDH8v9HKD4BMCBkvZkknICrP6Xv/xlKYMgaINyyuef16E05ikW + ACV1zcns2F//+telDIKgDcqprpyszVfR+QSQOpnV/QKM/f3vf1/1giBoQe6/F7eU8jVH5w8Ba/AFIf72 + Pwja8tZbb62081+3cwmf0lMMLgB+ATYzKC0YBEF/yDO7UYjNsU2THwYVAL8Y/Pvf/17rQRC0g9zy5BI+ + lZspBhWA1GJvvPHGWg+CoB3klqU2+dGRKQY/AaQWyC0WBEEblHe1uqRn8BOAPzGPKbnFgiDYHL0C5JIc + Unb0HIN/CAjeidKCQRBsxtve9ralJNfIMeWd8s3KVCFIMbgA+AXe+c53rrQgCFry9re/faWln77p90l+ + 2KgApBZAF12LBkHQhlzC53LT01kA/MHq5xZ717vetZRBELTF51YuB1M6MkWxAHCgTiR0Mr+A4BUgt1gQ + BJtjX69zOZjTbY5aql4BaheDd7/73dnFgiDYHHILavPR52aKqleAPosBjyq2HwTBMC677LJ1TiGV1Kkc + LOWmp1gASicqLfa+971vqQdB0AZyCpRXNueglI8lOn8GwEl0Ii1mZWqxD3zgA0sZBEEbbE6Ra2o+L1P5 + WKLzFYCT+BNp0dRi6Ndcc81SD4KgDcop5aOah/yz+L4nWQBOnTp10UpdU0p4r1955ZVJ54Ig6I9yyqLE + tvmH9HmnfiqnofMJALoS3uvID33oQ0s9CIJhHD16dJlT5BjYXBPYUuOy5egsAP5kduGUXQt+4hOfOG9u + EASb8dGPfnQpyadcPiJL4zmqfgbAiXQyJFiZWvD6669fyiAINod8qs2lXC6WyBYA+87AifzJ6OcWRD9y + 5Mj60SUIgs0gh8ilLkrJn3v/h+qfAUjmEj6l33bbbetjgyDoDzkkbG5ZSrnYRVUB4ISlRVI6XH311Ysr + rrhi1QuCoA/kznXXXbfUfZ6B+jW5mKOqAGyCHPjMZz5T5UgQBOfzuc99bqVdmORImmzg59RQLACld4cS + 1oFbbrklviIcBD3hb/9vuummVe8sNq+QNNlUBHy/K4ernwB0Ur8AupAuqTlf+MIXzpsXBEEZcsaivJMu + aXPO92voLABdvw2wzgjpmksl4w+Dap0KgrlCjvBrP/uvv01sqwube6B+zRP8Rj8DSDkB2DUmJyS/+MUv + LmUQBGVsrthcy+nKN9uvpXcBKDmh5mHeVVddtbjrrruS40EQnIUcIVcgl2uQyyPm9aGqAPjXAPAOgRa3 + Y0jpt99+++KDH/zgUg+C4BzkyLXXXrvMkS5snknafIPaH+APegVAppwQqfFvfvObi0svvXRpC4LgHOSG + csjmU0632DzrQ3UBSD0FIGk5B/048pJLLll8+9vfXs8JgrlDLtx///3LP/lVAitfpIPNLasjrV77rz9s + 9ARgyTkl51OO8t3me++9d2kLgrlDLtgNP5Q7yhuoybNN6FUAfGUpOSU95Sg2/kDo7rvvXtqCYK6QA+SC + UH4gfc6UdMk+//rDoCeAlCMefQjrqGx33nnn8gLkjg2CQ4bYJweET2jlimwlfVN6F4DcUwBSjngnNaYm + G/BTz/j1YDAniPVS8is3vK1L7/uvP1x04sSJldqPG2644b8r9TzkkHUshZ0HJ0+eXDzyyCPrfhAcGsqH + ++67r/ov/br6YpPkh8E/BLSknMNGky6peUgaF4SfhPIliCA4RC6++OLF9773vd7Jj1RTX+ND2fgJAOxT + gJzzukiN6wNIR54+fXrx+OOPL5577rn1eBDsK4rtG2+8cXHPPfect7uPYt7r4PsWP7bpv/4wqACAfxVI + faiUzWLnAfozzzyzeOyxx5Z92YNg3yCW+TWfftJvY115YHVIjaWOgyHJD4MLAKR+HuAdhb42ngZ+/vOf + L44fP760BcG+QPzeeuuti89//vMX7OlnY97Hf25MurUNTX4YpQBYZ8E6nrKBHfe2V155ZfHLX/4yXguC + SaO45avvfKPPf6nHxjaU+jndMpkCALnfCkDqA8iGBOm5D03/b3/72+Kpp55a/sZAtiDYJTZu2cGXbbxK + 3+azMWuPTc21upctkh+aFQDoehXwH8KTmpvSz5w5s/jtb3+7+N3vfrd4/fXXl7Yg2CaKY35rdfPNNy8+ + 9alPVf+Az6IxxbD00rGtkh+aFgCwRSD3QaQjQXppbk5/7bXXFr///e8Xf/zjHxcvvfTSeWNWBsEQbDzx + iP/hD3948bGPfWxx+eWXr+PLzgGrW2TvGvc6tEx+aF4AIPczAa+L3PgmOq8Jr7766uIf//jH4p///Ofi + zTffXP4w8a233lqOB0EXiif+deer6+95z3sW733ve5fbdKce74VsijPpKQml+WB1aJ38MEoBgE1eB1ro + uXHoOjb00HN0HZc7vus4S2l8jOSHpn8JaEk5nPpwSPrSoXQhvB1p9dxxubHQQ/d6SnYdJ7DZY7uO65oL + YyU/jFYAIOW4Ppz/4L7vdUjNQdo5KXLnDD30nG7BrtZ1HJJWM9fqwtvGTH4YtQCA/wD6cEj7YX3fX4jc + xaJJTx0beuhDdKRtUDpOsmZuSpeEsZMfRvsZQIrcDweRYD+8JXexRG489NBb6F5acsdCaj50zdtG4ovR + nwAspacBGhcCvNQ8f6HA2kIPfQzdgl0th8Y5XvOslF02u842kx+2WgAg9wF1YTz2Qgn17TGhhz62jrQt + R2qcfupclm0nP2z1FcDT9atCT81NCj30MXUvhe9D6nivwy4SX+y0AIhSIfDSjoUe+q50pFA/JcHqll0m + vtj6K0CK1IXQBStdzNBD35WOVLPQ1zxkjikkP0ziCcCSehoQNTcm9NC3pXtpx3JMJfHF5AqApaYY5C5+ + 6KFvS/fSM7Wkt0y6AIhSIRBdNyn00MfSc0w58cVeFABLTTFIMeQGhx56LfuQ9Ja9KwCeTQtCELRg3xLe + s/cFIEUUhWAM9j3ZL2Sx+H/fhIcDqijXBgAAAABJRU5ErkJggigAAABAAAAAgAAAAAEACAAAAAAAABAA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQkJCAEVFRQBKSkoAT09PAFNTUwBXV1cAWlpaAF5eXgBgYGAAZmZm + AG1tbQBwcHAAdnZ2AH9/fwCJiYkAkZGRAJWVlQCcnJwAoaGhAKWlpQCvr68Aubm5AMHBwQDFxcUAysrK + AM3NzQDR0dEA1NTUANjY2ADf398A4ODgAOTk5ADq6uoA7e3tAPHx8QD29vYA+Pj4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Generale + + + Parallelizzazione + + + Google Test + + + Test Adapter for Google Test + + + Consente di usare gli strumenti di test di Visual Studio con unit test scritti per Google Test. Le condizioni d'uso e le comunicazioni relative a terze parti sono disponibili nella directory di installazione dell'estensione. + + + + + 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 + AAAAAA== + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Common.Resources.ja.resx b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Common.Resources.ja.resx new file mode 100644 index 000000000..a6f571d5f --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Common.Resources.ja.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test Adapter for Google Test: テストの実行を開始しています... + + + Test Adapter for Google Test + + + {0}Test Adapter for Google Test のトラブルシューティングのセクション (https://go.microsoft.com/fwlink/?linkid=848168) を確認する + + + Test Adapter for Google Test: テストの検出を開始しています... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.DiaResolver.Resources.ja.resx b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.DiaResolver.Resources.ja.resx new file mode 100644 index 000000000..419a2b00d --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.DiaResolver.Resources.ja.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ファイル '{0}' の .pdb ファイルが見つかりませんでした。テストのソースの場所を取得できません。 + + + {0} の行番号が見つかりませんでした + + + リンカー オプション /DEBUG:FULL (Visual Studio 2017) または /DEBUG (Visual Studio 2015 以前) を使用し、/DEBUG:FASTLINK を使用しないでください。 + + + ImageDirectoryEntryToData failed! + + + {0} を読み込むことができません。 + + + *.pdb ファイルを解析するための msdia.dll が見つかりませんでした。テストのソースの場所を取得できません。 + + + UnMapAndLoad に失敗しました。 + + + PDB ファイル {0} を解析しています + + + PDB の検索を試行します: {0} + + + テストのソースの場所を取得するため、必ずテスト実行可能ファイルの *完全な* PDB を生成してください。 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Resources.ja.resx b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Resources.ja.resx new file mode 100644 index 000000000..685f2bb16 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.Resources.ja.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 有効な場合、接続されている可能性のあるデバッガーがアサーション エラーをキャッチし、自動的に対話型モードになります。 +Google Test オプション: {0} + + + {0}>>>>>>>>>>>>>>>コマンドの出力 '{1} {2}' + + + 実行可能ファイル '{0}' のテスト ケースをリストできませんでした: プロセス実行は終了コード {1} で失敗しました + + + Google Test によって生成されるテスト名には '/' 文字が含まれることがありますが、テスト エクスプローラー ウィンドウが十分な長さではない場合、'/' の後の名前は Visual Studio によって切り取られます。このオプションが空でない場合、その値によって '/' 文字が置き換えられて、この動作が回避されます。'\'、' '、'|'、'-' も同じ動作になります ('.'、'_'、':'、'::' は正常に機能することが分かっています)。また、特徴の正規表現がテストの表示名に照らして評価されます (したがって、このオプションと一貫性がなければなりません)。 + + + 実際のテスト ケース期間数: {0} + + + {0}コンソール出力から {1} 件のテスト結果が収集されました + + + プロセスがコード {0} で終了しました + + + {1} に開始したプロセス {0} を終了しました + + + {0}{1}: '{2}' が正常に実行されました + + + 実行ごとにテストをシャッフル + + + {0}実行は取り消されました: {1} + + + {1} 個のテストを含めた後、コマンド ラインの最大許容長 ({0}) を超えました (次の文字列の長さ: {2}) + + + バイナリ {2} で {0} 個のテスト メソッド シンボルと {1} 個の特徴シンボルが見つかりました + + + テスト検出タイムアウト (秒) + + + {0}{1}: 例外がキャッチされました。メッセージ: '{2}'、実行されたコマンド: '{3}' + + + {0} - ソリューションのディレクトリ (Visual Studio の内部でのみ使用可能) + + + スレッドの最大数 + + + True の場合、テストの実行がキャンセルされると、実行中のテスト実行可能ファイルが自動的に終了します。テスト プロセスが終了すると、あらゆる種類の副作用が生じる可能性があります。特に Google Test では、シャットダウン タスクが実行できなくなります。 + + + {0}テストの実行中に例外が発生しました: {1} + + + 実行可能ファイル {0} に関して Google Test インジケーター ファイルは見つかりませんでした + + + 0: シードは、システム時間から計算されます。<1<=n<={0}: 指定したシードが使用されます。オプション '{1}' の注を参照してください。 +Google Test オプション: {2} + + + {0}{1} 個のテスト ケースが実行されていない可能性があります。現在テストの実行を繰り返していて、その間にテストが変更されましたか? テスト ケース:{2}{3} + + + その他のテスト実行パラメーター + + + 実行可能ファイル {0} に関して見つかった Google Test インジケーター ファイル + + + 実際の期間には {0} 個の期間 (期待値) がありました + + + PATH 拡張 + + + 正規表現 '{0}' を解析できません: {1} + + + 選択した回数、テストが実行されます (-1 は無限)。 +Google Test オプション: {0} + + + {0}特に: テストが一般に実行可能であることを確認するには、コマンド プロンプトを起動し、ディレクトリ '{1}' に変更し、次のコマンドを実行します。{2}{3} {4} + + + テスト数に基づいてスプリッターを使用する + + + 不明なリテラル: {0} + + + 新しいテスト実行フレームワークを使用 (試験的) + + + ペア '{0}' を解析できませんでした。例外メッセージ: {1} + + + 実行可能ファイル {1} で {0} 個のテストが見つかりました + + + テストを同時実行すると、テスト コンソールにテスト出力は表示されません。 + + + コマンドの出力: + + + テスト出力ウィンドウに Google Test 実行可能ファイルの出力を表示します。 + + + テストの teardown バッチ ファイル + + + {0}実行にかかった時間: {1} + + + 作業ディレクトリ + + + テストの teardown バッチ ファイル + + + オプションで並列実行が選択されていますが、デバッガーがアタッチされているためテストは順番に実行されます。 + + + ファイル {0} は無効です。{1} + + + テスト後探索 + + + {0} は既定の正規表現 {1} と一致します + + + 行 '{0}' のテスト結果の既知のテスト ケースがありません。現在テストの実行を繰り返していて、その間にテストが変更されましたか? + + + 実行可能ファイル {1} のテストの検出が {0} 秒後に取り消されました + + + 並列テスト実行は、複数のスレッドを使って実現されます。各スレッドには、実行する複数のテストが割り当てられます。そして、スレッドは必要な実行可能ファイルを順番に呼び出して、対応するテスト結果を生成します。 + + + {0}既にアナライザーに含まれているテスト ケース: {1} + + + Google Test 実行可能ファイルのその他のパラメーター。プレースホルダー: + + + 下位 {0} 件の相違点: + + + XmlNode: '{0}' を解析できませんでした。例外メッセージ: {1} + + + キャンセル時にプロセスを終了 + + + {0}テスト実行可能ファイル '{1}' の実行に失敗しました: {2} + + + 標準偏差: {0} ミリ秒 + + + 特徴の割り当てのための正規表現 + + + 予想されたテスト ケース期間数: {0} + + + True の場合、拡張機能が更新された後に、ダイアログにリリース ノートが表示されます。 + + + 新しいテスト実行フレームワークを使用します。利点: テスト クラッシュの検出とテスト出力の表示もデバッグ モードで動作します。 + + + >>> スケジュールの統計情報 <<< + + + 更新後にリリース ノートを表示 + + + 実行されたコマンド: '{0} {1}'、作業ディレクトリ: '{2}' + + + {0} のテストの場所と特徴を解決中に例外が発生しました\n{1} + + + {0} は既定の正規表現 {1} と一致しません + + + テストの繰り返し回数 + + + コマンドによって出力は生成されませんでした + + + {0}{1}: ファイルが見つかりませんでした: {2} + + + 正規表現 "{0}" が無効です。例外メッセージ: {1} + + + エラーで中断 + + + テスト実行可能ファイルのデバッグ シンボル情報を解析し、ソースの場所情報と特徴 (GTA_Traits.h のマクロを使用して定義されている) を取得します。 +これを false に設定すると、手順 2 の特徴検出は省略され、特徴の正規表現のみが有効になります。 + + + テスト名の区切り文字 + + + {0}{1} 件のテスト結果が Visual Studio にレポートされました。実行可能ファイル: '{2}'、期間: {3} + + + テストの実行に使用するスレッドの最大数 (0 の場合は、プロセッサごとに 1 スレッド)。 + + + {0}<<<<<<<<<<<<<<< 出力の最後 + + + {0} を 0 未満にすることはできません + + + その他 + + + タイムスタンプ出力 + + + {0} はカスタム正規表現 {1} と一致します + + + テスト出力: + + + 不明なテスト ケースの状態: {0} + + + 空でない場合、テスト実行用の作業ディレクトリが設定されます (既定値: {0}) +例: {1}\MyTestDir +プレースホルダー: + + + 予測と実際の期間の差の平均: {0} ミリ秒 + + + {0}結果の XML ファイル {2} から {1} 件のテスト結果が収集されました + + + True の場合、テストは、ランダムな順序で実行されます。本当にランダムな順序になるのは、すべてのテストを並列ではない方法で実行する場合のみです。その他の場合、テスト実行可能ファイルが複数回実行される可能性があります。ランダムな順序は対応する実行に限定されます。 +Google Test オプション: {0} + + + デバッガーを {0} にアタッチしています + + + {0} はカスタム正規表現 {1} と一致しません + + + True の場合、デバッグ出力がテスト コンソールに出力されます。 + + + True の場合、(選択された) すべてのテストが、無効な状態なものも含めて実行されます。 +Google Test オプション: {0} + + + {0} - テスト実行可能ファイルを含むディレクトリ + + + テストの実行 + + + デバッグ情報の出力 + + + {0}テスト ディレクトリ '{1}' を削除できませんでした: {2} + + + テストをシャッフル: シード + + + このテストはクラッシュした可能性があります。 + + + 理由はテスト {0} のクラッシュが考えられます + + + テスト結果ファイル {0} を (完全には) 解析できませんでした。テスト実行可能ファイルがクラッシュしている可能性があります。例外メッセージ: {1} + + + {0}テストの実行中に {1} 件のテスト結果が Visual Studio にレポートされました。実行可能ファイル: '{2}' + + + 無効なテストも実行 + + + テスト検出が失敗したと見なされるまでの経過時間 (秒単位)。0: タイムアウトしません + + + テストの setup バッチ ファイル + + + 空でない場合、内容がテストの実行および探索プロセスの PATH 変数に追加されます。 +例: C:\MyBins;{0}\MyOtherBins; +プレースホルダー: + + + 追加されたテスト ケース '{0}' + + + {0} 個のテストを実行しています... + + + {0}結果の XML ファイルにもコンソール出力にもないテストのテスト結果が {1} 件、作成されました + + + 既にアナライザーに含まれているテスト ケース: {0} + + + 次のコマンドがコマンド ラインで正常に実行されるかどうかをテストします (必要なすべてのバイナリが PATH にあることを確認します):{0}{1} + + + テストの setup バッチ ファイル + + + VS 単体テスト フレームワークの制限のため、テストのデバッグ時にテスト実行可能ファイルの出力をテスト コンソールに表示できません。 + + + {0}{1}: コード {2} で終了しました。実行されたコマンド: '{3}' + + + 例外のキャッチ + + + 実行時の動作 + + + {1} に開始したプロセス {0} を終了できませんでした: {2} + + + テスト{0}: 予想 {1} ミリ秒、実際 {2} ミリ秒 + + + テスト実行可能ファイル '{0}' を設定しています: {1} + + + 行 '{0}' の期間を解析できませんでした + + + 出力ファイルが存在しません。テストがクラッシュしましたか? + + + 実行可能ファイル {0} は別のコンピューターからのものであり、このコンピューターを保護するためにブロックされました。 + + + {0} スレッドでテストを実行しています + + + テスト前探索 + + + {0}スタック トレース:{1}{2} + + + SettingsWrapper はある実行可能ファイルの設定を使用してスレッド '{0}' で既に実行中です。スレッド '{1}' でも使用できません + + + 並列テスト実行 + + + テスト {0} のソースの場所が見つかりませんでした + + + 既に実行可能ファイル {0} の設定で実行されています。{1} の設定に切り替えることはできません + + + テスト実行可能ファイル '{0}' 用に構成された設定はありません。ソリューションの設定で実行しています: {1} + + + 正規表現 '{0}' がタイムアウトしました: {1} + + + テスト期間を読み取ることができませんでした: {0} + + + シンボル情報の解析 + + + 並列処理 + + + テスト期間に基づいてスプリッターを使用する + + + 正規表現に一致するテストケースの特徴を上書き/追加することができます。特徴は、3 つのフェーズで構成されます。最初に、'前の特徴' オプションに基づいて特徴がテストに割り当てられます。次に、テストの特徴 (GTA_Traits.h のマクロを使用して定義されている) がテストに追加され、フェーズ 1 の特徴が新しい値で上書きされます。最後に、'後の特徴' オプションが、ここでも上書き方式で評価されます。 +構文: {0} によって特徴から正規表現が区切られ、特徴の名前と値は {1} によって区切られ、正規表現と特徴の各ペアは {2} で区切られます。 +例: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + 空でない場合、この正規表現を使用して、テストが含まれている Google Test 実行可能ファイルが検出されます。 +既定の正規表現: {0} + + + テストの実行前に実行するバッチ ファイル。複数のテストが並列で実行される場合、バッチ ファイルはスレッドごとに実行されます。プレースホルダー: + + + True の場合、テストおよびデバッグの出力にタイムスタンプが追加されます。 + + + ソリューションの設定を復元しています: {0} + + + テスト出力の表示 + + + 何もレポートされません。 + + + 既定で Google Test は例外をキャッチします。その結果、対応するテストは失敗して、テストの実行が継続します。False を選択すると、例外はそのまま移行し、デバッガーがそれをキャッチできます。 +Google Test オプション: {0} + + + テスト検索の正規表現 + + + テストの実行後に実行するバッチ ファイル。複数のテストが並列で実行される場合、バッチ ファイルはスレッドごとに実行されます。プレースホルダー: + + + {0} - テストで使用できるディレクトリのパス +{1} - 現在のテストを実行するスレッドの ID + + + {0} - テストが含まれる実行可能ファイル + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.TestAdapter.Resources.ja.resx b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.TestAdapter.Resources.ja.resx new file mode 100644 index 000000000..fa18ab517 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ja/GoogleTestAdapter.TestAdapter.Resources.ja.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument に RunSettings ノードが含まれていません。マージの設定をキャンセルしています... + + + プロセスが見つかりませんでした + + + Visual Studio バージョン: {0} + + + {0} には Visual Studio 2012 Update 1 以降が必要です。Visual Studio インストールを更新してください。 + + + Visual Studio のバージョンを識別できませんでした。{0} には Visual Studio 2012 Update 1 以上が必要です。 + + + デバッガーをプロセス {0} にアタッチできませんでした:{1}{2} + + + 特徴の名前が基本テスト プロパティと同じであるため、テスト ケース フィルターで無視されます: {0} + + + テスト ケース フィルター: {0} + + + {0} 中に次のエラーと警告が発生しました{1}:{2} + + + Visual Studio バージョンを検出できませんでした: {0} + + + 不明な列挙型リテラル: {0} + + + 不明な列挙型リテラル: {0} + + + テストの実行中に例外が発生しました: {0} + + + テストの検出が完了しました。全体の期間: {0} + + + デバッグは、GoogleTestAdapter が Visual Studio にインストールされている場合にのみ可能です。NuGet インストールでは、これはサポートされません (Visual Studio オプション、ツール バー、ソリューションの設定などの機能も同様です)。 + + + テストの実行がキャンセルされました。 + + + 不明な Visual Studio バージョン: {0} + + + ソリューションのテストの設定ファイルを解析できませんでした。次のファイルをご確認ください: {0} +例外: {1} + + + (詳細情報を確認するには、デバッグ モードを有効にします) + + + テスト ケース フィルターが指定されていません + + + ソリューションの設定: {0} + + + テストの検出中に例外が発生しました: {0} + + + エラー: {0} + + + テストの検出 + + + テスト ケース フィルターが無効です: {0} + + + Google Test の実行が完了しました。全体の期間: {0} + + + 問題の詳細情報が Visual Studio の ActivityLog.xml にある場合があります (https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/ などを参照) + + + デバッガーがプロセス {0} にアタッチされました。所要時間 {1} ミリ秒 + + + {0} は {1} と一致します + + + {0} は {1} と一致しません + + + デバッガーをプロセス {0} にアタッチできませんでした。エラー メッセージはありません + + + テストの実行 + + + {0} が無効です + + + 警告: {0} + + + ソリューションのテストの設定ファイルが '{0}' で見つかりましたが、{1} ノードが含まれていません + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ja/NewProjectWizard.Properties.Resources.ja.resx b/GoogleTestAdapter/Packaging.GTA/ja/NewProjectWizard.Properties.Resources.ja.resx new file mode 100644 index 000000000..4719a493d --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ja/NewProjectWizard.Properties.Resources.ja.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + テスト プロジェクトの構成 + + + 動的リンク (推奨) + + + Google Test の使用法: + + + C++ ランタイム ライブラリ: + + + NuGet.VisualStudio.Interop.dll を見つけることができません。ウィザードを続行できません。 + + + <プロジェクトがありません> + + + Windows SDK が見つかりません。 + + + スタティック ライブラリ (.lib) + + + テストするプロジェクトの選択 (オプション): + + + 静的リンク + + + ダイナミック ライブラリ (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ja/VSPackage.ja.resx b/GoogleTestAdapter/Packaging.GTA/ja/VSPackage.ja.resx new file mode 100644 index 000000000..d2528a780 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ja/VSPackage.ja.resx @@ -0,0 +1,1251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAwAAAAAAAEACAAbJQAAxgAAAEBAAAABAAgAKBYAAOElAAAwMAAAAQAIAKgOAAAJPAAAICAAAAEA + CACoCAAAsUoAABgYAAABAAgAyAYAAFlTAAAQEAAAAQAIAGgFAAAhWgAAAAAAAAEAIAAdFwAAiV8AAEBA + AAABACAAKEIAAKZ2AAAwMAAAAQAgAKglAADOuAAAICAAAAEAIACoEAAAdt4AABgYAAABACAAiAkAAB7v + AAAQEAAAAQAgAGgEAACm+AAAiVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IA + rs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACSwSURBVHhe7Z1fyGVV+ceP + P6iQvBCGLiIjQyPFEsMpDImERCEpkUiwbowilC7sorqpm0AJ0iQvRC8cEoKC/lxkeDFSMBAyQyhKGVoh + GdmVDAhNSFf9+pw53zPPPLPW2mufvfY5+5z9fGDxPOtZa+/1nL2f55m93/c9ay46ceLEYs7ccMMN/0X+ + 5z//WbzjHe9Y2mp0sclcJEhPSeirw5Dj56RLnjp16qLlwEz5v5UMNqA24CRlQ0oX9GvPl9JhyPFz0EG6 + tc2ZKAAbsknwATaa9D7nyOkw5Pg56EDfyiAKwEbUBFxOR9KGnMPqMOT4Oejg+4Bt7kQB6IECCKngSQVc + SZfse1xKhyHHz0GH3JidM1eiAFRC4NhG8CA1lgowSOmpuX11GHL8HHQozQuiAFRD4Njm8QGlfk6CDcaU + 7rH23DGhn9Whdt6ciQLQE4JHUkGE9AFFPxdo2NVyaFznkU1S5w39Qh265iGDKAC98EEG2BRMdjynI23L + kRqnX7PGnHWomWfnz5koAJWUAolWE3ToKZmaK/zxoed1KI0J7MFZogBUUgqqXNDldAt2mkX93PGhX6hD + aR6oj5Rt7kQB6IGCCqkAkm0THalmoT/kvHPToWsekuZtcycKQCUKGkAqgGTbRPdyyLnmqkPNPCTN2+ZO + FIBKFCwEkKS1bap7/NiYutZCevqcB3al566r1yW9be5EAaiEgFEA+UBqoXu5DXa5divkc+01pi89WCzi + 68A9vg4srO306dOLSy65ZHHmzJnBchfscu0WHDlyZCl1T0r3zs4B9Ll/HTgKQM8C4MfuuOOOpR7shh// + +McXFAGvg++L2A8gqKYUYME04L5Y6Pv7ZuXciQJQiQ+iSP7pwT3x98Xa4r5dSBSASiKI9gdfrCWxqR/3 + 8CxRACohcHwQSQbTQffI6564d2eJAlAJgeSDKRdcwW7IJb/V456dTxSAnvjACqZBTfLrflnb3IkC0INc + YAW7g79jyN2XrvuFbe5EAaikK5iC3cAfMXUlvL9f0q1trkQBqCQXTMH0yCU8diuDKADVEDQKrAik6aBX + APCF2d4f3TtL3L8oANUQPD6AfD/YPv4VwIPNJr/V4/5FAeiND6Zgt/gnAJ/gahD37kKiAPTAB5D0YHfk + ngCkW2nvV9y7s0QBqMQGkHQFV7A7/BOAT2zdJ0nNjXt3ligAlSiwFEzggy3YPqknAHuP/P2iyab5cyb2 + A+jYD8BiAyclhe3ndPHpT396pW1Gzffh+/hTsqWOHct/kVpziG5tEPsBBEUIGEkFjg8k9cHare7R/Cnh + fZf0n6H0uVri/RmqWxmcJQpAARtEwgdPKphyc1IBORXkk9eFtW3D95w/fXWQbm3AvLkTBaBAKqCQXX3p + QnPAz50C1qecjkx9hjGo8adGB/peatzOmytRAAwKEkFfAePHIDdfei4owc7dNTk/rT3FWP7X+NOlg+9b + GAuiAKwhUHywpGw2qJC+7205XXOngnxD0mQD67OVYyEf5I9sklo/p0NuzM4JogBcgA8cSR84GhOpuSXd + yl1jfUPSZEOm/LXHtEY+WKxPkNOhNE/Szp8zUQAMucAR1oYs9bvOBSnbLrB+SsqGpMmGzH2e1th1anSo + nQfY5k4UgBU1gYNU0Pg5oH4O5uk4HTMFvF/+c1kbchv+ez9SuqfmGKvnzjMnogD8j1yAQFeQaD5SLQfz + us63C7r80pg+mz7zWNjzl3SomVc6fu5EAfgfBAUBoQBRcKSkAkhS0Ffrwp5nSli/vG7B7m0tSfkA3i4f + 7Ly++tyJArCCgPBBQT8VLNhoFmuzx1gd/NhUyPks3UrQ+Biwhl/PSq1t/YI+OjKIArBGAdEVOIBUEJVs + VofS2C7J+WV17ytjY8Fafj363jew8/ro1jZnogCsICBywZ8KvBqbdCiN7Qr5gNRnSPmoMWuTHBPvg9eR + mzadZ+5EATDYoO7SJQkia1NQ2WPsHK/vCta2zfquvtf9nDHJ+eD92bTp+LkTBWAgBJFNCvW9raTvAta2 + zSP/BX35PLbv9vwlPRjO7PcDGEpqPwFRE8i73A8A1Pd2kbLbY+64446VdTNK+wF0+YR84YUXZv19/qHE + E8BI2OAt6bvE+iKwya+Ur9bmj22FfOD8dl3JsdefE1EARsAGaU7fNTm/kLQuv7HRxkA+WFI+BcOJAtAY + H6Q5HdTfBSm/RM1nQPrjWlPjRzCMKACNyQWptyNpuyTli2xdupVjUONHMJwoAI0hQBWkSNkkFbzIXQZy + yhdrq9ElW1PrRzCcKACNIUB9YtBPBe8ugzjli7WldMuYvufW9vYxfZgLUQBGwgZvTpfcBfghX2p8RQf1 + JceAtbS21rVyGz7MhSgAI2CDtKTvEvzoSiDvN1J+j+l/yjetb30KhhMFoDE+SLv0XVPyUVI2JG1b/pd8 + 28b6cyAKQGNyQZoL5F2SSyrvO8hXP28scv5YPRhOFIDGEKAKUqRsklMJ5JwvOR2ZGxuD1DpeD4YTBaAx + BKhPDPrbTJ4SWlc+SYecj6V5reHcah6/fmpO0I8oACOhIO3Stwnr2WaTSP2cjtRc4ftDYR3bLFpL/oCf + E/QnCsAI2CCt0bcF69nmwaccqWNS52iB/Chdo5KvQT1RABpjg7ZG3wVKHusHssYn/zlak7o23k/1x1h/ + bkQBaIxNDh/IsOvgTfmFTf7YcT+3NNaC3PmR9MHbg2FEARgBBSlSgTuFoLXJ4xOJlhuH0lgr+pyfOcFw + ogA0xgYvkqZgtbIrwMdAa6bWtzY/nhtDb43Oj9T57ZrWr2A4UQAa45PDBq9Hc7aJ/EGmfLQ65Mb8vBbY + cyJpfk3J1mvPlSgAjSE4FaA+eKXvKni9D7Scj5Ab8/Na4M8vmVoTqTnBMKIANIbgVKCWsAG9LbReV4JB + bszrreCcnE/nz60Jdk4wjCgAI1ETwNuGdbV2rX81eis4X9c57bqt158jUQBGoJQofmybsG5X0uR8z+kt + 0fWo9SEYThSAxuQCFkpjrahJjJwfff2rWasPrNfKt6COKAAD4D8FURKUghe2EcCcs+u8OT9KOtjzSre2 + oaTWETnfQP8xS7AZUQAGkgpMH6S5MfQxKK23iY6kyWZlK7QOSMqPlG/Q2oc5EgVgQ+x/CWZJBWkqgP28 + VtSs11dH0mSzYy3xa9BA0q5pffjIRz4STwEbEgVgA+xjpw1a2wdrz+ktqVlvE11SNqTsLfFraB1JrWnn + SY9Xgc2IAjAABaQNRk/KpvmvvfbaWh9KKila6gJbyr4p//rXv1bahYXFroPUuGwt/ZgrUQB6Yh/9FZBq + PkCRPkAZF8eOHTuvvwmXXHLJeWuOrSNp2Frw+OOPr7Tz8etLpnwC+vEU0J8oAD3wyQ9INQtzaNLtfHj6 + 6acXzz///FIfwpkzZ9bntOuMpUvKNpQ//OEPi5/97Ger3tnrk1s/ZQPbjyLQjygAG0CwEXRCug9WzZNN + 83j0f+KJJ5b6GPg1W+sCWwt++tOfLq9JF1rP+uF9DPoRBaAS/y9LTWL44JT+gx/8oFmw6hUAOH9uzSG6 + R/bceF9Yi2siOC826SB/kBqTzevxFFBPFIAK7KO/l6kAVKCmxnjcffXVV5f6UOx6kFtzqA7qg2xg7UPg + mvhXAWH9QdJkQ1odkFEE6ogC0EEqkGwAgtdzY6+88srycbcV9957b9aHTXWL7EiatUm3PgzlySefXF4j + i19PUjakX58+c6IIdBMFoBIfiF5HAnpu3qOPPrqeN5Qbb7xxccstt6x654JeOvj1a3RQ30pa6jh8OHr0 + 6No+lIcffnil5f0U2GjSS3ODNFEACvT5F8QGn6QNwh/96EfNHv0vvfTSxT333LPqnVvTrpdLiC4dSZNN + pOZKx5eLL754bRvC66+/vv7VYG496Uhaybd4CigTBSCDDRwbVJDTU3Dsn/70p8Xx48dXluF89atfXRw5 + cmSpyzckzdo20ZE02ZBdx+ELPrXiqaeeWl6zGrp8gygCeaIAVKBAAgIrJcEGnT3mkUceOW/eEG666aZl + A78ezdo20SVlQ9Ych08f//jH17ahPPDAA2t/OKfVRckfqwd5ogAk0L8YCh4rbQAK7HbMzufRn8faFvDo + f999963Pz3rSwfuwqS6w0aR3HfflL3+52avAm2++ubx2oDWQNGur1eMpIE0UAEcqUBR8qcBCqoEde/nl + l5ePs6341re+lV1rDB1Jkw1ZOo5XAXxEbwHX7sUXX1yvgZQfKR88dg5EEbiQKAAZckHmdS/t2Pe///2l + 3oLPfvazi+uuu269FtT4N0SXlA3ZddzVV1+99LUVXEP5Arl1Ncf37ZzgQqIAGOy/EARNKqhSupfAez+P + sS247LLLFl/60pfWayLlW86nVrrARpNeOg5f8bkFXEOupeD88kNoXdmtTwIbLZ4CzicKwAoFhgLFo6DS + uA846XDixInFyZMnV71hsA7v/UgFtXT5AWPrSJpsyNJc+dwCridN2HX8uiWfNB5F4BxRABwKFEsqkCzW + dvr06aY/9b/11lsX11xzzap3jlygj6VLyoYszcVnfJd9KLqm1hetK5tFY9IlW/lzKEQB+B/2X3+RChZs + qWCyx/FHLLY/hCuuuGL5OO3xa29LF9ho0nPH6VXAH78JnO+hhx5anwvpz2vXR9KXbsEeTwFnmX0BSAWC + DSQfVAqs1PgzzzyzePbZZ5d6C772ta+t16NBbu1t6kiabMjUXBqfoRVcW66xxa4rvD+gvpVRBKIAJFHg + 2CBCl0yN8332xx57bN0fyt1337246qqrljrnpOXW3rYuKRsyN5fPcNdddy37LeAa85oFfi3vDzbwY8E5 + Zl0A+BeA4FCgWBQ0GpeuALI66NGfNgTOee211y7uvPPO886VW3tXusBGk56ae/vtty8/Uws474MPPrjU + cz5KlnwVc99ReLYFQI9/BEkqUGRLjXvY3outrVqhL/poXevP1HQkTTZkai6fSXOHkttGzPqgdayO9OPI + Ob8KxCvAChsUAhtNusat3np7Lx6XL7/88lUvv+5UdEnZkKm5fKavfOUr62OG4rcRs+uWyPk/V2ZZAHzF + 90EhXUElG9Lq0HJ7r+uvv/68R3+tNXVdYKNJt3Ph5ptvXn5Gf9wmcE67jZjw69q1SmNzfQqYXQGoTX50 + SdmQVm+9vdfXv/71tV7ya6o6kiYb0o6D/YxD8duI5fyC3JjV51gEZlUA+iS/dGuzcoztvfx3/PdNl5QN + 6efyGfmsmj8Uu42YX0vYfkmHuRWB2f4MIBcIFuxqjNt5bF1FvwVjbe+1C11go0m3c/msfGZ/zKbYbcQ8 + fu2SjpwbsykAtrKXAsGCXU194Fd+Lb/jP9b2XrvUkTTZkHZc24i1wG4jBloj51tOl5zTU8AsCkBt8qNb + KaQj92l7r13qkrIh7bi2EZNtKH4bsZJvOV2gz6UIzOoVoCYQJIUdg33a3mvXusBGk67xsbcRA7tel460 + 9jlw8AVAlbzr5kuXlM2O7eP2XlPQkTTZkDQYYxsxnRty55U95yfM4SngoAtA3+SXLrDRYN+399qlLikb + Ujr/tVnrbcS4V5zPNov6yJKf6IdeBGbxCqAbCvbmdulIGrZ9395r17rARpPOONei9TZiwLnVLPRzfmpM + +qFzsAXA/usvaVvq5ntd8lC295qCjqTJhqSNuY0Y5PyxOqiPVDvkp4CDLACpG8ZNtQ3szc/pPE7a7aiG + wDmnsL3XLnVJ2ZBqY28jpvW1hvUDcn7BoRaBg34F0A0H6Vbam5+C751/97vfXfWGM5XtvXatC2w06WNs + I6a9A4Dz2vVSfekpeYgcXAGgUuuGcUN9MOmmS6qprznwwx/+cG0bytS295qCjqTJhmz5KsD5uIcWu16q + Xxo7xL0DDqoA6DFNN0yUbrCah62nXnrppVVvOFPd3muXuqRsSJquVQuef/75C7YR8z4I6wuor3noh/Yq + cJCvANww2+wN9zffSo1pey+NDWXK23vtWhfYaPD+97+/+TZidu8AkA/WF/WhZD8kDqYApB791cDeUKt7 + GDt27FiTG80a+7C91xR0JE02rlnLbcTsdwX8uvTB2gU2P/+QngIOogD4G2JvqKS9sSld8je/+c3ysbEV + +7S91y51SWvTNmItYBsxtm4Dv67H+oGkWR/hUIrAQb0C2Jvmb6LwN1IS5r691651IZu2EWsF99ZvI2bX + 936InI+HwN4XAFVi3RCkbpi3yZ6Csdjea3c6SEcyBrfddtso24jp/HYt8D7ZvtWRh/AUsNcFIHUDuDH2 + BoJssvsbCb/61a9ie68d6l7aMb4wBLINQduIlXzK+WF1yX0vAntbALoufO6GWdSP7b2moXs0xqsA17QV + 3OvSNmLIGn8l97kI7P0rADcEdDMgd8M82Bl/9NFH1+cZyiFt77UrXdLyyU9+cnH06NHkWF9Yi3suvB+Q + 8sujufvMXhYAVVzdHKRuhr1hOd3eUL4/3urR/1C399q2LolNffSW24hxz/WrQe8HUusK6wf4ufv6FLB3 + BcAnPyB1M/wNSumSsb3XdHUPY2NvIyY4v1+DPj6A9VNzse1jEdjbVwDdgNRNsTrk7LG91/R1SdF6G7FS + DOR8EjouNbYv7FUB6Kqw/kbaGwT2Zsb2XvuhS2JTv+U2YsQAseAp+SRdPtmxfXsK2JsCYC8sF1rS3gzp + wt4gpI6L7b32S/doG7FW8Br44osv9vYPUmP7VAT27hXAXmiBTTfEjlsdScMW23vtpy4JXHP2DmgBaxAT + SKj1CaljLCnbVNmLAqCKmroJgNQNSY3rhiBje6/91SWxIcfeRkxr52A8N2dfngImXwByFzIXGCU9tvfa + f92CbaxtxFhTrYucr/tQBPbuFUDoxuhip26A1WN7r8PSJa+88srm24hpHbUSJV/3gUkXAPvoD/5CIzWW + myNie6/D0iWxtd5G7P7771/1zlLyo6Qjp76N2GQLgH180sUEe6GRGkvNUT+29zpM3TLmNmJ9fLI6kjbl + V4HJvwJwQcFeVJDdX3Dfj+29Dl9Hck/G3kZM1Ppn5VSZZAGwj/5cUKS/oLrQ/oIL9fl7bz+2KbG91zR1 + yTG3EQPWLPmR0nXMVJ8CJlcAfPIDUhdSkgaSmivo873vP//5zyvLMDhfbO81XV3whOZtm8I2YsSQJXXu + kk/qI6dYBCb7CqCLJuyFRWpcUk1zeHzje9/YWsDWVLG91/R1XgVabiNm9w5gHSu1JtLbwPpl7VNiUgXA + /usPumj2QmrMX1w1YKz19l5sTZVaO/Rp6XDzzTc33UZMewdwPq2H1Holm3TJqT0FTKYA5C6Mv5DSUxdX + xPZe89ZB96wF2kYMtAaSZtdN2fw4/SkVgUkUAH9B/MVDWl1j4C/umNt7BWfRvZiyzj3j3sk+lCeffHL9 + KiD8upIpv0B95FSKwGSeAOwFlNTFQ9oLCbqQIInt4YcfXveH4rf3AuvHXHVJe4+mqHPv2EasFcSWyK2L + pC9d+DlTYecFQJVQF85fHGy6oHY8dUH5tc0bb7yx1IfCOb/xjW+sekGK1L2Yms5vbtivQf0hsHdAbhsx + oT6SZm3SJafwFHBRqy/HbIK9AP4i2YsKuXHpbO30ne98Z9lvAX9Z9j//Vr0gBd/LP3PmzOQlf9nn/5fg + ITz44IPr74Hk4lLIpriUbuedOnXqopW6dSZZADx2LKUj+XvwVl/zDYISPFGwi5Biz0pI2Sx+7gsvvLCz + ArCzVwCSnw9Ps8hmm7+wXudmRPIH24JY0zZixGAuLgU2mnQ/d5evAjspAPrAfHh/sWSzDVIXDtjKqeX2 + XkFQAzFH7EFXjCJpuXH0XRWBSfwWwF+MlPQXDklrub1XEPSB/SUUn5BKbmFtOX0XbL0A+EpXczGwq2kc + 2XJ7ryDoC/H40EMPrXpnUYwqXq2tS9/FU8BWC0Bt8lsdaZvgh5cnT55c9YJgNzz77LPnbTPn47Ymxq2+ + 7SKws1eA2guTkmzvVfoPHYJgmxCLxKTHx3JtvG+TrRUAW9n6XhgvW27vFQRDIRb93xnUxHVO3+Y2Ylsp + ADXJDzmdeaL19l5B0IJW24hJ39arwFZfAXIfGujnpOa13t4rCFrSYhsxmxPbYPQCoEpW+qC5Dy47Elpu + 7xUErSE2W2wjBvS38RQwagGo+QC5i4C0+tNPP73coikIpkzLbcRg7CKw1VcAkfrgXreSx6onnnhiqQfB + 1Gm1jZjGx2S0AkDl4gP4D6G+/6ApXbTc3isIxoZYbbGNmPQxnwJGKQBymA+gDyH0oVMf1IOdx6lW23sF + wbZotY0Y0B+rCDQvAClHcx/O62A/eOvtvYJgm7TcRgzGKAKj/wyg9OG8HUmTreX2XkGwC1ptIzZWHjQt + AL5C5T4w6ANZO1I637dutb1XEOyKVtuISW/9FNCsAPRNftsHbDRge6/jx4+v+0Gwz7B3ADGdwuYCkiab + ckI6IFsWgVFeAeS01yE3hqRhe+CBB5YyCA6FVEz7XJD0OWFRjrSiSQGgIqU+gNUhN2aPje29gkNkqtuI + DS4AcqTrQ+XGrP7yyy/H9l7BwdJyGzFoUQSavQKUHM2NeT229woOnRbbiIE9xxAGFYCaCpT7EP4DxfZe + wRwg7odsIwa2P3TvgI0LgJJfDltSjpc+UGzvFcyJTbcRg9TYkFeBwa8A1jnAKcnUh7A6xPZewRzpu40Y + 5MaG5M5GBcD/6+8dFd4xzbP2+I5/MEeI+dptxCA3Jn3Tp4DeBSC1UMoxpHRhx4AtlHgcCoI5UrONGHQl + v/RNisDGrwDeSQtjNOnWSUlt75U7RxDMgdI2YuDzp6Qj+9KrAKQqjBa1DiHlkHcSkHr01/FBMEeIf7+N + mMjlD3i7ZN+ngI2eAKwzdnFAl7Q26RDbewXBOfw2YqmcsvmTyjE7tw/VBaBUWVKOpmzA96Nje68gOB/2 + vSi9CgifT6Ck11ifp4DeTwBaBGmbRX2knQtsleTnB8HcISfY+k4ob6QD/ZSuuXaslqoCkKooLGabhb4c + kqTF9l5BkMduIwY2r3yC2zGLxmqfAno9AXById3KlIOSPN7E9l5BUIZtxPyrQC63UrmHlL2GXgWAk2sh + oQVlTzkIx44d6+VYEMwV+1uBUm5JF9hS9hKdBUCPEpxY5BzJLc7fPcf/5xcEdfBbAX1XoCvPrI6kYYOa + 14CNfwjYpYP6P/nJT9a2IAi6IWfA5pLPq1TOpWwligXAVhA5kFs8p/OnjmyMGARBPeQMuePzCknL4ed3 + PQX0/hkA6OQea5f+61//etkPgqAfv/jFL1baOcipVO4JFYfSHEt1AdCJldhIv5ik5rD9UfzaLwg2g6cA + bSHmUY55Ham8lCzRWQA4iRbwC6UWs3P4k1/pQRD0hxwCm0c2x6wO6nt7jmwB0LsDJ/En4uSSuUXY7OC5 + 555bzw2CoD/kkN04xOaczz/bRyr3Sj8HqHoCkPQnV9+PwalTp9bHBkGwGeQQuSQ9lXPgxyy+b6n6GYBO + rhP5xfzCyNy7SxAE/VABsDmonINcPnqZorMAcHDuBLmFgUeXIAiGwx/RkV/KMelg887qoDklkgUg9c5g + T24XScF/8FGzeBAE3ZBL5JTNP5rNSauDH8v9HKD4BMCBkvZkknICrP6Xv/xlKYMgaINyyuef16E05ikW + ACV1zcns2F//+telDIKgDcqprpyszVfR+QSQOpnV/QKM/f3vf1/1giBoQe6/F7eU8jVH5w8Ba/AFIf72 + Pwja8tZbb62081+3cwmf0lMMLgB+ATYzKC0YBEF/yDO7UYjNsU2THwYVAL8Y/Pvf/17rQRC0g9zy5BI+ + lZspBhWA1GJvvPHGWg+CoB3klqU2+dGRKQY/AaQWyC0WBEEblHe1uqRn8BOAPzGPKbnFgiDYHL0C5JIc + Unb0HIN/CAjeidKCQRBsxtve9ralJNfIMeWd8s3KVCFIMbgA+AXe+c53rrQgCFry9re/faWln77p90l+ + 2KgApBZAF12LBkHQhlzC53LT01kA/MHq5xZ717vetZRBELTF51YuB1M6MkWxAHCgTiR0Mr+A4BUgt1gQ + BJtjX69zOZjTbY5aql4BaheDd7/73dnFgiDYHHILavPR52aKqleAPosBjyq2HwTBMC677LJ1TiGV1Kkc + LOWmp1gASicqLfa+971vqQdB0AZyCpRXNueglI8lOn8GwEl0Ii1mZWqxD3zgA0sZBEEbbE6Ra2o+L1P5 + WKLzFYCT+BNp0dRi6Ndcc81SD4KgDcop5aOah/yz+L4nWQBOnTp10UpdU0p4r1955ZVJ54Ig6I9yyqLE + tvmH9HmnfiqnofMJALoS3uvID33oQ0s9CIJhHD16dJlT5BjYXBPYUuOy5egsAP5kduGUXQt+4hOfOG9u + EASb8dGPfnQpyadcPiJL4zmqfgbAiXQyJFiZWvD6669fyiAINod8qs2lXC6WyBYA+87AifzJ6OcWRD9y + 5Mj60SUIgs0gh8ilLkrJn3v/h+qfAUjmEj6l33bbbetjgyDoDzkkbG5ZSrnYRVUB4ISlRVI6XH311Ysr + rrhi1QuCoA/kznXXXbfUfZ6B+jW5mKOqAGyCHPjMZz5T5UgQBOfzuc99bqVdmORImmzg59RQLACld4cS + 1oFbbrklviIcBD3hb/9vuummVe8sNq+QNNlUBHy/K4ernwB0Ur8AupAuqTlf+MIXzpsXBEEZcsaivJMu + aXPO92voLABdvw2wzgjpmksl4w+Dap0KgrlCjvBrP/uvv01sqwube6B+zRP8Rj8DSDkB2DUmJyS/+MUv + LmUQBGVsrthcy+nKN9uvpXcBKDmh5mHeVVddtbjrrruS40EQnIUcIVcgl2uQyyPm9aGqAPjXAPAOgRa3 + Y0jpt99+++KDH/zgUg+C4BzkyLXXXrvMkS5snknafIPaH+APegVAppwQqfFvfvObi0svvXRpC4LgHOSG + csjmU0632DzrQ3UBSD0FIGk5B/048pJLLll8+9vfXs8JgrlDLtx///3LP/lVAitfpIPNLasjrV77rz9s + 9ARgyTkl51OO8t3me++9d2kLgrlDLtgNP5Q7yhuoybNN6FUAfGUpOSU95Sg2/kDo7rvvXtqCYK6QA+SC + UH4gfc6UdMk+//rDoCeAlCMefQjrqGx33nnn8gLkjg2CQ4bYJweET2jlimwlfVN6F4DcUwBSjngnNaYm + G/BTz/j1YDAniPVS8is3vK1L7/uvP1x04sSJldqPG2644b8r9TzkkHUshZ0HJ0+eXDzyyCPrfhAcGsqH + ++67r/ov/br6YpPkh8E/BLSknMNGky6peUgaF4SfhPIliCA4RC6++OLF9773vd7Jj1RTX+ND2fgJAOxT + gJzzukiN6wNIR54+fXrx+OOPL5577rn1eBDsK4rtG2+8cXHPPfect7uPYt7r4PsWP7bpv/4wqACAfxVI + faiUzWLnAfozzzyzeOyxx5Z92YNg3yCW+TWfftJvY115YHVIjaWOgyHJD4MLAKR+HuAdhb42ngZ+/vOf + L44fP760BcG+QPzeeuuti89//vMX7OlnY97Hf25MurUNTX4YpQBYZ8E6nrKBHfe2V155ZfHLX/4yXguC + SaO45avvfKPPf6nHxjaU+jndMpkCALnfCkDqA8iGBOm5D03/b3/72+Kpp55a/sZAtiDYJTZu2cGXbbxK + 3+azMWuPTc21upctkh+aFQDoehXwH8KTmpvSz5w5s/jtb3+7+N3vfrd4/fXXl7Yg2CaKY35rdfPNNy8+ + 9alPVf+Az6IxxbD00rGtkh+aFgCwRSD3QaQjQXppbk5/7bXXFr///e8Xf/zjHxcvvfTSeWNWBsEQbDzx + iP/hD3948bGPfWxx+eWXr+PLzgGrW2TvGvc6tEx+aF4AIPczAa+L3PgmOq8Jr7766uIf//jH4p///Ofi + zTffXP4w8a233lqOB0EXiif+deer6+95z3sW733ve5fbdKce74VsijPpKQml+WB1aJ38MEoBgE1eB1ro + uXHoOjb00HN0HZc7vus4S2l8jOSHpn8JaEk5nPpwSPrSoXQhvB1p9dxxubHQQ/d6SnYdJ7DZY7uO65oL + YyU/jFYAIOW4Ppz/4L7vdUjNQdo5KXLnDD30nG7BrtZ1HJJWM9fqwtvGTH4YtQCA/wD6cEj7YX3fX4jc + xaJJTx0beuhDdKRtUDpOsmZuSpeEsZMfRvsZQIrcDweRYD+8JXexRG489NBb6F5acsdCaj50zdtG4ovR + nwAspacBGhcCvNQ8f6HA2kIPfQzdgl0th8Y5XvOslF02u842kx+2WgAg9wF1YTz2Qgn17TGhhz62jrQt + R2qcfupclm0nP2z1FcDT9atCT81NCj30MXUvhe9D6nivwy4SX+y0AIhSIfDSjoUe+q50pFA/JcHqll0m + vtj6K0CK1IXQBStdzNBD35WOVLPQ1zxkjikkP0ziCcCSehoQNTcm9NC3pXtpx3JMJfHF5AqApaYY5C5+ + 6KFvS/fSM7Wkt0y6AIhSIRBdNyn00MfSc0w58cVeFABLTTFIMeQGhx56LfuQ9Ja9KwCeTQtCELRg3xLe + s/cFIEUUhWAM9j3ZL2Sx+H/fhIcDqijXBgAAAABJRU5ErkJggigAAABAAAAAgAAAAAEACAAAAAAAABAA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQkJCAEVFRQBKSkoAT09PAFNTUwBXV1cAWlpaAF5eXgBgYGAAZmZm + AG1tbQBwcHAAdnZ2AH9/fwCJiYkAkZGRAJWVlQCcnJwAoaGhAKWlpQCvr68Aubm5AMHBwQDFxcUAysrK + AM3NzQDR0dEA1NTUANjY2ADf398A4ODgAOTk5ADq6uoA7e3tAPHx8QD29vYA+Pj4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + 全般 + + + 並列処理 + + + Google Test + + + Test Adapter for Google Test + + + Google Test 向けに作成された単体テストを含む、Visual Studio のテスト ツールを有効にします。拡張機能のインストール ディレクトリに、使用条件およびサード パーティからの通知が含まれています。 + + + + + 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 + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Common.Resources.ko.resx b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Common.Resources.ko.resx new file mode 100644 index 000000000..319c7e3b1 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Common.Resources.ko.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test Adapter for Google Test: 테스트 실행 시작... + + + Test Adapter for Google Test + + + {0}https://go.microsoft.com/fwlink/?linkid=848168에서 Test Adapter for Google Test의 문제 해결 섹션을 확인하세요. + + + Test Adapter for Google Test: 테스트 검색 시작... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.DiaResolver.Resources.ko.resx b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.DiaResolver.Resources.ko.resx new file mode 100644 index 000000000..2eb5b907a --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.DiaResolver.Resources.ko.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + '{0}' 파일의 .pdb 파일을 찾을 수 없습니다. 테스트에 대한 모든 소스 위치를 가져올 수 없습니다. + + + {0}에 대한 줄 번호를 찾을 수 없습니다. + + + 링커 옵션 /DEBUG:FULL(Visual Studio 2017) 또는 /DEBUG(Visual Studio 2015 및 이전 버전)를 사용합니다. /DEBUG:FASTLINK를 사용하지 마세요. + + + ImageDirectoryEntryToData failed! + + + {0}을(를) 로드할 수 없습니다. + + + *.pdb 파일을 구문 분석하기 위한 msdia.dll을 찾을 수 없습니다. 테스트에 대한 소스 위치를 가져올 수 없습니다. + + + UnMapAndLoad에 실패했습니다. + + + PDB 파일 {0}을(를) 구문 분석하는 중 + + + PDB를 찾으려고 시도합니다. {0} + + + 테스트에 대한 소스 위치를 가져오려면 테스트 실행 파일에 대해 *전체* PDB를 생성하세요. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Resources.ko.resx b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Resources.ko.resx new file mode 100644 index 000000000..cf948f9fc --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.Resources.ko.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 사용하도록 설정하면 잠재적으로 연결된 디버거가 어설션 오류를 catch하고 자동으로 대화형 모드에 넣습니다. +Google Test 옵션: {0} + + + {0}>>>>>>>>>>>>>>> 명령 출력 '{1} {2}' + + + 실행 파일 '{0}'에 대한 테스트 사례를 나열할 수 없습니다. 종료 코드 {1}(으)로 프로세스 실행에 실패했습니다. + + + Google Test에서 생성하는 테스트 이름에는 '/' 문자가 포함될 수 있습니다. 이때 테스트 탐색기 창이 적당히 넓지 않은 경우 Visual Studio가 '/' 다음의 이름을 자릅니다. 이 옵션의 값(비어 있지 않은 경우)은 이러한 동작을 방지하기 위해 '/' 문자를 바꿉니다. '\', ' ', '|', '-'는 비슷한 동작을 생성합니다('.', '_', ':', '::'은 작동함). 또한 특성 regex는 테스트의 표시 이름에 대해 평가되므로 이 옵션과 일치해야 합니다. + + + 실제 테스트 사례 기간 수: {0}개 + + + {0}콘솔 출력에서 수집된 테스트 결과 {1}개 + + + 프로세스가 {0} 코드로 종료되었습니다. + + + {1}에 시작한 프로세스 {0}이(가) 종료되었습니다. + + + {0}{1}: '{2}'을(를) 성공적으로 실행했습니다. + + + 실행당 테스트 순서 섞기 + + + {0}실행이 취소되었습니다. {1} + + + 테스트 {1}개를 포함한 후 초과된 최대 허용 명령줄 길이({0})(다음 문자열 길이는 {2}임) + + + 이진 {2}에서 테스트 메서드 기호 {0}개와 특성 기호 {1}개를 찾았습니다. + + + 테스트 검색 시간 제한(초) + + + {0}{1}: 예외 발생, 메시지: '{2}', 명령 실행: '{3}' + + + {0} - 솔루션의 디렉터리(Visual Studio 내에서만 사용 가능) + + + 최대 스레드 수 + + + True인 경우 테스트 실행이 취소되면 실행 중인 테스트 실행 파일이 종료됩니다. 테스트 프로세스를 종료하면 모든 종류의 부작용이 발생할 수 있습니다. 특히 Google Test는 종료 작업을 수행할 수 없습니다. + + + {0}테스트를 실행하는 동안 예외가 발생했습니다. {1} + + + 실행 파일 {0}에 대한 Google Test 표시기 파일을 찾지 못했습니다. + + + 0: 시드가 시스템 시간에서 계산됩니다. 1<=n<={0}: 제공된 시드가 사용됩니다. 옵션 '{1}'에 대한 메모를 참조하세요. +Google Test 옵션: {2} + + + {0}{1}테스트 사례가 실행되지 않은 것 같습니다. 그동안 테스트가 변경되었지만 테스트 실행을 반복하시겠습니까? 테스트 사례:{2}{3} + + + 추가 테스트 실행 매개 변수 + + + 실행 파일 {0}에 대한 Google Test 표시기 파일을 찾았습니다. + + + 실제 기간에서 예상 기간 {0}개를 찾았습니다. + + + PATH 확장 + + + Regex '{0}'을(를) 구문 분석할 수 없습니다. {1} + + + 선택한 횟수로 테스트가 실행됩니다(-1: 무한). +Google Test 옵션: {0} + + + {0}특히 명령 프롬프트를 시작하고, 디렉터리 '{1}'(으)로 변경하고, 다음 명령을 실행하여 테스트를 일반적으로 실행할 수 있어야 합니다.{2}{3} {4} + + + 테스트 수를 기준으로 분할자 사용 + + + 알 수 없는 리터럴: {0} + + + 새 테스트 실행 프레임워크 사용(실험적) + + + '{0}' 쌍을 구문 분석할 수 없습니다. 예외 메시지: {1} + + + 실행 파일 {1}에서 테스트 {0}개를 찾았습니다. + + + 테스트를 동시에 실행하면 테스트 콘솔에 테스트 출력이 표시되지 않습니다. + + + 명령 출력: + + + Google Test 실행 파일의 출력을 [테스트 출력] 창에 인쇄합니다. + + + 테스트 종료 일괄 처리 파일 + + + {0}실행 소요 시간: {1} + + + 작업 디렉터리 + + + 테스트 종료 배치 파일 + + + 옵션에서 병렬 실행을 선택했지만, 디버거가 연결되어 있기 때문에 테스트가 순차적으로 실행됩니다. + + + 잘못된 파일 {0}. {1} + + + 테스트 검색 후 + + + {0}이(가) 기본 regex {1}과(와) 일치합니다. + + + 줄 '{0}'의 테스트 결과에 대해 알려진 테스트 사례가 없습니다. 테스트 실행을 반복하시겠습니까? 하지만 그동안 테스트가 변경되었습니다. + + + 실행 파일 {1}에 대해 {0}초 후 테스트 검색이 취소되었습니다. + + + 병렬 테스트 실행은 각각 실행될 테스트 수가 할당된 여러 스레드를 통해 수행됩니다. 스레드는 필요한 실행 파일을 순차적으로 호출하여 테스트 결과를 생성합니다. + + + {0}분석기에 이미 테스트 사례 {1}이(가) 있습니다. + + + Google Test 실행 파일에 대한 추가 매개 변수입니다. 자리 표시자: + + + 가장 심한 차이점 {0}개: + + + XmlNode '{0}'을(를) 구문 분석할 수 없습니다. 예외 메시지: {1} + + + 취소 시 프로세스 종료 + + + {0}테스트 실행 파일 '{1}'을(를) 실행하지 못했습니다. {2} + + + 표준 편차: {0}ms + + + 특성 할당에 대한 regex + + + 예상 테스트 사례 기간 수: {0}개 + + + True인 경우 확장이 업데이트된 후 릴리스 정보가 포함된 대화 상자가 표시됩니다. + + + 새 테스트 실행 프레임워크를 사용합니다. 장점: 테스트 중단 검색 및 테스트 출력 인쇄도 디버그 모드에서 작동됩니다. + + + >>> 예약 통계 <<< + + + 업데이트 후 릴리스 정보 표시 + + + 실행된 명령: '{0} {1}', 작업 디렉터리: '{2}' + + + {0}에서 테스트 위치 및 특성을 확인하는 동안 예외가 발생했습니다.\n{1} + + + {0}이(가) 기본 regex {1}과(와) 일치하지 않습니다. + + + 테스트 반복 횟수 + + + 명령으로 생성된 출력이 없습니다. + + + {0}{1}: 파일({2})을 찾을 수 없습니다. + + + 잘못된 정규식 "{0}", 예외 메시지: {1} + + + 실패 시 중단 + + + 테스트 실행 파일에 대한 디버그 기호 정보를 구문 분석하여 소스 위치 정보 및 특성(GTA_Traits.h의 매크로를 통해 정의됨)을 가져옵니다. +False로 설정된 경우 특성 검색의 2단계가 생략되고 특성 regex만 적용됩니다. + + + 테스트 이름 구분 기호 + + + {0}Visual Studio에 테스트 결과를 {1}개 보고했습니다. 실행 파일: '{2}', 기간: {3} + + + 테스트 실행에 사용할 수 있는 최대 스레드 수입니다(0: 각 프로세서에 대해 스레드 하나). + + + {0}<<<<<<<<<<<<<<< 출력의 끝 + + + {0}은(는) 0보다 작을 수 없습니다. + + + 기타 + + + 타임스탬프 출력 + + + {0}이(가) 사용자 지정 regex {1}과(와) 일치합니다. + + + 테스트 출력: + + + 알 수 없는 테스트 사례 상태: {0} + + + 비어 있는 경우 테스트 실행에 대해 작업 디렉터리를 설정합니다(기본값: {0}). +예: {1}\MyTestDir +자리 표시자: + + + 예상 기간과 실제 기간 간의 평균 차이: {0}ms + + + {0}결과 XML 파일({2})에서 수집된 테스트 결과 {1}개 + + + True인 경우 테스트가 임의 순서로 실행됩니다. 모든 테스트를 비병렬 방식으로 수행할 때에만 진정한 임의 순서가 제공됩니다. 비병렬 방식으로 수행하지 않는 경우 테스트 실행 파일은 두 번 이상 실행될 가능성이 크며, 임의 순서는 실행에 따라 제한됩니다. +Google Test 옵션: {0} + + + 디버거를 {0}에 연결하는 중 + + + {0}이(가) 사용자 지정 regex {1}과(와) 일치하지 않습니다. + + + True인 경우 디버그 출력이 테스트 콘솔에 인쇄됩니다. + + + True인 경우 모든 (선택된) 테스트가 비활성화되더라도 실행됩니다. +Google Test 옵션: {0} + + + {0} - 테스트 실행 파일이 포함되는 디렉터리 + + + 테스트 실행 + + + 디버그 정보 인쇄 + + + {0}테스트 디렉터리 '{1}'을(를) 삭제할 수 없습니다. {2} + + + 테스트 순서 섞기: 시드 + + + !! 이 테스트는 손상된 것 같습니다. !! + + + {0} 테스트 충돌 때문인 것 같습니다. + + + 테스트 결과 파일 {0}을(를) (완전히) 구분 분석할 수 없습니다. 테스트 실행 파일이 손상된 것 같습니다. 예외 메시지: {1} + + + {0}테스트 실행 중 Visual Studio에 테스트 결과를 {1}개 보고했습니다. 실행 파일: '{2}' + + + 비활성화된 테스트도 실행 + + + 테스트 검색에 실패한 것으로 간주되는 시간(초)입니다. 0: 시간 제한 없음 + + + 테스트 설치 배치 파일 + + + 비어 있지 않은 경우 콘텐츠가 테스트 실행 및 검색 프로세스의 PATH 변수에 추가됩니다. +예: C:\MyBins;{0}\MyOtherBins; +자리 표시자: + + + 테스트 사례 '{0}'을(를) 추가했습니다. + + + 테스트 {0}개를 실행하는 중... + + + {0}테스트 결과 {1}개가 생성되었으며 결과 XML 파일 또는 콘솔 출력에서 찾지 못했습니다. + + + 분석기에 이미 있는 테스트 사례: {0} + + + 다음 명령을 명령줄에서 성공적으로 실행할 수 있는지 여부를 테스트합니다(경로에 필요한 모든 이진이 있어야 함).{0}{1} + + + 테스트 설정 일괄 처리 파일 + + + VS 유닛 테스트 프레임워크에 대한 제한으로 인해 디버깅 테스트 시 테스트 실행 파일의 출력을 테스트 콘솔에 표시할 수 없습니다. + + + {0}{1}: 코드 {2}(으)로 종료되었습니다. 실행된 명령: '{3}' + + + 예외 catch + + + 런타임 동작 + + + {1}에 시작한 {0} 프로세스를 종료할 수 없습니다. {2} + + + 테스트 {0}: 예상 {1}ms, 실제 {2}ms + + + 테스트 실행 파일 '{0}'에 대한 설정: {1} + + + '{0}' 줄의 기간을 구문 분석할 수 없습니다. + + + 출력 파일이 존재하지 않습니다. 테스트가 충돌했습니까? + + + 실행 파일 {0}은(는) 다른 컴퓨터에서 제공되었으며 이 컴퓨터를 보호하기 위해 차단되었습니다. + + + {0}개의 스레드에서 테스트 실행 중 + + + 테스트 검색 전 + + + {0}스택 추적:{1}{2} + + + 스레드 '{0}'의 실행 파일에 대한 설정으로 SettingsWrapper가 이미 실행 중입니다. 스레드 '{1}'에서도 사용할 수 없습니다. + + + 병렬 테스트 실행 + + + 테스트 {0}의 소스 위치를 찾을 수 없습니다. + + + 실행 파일 {0}에 대한 설정으로 이미 실행이 진행 중입니다. {1}에 대한 설정으로 전환할 수 없습니다. + + + 테스트 실행 파일 '{0}'에 대해 구성된 설정이 없습니다. 다음 솔루션 설정으로 실행합니다. {1} + + + Regex '{0}'의 시간이 초과되었습니다. {1} + + + 테스트 기간을 읽을 수 없습니다. {0} + + + 기호 정보 구문 분석 + + + 병렬 처리 + + + 테스트 기간을 기준으로 분할자 사용 + + + Regex와 일치하는 테스트 사례에 대해 특성을 재정의/추가할 수 있습니다. 특성은 3단계로 작성됩니다. 먼저 특성은 '특성 이전' 옵션에 따라 테스트에 할당됩니다. 그다음으로 테스트의 특성(GTA_Traits.h의 매크로를 통해 정의됨)은 테스트에 추가되어 1단계의 특성이 새 값으로 재정의됩니다. 마지막으로 다시 재정의 방식으로 '특성 이후' 옵션이 평가됩니다. +구문: {0}은(는) regex를 특성과 구분하고, 특성의 이름 및 값은 {1}(으)로 구분되며, 각 regex와 특성 쌍은 {2}(으)로 구분됩니다. +예: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + 비어 있지 않은 경우 테스트가 포함된 Google Test 실행 파일을 검색하는 데 이 regex가 사용됩니다. +기본 regex: {0} + + + 테스트 실행 전에 실행되는 배치 파일입니다. 테스트가 동시에 실행되는 경우 배치 파일은 스레드당 한 번 실행됩니다. 자리 표시자: + + + True인 경우 타임스탬프가 테스트 및 디버그 출력에 추가됩니다. + + + 솔루션 복원 설정: {0} + + + 테스트 출력 인쇄 + + + 보고할 사항이 없습니다. + + + Google Test는 기본적으로 예외를 catch합니다. 테스트에 실패하면 테스트 실행이 계속됩니다. False를 선택하면 예외가 통과되어 디버거에서 예외를 catch할 수 있습니다. +Google Test 옵션: {0} + + + 테스트 검색에 대한 regex + + + 테스트 실행 후에 실행되는 배치 파일입니다. 테스트가 동시에 실행되는 경우 배치 파일은 스레드당 한 번 실행됩니다. 자리 표시자: + + + {0} - 테스트에서 사용할 수 있는 디렉터리의 경로 +{1} - 현재 테스트를 실행하는 스레드의 ID + + + {0} - 테스트를 포함하는 실행 파일 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.TestAdapter.Resources.ko.resx b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.TestAdapter.Resources.ko.resx new file mode 100644 index 000000000..939fb0990 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ko/GoogleTestAdapter.TestAdapter.Resources.ko.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument에 RunSettings 노드가 포함되어 있지 않습니다. 설정 병합을 취소하는 중... + + + 프로세스를 찾을 수 없습니다. + + + Visual Studio 버전: {0} + + + {0}에는 Visual Studio 2012 업데이트 1 이상이 필요합니다. Visual Studio 설치 프로그램을 업데이트하세요. + + + Visual Studio 버전을 확인할 수 없습니다. {0}에는 Visual Studio 2012 업데이트 1 이상이 필요합니다. + + + 프로세스 {0}에 디버거를 연결할 수 없습니다.{1}{2} + + + 특성에 기본 테스트 속성과 같은 이름이 있으므로 테스트 사례 필터링 {0}에 대해 무시됩니다. + + + 테스트 사례 필터: {0} + + + {0} {1} 중 다음 오류 및 경고가 발생했습니다.{2} + + + Visual Studio 버전을 찾을 수 없습니다. {0} + + + 알 수 없는 열거형 리터럴: {0} + + + 알 수 없는 열거형 리터럴: {0} + + + 테스트를 실행하는 동안 예외가 발생했습니다. {0} + + + 테스트 검색을 완료했습니다. 전체 기간: {0} + + + GoogleTestAdapter가 Visual Studio에 설치된 경우에만 디버깅이 가능합니다. NuGet 설치에서 이 기능과 Visual Studio 옵션, 도구 모음, 솔루션 설정 같은 기타 기능을 지원하지 않습니다. + + + 테스트 실행이 취소되었습니다. + + + 알 수 없는 Visual Studio 버전: {0} + + + 솔루션 테스트 설정 파일을 구문 분석할 수 없습니다. 파일 확인: {0} +예외: {1} + + + (자세한 내용을 보려면 디버그 모드를 사용하도록 설정하세요.) + + + 테스트 사례 필터가 제공되지 않았습니다. + + + 솔루션 설정: {0} + + + 테스트를 검색하는 동안 예외가 발생했습니다. {0} + + + 오류: {0} + + + 테스트 검색 + + + 테스트 사례 필터가 잘못되었습니다. {0} + + + Google Test 실행을 완료했습니다. 전체 기간: {0} + + + Visual Studio의 ActivityLog.xml의 문제에 대한 자세한 정보가 있을 수 있습니다(예: https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/ 참조). + + + {0} 프로세스에 디버거를 연결했습니다. {1}ms가 걸렸습니다. + + + {0}이(가) {1}과(와) 일치합니다. + + + {0}이(가) {1}과(와) 일치하지 않습니다. + + + {0} 프로세스에 디버거를 연결할 수 없습니다. 사용 가능한 오류 메시지가 없습니다. + + + 테스트 실행 + + + 잘못된 {0} + + + 경고: {0} + + + 솔루션 테스트 설정 파일을 '{0}'에서 찾았지만 {1} 노드가 포함되어 있지 않습니다. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ko/NewProjectWizard.Properties.Resources.ko.resx b/GoogleTestAdapter/Packaging.GTA/ko/NewProjectWizard.Properties.Resources.ko.resx new file mode 100644 index 000000000..e64841f3b --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ko/NewProjectWizard.Properties.Resources.ko.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 테스트 프로젝트 구성 + + + 동적으로 연결(권장) + + + Google Test를 다음으로 사용: + + + C++ 런타임 라이브러리: + + + NuGet.VisualStudio.Interop.dll를 찾을 수 없습니다. 마법사를 계속 진행할 수 없습니다. + + + <프로젝트 없음> + + + Windows SDK를 찾을 수 없습니다. + + + 정적 라이브러리(.lib) + + + 테스트할 프로젝트 선택(선택 사항): + + + 정적으로 연결 + + + 동적 라이브러리(.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ko/VSPackage.ko.resx b/GoogleTestAdapter/Packaging.GTA/ko/VSPackage.ko.resx new file mode 100644 index 000000000..c2f2bdb4f --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ko/VSPackage.ko.resx @@ -0,0 +1,1251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + 일반 + + + 병렬 처리 + + + Google Test + + + Test Adapter for Google Test + + + Google Test용으로 작성된 단위 테스트와 함께 Visual Studio의 테스트 도구를 사용합니다. 사용 약관 및 타사 고지 사항은 확장 설치 디렉터리에서 확인할 수 있습니다. + + + + + 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 + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Common.Resources.pl.resx b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Common.Resources.pl.resx new file mode 100644 index 000000000..b387cb611 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Common.Resources.pl.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test Adapter for Google Test: trwa uruchamianie wykonywania... + + + Test Adapter for Google Test + + + {0}Zapoznaj się z sekcją rozwiązywania problemów rozszerzenia Test Adapter for Google Test pod adresem https://go.microsoft.com/fwlink/?linkid=848168 + + + Test Adapter for Google Test: trwa uruchamianie odnajdowania testów... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.DiaResolver.Resources.pl.resx b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.DiaResolver.Resources.pl.resx new file mode 100644 index 000000000..6d6225eb0 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.DiaResolver.Resources.pl.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nie można znaleźć pliku pdb dla pliku „{0}”. Nie uzyskasz żadnych lokalizacji źródłowych dla swoich testów. + + + Nie można zlokalizować numeru wiersza dla: {0} + + + Użyj opcji konsolidatora /DEBUG:FULL (Visual Studio 2017) lub /DEBUG (Visual Studio 2015 i starsze) — nie używaj opcji /DEBUG:FASTLINK! + + + ImageDirectoryEntryToData failed! + + + Nie można załadować pliku {0}. + + + Nie można znaleźć pliku msdia.dll do przeanalizowania plików *.pdb. Nie uzyskasz żadnych lokalizacji źródłowych dla swoich testów. + + + Operacja UnMapAndLoad nie powiodła się. + + + Analizowanie pliku PDB {0} + + + Próby znalezienia pliku PDB: {0} + + + W celu uzyskania lokalizacji źródłowych dla testów pamiętaj, aby wygenerować *pełne* pliki PDB dla swoich plików wykonywalnych testów. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Resources.pl.resx b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Resources.pl.resx new file mode 100644 index 000000000..aa4b30e6c --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.Resources.pl.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Jeśli ta opcja jest włączona, potencjalnie dołączony debuger będzie przechwytywać błędy potwierdzenia i automatycznie przechodzić do trybu interaktywnego. +Opcja biblioteki Google Test: {0} + + + {0}>>>>>>>>>>>>>>> Dane wyjściowe polecenia „{1} {2}” + + + Nie można wyświetlić listy przypadków testowych dla pliku wykonywalnego „{0}”: wykonanie procesu nie powiodło się z kodem zakończenia {1} + + + Nazwy testów tworzone przez bibliotekę Google Test mogą zawierać znak „/”, co sprawia, że Visual Studio obcina nazwę po znaku „/”, jeśli okno Eksploratora testów nie jest dostatecznie szerokie. Wartość tej opcji, jeśli nie jest pusta, zastąpi znak „/”, aby uniknąć tego zachowania. Należy zauważyć, że znaki „\”, „ ”, „|” i „-” powodują takie samo zachowanie (wiadomo, że znaki „.”, „_”, „:” i „::” działają). Należy także pamiętać, że wartości wyrażeń regularnych cech są obliczane względem nazw wyświetlanych testów (a więc muszą być zgodne z tą opcją). + + + Liczba rzeczywistych czasów trwania przypadków testowych: {0} + + + {0}Pobrano wyniki testów ({1}) z danych wyjściowych w konsoli + + + Proces zakończył pracę z kodem {0} + + + Zakończono proces {0} rozpoczęty o {1} + + + {0}{1}: Pomyślnie uruchomiono plik „{2}” + + + Mieszaj losowo testy na wykonanie + + + {0}Wykonanie zostało anulowane: {1} + + + Przekroczono maksymalną dozwoloną długość wiersza polecenia ({0}) po uwzględnieniu {1} testów (długość następnego ciągu to {2}) + + + Znaleziono symbole metody testowej ({0}) i symbole cech ({1}) w pliku binarnym {2} + + + Limit czasu odnajdywania testu w s + + + {0}{1}: Przechwycono wyjątek, komunikat: „{2}”, wykonane polecenie: „{3}” + + + {0} — katalog rozwiązania (dostępny tylko w programie Visual Studio) + + + Maksymalna liczba wątków + + + W przypadku wartości true uruchomione pliki wykonywalne testów będą aktywnie zakańczane, jeśli wykonanie testu zostanie anulowane. Należy zauważyć, że zakończenie procesu testu może mieć wszelkiego rodzaju skutki uboczne; w szczególności biblioteka Google Test nie będzie mogła wykonać żadnych zadań zamknięcia. + + + {0}Wyjątek podczas wykonywania testów: {1} + + + Nie znaleziono pliku wskaźnika biblioteki Google Test dla pliku wykonywalnego {0} + + + 0: inicjator jest obliczany na podstawie czasu systemowego, 1<= n<={0}: używany jest dany inicjator. Patrz uwaga dotycząca opcji „{1}”. +Opcja biblioteki Google Test: {2} + + + Istnieją przypadki testowe ({0}{1}), które wyglądają na nieuruchomione — czy powtarzasz uruchomienie testów, ale testy w międzyczasie uległy zmianie? Przypadki testowe:{2}{3} + + + Dodatkowe parametry wykonywania testów + + + Znaleziono plik wskaźnika biblioteki Google Test dla pliku wykonywalnego {0} + + + Liczba przewidywanych czasów trwania znalezionych w rzeczywistych czasach trwania: {0} + + + Rozszerzenie zmiennej PATH + + + Nie można przeanalizować wyrażenia regularnego „{0}”: {1} + + + Testy zostaną uruchomione wybraną liczbę razy (-1: nieskończona). +Opcja biblioteki Google Test: {0} + + + {0}W szczególności: uruchom wiersz polecenia, przejdź do katalogu „{1}” i wykonaj następujące polecenie, aby upewnić się, że Twoje testy mogą być uruchamiane ogólnie.{2}{3} {4} + + + Używanie rozdzielacza na podstawie liczby testów + + + Nieznany literał: {0} + + + Użyj nowej struktury wykonywania testów (eksperymentalne) + + + Nie można przeanalizować pary „{0}”, komunikat o wyjątku: {1} + + + Znaleziono testy ({0}) w pliku wykonywalnym {1} + + + Pamiętaj, że gdy testy uruchamiane są współbieżnie, żadne wyniki testów nie będą widoczne w konsoli testów. + + + Dane wyjściowe polecenia: + + + Wpisywanie danych wyjściowych plików wykonywalnych biblioteki Google Test do okna danych wyjściowych testów. + + + Plik wsadowy usuwania testu + + + {0}Wykonywanie zajęło {1} + + + Katalog roboczy + + + Plik wsadowy usuwania testów + + + W opcjach jest wybrane równoległe wykonywanie, ale testy są wykonywane sekwencyjnie, ponieważ jest dołączony debuger. + + + Nieprawidłowy plik {0}. {1} + + + Po odnajdywaniu testów + + + Plik {0} jest zgodny z domyślnym wyrażeniem regularnym {1} + + + Brak znanego przypadku testowego dla wyniku testu z wiersza „{0}” — czy powtarzasz uruchomienie testu, ale testy w międzyczasie uległy zmianie? + + + Odnajdywanie testów zostało anulowane po {0} s dla pliku wykonywalnego {1} + + + Równoległe wykonywanie testów uzyskuje się za pomocą różnych wątków, z których każdy ma przypisaną liczbę testów do wykonania. Wątki będą następnie sekwencyjnie wywoływać niezbędne pliki wykonywalne w celu wygenerowania wyników odpowiednich testów. + + + {0}Przypadek testowy już w analizatorze: {1} + + + Dodatkowe parametry dla pliku wykonywalnego biblioteki Google Test. Symbole zastępcze: + + + Najgorsze różnice ({0}): + + + Nie można przeanalizować węzła: „{0}”. Komunikat o wyjątku: {1} + + + Zakończ procesy po anulowaniu + + + {0}Nie można uruchomić pliku wykonywalnego testu „{1}”: {2} + + + Odchylenie standardowe: {0} ms + + + Wyrażenia regularne dla przydziału cech + + + Liczba oczekiwanych czasów trwania przypadków testowych: {0} + + + W przypadku wartości true po zaktualizowaniu rozszerzenia wyświetlane jest okno dialogowe zawierające informacje o wersji. + + + Korzystanie z nowej struktury wykonywania testów. Zalety: wykrywanie awarii testu i drukowanie danych wyjściowych testu działa również w trybie debugowania. + + + >>> Statystyki planowania <<< + + + Pokaż informacje o wersji po aktualizacji + + + Wykonane polecenie: „{0} {1}”, katalog roboczy: „{2}” + + + Wyjątek podczas rozpoznawania lokalizacji testów i cech w pliku {0}\n{1} + + + Plik {0} jest niezgodny z domyślnym wyrażeniem regularnym {1} + + + Liczba powtórzeń testu + + + Polecenie nie wygenerowało danych wyjściowych + + + {0}{1}: Nie znaleziono pliku: {2} + + + Nieprawidłowe wyrażenie regularne „{0}”, komunikat o wyjątku: {1} + + + Przerwij w przypadku niepowodzenia + + + Analizowanie informacji dotyczących symboli debugowania dla plików wykonywalnych testów w celu uzyskania informacji o lokalizacji źródła i cechach (zdefiniowanych za pomocą makr w pliku GTA_Traits.h). +Jeśli ta opcja jest ustawiona na wartość false, krok 2 odnajdywania cech zostanie pominięta i będą obowiązywać tylko wyrażenia regularne cech. + + + Separator nazwy testu + + + {0}Liczba wyników testów zgłoszonych do programu Visual Studio: {1}, plik wykonywalny: „{2}”, czas trwania: {3} + + + Maksymalna liczba wątków do użycia na potrzeby wykonania testu (0: jeden wątek dla każdego procesora). + + + {0}<<<<<<<<<<<<<<< Koniec danych wyjściowych + + + Zmienna {0} nigdy nie może być < 0 + + + Różne + + + Sygnatura czasowa danych wyjściowych + + + Plik {0} jest zgodny z niestandardowym wyrażeniem regularnym {1} + + + Dane wyjściowe testu: + + + Nieznany stan przypadku testowego: {0} + + + Jeśli ta opcja nie jest pusta, określi katalog roboczy na potrzeby uruchamiania testów (domyślnie: {0}) +Przykład: {1}\MyTestDir +Symbole zastępcze: + + + Średnia różnica między oczekiwanym i rzeczywistym czasem trwania: {0} ms + + + {0}Pobrano wyniki testów ({1} ) z pliku XML z wynikami {2} + + + W przypadku wartości true testy będą wykonywane w kolejności losowej. Należy zauważyć, że prawdziwie losowa kolejność jest podawana tylko podczas wykonywania wszystkich testów w sposób nierównoległy. W przeciwnym razie pliki wykonywalne testów najprawdopodobniej będą wykonywane więcej niż jeden raz — kolejność losowa jest wtedy ograniczona zgodnie z wykonaniami. +Opcja biblioteki Google Test: {0} + + + Dołączanie debugera do: {0}. + + + Plik {0} jest niezgodny z niestandardowym wyrażeniem regularnym {1} + + + W przypadku wartości true dane wyjściowe debugowania będą drukowane w konsoli testów. + + + Jeśli ta opcja ma wartość true, wszystkie testy (zaznaczone) zostaną uruchomione, nawet jeśli zostały wyłączone. +Opcja biblioteki Google Test: {0} + + + {0} — katalog zawierający plik wykonywalny testów + + + Wykonanie testu + + + Drukuj informacje o debugowaniu + + + {0}Nie można usunąć katalogu testu „{1}”: {2} + + + Losowanie testów: inicjator + + + !! Ten test prawdopodobnie uległ awarii !! + + + przyczyną jest prawdopodobnie awaria testu {0} + + + Nie można przeanalizować (całkowicie) pliku wyników testów {0} — prawdopodobnie plik wykonywalny testów uległ awarii. Komunikat o wyjątku: {1} + + + {0}Liczba wyników testów zgłoszonych do programu Visual Studio podczas wykonywania testów: {1}, plik wykonywalny: „{2}” + + + Uruchom również testy wyłączone + + + Liczba sekund, po upływie których odnajdywanie testu będzie traktowane jako zakończone niepowodzeniem. 0: nieskończony limit czasu + + + Plik wsadowy konfiguracji testów + + + Jeśli nie jest pusta, zawartość zostanie dołączona do zmiennej PATH procesów wykonywania i odnajdywania testów. +Przykład: C:\MyBins; {0}\MyOtherBins; +Symbole zastępcze: + + + Dodano przypadek testowy „{0}” + + + Trwa uruchamianie {0} testów... + + + {0}Utworzono wyniki testów ({1}) dla testów, których nie znaleziono w pliku XML z wynikami ani w danych wyjściowych w konsoli + + + Przypadek testowy już w analizatorze: {0} + + + Sprawdź, czy następujące polecenia można pomyślnie uruchomić w wierszu polecenia (upewnij się, że wszystkie wymagane pliki binarne są w zmiennej PATH):{0}{1} + + + Plik wsadowy instalacji testu + + + Należy zauważyć, że ze względu na ograniczenia struktury testowania jednostek programu VS dane wyjściowe pliku wykonywalnego testu nie mogą być wyświetlane w konsoli testów podczas debugowania testów. + + + {0}{1}: Zakończono z kodem {2}, wykonane polecenie: „{3}” + + + Przechwytywanie wyjątków + + + Zachowanie środowiska uruchomieniowego + + + Nie można zakończyć procesu {0} rozpoczętego o {1}: {2} + + + Test {0}: oczekiwano {1} ms, wartość rzeczywista to {2} ms + + + Ustawienia dla pliku wykonywalnego testu „{0}”: {1} + + + Nie można przeanalizować czasu trwania w wierszu „{0}” + + + Plik wyjściowy nie istnieje, czy testy uległy awarii? + + + Plik wykonywalny {0} pochodzi z innego komputera i został zablokowany, aby pomóc chronić ten komputer. + + + Wykonywanie testów na {0} wątkach + + + Przed odnajdywaniem testów + + + {0}Ślad stosu:{1}{2} + + + Program SettingsWrapper jest już uruchomiony z ustawieniami dla pliku wykonywalnego w wątku „{0}”, nie może być również używany przez wątek „{1}” + + + Równoległe wykonywanie testów + + + Nie można znaleźć lokacji źródłowej dla testu {0} + + + Wykonanie jest już uruchomione z ustawieniami dla pliku wykonywalnego {0}, nie można przełączyć na ustawienia dla pliku {1} + + + Nie skonfigurowano żadnych ustawień dla pliku wykonywalnego testu „{0}”; uruchamianie z ustawieniami rozwiązania: {1} + + + Przekroczono limit czasu wyrażenia regularnego „{0}”: {1} + + + Nie można odczytać czasów trwania testów: {0} + + + Analizuj informacje o symbolach + + + Przetwarzanie równoległe + + + Używanie rozdzielacza na podstawie czasów trwania testów + + + Umożliwia przesłonięcie/dodanie cech dla przypadków testowych dopasowujących wyrażenie regularne. Cechy są budowane w trzech fazach. Najpierw cechy są przypisywane do testów zgodnie z opcją „Cechy przed”. Następnie cechy testów (zdefiniowane za pomocą makr w pliku GTA_Traits.h) są dodawane do testów, przesłaniając cechy z fazy 1 nowymi wartościami. Na koniec wyliczana jest opcja „Cechy po”, ponownie za pomocą przesłaniania. +Składnia: {0} oddziela wyrażenie regularne od cech, nazwa i wartość cechy są rozdzielone za pomocą {1}, a każda para wyrażenia regularnego i cechy jest oddzielona za pomocą {2}. +Przykład: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + Jeśli nie jest puste, to wyrażenie regularne będzie używane do odnajdywania plików wykonywalnych biblioteki Google Test zawierających Twoje testy. +Domyślne wyrażenie regularne: {0} + + + Plik wsadowy, który ma być wykonywany przed wykonaniem testów. Jeśli testy są wykonywane równolegle, plik wsadowy będzie wykonywany raz na każdy wątek. Symbole zastępcze: + + + W przypadku wartości true sygnatura czasowa jest dodawana do danych wyjściowych testowania i debugowania. + + + Przywracanie ustawień rozwiązania: {0} + + + Drukuj dane wyjściowe testu + + + Nie ma niczego do zaraportowania. + + + Biblioteka Google Test domyślnie przechwytuje wyjątki, odpowiedni test kończy się niepowodzeniem i wykonywanie testów jest kontynuowane. Wybranie ustawienia false pozwala przepuszczać wyjątki, umożliwiając debugerowi ich przechwycenie. +Opcja biblioteki Google Test: {0} + + + Wyrażenie regularne do odnajdywania testów + + + Plik wsadowy wykonywany po zakończeniu wykonywania testów. Jeśli testy są wykonywane równolegle, plik wsadowy będzie wykonywany raz na każdym wątku. Symbole zastępcze: + + + {0} — ścieżka katalogu, który może być używany przez testy +{1} — identyfikator wątku wykonującego bieżące testy + + + {0} — plik wykonywalny zawierający testy + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.TestAdapter.Resources.pl.resx b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.TestAdapter.Resources.pl.resx new file mode 100644 index 000000000..0955486f3 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pl/GoogleTestAdapter.TestAdapter.Resources.pl.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Element RunSettingsDocument nie zawiera węzła RunSettings! Trwa anulowanie scalania ustawień... + + + Nie można znaleźć procesu + + + Wersja programu Visual Studio: {0} + + + Rozszerzenie {0} wymaga co najmniej programu Visual Studio 2012 Update 1 — zaktualizuj swoją instalację programu Visual Studio. + + + Nie można zidentyfikować wersji programu Visual Studio. Rozszerzenie {0} wymaga co najmniej programu Visual Studio 2012 Update 1. + + + Nie można dołączyć debugera do procesu {0}:{1}{2} + + + Cecha ma taką samą nazwę jak podstawowa właściwość testu i zostanie zignorowana przy filtrowaniu przypadków testowych: {0} + + + Filtr przypadków testowych: {0} + + + Następujące błędy i ostrzeżenia wystąpiły podczas operacji {0} {1}:{2} + + + Nie można znaleźć wersji programu Visual Studio: {0} + + + Nieznany literał wyliczenia: {0} + + + Nieznany literał wyliczenia: {0} + + + Wyjątek podczas uruchamiania testów: {0} + + + Odnajdywanie testów zostało zakończone, całkowity czas trwania: {0} + + + Debugowanie jest możliwe tylko po zainstalowaniu adaptera GoogleTestAdapter w programie Visual Studio — instalacja narzędzia NuGet nie obsługuje tego (i innych funkcji, takich jak opcje programu Visual Studio, pasek narzędzi czy ustawienia rozwiązania). + + + Wykonywanie testu zostało anulowane. + + + Nieznana wersja programu Visual Studio: {0} + + + Nie można przeanalizować pliku ustawień testu rozwiązania. Sprawdź plik: {0} +Wyjątek: {1} + + + (włącz tryb debugowania, aby uzyskać więcej informacji) + + + Nie dostarczono żadnego filtru przypadków testowych + + + Ustawienia rozwiązania: {0} + + + Wyjątek podczas odnajdywania testów: {0} + + + BŁĄD: {0} + + + odnajdywanie testów + + + Filtr przypadków testowych jest nieprawidłowy: {0} + + + Zakończono wykonywanie dla platformy Google Test, całkowity czas trwania: {0} + + + Więcej informacji o tym problemie może być dostępnych w pliku ActivityLog.xml dla programu Visual Studio (zobacz np. https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/) + + + Dołączono debuger do procesu {0}, zajęło to {1} ms + + + Nazwa {0} jest zgodna z wartością {1} + + + Nazwa {0} nie jest zgodna z wartością {1} + + + Nie można dołączyć debugera do procesu {0}, brak dostępnego komunikatu o błędzie + + + wykonanie testu + + + Nieprawidłowe ustawienie {0} + + + Ostrzeżenie: {0} + + + Plik ustawień testu rozwiązania został znaleziony w katalogu „{0}”, ale nie zawiera węzła {1} + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pl/NewProjectWizard.Properties.Resources.pl.resx b/GoogleTestAdapter/Packaging.GTA/pl/NewProjectWizard.Properties.Resources.pl.resx new file mode 100644 index 000000000..20bed0802 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pl/NewProjectWizard.Properties.Resources.pl.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konfiguracja projektu testowego + + + Dołączana dynamicznie (zalecane) + + + Platforma Google Test ma być używana jako: + + + Biblioteki środowiska uruchomieniowego C++: + + + Nie można znaleźć pliku NuGet.VisualStudio.Interop.dll. Kreator nie może kontynuować działania. + + + <Brak projektu> + + + Nie znaleziono zestawu Windows SDK + + + Biblioteka statyczna (lib) + + + Wybierz projekt do przetestowania (opcjonalnie): + + + Dołączana statycznie + + + Biblioteka dynamiczna (dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pl/VSPackage.pl.resx b/GoogleTestAdapter/Packaging.GTA/pl/VSPackage.pl.resx new file mode 100644 index 000000000..2d6d5b093 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pl/VSPackage.pl.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Ogólne + + + Przetwarzanie równoległe + + + Google Test + + + Test Adapter for Google Test + + + Udostępnia w narzędziach do testowania w programie Visual Studio testy jednostkowe napisane dla platformy Google Test. Warunki korzystania i uwagi podmiotu trzeciego można znaleźć w katalogu instalacyjnym rozszerzenia. + + + + + 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 + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Common.Resources.pt-BR.resx b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Common.Resources.pt-BR.resx new file mode 100644 index 000000000..20e3b8457 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Common.Resources.pt-BR.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Adaptador de Teste para o Google Test: iniciando a execução de teste... + + + Adaptador de Teste para o Google Test + + + {0}Confira o Adaptador de Teste para a seção de solução de problemas do Google Test em https://go.microsoft.com/fwlink/?linkid=848168 + + + Adaptador de Teste para o Google Test: iniciando a descoberta de teste... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.DiaResolver.Resources.pt-BR.resx b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.DiaResolver.Resources.pt-BR.resx new file mode 100644 index 000000000..5c2a4aabd --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.DiaResolver.Resources.pt-BR.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Não foi possível localizar o arquivo .PDB do arquivo "{0}". Você não obterá nenhum local de origem para seus testes. + + + Falha ao localizar o número de linha para {0} + + + Use a opção de vinculador /DEBUG:FULL (Visual Studio 2017) ou /DEBUG (Visual Studio 2015 e mais antigo) – não use /DEBUG:FASTLINK! + + + ImageDirectoryEntryToData failed! + + + Não é possível carregar {0}. + + + Não foi possível encontrar o msdia.dll para analisar arquivos *.PDB. Você não obterá nenhum local de origem para os testes. + + + Falha de UnMapAndLoad! + + + Analisando o arquivo PDB {0} + + + Tentativas de localizar o PDB: {0} + + + Para obter os locais de origem para os testes, certifique-se de gerar PDBs *completos* para os executáveis de teste. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Resources.pt-BR.resx b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Resources.pt-BR.resx new file mode 100644 index 000000000..2e2efda49 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.Resources.pt-BR.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Se habilitado, um depurador potencialmente anexado detectará falhas de declaração e cairá automaticamente no modo interativo. +Opção do Teste do Google: {0} + + + {0}>>>>>>>>>>>>>>> Saída do comando '{1} {2}' + + + Não foi possível listar os casos de teste para o executável "{0}": falha na execução do processo com o código de saída {1} + + + Nomes de teste produzidos pelo Teste do Google podem conter o caractere '/', que faz com que o Visual Studio recorte o nome após o '/' se a janela do Gerenciador de Testes não for larga o suficiente. Esse valor da opção, se não vazio, substituirá o caractere '/' para evitar esse comportamento. Observe que ' \ ',' ', ' |' e '-' produzem o mesmo comportamento ('. ', '_', ':' e ':: ' funcionam). Observe também que as regexes das características são avaliadas em relação aos nomes de exibição dos testes (e, portanto, devem ser consistentes com essa opção). + + + Número de durações reais do caso de teste: {0} + + + {0}Foram coletados {1} resultados de teste da saída do console + + + Processo encerrado com o código {0} + + + Foi terminado o processo {0} iniciado em {1} + + + {0}{1}: êxito ao executar "{2}" + + + Embaralhar testes por execução + + + {0}A execução foi cancelada: {1} + + + Comprimento de linha de comando máximo permitido excedido ({0}) após a inclusão de {1} testes (o tamanho da próxima cadeia de caracteres é de {2}) + + + Foram encontrados {0} símbolos de método de teste e {1} símbolos de característica no binário {2} + + + Tempo limite da descoberta de testes em s + + + {0}{1}: exceção detectada, mensagem: "{2}", comando executado: "{3}" + + + {0} – diretório da solução (disponível apenas no Visual Studio) + + + Número máximo de threads + + + Se verdadeiro, os executáveis de teste em execução serão ativamente terminados se a execução do teste for cancelada. Observe que terminar um processo de teste poderá causar todos os tipos de efeitos colaterais; em particular, o Teste do Google não poderá executar tarefas de desligamento. + + + {0}Exceção ao executar testes: {1} + + + Não foi encontrado nenhum arquivo indicador do Google Test para o executável {0} + + + 0: a semente é computada da hora do sistema, 1<=n<={0}: a semente determinada é usada. Consulte a observação da opção '{1}'. +Opção do Teste do Google: {2} + + + {0}{1} casos de teste parecem não ter sido executados – você está repetindo uma execução de teste, mas os testes foram alterados enquanto isso? Casos de teste: {2}{3} + + + Parâmetros de execução de teste adicionais + + + Arquivo indicador do Google Test encontrado para o executável {0} + + + {0} durações esperadas foram encontradas em durações reais + + + Extensão de CAMINHO + + + O regex "{0}" não pode ser analisado: {1} + + + Os testes serão executados para o número selecionado de vezes (-1: infinito). +Opção do Teste do Google: {0} + + + {0}Em particular: inicie o prompt de comando, altere para o diretório "{1}" e execute o comando a seguir para verificar se os testes podem ser executados em geral. {2}{3} {4} + + + Usando o divisor com base no número de testes + + + Literal desconhecido: {0} + + + Use a nova estrutura de execução de testes (experimental) + + + Não foi possível analisar o par "{0}", mensagem de exceção: {1} + + + Foram encontrados {0} testes no executável {1} + + + Observe que nenhuma saída de teste será mostrada no console de testes ao executar testes simultaneamente! + + + Saída do comando: + + + Imprima a saída dos executáveis do Teste do Google para a janela de Saída de Testes. + + + Arquivo do lote de desmontagem do teste + + + {0}A execução levou {1} + + + Diretório de trabalho + + + Arquivo em lotes de desmontagem de teste + + + A execução paralela está selecionada nas opções, mas os testes são executados sequencialmente porque o depurador está anexado. + + + Arquivo inválido {0}. {1} + + + Após a descoberta de testes + + + {0} corresponde ao regex padrão {1} + + + Não há nenhum caso de teste conhecido para o resultado do teste de linha '{0}' – você está repetindo uma execução de teste, mas os testes foram alterados enquanto isso? + + + A descoberta de teste foi cancelada após {0} s para o executável {1} + + + A execução de teste paralela é obtida por meio de threads diferentes, a cada um dos quais é atribuído um número de testes a serem executados. Os threads invocarão sequencialmente os executáveis necessários para produzir os resultados de teste de acordo. + + + {0}Caso de teste já no analisador: {1} + + + Parâmetros adicionais para o executável do Teste do Google. Espaços reservados: + + + {0} piores diferenças: + + + O XmlNode não pôde ser analisado: "{0}". Mensagem de exceção: {1} + + + Terminar processos em Cancelar + + + {0}Falha ao executar o executável de teste "{1}": {2} + + + Desvio padrão: {0} ms + + + Regexes para atribuição de característica + + + Número de durações de caso de teste esperadas: {0} + + + Se verdadeiro, uma caixa de diálogo com notas de versão será mostrada após a atualização da extensão. + + + Use a nova estrutura de execução de testes. Vantagens: a detecção de pane de teste e a impressão de saída de teste também funcionam no modo de depuração. + + + >>> Estatísticas de agendamento <<< + + + Mostrar notas de versão após a atualização + + + Comando executado: "{0} {1}", diretório de trabalho: "{2}" + + + Exceção ao resolver locais de teste e características em {0}\n{1} + + + {0} não corresponde ao regex padrão {1} + + + Número de repetições do teste + + + O comando não produziu nenhuma saída + + + {0}{1}: não encontrou o arquivo: {2} + + + Expressão regular inválida "{0}", mensagem de exceção: {1} + + + Interromper em caso de falha + + + Analise as informações de símbolo de depuração dos executáveis de teste para obter informações de local de origem e características (definidas por meio de macros em GTA_Traits.h). +Se isso estiver definido como falso, a etapa 2 da descoberta de características será deixada de fora e apenas regexes das características serão efetivos. + + + Separador de nome de teste + + + {0}Foram relatados {1} resultados de teste para o Visual Studio, executável: "{2}", duração: {3} + + + Número máximo de threads a ser usado para a execução do teste (0: um thread para cada processador). + + + {0}<<<<<<<<<<<<<<< Fim da Saída + + + {0} nunca deve ser < 0 + + + Diversos + + + Saída do carimbo de data/hora + + + {0} corresponde ao regex personalizado {1} + + + Saída de teste: + + + Status do caso de teste desconhecido: {0} + + + Se não vazio, definirá o diretório de trabalho para executar os testes (padrão: {0}) +Exemplo: {1}\MyTestDir +Espaços reservados: + + + Diferença média entre a duração real e a esperada: {0} ms + + + {0}Foram coletados {1} resultados do teste do arquivo XML do resultado {2} + + + Se verdadeiro, os testes serão executadas em ordem aleatória. Observe que uma ordem aleatória verdadeira é dada apenas ao executar todos os testes de forma não paralela. Caso contrário, os executáveis de teste provavelmente serão executados mais de uma vez – a ordem aleatória é restrita às execuções de acordo. +Opção do Teste do Google: {0} + + + Anexando depurador a {0} + + + {0} não corresponde ao regex personalizado {1} + + + Se verdadeiro, a saída de depuração será impressa no console de testes. + + + Se verdadeiro, todos os testes (selecionados) serão executados, mesmo se eles estiverem desabilitados. +Opção do Teste do Google: {0} + + + {0} – diretório contendo o executável de teste + + + Execução de teste + + + Imprimir informações de depuração + + + {0}Não foi possível excluir o diretório de teste "{1}": {2} + + + Embaralhar testes: semente + + + !! Esse teste provavelmente TRAVOU !! + + + provavelmente, o motivo é uma falha de teste {0} + + + O arquivo de resultado do teste {0} não pôde ser analisado (completamente) – provavelmente houve uma falha no executável de teste. Mensagem de exceção: {1} + + + {0}Foram relatados {1} resultados de teste para o Visual Studio durante a execução do teste, executável: "{2}" + + + Também executar testes desabilitados + + + Número de segundos após o qual a descoberta de testes será considerada falha. 0: tempo limite infinito + + + Arquivo em lotes de configuração do teste + + + Se não vazio, o conteúdo será anexado à variável CAMINHO da execução do teste e dos processos de descoberta. +Exemplo: C:\MyBins; {0}\MyOtherBins; +Espaços reservados: + + + Caso de teste "{0}" adicionado + + + Executando {0} testes... + + + {0}Foram criados {1} resultados de teste para os testes que não foram encontrados no arquivo XML do resultado nem na saída do console + + + Caso de teste já no analisador: {0} + + + Teste se os seguintes comandos podem ser executados com êxito na linha de comando (verifique se todos os binários necessários estão no CAMINHO): {0}{1} + + + Arquivo do lote de configuração do teste + + + Observe que, devido a restrições da estrutura de Testes de Unidade do VS, a saída do executável de teste não pode ser exibida no console de testes ao depurar testes! + + + {0}{1}: foi encerrado com o código {2}, comando executado: "{3}" + + + Detectar exceções + + + Comportamento do tempo de execução + + + Não foi possível terminar o processo {0} iniciado em {1}: {2} + + + Teste {0}: {1} ms esperado, {2} ms real + + + Configurações para o executável de teste "{0}": {1} + + + Não foi possível analisar a duração na linha "{0}" + + + Não existe arquivo de saída. Houve falha nos testes? + + + O executável {0} veio de outro computador e foi bloqueado para ajudar a proteger este computador. + + + Executando testes em {0} threads + + + Antes da descoberta de testes + + + {0}Rastreamento de pilha: {1}{2} + + + SettingsWrapper já está em execução com as configurações para um executável no thread "{0}", não pode ser usado também pelo thread "{1}" + + + Execução de teste paralela + + + Não foi possível encontrar o local de origem para o teste {0} + + + A execução já está sendo executada com as configurações para o executável {0}, não é possível mudar as configurações para {1} + + + Não há configurações definidas para o executável de teste "{0}"; em execução com as configurações da solução: {1} + + + O regex "{0}" atingiu o tempo limite: {1} + + + Não foi possível ler as durações de teste: {0} + + + Analisar informações de símbolo + + + Paralelização + + + Usando o divisor com base em durações de teste + + + Permite substituir ou adicionar características para testcases correspondentes a uma regex. As características são compiladas em 3 fases. Primeiro, as características são atribuídas aos testes de acordo com a opção 'Características antes'. Em seguida, as características dos testes (definidas por meio de macros em GTA_Traits.h) são adicionadas aos testes, substituindo as características da fase 1 com novos valores. Finalmente, a opção 'Características após' é avaliada, novamente em uma forma de substituição. +Sintaxe: {0} separa a regex das características, o nome e o valor da característica são separados por {1} e cada par de regex e característica é separado por {2}. +Exemplo: MySuite\. *{0}Tipo{1}Pequeno{2}MySuite2\.*| MySuite3\.*{0}Tipo{1}Médio + + + Se não vazia, essa regex será usada para descobrir os executáveis do Teste do Google contendo seus testes. +Regex padrão: {0} + + + O arquivo em lotes a ser executado antes da execução do teste. Se os testes forem executados em paralelo, o arquivo em lotes será executado uma vez por thread. Espaços reservados: + + + Se verdadeiro, um carimbo de data/hora será adicionado para testar e depurar a saída. + + + Restaurando as configurações da solução: {0} + + + Imprimir saída de testes + + + Nada a relatar. + + + O Teste do Google detecta exceções por padrão; o teste de acordo falha e a execução do teste continua. Optar por falso permite que as exceções passem, permitindo que o depurador detecte-as. +Opção do Teste do Google: {0} + + + Regex para a descoberta de testes + + + O arquivo em lotes a ser executado após a execução do teste. Se os testes forem executados em paralelo, o arquivo em lotes será executado uma vez por thread. Espaços reservados: + + + {0} – caminho de um diretório que pode ser usado pelos testes +{1} – ID do thread executando os testes atuais + + + {0} – executável contendo os testes + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.TestAdapter.Resources.pt-BR.resx b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.TestAdapter.Resources.pt-BR.resx new file mode 100644 index 000000000..3faa29126 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pt-BR/GoogleTestAdapter.TestAdapter.Resources.pt-BR.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument não contém um nó de RunSettings! Cancelando as configurações de mesclagem... + + + Não foi possível encontrar o processo + + + Versão do Visual Studio: {0} + + + {0} requer pelo menos o Visual Studio 2012 Atualização 1 – atualize sua instalação do Visual Studio. + + + Não foi possível identificar a versão do Visual Studio. {0} requer pelo menos o Visual Studio 2012 Atualização 1. + + + Não foi possível anexar o depurador ao processo {0}:{1}{2} + + + A característica tem o mesmo nome de propriedade do teste de base e, portanto, será ignorada para a filtragem de caso de teste: {0} + + + Filtro de caso de teste: {0} + + + Os erros e avisos a seguir ocorreram durante o {0} {1}:{2} + + + Não foi possível localizar a versão do Visual Studio: {0} + + + Literal de enumeração desconhecido: {0} + + + Literal de enumeração desconhecido: {0} + + + Exceção ao executar testes: {0} + + + Descoberta de teste concluída, duração geral: {0} + + + A depuração só será possível se o GoogleTestAdapter tiver sido instalado no Visual Studio – Não há suporte da instalação NuGet para isso (e nem para outros recursos, como as configurações da solução, a barra de ferramentas e as Opções do Visual Studio). + + + Execução de teste cancelada. + + + Versão desconhecida do Visual Studio: {0} + + + Não foi possível analisar o arquivo de configurações de teste de solução. Verifique o arquivo: {0} +Exceção: {1} + + + (habilite o modo de depuração para obter mais informações) + + + Nenhum filtro de caso de teste fornecido + + + Configurações da solução: {0} + + + Exceção ao descobrir testes: {0} + + + ERRO: {0} + + + descoberta de teste + + + O filtro de caso de teste é inválido: {0} + + + Execução do Google Test concluída, duração geral: {0} + + + Pode haver mais informações sobre o problema na ActivityLog.xml do Visual Studio (consulte, por exemplo, https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/) + + + O depurador foi anexado ao processo {0}, levou {1} ms + + + {0} corresponde a {1} + + + {0} não corresponde a {1} + + + Não foi possível anexar o depurador ao processo {0}, não há mensagens de erro disponíveis + + + execução de teste + + + {0} inválido + + + Aviso: {0} + + + O arquivo de configurações do teste de solução foi encontrado em '{0}', mas não contém o nó {1} + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pt-BR/NewProjectWizard.Properties.Resources.pt-BR.resx b/GoogleTestAdapter/Packaging.GTA/pt-BR/NewProjectWizard.Properties.Resources.pt-BR.resx new file mode 100644 index 000000000..7b74c8bbb --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pt-BR/NewProjectWizard.Properties.Resources.pt-BR.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Configuração do Projeto de Teste + + + Vincular dinamicamente (Recomendado) + + + Consumir o Google Test como: + + + Bibliotecas de tempo de execução C++: + + + Não é possível localizar NuGet.VisualStudio.Interop.dll. O assistente não pode continuar. + + + <Nenhum projeto> + + + SDK do Windows não encontrado. + + + Biblioteca Estática (.lib) + + + Selecione o projeto para testar (Opcional): + + + Vincular estaticamente + + + Biblioteca Dinâmica (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/pt-BR/VSPackage.pt-BR.resx b/GoogleTestAdapter/Packaging.GTA/pt-BR/VSPackage.pt-BR.resx new file mode 100644 index 000000000..40c457e0e --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/pt-BR/VSPackage.pt-BR.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Geral + + + Paralelização + + + Teste do Google + + + Adaptador de Teste para o Google Test + + + Habilita as ferramentas de teste do Visual Studio com testes de unidade gravados para o Google Test. Os termos de uso e Avisos de Terceiros estão disponíveis no diretório de instalação da extensão. + + + + + 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 + ABQAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Common.Resources.ru.resx b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Common.Resources.ru.resx new file mode 100644 index 000000000..421eb6da9 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Common.Resources.ru.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Адаптер теста для Google Test: начинается выполнение теста... + + + Адаптер теста для Google Test + + + {0}Обратитесь к разделу об устранении неполадок, связанных с адаптером теста для Google Test: https://go.microsoft.com/fwlink/?linkid=848168 + + + Адаптер теста для Google Test: запускается обнаружение теста... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.DiaResolver.Resources.ru.resx b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.DiaResolver.Resources.ru.resx new file mode 100644 index 000000000..924ede984 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.DiaResolver.Resources.ru.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + PDB-файл для файла "{0}" не найден. Не удается определить расположения исходных файлов для тестов. + + + Не удалось найти номер строки для {0}. + + + Используйте параметр компоновщика /DEBUG:FULL (в Visual Studio 2017) или /DEBUG (в Visual Studio 2015 и более ранних версиях). Не используйте параметр /DEBUG:FASTLINK. + + + ImageDirectoryEntryToData failed! + + + Не удается загрузить {0}. + + + Файл msdia.dll для анализа PDB-файлов не найден. Определить исходные расположения для тестов не удастся. + + + Сбой при вызове метода UnMapAndLoad. + + + Анализ PDB-файла {0} + + + Попыток найти PDB: {0} + + + Чтобы получить расположения исходных файлов для тестов, создайте *полные* PDB для исполняемых файлов тестов. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Resources.ru.resx b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Resources.ru.resx new file mode 100644 index 000000000..76e9b9fe1 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.Resources.ru.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Если этот параметр включен, подключенный отладчик (при его наличии) будет перехватывать сбои проверочных утверждений и автоматически переходить в интерактивный режим. +Параметр Google Test: {0} + + + {0}>>>>>>>>>>>>>>> Выходные данные команды "{1} {2}" + + + Не удается получить список тестовых случаев для исполняемого файла "{0}": ошибка выполнения процесса с кодом завершения {1}. + + + Имена тестов, создаваемые платформой Google Test, могут содержать символ "/". Если имя теста не помещается в окне обозревателя тестов Visual Studio, часть имени после символа "/" обрезается. Чтобы избежать этого, можно задать значение данного параметра. Оно будет заменять символ "/". Обратите внимание на то, что при использовании значений "\", " ", "|" и "-" описанное поведение сохраняется (избежать его точно помогают значения ".", "_", ":" и "::"). Кроме того, имейте в виду, что регулярные выражения признаков вычисляются на основе отображаемых имен тестов (поэтому в них должно учитываться значение этого параметра). + + + Количество длительностей выполнения для фактических тестовых случаев: {0} + + + {0}Из выходных данных в консоли получены результаты тестов ({1}). + + + Процесс завершил работу с кодом {0}. + + + Завершен процесс {0}, запущенный в {1}. + + + {0}{1}: "{2}" успешно запущен. + + + Выполнять тесты в случайном порядке + + + {0}Выполнение было отменено: {1}. + + + После включения тестов ({1}) длина команды превышает максимальную ({0}) (длина следующей строки — {2}). + + + В двоичном файле {2} обнаружены символы методов теста ({0}) и символы признаков ({1}). + + + Время ожидания обнаружения тестов в сек + + + {0}{1}: перехвачено исключение, сообщение: "{2}", выполненная команда: "{3}" + + + {0} — каталог решения (доступен только в Visual Studio) + + + Максимальное число потоков + + + Если задано значение true, при отмене выполнения тестов запущенные исполняемые файлы тестов принудительно завершаются. Обратите внимание на то, что завершение процесса теста может иметь различные побочные эффекты. В частности, платформе Google Test не удастся выполнить задачи завершения работы. + + + {0}Исключение при выполнении тестов: {1} + + + Файл индикаторов Google Test для исполняемого файла {0} не найден. + + + 0 — начальное значение получается на основе системного времени; 1<=n<={0} — используется указанное начальное значение. См. примечание к параметру "{1}". +Параметр Google Test: {2} + + + {0}Тестовые случаи ({1}) не были запущены. Может быть, вы повторяете тестовый запуск, но тесты изменились? Тестовые случаи:{2}{3} + + + Дополнительные параметры выполнения теста + + + Файл индикаторов Google Test для исполняемого файла {0} найден. + + + В фактических длительностях выполнения были обнаружены ожидаемые длительности выполнения ({0}). + + + Расширение PATH + + + Невозможно проанализировать регулярное выражение "{0}": {1}. + + + Тесты будут выполняться выбранное число раз (-1 — бесконечно). +Параметр Google Test: {0} + + + {0}А именно: откройте командную строку, перейдите в каталог "{1}" и выполните следующую команду, чтобы тесты можно было запускать в целом.{2}{3} {4} + + + Использовать разделитель по числу тестов + + + Неизвестный литерал: {0} + + + Использовать новую платформу выполнения тестов (экспериментальная версия) + + + Не удалось выполнить разбор пары регулярных выражений "{0}". Сообщение об исключении: {1} + + + В исполняемом файле {1} обнаружены тесты ({0}). + + + Обратите внимание, что при параллельном выполнении тестов выходные данные тестов будут отображаться в консоли тестирования. + + + Выходные данные команды: + + + Вывод выходных данных исполняемых файлов Google Test в окне вывода тестов. + + + Пакетный файл удаления теста + + + {0}Выполнение заняло {1} + + + Рабочий каталог + + + Пакетный файл для удаления тестов + + + В настройках выбрано параллельное выполнение тестов, но тесты будут запускаться последовательно, так как присоединен отладчик. + + + Недопустимый файл {0}. {1} + + + После обнаружения тестов + + + {0} соответствует регулярному выражению по умолчанию {1}. + + + Отсутствуют известные тестовые случаи для результата теста в строке "{0}". Может быть, вы повторяете тестовый запуск, но тесты изменились? + + + Обнаружение теста для исполняемого файла {1} было отменено через {0} с. + + + Параллельное выполнение тестов обеспечивается с помощью нескольких потоков, каждому из которых назначается ряд выполняемых тестов. Потоки последовательно вызывают необходимые исполняемые файлы для получения результатов тестов. + + + {0}Тестовый случай уже добавлен в анализатор: {1}. + + + Дополнительные параметры для исполняемого файла Google Test. Заполнители: + + + Максимальные различия ({0}): + + + Не удалось проанализировать узел XmlNode: "{0}". Сообщение об исключении: {1} + + + Завершать процессы при отмене + + + {0}Не удалось запустить исполняемый файл теста "{1}": {2}. + + + Стандартное отклонение: {0} мс + + + Регулярные выражения для назначения признаков + + + Количество длительностей выполнения для ожидаемых тестовых случаев: {0} + + + Если задано значение true, после обновления расширения выводится диалоговое окно с заметками о выпуске. + + + Используйте новую платформу выполнения тестов. Преимущества: обнаружение сбоев тестов и печать выходных данных тестов также возможны в режиме отладки. + + + >>> Статистика планирования <<< + + + Показать заметки о выпуске после обновления + + + Выполняемая команда: "{0} {1}", рабочий каталог: "{2}" + + + При определении расположений и признаков тестов в файле {0} возникло исключение\n{1}. + + + {0} не соответствует регулярному выражению по умолчанию {1}. + + + Число повторов теста + + + Выходные данные команды отсутствуют. + + + {0}{1}: Не удалось найти файл: {2}. + + + Недопустимое регулярное выражение "{0}". Сообщение об исключении: {1} + + + Прервать в случае ошибки + + + Анализ информации отладочных символов для исполняемых файлов тестов с целью получения сведений о расположении исходного кода и признаков (определяются с помощью макросов в файле GTA_Traits.h). +Если задано значение false, этап 2 обнаружения признаков будет пропущен и будут применяться только регулярные выражения признаков. + + + Разделитель имени теста + + + {0}В Visual Studio поступили результаты теста ({1}), исполняемый файл: "{2}", время выполнения теста: {3}. + + + Максимальное число потоков, используемых для выполнения тестов (0 — один поток на каждый процессор). + + + {0}<<<<<<<<<<<<<<< Конец выходных данных + + + {0} не может быть меньше 0. + + + Разное + + + Добавлять метку времени в выходные данные + + + {0} соответствует пользовательскому регулярному выражению {1}. + + + Выходные данные теста: + + + Неизвестное состояние тестового случая: {0} + + + Если значение не пустое, оно задает рабочий каталог для выполнения тестов (по умолчанию: {0}) +Пример: {1}\MyTestDir +Заполнители: + + + Средняя разность между ожидаемым и фактическим временем выполнения: {0} мс + + + {0}Из XML-файла результатов теста {2} получены результаты тестов ({1}). + + + Если задано значение true, тесты будут выполняться в случайном порядке. Обратите внимание на то, что действительно случайный порядок обеспечивается, только если тесты выполняются не параллельно. В противном случае исполняемые файлы тестов, скорее всего, будут выполняться несколько раз, поэтому случайный порядок будет обеспечиваться только в пределах соответствующего потока. +Параметр Google Test: {0} + + + Присоединение отладчика к процессу {0} + + + {0} не соответствует пользовательскому регулярному выражению {1}. + + + Если выбрано значение true, выходные данные отладки будут выводиться в консоли тестирования. + + + Если задано значение true, будут выполняться все выбранные тесты, даже если они отключены. +Параметр Google Test: {0} + + + {0} — каталог, содержащий исполняемый файл теста + + + Выполнение теста + + + Печать отладочной информации + + + {0}Не удалось удалить каталог теста "{1}": {2}. + + + Тесты в случайном порядке: начальное значение + + + !! Возможно, произошел СБОЙ этого теста !! + + + Вероятная причина — сбой теста {0} + + + Не удалось полностью проанализировать файл результатов теста {0}. Это может быть вызвано сбоем при запуске исполняемого файла теста. Сообщение об исключении: {1} + + + {0}Во время выполнения теста в Visual Studio поступили результаты теста ({1}), исполняемый файл: "{2}". + + + Также выполнять отключенные тесты + + + Число секунд, после которого обнаружение тестов считается завершившимся сбоем. 0 — бесконечное время ожидания + + + Пакетный файл для настройки тестов + + + Если значение не пустое, содержимое будет добавляться к переменной PATH процессов выполнения и обнаружения тестов. +Пример: C:\MyBins;{0}\MyOtherBins; +Заполнители: + + + Добавлен тестовый случай "{0}". + + + Запуск тестов ({0})... + + + {0}Для тестов, не найденных в XML-файле результатов и в выходных данных консоли, сформированы результаты тестов ({1}). + + + Тестовый случай уже добавлен в анализатор: {0}. + + + Проверьте, были ли успешно выполнены следующие команды (убедитесь, что пути ко всем необходимым двоичным файлам добавлены в переменную PATH):{0}{1} + + + Пакетный файл настройки теста + + + Обратите внимание на то, что из-за ограничений платформы модульного тестирования Visual Studio выходные данные исполняемого файла теста не могут выводиться в консоли тестирования при отладке тестов. + + + {0}{1}: выполнение завершено с кодом {2}, выполнена команда: "{3}". + + + Перехватывать исключения + + + Поведение во время выполнения + + + Не удалось завершить процесс {0}, запущенный в {1}: {2}. + + + Тест {0}: ожидаемое время выполнения — {1} мс, фактическое время выполнения — {2} мс + + + Параметры исполняемого файла теста "{0}": {1} + + + Не удалось определить длительность выполнения в строке "{0}". + + + Файл выходных данных отсутствует. Возможно, при выполнении тестов произошел сбой. + + + Исполняемый файл {0} поступил с другого компьютера и был заблокирован для защиты текущего компьютера. + + + Выполнение тестов для потоков ({0}) + + + До обнаружения тестов + + + {0}Трассировка стека:{1}{2} + + + Средство SettingsWrapper уже запущено с параметрами для исполняемого файла в потоке "{0}". Оно не может одновременно использоваться в потоке "{1}". + + + Параллельное выполнение тестов + + + Не удалось найти расположение исходных файлов для теста {0}. + + + Выполнение уже запущено с параметрами для исполняемого файла {0}. Изменить параметры на параметры для исполняемого файла {1} невозможно. + + + Параметры для исполняемого файла теста "{0}" не указаны; тест будет запущен с параметрами решения: {1}. + + + Истекло время ожидания анализа регулярного выражения "{0}": {1}. + + + Не удается прочитать время выполнения тестов: {0}. + + + Анализ символьной информации + + + Распараллеливание + + + Использовать разделитель по длительности тестов + + + Позволяет переопределять или добавлять признаки для тестовых случаев, соответствующих регулярному выражению. Набор признаков формируется в 3 этапа. Сначала они назначаются тестам в соответствии со значением параметра "Признаки до". Затем к тестам добавляются признаки, определенные с помощью макросов в файле GTA_Traits.h. Они переопределяют значения признаков, назначенных на этапе 1. Наконец, применяется параметр "Признаки после", причем также при необходимости происходит переопределение. +Синтаксис: {0} отделяет регулярное выражение от признаков, имя и значение признака разделяются строкой {1}, а пары регулярных выражений и признаков разделяются строкой {2}. +Пример: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + Если значение не пустое, это регулярное выражение будет использоваться для обнаружения исполняемых файлов Google Test, содержащих тесты. +Регулярное выражение по умолчанию: {0} + + + Пакетный файл, выполняемый перед выполнением тестов. Если тесты выполняются параллельно, пакетный файл выполняется один раз для каждого потока. Заполнители: + + + Если задано значение true, в выходные данные тестирования и отладки добавляется метка времени. + + + Восстановление параметров решения: {0} + + + Печать выходных данных тестов + + + Данные для отчета отсутствуют. + + + Google Test по умолчанию перехватывает исключения. Соответствующий тест завершается сбоем, а выполнение тестов продолжается. Выбрав значение false, можно разрешить передачу исключений, благодаря чему они смогут перехватываться отладчиком. +Параметр Google Test: {0} + + + Регулярное выражение для обнаружения тестов + + + Пакетный файл, выполняемый после выполнения тестов. Если тесты выполняются параллельно, пакетный файл выполняется один раз для каждого потока. Заполнители: + + + {0} — путь к каталогу, который может использоваться тестами +{1} — идентификатор потока, который выполняет текущие тесты + + + {0} — исполняемый файл, содержащий тесты + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.TestAdapter.Resources.ru.resx b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.TestAdapter.Resources.ru.resx new file mode 100644 index 000000000..88497d263 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ru/GoogleTestAdapter.TestAdapter.Resources.ru.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument не содержит узел RunSettings. Отмена объединения параметров... + + + Не удалось найти процесс. + + + Версия Visual Studio: {0} + + + Для использования {0} требуется Visual Studio 2012 с обновлением 1 или более поздняя версия. Обновите Visual Studio. + + + Не удалось определить версию Visual Studio. Для {0} требуется Visual Studio 2012 с обновлением 1 или более поздней версии. + + + Не удалось присоединить отладчик к процессу {0}:{1}{2}. + + + Имя признака совпадает с именем базового свойства теста, поэтому признак будет пропущен при фильтрации тестовых случаев: {0}. + + + Фильтр тестовых случаев: {0} + + + Во время {0} возникли следующие ошибки и предупреждения {1}:{2}. + + + Не удалось выяснить версию Visual Studio: {0}. + + + Неизвестный литерал перечисления: {0} + + + Неизвестный литерал перечисления: {0} + + + При выполнении тестов возникло исключение: {0}. + + + Обнаружение теста завершено, общая длительность: {0}. + + + Для отладки в Visual Studio должен быть установлен адаптер GoogleTestAdapter. Установка NuGet не поддерживает эту функцию (и другие функции, например параметры Visual Studio, панель инструментов и параметры решения). + + + Выполнение теста отменено. + + + Неизвестная версия Visual Studio: {0} + + + Не удалось проанализировать файл с параметрами тестирования решения. Проверьте файл: {0} +Исключение: {1} + + + (для получения дополнительных сведений включите режим отладки) + + + Фильтр тестовых случаев не указан. + + + Параметры решения: {0} + + + При обнаружении тестов возникло исключение: {0}. + + + Ошибка: {0} + + + обнаружение теста + + + Недопустимый фильтр тестовых случаев: {0} + + + Завершено выполнение Google Test, общая длительность: {0}. + + + Дополнительные сведения о проблеме можно найти в файле ActivityLog.xml в Visual Studio (см., например, https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/). + + + Отладчик присоединен к процессу {0}, время выполнения операции: {1} мс. + + + {0} соответствует {1}. + + + {0} не соответствует {1}. + + + Не удалось присоединить отладчик к процессу {0}, сообщение об ошибке отсутствует. + + + выполнение теста + + + Недопустимо: {0} + + + Предупреждение: {0} + + + Файл с параметрами тестирования решения найден в каталоге "{0}", но не содержит узел {1}. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ru/NewProjectWizard.Properties.Resources.ru.resx b/GoogleTestAdapter/Packaging.GTA/ru/NewProjectWizard.Properties.Resources.ru.resx new file mode 100644 index 000000000..2ec6180e9 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ru/NewProjectWizard.Properties.Resources.ru.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Конфигурация проекта тестирования + + + Динамическая компоновка (рекомендуется) + + + Использовать Google Tests как: + + + Библиотеки среды выполнения C++: + + + Не удается найти файл NuGet.VisualStudio.Interop.dll. Мастер не может продолжать работу. + + + <Проект отсутствует> + + + Пакет Windows SDK не найден. + + + Статическая библиотека (.lib) + + + Выберите проект для тестирования (необязательно): + + + Статическая компоновка + + + Динамическая библиотека (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/ru/VSPackage.ru.resx b/GoogleTestAdapter/Packaging.GTA/ru/VSPackage.ru.resx new file mode 100644 index 000000000..4d514086d --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/ru/VSPackage.ru.resx @@ -0,0 +1,1253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + ABMMBhMTBgwUAAAAAAAAAAAAEwITEwITAAAAAAAAAAAAABMCExMCEwAAAAAAAAAAABMTARMTARMTAAAA + AAAAAAATAgECAQECEwAAAAAAAAAAExMTExMTExMAAAAAwAMAAIABAAAAAAAAAAAAAAAAAACAAQAAwAMA + AMADAADgBwAA8A8AAPAPAAD4HwAA+B8AAPAPAADwDwAA8A8AAIlQTkcNChoKAAAADUlIRFIAAAEAAAAB + AAgGAAAAXHKoZgAAAAFzUkdCAK7OHOkAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7DAAAOwwHHb6hk + AAAWsklEQVR4Xu3da6xUVZYH8M1TKBS5gO2jaZqI2CMIzigEUB4TRCFpGuEDg8kEyBgcEUc04thxPkx3 + JpkmQUF5KYL2CJhpwUEiTCeAjMMI+ELpjIwkrUIQaXn4QNB7JTxn/ess7cutqnurzl5VdU7t/y/Z2WdX + G/rU2Wet2lX3nHVauYA1NDR0ke5YNKIQZTKZoGOgtfZEFCAmAKKAMQEQBYwJgChgTABEAWMCIAoYEwBR + wJgAiALGBEAUMCYAooAxARAFjAmAKGBMAEQBYwIgChhvB/a8Hbi+vl63qBoymYxr1Sr+aRz67cBMAJ4J + YNy4cbpF1bB69WrXqVMnHZWO9QCIKFhMAEQBYwIgChgTAFHAmACIAsYEQBQwJgCigDEBEAWMCYAoYEwA + RAFjAiAKGBMAUcCYAIgCxgRAFDAmAKKAsR6AZz0AX771BHzvh/eV9v1nPQAiChYTAFHAmACIAsYEQBQw + JgCigDEBEAWMCYAoYEwARAFjAiAKGBMAUcCYAIgCxgRAFDAmAKKAMQEQBYwJgChgoSeA49LqPFovaVRd + +eallBa0oIsh+LIoKMKCIH77H3pBD1/8CkAUMCYAooAxARAFjAmAKGBMAEQBYwIgChgTAFHAmACIAsYE + QBQwJgCigDEBEAWMCYAoYEwARAFjAiAKGBMAUcCYAIgCxgRAFDAmAKKAMQEQBYwJgChgTABEAWMCIAoY + E4CfztpTlTQ0NFymmxQDE4CfBdpT9SzTnmJgAohJPnmmSjchGlEVTdC5oBiYAGKQE+4n0i2MRpQAC3VO + qERMACWSEw2PovqttEuzL1ASYC5+q3NDJWACKN1MaaOjTT9ffvmlboXrxIkTuuUNc4K5oRIwAZRAPmH6 + SPdYNPJz/vx5t2jRIh2F65lnnskeCyOP6RxRkZgAiiQnVhvpVkrrmH3B06ZNm9y7776ro3DhGOBYGMHc + rNS5oiIwARTvEWlDok0/R44ccc8++6yOCMcCx8QI5ghzRUVgAiiCfKLcIN2vo5EfLHfnzZvnTp48qa8Q + jgWOieFXgV/rnFELmABaICfSRdKtkNY++4KndevWuT179ujIzyWXXOLatWuno+rAPljAMcGxMYK5WqFz + R81gAmjZr6SZfJocOHDArVq1Skf+ZsyY4dq3N8lLsWEfrODY4BgZwZxh7qgZTADNkE8QfJ/8ZTTyc+bM + mewy9/Tp0/qKn2HDhrmRI0fqqHqwD9gXCzg2OEY4VkZ+qXNIBTABFCAnTkY6fFybHKPVq1e7vXv36shP + ly5d3H333aej6sO+YJ8s4BjhWBnB3K3SuaQ8mAAKmyvtmmjTz0cffWR5UrsHHnjA7Lu3BewL9skKjhWO + mRHMIeaS8mACyEM+MXBVmclH7KlTp7LL2nPnzukrfm6//XY3aNAgHSUH9gn7ZgHHCscMx87IfTqn1AQT + QBNyomAti2v9TaxYscIdPHhQR34uv/xyN336dB0lD/YN+2gBxwzHzhDuFbD5nlJDmABy4R5/kzvLdu/e + 7davX68jP61atXIPPvigy2SS+3UW+4Z9xL5awLHDMTSCOWX9hiaYABqRTwjc329yb7n8W+7JJ580u7hl + /Pjxrn///jpKLuwj9tUCjh2OIY6lkak6x6SYAJScGCgttTwa+bO8vLVHjx5u2rRpOko+7Cv22UIZLpte + rnNNggngz1Baqnu06Wfnzp1u8+bNOvLTunVrN3v27Kpf8FMK7Cv2GftuAccSx9QI5phlxBQTgJBPBLPy + Xt98841bsMDuq+bkyZNdnz7pu8MV+4x9t4JjimNrhGXEVPAJQE6EntKZlfdasmSJ+/rrr3Xkp3fv3qZB + VGnYd7wHCzimOLaGWEZMBJ0A5AQwLe+1detWt337dh35wU0+WEa3bdtWX0kf7Dveg9UNSzi2OMZGWEZM + hL4CwMU+t0abflDea+nSpTryN2XKFNezJxYn6Yb3gPdiBcfYsJRa8GXEgk0AkvnxxdrkElH8uWrhwoXu + 22+/1Vf89O3b102cOFFH6Yf3gvdkAccYx9qwdkDQZcSCTAAy4SgZhRt9TMp7bdy40b333ns68tOhQ4fs + stnqYpokwHvBe8J7s4BjjWNuJOgyYqGuAHCL7+Bo08/hw4fdc889pyN/lpfTJon1Zcw45jj2RoItIxZc + ApBM/5fSmRSKwDJ0/vz5ZuW9Bg4c6MaMGaOj2oP3hvdoAcccx97wq0CQZcSCSgAywablvV5++WXT8l73 + 339/TS39m8J7w3u0LCOGOTASZBmx0FYAKOw5INr088knn7gXXnhBR/5QWqtbt246ql14j5ZlxDAHmAsj + wZURCyYBSGYfKp3J9zyUrMLys9bKe1WKdRkxzAXLiMUTRAKQCcU9tHioh8n7ffHFF2u2vFelWJcRw5wY + wTkSTBmxUFYAeJyXWXmvNWvW6Mhf0sp7VYp1GTHMCcuIla7mE4Bk8tukM7naK5TyXpXCMmLVV9MJQCbQ + tLzX888/H0x5r0qxLiOGOTJU82XEan0FgLv8TCpTvP/++27Dhg068oM/hyW9vFelWJcRwxxhrozUfBmx + mk0AkrlxMb3JXSjybwVZ3qtSWEasemoyAciEoeSTWdWX5cuXu6NHj+rIT9rKe1WKZRkxzBXmzFDNlhGr + 1RUAZt+kvNc777zjXn31VR35SWN5r0qxLiOGOcPcGcG5ZJpRkqLmEoBkany83hGN/KAEFW49tZLW8l6V + Yl1GDHNnWEbsDj23akpNJQCZIFTQMPvRZvHixSzvVWHWZcQwh4YW6DlWM2omAcjEmJf32rFjh4781EJ5 + r0qxLiOGOWQZscJqaQXA8l41IuFlxHCO1cy12zWRACQjs7xXjUl4GbG5es6lXuoTgEwEy3vVIBwzHLsE + lxHDDUOpLyNWCysAlveqUQkvI4ZzDudeqqU6AUgGZnmvGpfwMmK/0nMwtVKbAOTAs7xXAHAMWUasfNK8 + AmB5r0AkvIwYzkGci6mUygQgGZflvQKT8DJij+g5mTqpSwByoFneK1AJLyOGh4uk7v7uNK4AWN4rUCko + I4ZzM1VSlQAkw7K8V+ASXkZspp6jqZGaBCAHluW9KItlxOykaQXA8l6UlfAyYjhH7e4hL7NUJADJqCzv + RRdIeBmxKXrOJl7iE4AcSJb3orwSXkZsmZ67iZaGFQDLe1FeLCPmL9EJQDIoy3tRs1hGzE9iE4AcOJb3 + oqKwjFh8iUwAcsBY3ouKxjJi8SV1BcDyXlQSlhGLJ3EJQDIly3tRLCwjVrpEJQA5QCzvRbFhbjBHLCNW + vKStAMzKex06dIjlvQJUjjJiOJeMJK6MWGISgGRGs/JeuMnjiSeeYHmvQFmXEcO5ZHXTmEhUGbFEJAA5 + IKblvdatW2da3mvWrFlc+qcI5gpzZllGDOeUkUSVEUvKCsC0vNeqVfgZwca9997runbtqiNKC8wZ5s4K + zqlaLCNW9QQgmdC0vBfu77Yq9TR8+HA3YsQIHVHaYO4whxaszy2RiDJiVU0AcgDMy3vt27dPR37q6urc + zJkmtUeoijCHmEsLOLdqrYxYVb/YyptfIp1JlH344Yfu4YcfNvuxBv8WK/zUhp07d7rHH39cR35w4xH+ + rWuvvVZf8fZUJpOp2kVCVUsAEvwonbQ5GvlBSSf86GNV4YeoObgFGRcJGd4JerskAZvbVEtUla8AEvyJ + Le9F1JJaKiNWrd8ATMt7rV+/XkdElYFzrhbKiFU8AUimMy3vhYs0iKoB5x7OQSNVKSNW0QQgb9C0vNey + Zcvc559/riOiysK5h3PQUMXLiFV6BWBa3mvLli06IqoOnINpLiNWsQQgmc2svNeJEydMy3sR+cC5iHPS + SEXLiFUkAcgbMi3vtWTJErPyXkS+cC7inDRUsTJiZU8A8kZwrUEiy3sRWUlrGbFKrABMy3s9/fTTOiJK + FpybaSsjVtYEIBnMtLzXggULXH19vb5ClCw4N3GOpqmMWNkSgOy4eXmvXbt26YgomXCOpqmMWDlXAIkt + 70VUTmkqI1aWBCAZK7HlvYjKLU1lxMwTgOxoYst7EVVKWsqIlWMFkNjyXkSVlIYyYqYJQDJUYst7EVVa + GsqImSUA2bHElvciqpaklxGzXAE8Ju2aaNMPynutWbNGR0TphnMZ57QRxBhizYRJApCMhPJeJrX9UN5r + /vz5lr+gElUVzmWc0zi3jczUmPPmnQBkR1jei6gFSS0jZrECYHkvoiIksYyYVwKQDMTyXkQlSFoZsdgJ + QP6PWd6LqERJKyPmswJ4RhrLexGVqAxlxBCLscRKALrsMKlgyvJeFCLjMmIT434VKDkByP9RZ+kWRSN/ + LO9FISpDGbFFGpslibMC+I20H0ebfljei0JmXEYMMYnYLElJNcckw/xMug+keRcoQOkkPLmVFX4oZJ06 + dXJPPfWU69atm77i5ay0fplM5o/RsGWlrgDmSPMOfpb3IooYlxFDbCJGi1Z0ApBP/5ulM/nhj+W9iP7M + uIwYfhBErBallBWAyb3ILO9FlMu4jFjRsVpUApCMcoN03jcfsLwXUX7GZcRu05htUbErgH/U3ssrr7zC + 8l5EBSA2ECNGiorZFhOAZJKrpJscjeI7cuQIy3sRtQAxglgxMFljt1nFrADwoMK20WZ8uOjB8H5oopqE + GDG6QAgxOzXaLKyYBPB32se2c+dO/upPVCTECmLGwF3aF9RsAtA/J3g9mgh/31yxAlXCiahYiBmDawP6 + aAwX1NIKwPu7//bt293+/ft1RETFQMwgdgw0G8MtJYDx2se2du1a3SKiUhjFTrMxXDAByNKhv3S9olE8 + KH/08ccf64iISoHYMSgh1kti+XrdztHcCuDn2se2efNm3SKiOIxiaJz2OZpLACO1jwU3Obzxxhs6IqI4 + EEMGN80VjOW8CUCWDHjd6xFEb775Jv/uT+QJMYRY8jRUYzpHoRVAP2mXRpvxGNY8IwqaQSwhlq+LNi9U + KAEM0j4WPAyRF/4Q2UAsGTxgdLD2FyiUAAr+algM/HrJO/6IbCCWDP6ahlV9jkIJAKW/YvvgA1QNIyIr + BjH1F9pfoFAC6Kt9LIZPQiUiYRBTxf0GoL8W9oxG8Xz66ae6RUQWDGKqp8R2ThHgfCsAPGao0MqgRWfP + nnWfffaZjojIAmIKseUBBUNzHiGWL9B/pH0sx44ds/jFkogaQUwhtjwVlQCu1D6Wr776SreIyJJBbOU8 + 0CdfAshoH8vx48d1i4gsGcRWTmznSwCxv//D6dOndYuILJUjtvIFe8kPGGysoaFBt4jIkkFsddH+B16f + 9kSUbvkSwHfax9KxY0fdIiJLBrGVs4QwTwAXXXSRbhGRJYPYyontfAnghPaxXHzxxbpFRJYMYusb7X+Q + LwHk/EeluOyynGsNiMiAQWzlfLjnSwAHtY+lrq7OtW6d758lorgQU4gtT3/S/gc5kZrJZPBgsti1vLCj + PXr00BERWUBMeX6wntLYvkChf9FrFdCrl1c1cSJqwiCm8sZ0oQTgVX7k6quv1i0ismAQU3ljulAC2K19 + LNdf71VRjIiaMIip/9X+AoUSQN7/uFh9+vRxHTp00BER+UAsIaY85X3EUFkSQJs2bdyNN96oIyLygVhC + THkqaQWACoReFwTdfHOzTyUmoiIZxBJieU+0eaG8CSCTyaD20LZoFM+gQYNcu3btdEREcSCGEEuetmlM + 5yi0AoCt2sfSqVMnN2zYMB0RURyIIcSSpy3a52guAfyX9rGNHTtWt4goDqMY+m/tcxRMALJk+IN0+6JR + PP369eM1AUQxIXYQQ572SSwX/FG/uRUArNM+tjvvvFO3iKgURrGzVvu8WkoA/6F9bEOHDnU9e3o9Z4Qo + OIgZxI6Bl7XPq6UE8La0vdFmPK1atXJ33XWXjoioGIgZxI4nxC5iuKBmE4B8dzgv3bJoFN/AgQPdTTfd + pCMiag5iBTFjYJnGcEEtrQDgeWne9Yjvuece1759ex0RUT6IEcSKAdzS/2/RZmEtJgDJIEela/aHhGJc + ddVVbtq0aToionwQI4gVA2sldj/X7YKKWQHAXO29jB8/3g0YMEBHRNQYYgMxYuQx7ZtVVAKQTIJrAv4z + GsWHHzUeeeQR17VrV32FiAAxgdgw+OEPNmjMtqjYFQD8q/ZeunTp4h599FHXtm1bfYUobIgFxARiw8hv + tG9R0QlAMspb0v0+Gvm57rrr3EMPPaQjorAhFhATRn6vsVqUUlYAMFuaycP/R4wY4aZPn64jojAhBhAL + RhCbiNGilZQAJLP8Ubol0cjfhAkT+JcBChbOfcSAocUao0Ur+ReHhoYGfFH5UJrZE0DWr1/vli9f7s6f + b/aaBaKagB/67r77bstf/AF/8rtWEsDX0bA4sX5ylCQwSbo10cjGW2+95ebOnetOnYr9SAKixMOFPvi1 + f8iQIfqKmUkS/CXfuxP7bw6SBH4nnemtfnv37nVz5sxxhw8f1leIascVV1yR/bW/d+/e+oqZf5fg/1vd + LolPAugm3f9JuyL7gpH6+nq3cOFCt2PHDn2FKP1uueUWN2vWLIvqPk3h0/J6SQBfRsPSeF11IElglHSv + Siv1rwktev31193SpUvdiRNetUmJqqpz585uxowZlr/0N3ZO2m0S/K9Fw9J5JQCQJPCodEVfeFAKBP+q + Vavcpk2b3LlzeK9E6YDn+I0ZM8ZNmTIlmwTK5J8k+OfodiwWCQD/xivSfpF9oQwOHDjgVq5cmf2hkCjp + 8APf1KlTy10IZ4O0OyQBeP3pzDsBgCSBi6X7H2llfRoIEsFLL73ktm3b5s6cMbkeicgELucdPny4mzRp + UiUqYO2SNlKC/9toGJ9JAgBJApdLh4/osj8aGF8NXnvtNbdlyxa3f/9+fZWo8vDU3tGjR7tRo0aVc6nf + GE74IRL8OY/6jsMsAYAkgZ9Jt11a9+wLFXDo0CH39ttvu127drk9e/a4kydP6v9CZA/P6evbt2/2cV2D + Bw92V155pf4vFfGFtGES/CVd7dcc0wQAkgT6S4dfJSuWBL6HHwqxIti3b1/268LBgwfdsWPH3BdffOG+ + ++47JgcqCoK8Y8eOrnv37q6urs716NEju6xHmW584uMHvipA8I+S4Pd6cndT5gkAJAngWcYbpf04+wIR + +fiTtLES/LjuxlRZEgBIErhGOiQB88ueiAKCyr4I/o+joa2yrWV0h1HY/I3sC0RUKsTO0HIFP5T1y4zs + OO5QulXai9kXiKhYiJlbNYbKpmxfAZqSrwT/IN08aawNTlQYboedLYG/OBqWV8USAEgSwNNBcBsxnxhK + lAsP4/0bCf73omH5VfTvGfrGbpCG7MbqH0QRxAJi4oZKBj9UdAXQmKwGhkn3rDRcPEQUKlzUM10CHxfQ + VVxVrmgAfcN4SsjD0o7jNaKA4JzHuT+gWsEPVVsBNCarARQX+Wdp90prh9eIahSes/m0tH+RwI9VxMNS + IhLA9yQR4MpBlDX+e2nmpVOIqqheGp60PU8CH1f2JUKiEsD3dEUwQ9rd0n6K14hS6hNpy6UtTcInflOJ + TADfk0SA3yhGS0MiGCetgzSipMNdZ3iWJgJ/iwR+YstZJToBNCbJAEVHxkqbKO3n0i6VRpQU+FEPj85b + J22jBL13sY5KSE0CaEySQRvp/kraX0vDnxNxz8GPpBFVylFpb0rDL/hbpf1Bgv6s9KmSygSQjyQFPKkI + tQhwKzKuNESlhp9IQ2JAbQIkDawiiFqCT28EM+7BR6B/Ku2QNFyph1tyd0uwl/Ua/cpw7v8B4ICZNOgU + ljgAAAAASUVORK5CYIIoAAAAQAAAAIAAAAABACAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29jf29vaI9vb2wfb29uv29vb89vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Общие + + + Распараллеливание + + + Google Test + + + Адаптер теста для Google Test + + + Включает средства тестирования Visual Studio и модульные тесты для Google Test. Условия использования и уведомления сторонних производителей см. в каталоге установки расширения. + + + + + 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 + AAAAAAA= + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest b/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest index 80f91bda9..be81d5845 100644 --- a/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest +++ b/GoogleTestAdapter/Packaging.GTA/source.extension.vsixmanifest @@ -1,4 +1,4 @@ - + @@ -26,6 +26,9 @@ + + + diff --git a/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Common.Resources.tr.resx b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Common.Resources.tr.resx new file mode 100644 index 000000000..66f59460b --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Common.Resources.tr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Google Test için Test Bağdaştırıcısı: Test yürütmesi başlatılıyor... + + + Google Test için Test Bağdaştırıcısı + + + {0}Google Test için Test Bağdaştırıcısı sorun giderme bölümüne göz atın: https://go.microsoft.com/fwlink/?linkid=848168 + + + Google Test için Test Bağdaştırıcısı: Test bulma başlatılıyor... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.DiaResolver.Resources.tr.resx b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.DiaResolver.Resources.tr.resx new file mode 100644 index 000000000..794f8258e --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.DiaResolver.Resources.tr.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + '{0}' dosyasının .pdb dosyası bulunamadı. Testleriniz için kaynak konum alamayacaksınız. + + + {0} için satır numarası bulunamadı + + + /DEBUG:FULL (Visual Studio 2017) veya /DEBUG (Visual Studio 2015 veya daha eski) bağlayıcı seçeneğini kullanın (/DEBUG:FASTLINK kullanmayın!) + + + ImageDirectoryEntryToData failed! + + + {0} yüklenemiyor. + + + *.pdb dosyalarını ayrıştırmak için msdia.dll bulunamadı. Testleriniz için kaynak konum alamayacaksınız. + + + UnMapAndLoad başarısız oldu! + + + {0} PDB dosyası ayrıştırılıyor + + + PDB bulma denemeleri: {0} + + + Testleriniz için kaynak konumları almak istiyorsanız test çalıştırılabilir dosyalarınıza yönelik *tam* PDB'ler oluşturun. + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Resources.tr.resources.resx b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Resources.tr.resources.resx new file mode 100644 index 000000000..59ed6c6d1 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.Resources.tr.resources.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Etkinleştirilirse, iliştirilmiş olabilecek bir hata ayıklayıcısı, onaylama hatalarını yakalar ve etkileşimli moda otomatik olarak bırakır. +Google Test seçeneği: {0} + + + {0}>>>>>>>>>>>>>>> '{1} {2}' komutunun çıkışı + + + '{0}' çalıştırılabilir dosyası için test çalışmaları listelenemedi: İşlem çalıştırması {1} çıkış kodu ile başarısız oldu + + + Google Test tarafından üretilen test adları, '/' karakterini içerebilir. Bu da Test Listesi Düzenleyicisi ekranının yeterince büyük olmadığı durumlarda Visual Studio'nun, adın '/' karakterinden sonrasını kesmesine neden olur. Bu seçeneğin değeri, boş değilse, '/' karakterini bu davranıştan kaçınmasını sağlayacak şekilde değiştirir. '\', ' ', '|' ve '-' karakterleri, ('.', '_', ':' ve '::') karakterleriyle aynı davranışı üretir. Ayrıca traits normal ifadeleri, testlerin görünen adlarıyla karşılaştırmalı olarak hesaplanır (ve bu nedenle, bu seçenekle tutarlı olması gerekir). + + + Gerçek test çalışması sürelerinin sayısı: {0} + + + {0}Konsol çıkışından {1} test sonucu toplandı + + + {0} koduyla işlemden çıkıldı + + + Başlatılma zamanı {1} olan {0} işlemi sonlandırıldı + + + {0}{1}: '{2}' başarıyla çalıştırıldı + + + Yürütme başına testleri karıştır + + + {0}Çalıştırma iptal edildi: {1} + + + Komut satırı için izin verilen en fazla uzunluk ({0}), {1} test eklendikten sonra aşıldı (sonraki dize uzunluğu: {2}) + + + {2} İkili dosyası içinde {0} test metodu sembolü ve {1} nitelik sembolü bulundu + + + Test bulma zaman aşımı süresi (saniye) + + + {0}{1}: Özel durum yakalandı, ileti: '{2}', çalıştırılan komut: '{3}' + + + {0} - çözüm dizini (yalnızca Visual Studio içinde kullanılabilir) + + + En fazla iş parçacığı sayısı + + + True olarak ayarlanırsa, test yürütmesi iptal edildiğinde, çalışan test yürütülebilir dosyaları etkin olarak sonlandırılır. Test işlemi sonlandırmanın birçok yan etkisi olabileceğini unutmayın; özellikle Google Test, hiçbir kapatma görevini gerçekleştiremeyecektir. + + + {0}Testler çalıştırılırken özel durum oluştu: {1} + + + {0} çalıştırılabilir dosyası için Google Test gösterge dosyası bulunamadı + + + 0: Çekirdek, sistem saatinden hesaplanır, 1<=n<={0}: Belirtilen çekirdek kullanılır. '{1}' seçeneğinin notuna bakın. +Google Test seçeneği: {2} + + + {0}{1} test çalıştırılmamış gibi görünüyor. Testleri zaman içinde değişmiş olan bir test çalıştırmasını tekrarlıyor olabilirsiniz. Test çalışmaları: {2}{3} + + + Ek test yürütme parametreleri + + + {0} çalıştırılabilir dosyası için Google Test gösterge dosyası bulundu + + + Gerçek süreler içinde {0} beklenen süre bulundu + + + PATH uzantısı + + + Normal ifade '{0}' ayrıştırılamıyor: {1} + + + Seçilen sayıda test çalıştırma işlemi gerçekleştirilir (-1: sonsuz). +Google Test seçeneği: {0} + + + {0}Özellikle: Komut istemini başlatın, dizini '{1}' olarak değiştirin ve testlerinizin genel olarak çalıştırılabilir olduğundan emin olmak için şu komutu çalıştırın:{2}{3} {4} + + + Test sayısına göre ayırıcı kullanma + + + Bilinmeyen sabit değer: {0} + + + Yeni test yürütme çerçevesini kullan (deneysel) + + + '{0}' çifti ayrıştırılamadı, özel durum iletisi: {1} + + + {1} çalıştırılabilir dosyasında {0} test bulundu + + + Testler aynı anda çalıştırılırken test konsolunda test çıkışı gösterilmez! + + + Komutun çıkışı: + + + Google Test yürütülebilir dosyalarının çıkışı Test Çıkış penceresine yazdırılır. + + + Test kapatma toplu iş dosyası + + + {0}Yürütme şu sürede tamamlandı: {1} + + + Çalışma dizini + + + Test kapatma toplu iş dosyası + + + Seçeneklerde paralel çalıştırma belirtilmiş, ancak hata ayıklayıcısı iliştirilmiş olduğundan testler sırayla çalıştırılıyor. + + + {0} dosyası geçersiz. {1} + + + Test bulmadan sonra + + + {0}, varsayılan normal ifade {1} ile eşleşiyor + + + '{0}' satırındaki test sonucu için bilinen hiçbir test çalışması yok. Testleri zaman içinde değişmiş olan bir test çalışmasını tekrarlıyor olabilirsiniz. + + + {1} çalıştırılabilir dosyası için test bulma {0} sn sonra iptal edildi + + + Paralel test yürütme, her birine çalıştırılmak üzere bir dizi test atanan farklı iş parçacıkları aracılığıyla gerçekleşir. Daha sonra bu iş parçacıkları sırayla, ilgili test sonuçlarını üretecek gerekli yürütülebilir dosyaları çağırır. + + + {0}Bu test çalışması, çözümleyicide zaten var: {1} + + + Google Test yürütülebilir dosyası için ek parametreler. Yer tutucular: + + + En kötü {0} fark: + + + XML düğümü ayrıştırılamadı: '{0}'. Özel durum iletisi: {1} + + + İptal edildiğinde işlemleri sonlandır + + + {0}Test çalıştırılabilir dosyası '{1}' çalıştırılamadı: {2} + + + Standart sapma: {0} ms + + + Nitelik ataması için normal ifadeler + + + Beklenen test çalışması sürelerinin sayısı: {0} + + + True olarak ayarlanırsa, uzantı güncelleştirildikten sonra yayın notlarını içeren bir iletişim kutusu gösterilir. + + + Yeni test yürütme çerçevesini kullanın. Avantajları: test kilitlenmesi algılama ve test çıkışı yazdırma, hata ayıklama modunda da çalışır. + + + >>> Zamanlama istatistikleri <<< + + + Güncelleştirme sonrasında yayın notlarını göster + + + Çalıştırılan komut: '{0} {1}', çalışma dizini: '{2}' + + + {0} içindeki test konumları ve nitelikler çözümlenirken özel durum oluştu\n{1} + + + {0}, varsayılan normal ifade {1} ile eşleşmiyor + + + Test yinelemesi sayısı + + + Komut çıkış üretmedi + + + {0}{1}: Dosya bulunamadı: {2} + + + "{0}" normal ifadesi geçersiz, özel durum iletisi: {1} + + + Hata oluştuğunda kes + + + Kaynak konumu bilgilerini ve nitelikleri (GTA_Traits.h içindeki makrolar aracılığıyla tanımlanır) almak için test yürütülebilir dosyalarında hata ayıklama sembolü bilgilerini ayrıştırır. +False olarak ayarlanırsa, nitelik bulmanın 2. adımı atlanır ve yalnızca traits normal ifadeleri geçerli olur. + + + Test adı ayıracı + + + {0}Visual Studio'ya {1} test sonucu raporlandı, çalıştırılabilir dosya: '{2}', süre {3} + + + Test yürütmesi için kullanılacak en fazla iş parçacığı sayısı (0: her işlemci için bir iş parçacığı). + + + {0}<<<<<<<<<<<<<<< Çıkışın Sonu + + + {0} hiçbir zaman 0'dan küçük olmamalıdır + + + Diğer + + + Zaman damgası çıkışı + + + {0}, özel normal ifade {1} ile eşleşiyor + + + Test çıkışı: + + + Bilinmeyen test çalışması durumu: {0} + + + Boş değilse, çalışma dizinini testleri çalıştıracak şekilde ayarlar (varsayılan: {0}) +Örnek: {1}\MyTestDir +Yer tutucular: + + + Beklenen ve gerçek süre arasındaki ortalama fark: {0} ms + + + {0}Sonuç XML dosyasından {1} test sonucu toplandı: {2} + + + True olarak ayarlanırsa, testler rastgele sıralamayla yürütülür. Rastgele sıralama ile yürütmenin düzgün şekilde yapılabilmesi için, tüm testlerin paralel olmayan bir düzende yürütülmesi gerekir. Aksi halde, test yürütülebilir dosyaları büyük olasılıkla bir kereden fazla yürütülür ve rastgele sıralama, ilgili yürütmelerle kısıtlanır. +Google Test seçeneği: {0} + + + Hata ayıklayıcısı {0} komutuna iliştiriliyor + + + {0}, özel normal ifade {1} ile eşleşmiyor + + + True olarak ayarlanırsa hata ayıklama çıkışı, test konsoluna yazdırılır. + + + True olarak ayarlanırsa, devre dışı bırakılanlar dahil tüm testler (seçili olanlar) çalıştırılır. +Google Test seçeneği: {0} + + + {0} - test yürütülebilir dosyasını içeren dizin + + + Test yürütme + + + Hata ayıklama bilgilerini yazdır + + + {0}'{1}' Test dizini silinemedi: {2} + + + Testleri karıştır: Çekirdek + + + !! Bu test büyük olasılıkla KİLİTLENDİ !! + + + nedeni {0} testinin kilitlenmesi olabilir + + + Test sonucu dosyası {0} tamamen ayrıştırılamadı. Test çalıştırılabilir dosyanız kilitlenmiş olabilir. Özel durum iletisi: {1} + + + {0}Test yürütme sırasında Visual Studio'ya {1} test sonucu raporlandı, çalıştırılabilir dosya: '{2}' + + + Devre dışı bırakılmış testleri de çalıştır + + + Test bulmanın başarısız kabul edilmesi için geçmesi gereken saniye sayısı. 0: Sonsuz zaman aşımı + + + Test kurulumu toplu iş dosyası + + + Boş değilse içerik, test yürütme ve bulma işlemlerinin PATH değişkenine eklenir. +Örnek: C:\MyBins; {0}\MyOtherBins; +Yer tutucular: + + + '{0}' test çalışması eklendi + + + {0} test çalıştırılıyor... + + + {0}XML dosyasında veya konsol çıkışında bulunamayan testler için {1} test sonucu oluşturuldu + + + Bu test çalışması, çözümleyicide zaten var: {0} + + + Aşağıdaki komutların, komut satırında başarıyla çalıştırılabilecek durumda olup olmadığını test edin (gerekli tüm ikili dosyaların PATH üzerinde olduğundan emin olun): {0}{1} + + + Test kurulumu toplu iş dosyası + + + VS Birim Testi çerçevesindeki kısıtlamalar nedeniyle, testlerde hata ayıklanırken test yürütülebilir dosyası çıkışı, test konsolunda görüntülenemez! + + + {0}{1}: {2} koduyla çıkıldı, çalıştırılan komut: '{3}' + + + Özel durumları yakala + + + Çalışma zamanı davranışı + + + {1} tarihinde başlatılan {0} işlemi sonlandırılamadı: {2} + + + {0} testi: Beklenen: {1} ms, gerçek: {2} ms + + + Test çalıştırılabilir dosyası '{0}' için ayarlar: {1} + + + '{0}' satırında süre ayrıştırılamadı + + + Çıkış dosyası yok, testleriniz kilitlendi mi? + + + {0} çalıştırılabilir dosyası başka bir bilgisayardan geldi ve bu bilgisayarın korunmasına yardımcı olmak için engellendi. + + + Testler {0} iş parçacığı üzerinde çalıştırılıyor + + + Test bulmadan önce + + + {0}Yığın izlemesi:{1}{2} + + + SettingsWrapper, '{0}' iş parçacığı üzerindeki bir çalıştırılabilir dosyanın ayarlarıyla zaten çalışıyor; aynı zamanda '{1}' iş parçacığı tarafından kullanılamaz + + + Paralel test yürütme + + + {0} adlı test için kaynak konum bulunamadı + + + Yürütme, {0} çalıştırılabilir dosyasının ayarlarıyla zaten çalışıyor; {1} dosyasının ayarlarına geçiş yapılamaz + + + '{0}' test çalıştırılabilir dosyası için ayar yapılandırılmadı. Şu çözüm ayarları ile çalıştırılıyor: {1} + + + Normal ifade '{0}' zaman aşımına uğradı: {1} + + + Test süreleri okunamadı: {0} + + + Sembol bilgilerini ayrıştır + + + Paralelleştirme + + + Test sürelerine göre ayırıcı kullanma + + + Bir normal ifadeyle eşleşen test çalışmalarında nitelikleri geçersiz kılmaya veya nitelik eklemeye izin verir. Nitelikler 3 aşamada oluşturulur. İlk olarak, 'Traits before' seçeneğine göre testlere nitelikler atanır. Sonra, test nitelikleri (GTA_Traits.h içindeki makrolar aracılığıyla tanımlanır) testlere eklenir ve 1. aşamadaki nitelikleri geçersiz kılıp yeni değerlerle değiştirir. Son olarak, 'Traits after' seçeneği, yine geçersiz kılacak biçimde hesaplanır. +Söz dizimi: {0}, normal ifadeyi niteliklerden ayırır; {1}, niteliğin adını ve değerini ayırır; {2}, normal ifade ve nitelik çiftlerini ayırır. +Örnek: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + Boş değilse, testlerinizi içeren Google Test yürütülebilir dosyalarını bulmak için bu normal ifade kullanılır. +Varsayılan normal ifade: {0} + + + Test yürütülmeden önce çalıştırılacak toplu iş dosyası. Testler paralel olarak yürütüldüğünde toplu iş dosyası, iş parçacığı başına bir kez yürütülür. Yer tutucular: + + + True olarak ayarlanırsa, test ve hata ayıklama çıkışlarına zaman damgası eklenir. + + + Şu çözüm ayarları geri yükleniyor: {0} + + + Test çıkışını yazdır + + + Raporlanacak veri yok. + + + Google Test, özel durumları varsayılan olarak yakalar; ilgili test başarısız olur ve test yürütme devam eder. False seçilirse, özel durumların geçişine izin verilir ve özel durumları hata ayıklayıcısı yakalar. +Google Test seçeneği: {0} + + + Test bulma için normal ifade + + + Test yürütüldükten sonra çalıştırılacak toplu iş dosyası. Testler paralel olarak yürütüldüğünde toplu iş dosyası, iş parçacığı başına bir kez yürütülür. Yer tutucular: + + + {0} - testler tarafından kullanılabilen dizin yolu +{1} - geçerli testleri yürüten iş parçacığının kimliği + + + {0} - testleri içeren yürütülebilir dosya + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.TestAdapter.Resources.tr.resx b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.TestAdapter.Resources.tr.resx new file mode 100644 index 000000000..158a88b94 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/tr/GoogleTestAdapter.TestAdapter.Resources.tr.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument içinde RunSettings düğümü yok! Ayarların birleştirmesi iptal ediliyor... + + + İşlem bulunamadı + + + Visual Studio sürümü: {0} + + + {0} için gereken en düşük sürüm, Visual Studio 2012 Güncelleştirme 1 sürümüdür. Lütfen Visual Studio yüklemenizi güncelleştirin. + + + Visual Studio sürümü belirlenemedi. {0} için gereken en düşük sürüm: Visual Studio 2012 Güncelleştirme 1. + + + Hata ayıklayıcısı {0} işlemine iliştirilemedi:{1}{2} + + + Nitelik, temel test özelliğiyle aynı ada sahip ve test çalışması filtrelemesinde yoksayılacak: {0} + + + Test çalışması filtresi: {0} + + + {0} sırasında aşağıdaki hatalar ve uyarılar oluştu {1}:{2} + + + Visual Studio sürümü bulunamadı: {0} + + + Sabit listesi değeri bilinmiyor: {0} + + + Sabit listesi değeri bilinmiyor: {0} + + + Testler çalıştırılırken özel durum oluştu: {0} + + + Test bulma tamamlandı, toplam süre: {0} + + + Hata ayıklama yalnızca, Visual Studio'da GoogleTestAdapter yüklüyse yapılabilir; NuGet yüklemesi bunu (ve Visual Studio seçenekleri, araç çubuğu, çözüm ayarları gibi diğer özellikleri) desteklemez. + + + Test yürütmesi iptal edildi. + + + Visual Studio sürümü bilinmiyor: {0} + + + Çözüm test ayarları dosyası ayrıştırılamadı, dosyayı denetleyin: {0} +Özel durum: {1} + + + (daha fazla bilgi için hata ayıklama modunu etkinleştirin) + + + Test çalışması filtresi belirtilmedi + + + Çözüm ayarları: {0} + + + Testler bulunurken özel durum oluştu: {0} + + + HATA: {0} + + + Test bulma + + + Test çalışması filtresi geçersiz: {0} + + + Google Test yürütmesi tamamlandı, toplam süre: {0} + + + Visual Studio'nun ActivityLog.xml dosyasında sorun hakkında daha fazla bilgi olabilir (örn. https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/) + + + Hata ayıklayıcısı {0} işlemine iliştirildi, işlem {1} ms sürdü + + + {0}, {1} ile eşleşiyor + + + {0}, {1} ile eşleşmiyor + + + Hata ayıklayıcısı {0} işlemine iliştirilemedi, hata iletisi yok + + + Test yürütmesi + + + {0} geçersiz + + + Uyarı: {0} + + + Çözüm test ayarları dosyası '{0}' konumunda bulundu, ancak {1} düğümünü içermiyor + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/tr/NewProjectWizard.Properties.Resources.tr.resx b/GoogleTestAdapter/Packaging.GTA/tr/NewProjectWizard.Properties.Resources.tr.resx new file mode 100644 index 000000000..fb8f16cee --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/tr/NewProjectWizard.Properties.Resources.tr.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test Projesi Yapılandırması + + + Dinamik olarak bağla (önerilen) + + + Google Test'i şu şekilde kullan: + + + C++ çalışma zamanı kitaplıkları: + + + NuGet.VisualStudio.Interop.dll bulunamıyor. Sihirbaz çalışmaya devam edemiyor. + + + <Proje yok> + + + Windows SDK bulunamadı. + + + Statik Kitaplık (.lib) + + + Test edilecek projeyi seçin (İsteğe bağlı): + + + Statik olarak bağla + + + Dinamik Kütüphane (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/tr/VSPackage.tr.resx b/GoogleTestAdapter/Packaging.GTA/tr/VSPackage.tr.resx new file mode 100644 index 000000000..a6c08954b --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/tr/VSPackage.tr.resx @@ -0,0 +1,1252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + Genel + + + Paralelleştirme + + + Google Test + + + Google Test için Test Bağdaştırıcısı + + + Google Test için yazılmış birim testleriyle Visual Studio test araçlarını etkinleştirir. Kullanım koşulları ve Üçüncü Taraf Bildirimleri uzantı yükleme dizininde bulunabilir. + + + + + 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 + BmMxFOspAAAAIwAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Common.Resources.zh-HANS.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Common.Resources.zh-HANS.resx new file mode 100644 index 000000000..2ef1830e3 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Common.Resources.zh-HANS.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 适用于 Google Test 的测试适配器: 正在启动测试执行... + + + 适用于 Google Test 的测试适配器 + + + {0}请访问 https://go.microsoft.com/fwlink/?linkid=848168 查看“适用于 Google Test 的测试适配器”中的疑难解答部分 + + + 适用于 Google Test 的测试适配器: 正在启动测试发现... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.DiaResolver.Resources.zh-HANS.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.DiaResolver.Resources.zh-HANS.resx new file mode 100644 index 000000000..ac21daaf9 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.DiaResolver.Resources.zh-HANS.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 找不到文件“{0}”的 .pdb 文件。不会获得测试的任何源位置。 + + + 找不到 {0} 的行号 + + + 使用链接器选项 /DEBUG:FULL (Visual Studio 2017) 或 /DEBUG (Visual Studio 2015 and older) - 不要使用 /DEBUG:FASTLINK! + + + ImageDirectoryEntryToData failed! + + + 无法加载 {0}。 + + + 找不到用于分析 *.pdb 文件的 msdia.dll。不会获得测试的任何源位置。 + + + UnMapAndLoad 失败! + + + 正在分析 PDB 文件 {0} + + + 尝试查找 PDB: {0} + + + 为获取测试的源位置,请确保为测试可执行文件生成*完整的* PDB。 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Resources.zh-HANS.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Resources.zh-HANS.resx new file mode 100644 index 000000000..674085634 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.Resources.zh-HANS.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 如果启用,可能附加的调试程序将捕获断言失败,并自动进入交互模式。 +Google Test 选项: {0} + + + {0}>>>>>>>>>>>>>>> 命令“{1} {2}”的输出 + + + 无法列出可执行文件“{0}”的测试用例: 进程执行失败,退出代码为 {1} + + + 由 Google Test 生成的测试名称可能包含字符 "/",这使 Visual Studio 在“测试资源管理器”窗口不够宽的情况下会截掉 "/" 后面的名称。如果此选项的值为非空,将替换 "/" 字符以避免发生这种行为。请注意,使用 "\"、" "、"|" 和 "-" 字符会导致相同的行为("."、"_"、":" 和 "::" 也同样有效)。同时也请注意,特征正则表达式是针对测试的显示名称进行计算的(且必须与此选项一致)。 + + + 实际测试用例持续时间数: {0} + + + {0}从控制台输出中收集到 {1} 个测试结果 + + + 已退出进程,代码为 {0} + + + 已终止于 {1} 开始的进程 {0} + + + {0}{1}: 已成功运行“{2}” + + + 按每个执行随机测试 + + + {0}已取消执行: {1} + + + 包括 {1} 个测试后,超过了命令行允许的最大长度({0}) (下一个字符串长度为 {2}) + + + 在二进制文件 {2} 中找到了 {0} 个测试方法符号和 {1} 个特征符号 + + + 测试查询超时(秒) + + + {0}{1}: 捕获异常,消息:“{2}”,已执行命令:“{3}” + + + {0} - 解决方案的目录(仅在 Visual Studio 内可用) + + + 最大线程数 + + + 如果为 true,测试执行被取消时时将主动终止正在运行的测试可执行文件。请注意,终止测试进程可能存在各种负面影响;尤其是造成 Google Test 将无法执行任何关闭任务。 + + + {0}运行测试时出现异常: {1} + + + 未找到了用于可执行文件 {0} 的 Google Test 指示器文件 + + + 0: 从系统时间计算种子,1<= n<={0}: 使用给定的种子。请参阅选项“{1}”的说明。 +Google Test 选项: {2} + + + {0}{1} 个测试用例似乎没有运行 - 是否重复执行了测试运行,但测试在此期间有所改变? 测试用例:{2}{3} + + + 其他的测试执行参数 + + + 找到了用于可执行文件 {0} 的 Google Test 指示器文件 + + + 在实际持续时间中发现了 {0} 个预期持续时间 + + + PATH 扩展 + + + 无法分析正则表达式“{0}”: {1} + + + 测试将运行所选的次数(-1: 无限)。 +Google Test 选项: {0} + + + {0}特别是: 启动命令提示符,更改目录为“{1}”,然后执行以下命令,确保可在一般情况下运行测试。{2}{3} {4} + + + 基于测试数使用拆分器 + + + 未知文本: {0} + + + 使用新的测试执行框架(实验性) + + + 无法分析正则表达式对“{0}”,异常消息: {1} + + + 在可执行文件 {1} 发现 {0} 个测试 + + + 请注意,同时执行测试时,测试控制台上不会显示任何测试输出! + + + 命令输出: + + + 将 Google Test 可执行文件的输出打印到“测试输出”窗口。 + + + 测试拆卸批处理文件 + + + {0}执行耗时 {1} + + + 工作目录 + + + 测试拆卸批处理文件 + + + 已在选项中选择并行执行,但由于附加了调试程序,因此测试是按顺序执行的。 + + + 无效的文件 {0}。{1} + + + 测试发现之后 + + + {0} 匹配默认正则表达式 {1} + + + 行“{0}”的测试结果没有已知的测试用例 - 是否重复执行了测试运行,但测试在此期间有所改变? + + + {0} 秒后取消可执行文件 {1} 的测试发现 + + + 并行测试执行通过不同的线程实现,每个线程都分配有要执行的若干测试。线程将按顺序调用所需的可执行文件以生成相应的测试结果。 + + + {0}已在分析器中的测试用例: {1} + + + Google Test 可执行文件的其他参数。占位符: + + + {0} 个严重差异: + + + 无法分析 XmlNode:“{0}”。异常消息: {1} + + + 取消时终止线程 + + + {0}无法运行测试可执行文件“{1}”: {2} + + + 标准偏差: {0} 毫秒 + + + 特征分配的正则表达式 + + + 预期测试用例持续时间数: {0} + + + 如果为 true,将在扩展更新后显示包含发行说明的对话框。 + + + 使用新的测试执行框架。优势: 在调试模式下测试崩溃检测和测试输出打印也能正常工作。 + + + >>> 计划统计信息 <<< + + + 更新后显示发行说明 + + + 已执行的命令:“{0} {1}”,工作目录:“{2}” + + + 在 {0} 中解析测试位置和特征时出现异常\n{1} + + + {0} 与默认正则表达式 {1} 不匹配 + + + 测试重复的次数 + + + 命令未生成任何输出 + + + {0}{1}: 未找到文件: {2} + + + 无效的正则表达式“{0}”,异常消息: {1} + + + 在发生故障时中断 + + + 分析测试可执行文件的调试符号信息以获取源位置信息和特征(在 GTA_Traits.h 中通过宏定义的)。 +如果此设置为 false,特征发现的第 2 步将被遗漏,并且只有特征正则表达式将生效。 + + + 测试名称分隔符 + + + {0}测试执行期间向 Visual Studio 报告了 {1} 个测试结果,可执行文件:“{2}”,持续时间: {3} + + + 用于测试执行的最大线程数(0: 每个处理器一个线程)。 + + + {0}<<<<<<<<<<<<<<< 结束输出 + + + {0} 决不能小于 0 + + + 杂项 + + + 时间戳输出 + + + {0} 匹配自定义正则表达式 {1} + + + 测试输出: + + + 未知测试用例状态: {0} + + + 如果为非空值,将设置用于运行测试的工作目录(默认值: {0}) +例如: {1}\MyTestDir +占位符: + + + 预期持续时间和实际持续时间的平均差: {0} 毫秒 + + + {0}从结果 XML 文件 {2} 中收集到 {1} 个测试结果 + + + 如果为 true,将按随机顺序执行测试。请注意,在以非并行方式执行所有测试时才会给出真正的随机顺序。否则,很有可能将多次执行测试可执行文件 - 随机顺序不受限于相应的执行。 +Google Test 选项: {0} + + + 正在将调试程序附加到 {0} + + + {0} 与自定义正则表达式 {1} 不匹配 + + + 如果为 true,调试输出将被打印到测试控制台。 + + + 如果为 true,将运行所有(选中的)测试,即使它们已被禁用也不例外。 +Google Test 选项: {0} + + + {0} - 包含测试可执行文件的目录 + + + 测试执行 + + + 打印调试信息 + + + {0}无法删除测试目录 "{1}": {2} + + + 随机测试: 种子 + + + !! 此测试可能已崩溃!! + + + 原因可能是测试 {0} 崩溃 + + + 无法(完全)分析测试结果文件{0} - 测试可执行文件可能已崩溃。异常消息: {1} + + + {0}测试执行期间向 Visual Studio 报告了 {1} 个测试结果,可执行文件:“{2}” + + + 还运行已禁用的测试 + + + 秒数,超过此秒数后将假设测试发现已失败。0: 无限超时 + + + 测试安装批处理文件 + + + 如果为非空值,内容将被追加到测试执行和发现进程的 PATH 变量。 +例如: C:\MyBins;{0}\MyOtherBins; +占位符: + + + 添加的测试用例“{0}” + + + 正在运行 {0} 个测试... + + + {0}为结果 XML 文件或控制台输出中没有找到的测试创建了 {1} 个测试结果 + + + 已在分析器中的测试用例: {0} + + + 测试是否能在命令行上成功执行以下命令(确保所有必需的二进制文件都在该路径上):{0}{1} + + + 测试设置批处理文件 + + + 请注意,由于 VS 单元测试框架的限制,调试测试时无法在测试控制台中显示测试可执行文件的输出! + + + {0}{1}: 已退出,代码为 {2},已执行命令:“{3}” + + + 捕获异常 + + + 运行时行为 + + + 无法终止于 {1} 开始的进程 {0}: {2} + + + 测试 {0}: 预期 {1} 毫秒,实际为 {2} 毫秒 + + + 测试可执行文件“{0}”的设置: {1} + + + 无法分析行“{0}”中的持续时间 + + + 输出文件不存在,测试崩溃了吗? + + + 可执行文件 {0} 来自于另一台计算机,并已阻止该文件以帮助保护此计算机。 + + + 正在对 {0} 个线程执行测试 + + + 测试发现之前 + + + {0}堆栈跟踪:{1}{2} + + + SettingsWrapper 已在线程“{0}”上使用可执行文件的设置运行,不能同时用于线程“{1}” + + + 并行测试执行 + + + 找不到测试 {0} 的源位置 + + + 可执行文件 {0} 的设置的执行已在运行,无法切换为 {1} 的设置 + + + 没有为测试可执行文件“{0}”配置任何设置;运行解决方案设置: {1} + + + 正则表达式“{0}”超时: {1} + + + 无法读取测试持续时间: {0} + + + 分析符号信息 + + + 并行化 + + + 基于测试持续时间使用拆分器 + + + 允许替代/添加匹配正则表达式的测试用例的特征。特征由 3 个阶段构成。首先,根据“之前的特征”选项将特征分配给测试。然后,将测试的特征(在 GTA_Traits.h 中通过宏定义的)添加到测试中,使用新值从第 1 阶段替代特征。最后,再次以替代的方式评估“之后的特征”选项。 +语法: {0} 将正则表达式与特征分隔开,特征名称和值由 {1} 分隔,每对正则表达式和特征由 {2} 分隔。 +例如: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + 如果为非空值,此正则表达式将用于发现包含测试的 Google Test 可执行文件。 +默认正则表达式: {0} + + + 在测试执行之前要执行的批处理文件。如果并行执行测试,将按每个线程执行一次批处理文件。占位符: + + + 如果为 true,将向测试和调试输出添加一个时间戳。 + + + 正在还原解决方案设置: {0} + + + 打印测试输出 + + + 无报告内容。 + + + Google Test 将默认捕获异常;相应的测试将失败并且测试执行将继续进行。选择 false 让异常通过,使调试程序能够捕获这些异常。 +Google Test 选项: {0} + + + 测试发现的正则表达式 + + + 在测试执行之后要执行的批处理文件。如果并行执行测试,将按每个线程执行一次批处理文件。占位符: + + + {0} - 可由测试使用的目录路径 +{1} - 执行当前测试的线程 ID + + + {0} - 包含测试的可执行文件 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.TestAdapter.Resources.zh-HANS.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.TestAdapter.Resources.zh-HANS.resx new file mode 100644 index 000000000..2d954b951 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hans/GoogleTestAdapter.TestAdapter.Resources.zh-HANS.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument 不包含一个 RunSettings 节点! 正在取消设置合并... + + + 找不到进程 + + + Visual Studio 版本: {0} + + + {0} 要求最低版本为 Visual Studio 2012 Update 1 - 请更新 Visual Studio 安装。 + + + 无法识别 Visual Studio 的版本。{0} 要求最低版本为 Visual Studio 2012 Update 1。 + + + 无法将调试程序附加到进程 {0}:{1}{2} + + + 特征与基本测试属性具有相同的名称,因此筛选测试用例时将忽略: {0} + + + 测试用例筛选器: {0} + + + {0}{1}期间出现以下错误和警告:{2} + + + 无法查明 Visual Studio 版本: {0} + + + 未知的枚举文本: {0} + + + 未知的枚举文本: {0} + + + 运行测试时出现异常: {0} + + + 测试发现已完成,总持续时间: {0} + + + 只有在 Visual Studio 中已安装 GoogleTestAdapter 的情况下,才可能进行调试 - NuGet 安装不支持此功能(以及 Visual Studio 选项、工具栏和解决方案设置等其他功能)。 + + + 测试执行已取消。 + + + 未知的 Visual Studio 版本: {0} + + + 无法分析解决方案测试设置文件,检查文件: {0} +异常: {1} + + + (启用调试模式,了解详细信息) + + + 未提供任何测试用例筛选器 + + + 解决方案设置: {0} + + + 发现测试时出现异常: {0} + + + 错误: {0} + + + 测试发现 + + + 测试用例筛选器无效: {0} + + + Google Test 执行已完成,总持续时间: {0} + + + Visual Studio 的 ActivityLog.xml 中可能有该问题的详细介绍(请参阅 https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/) + + + 调试程序已附加到进程 {0},耗时 {1} 毫秒 + + + {0} 匹配 {1} + + + {0} 与 {1} 不匹配 + + + 无法将调试程序附加到进程 {0},未提供错误消息 + + + 测试执行 + + + 无效的 {0} + + + 警告: {0} + + + 解决方案测试设置文件已在“{0}”处找到,但不包含 {1} 节点 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hans/NewProjectWizard.Properties.Resources.zh-HANS.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hans/NewProjectWizard.Properties.Resources.zh-HANS.resx new file mode 100644 index 000000000..a6de9c714 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hans/NewProjectWizard.Properties.Resources.zh-HANS.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 测试项目配置 + + + 动态链接(推荐) + + + 将 Google Test 用作: + + + C++ 运行时库: + + + 找不到 NuGet.VisualStudio.Interop.dll。向导无法继续。 + + + <无项目> + + + 找不到 Windows SDK。 + + + 静态库(.lib) + + + 选择要测试的项目(可选): + + + 静态链接 + + + 动态库(.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hans/VSPackage.zh-HANS.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hans/VSPackage.zh-HANS.resx new file mode 100644 index 000000000..b0f3009e3 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hans/VSPackage.zh-HANS.resx @@ -0,0 +1,1251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + 常规 + + + 并行化 + + + Google Test + + + 适用于 Google Test 的测试适配器 + + + 启用带有针对 Google Test 编写的单元测试的 Visual Studio 测试工具。扩展安装目录中提供了使用条款和第三方通知。 + + + + + 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 + + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Common.Resources.zh-HANT.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Common.Resources.zh-HANT.resx new file mode 100644 index 000000000..ed975f2df --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Common.Resources.zh-HANT.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 適用於 Google Test 的測試配接器: 正在啟動測試執行... + + + 適用於 Google Test 的測試配接器 + + + {0}查看適用於 Google Test 的測試配接器之疑難排解一節,網址為 https://go.microsoft.com/fwlink/?linkid=848168 + + + 適用於 Google Test 的測試配接器: 正在啟動測試探索... + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.DiaResolver.Resources.zh-HANT.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.DiaResolver.Resources.zh-HANT.resx new file mode 100644 index 000000000..82ac12e1f --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.DiaResolver.Resources.zh-HANT.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 找不到檔案 '{0}' 的 .pdb 檔。您不會收到測試的任何來源位置。 + + + 找不到 {0} 的行號 + + + 使用連結器選項 /DEBUG:FULL (若為 Visual Studio 2017) 或 /DEBUG (若為 Visual Studio 2015 或更早的版本) - 請勿使用 /DEBUG:FASTLINK! + + + ImageDirectoryEntryToData failed! + + + 無法載入 {0}。 + + + 找不到 msdia.dll 來剖析 *.pdb 檔。您不會收到測試的任何來源位置。 + + + UnMapAndLoad 失敗! + + + 正在剖析 PDB 檔案 {0} + + + 嘗試尋找 PDB: {0} + + + 若要取得測試的來源位置,請務必為測試可執行檔產生「完整」的 PDB。 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Resources.zh-HANT.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Resources.zh-HANT.resx new file mode 100644 index 000000000..f4d7f1894 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.Resources.zh-HANT.resx @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 如果啟用,便可能附加偵錯工具,以攔截宣告失敗並自動進入互動模式。 +Google Test 選項: {0} + + + {0}>>>>>>>>>>>>>>> 命令 '{1} {2}' 的輸出 + + + 無法列出可執行檔 '{0}' 的測試案例: 處理序執行失敗,結束代碼為 {1} + + + Google Test 產生的測試名稱可能包含字元 '/' 導致 Visual Studio 在測試總管視窗寬度不足的情況下截斷 '/' 後面的名稱。如果此選項的值非空白,就會取代 '/' 字元以避免該行為。請注意,'\'、' '、'|' 和 '-' 會產生相同行為 ('.'、'_'、':' 和 '::' 則已知適用)。另請注意,特徵 Regex 會針對測試的顯示名稱來評估 (且必須與此選項一致)。 + + + 實際測試案例持續時間長度: {0} + + + {0}已從主控台輸出收集到 {1} 個測試結果 + + + 處理序已結束,代碼為 {0} + + + 已於 {1} 啟動了終止處理序 {0} + + + {0}{1}: 已成功執行 '{2}' + + + 隨機執行測試 + + + {0}已取消執行: {1} + + + 包括 {1} 個測試之後,已超過允許的命令列長度上限 ({0}) (下一個字串長度為 {2}) + + + 在二進位檔 {2} 中找到 {0} 個測試方法符號與 {1} 個特性符號 + + + 測試探索逾時 (秒) + + + {0}{1}: 攔截到例外狀況,訊息: '{2}',執行的命令: '{3}' + + + {0} - 解決方案的目錄 (僅在 Visual Studio 內適用) + + + 執行緒的最大數目 + + + 如果為 true,會在測試執行取消時主動終止正在執行的測試可執行檔。請注意,終止測試處理序可能會發生各種副作用; 尤其是 Google Test 將無法執行任何關機工作。 + + + {0}執行測試時發生例外狀況: {1} + + + 找不到可執行檔 {0} 的任何 Google Test 指標檔案 + + + 0: 從系統時間計算種子,1<=n<={0}: 使用指定的種子。請參閱選項 '{1}' 的附註。 +Google Test 選項: {2} + + + 似乎尚未執行 {0}{1} 測試案例 - 您是否要重複執行測試回合,但於此同時測試已有所變更嗎? 測試案例: {2}{3} + + + 其他測試執行參數 + + + 找到可執行檔 {0} 的 Google Test 指標檔案 + + + {0} 應有的持續時間已位於實際的持續時間內 + + + PATH 延伸 + + + 無法剖析 Regex '{0}': {1} + + + 測試要執行的選定次數 (-1: 無限)。 +Google Test 選項: {0} + + + {0}尤其是: 啟動命令提示字元並將目錄變更到 '{1}',然後執行下列命令,以確定在一般情況下可執行您的測試。{2}{3} {4} + + + 依據測試數目使用分隔器 + + + 未知的常值: {0} + + + 使用新的測試執行架構 (實驗) + + + 無法剖析 '{0}' 組,例外狀況訊息: {1} + + + 在可執行檔 {1} 中找到 {0} 個測試 + + + 請注意,同時執行測試時,在測試主控台上不會顯示任何測試輸出! + + + 命令輸出: + + + 將 Google Test 可執行檔的輸出列印到 [測試輸出] 視窗。 + + + 測試終止批次檔 + + + {0}執行需時 {1} + + + 工作目錄 + + + 測試終止批次檔 + + + 在選項中選取了 [平行執行],但因為附加了偵錯工具,所以測試會循序執行。 + + + 檔案 {0} 無效。{1} + + + 在測試探索之後 + + + {0} 可找到預設 regex {1} + + + 第 '{0}' 行的測試結果沒有任何已知的測試案例 - 您是否要重複執行測試回合,但於此同時測試已有所變更嗎? + + + 已於 {0} 秒後為可執行檔 {1} 取消了測試探索 + + + 平行測試執行會藉由不同執行緒達成,每個執行緒都指派了數項要執行的測試。執行緒接著會依序叫用必要的可執行檔,以產生對應的測試結果。 + + + {0}已位於分析器中的測試案例: {1} + + + Google 測試可執行檔的其他參數。預留位置: + + + {0} 個最糟的差異: + + + 無法剖析 XmlNode: '{0}'。例外狀況訊息: {1} + + + 在取消時終止處理序 + + + {0}無法執行測試可執行檔 '{1}': {2} + + + 標準差: {0} 毫秒 + + + 用於特徵指派的 Regex + + + 應有的測試案例持續時間長度: {0} + + + 如果為 true,在更新延伸模組後,會顯示有版本資訊的對話方塊。 + + + 使用新的測試執行架構。優點: 測試損毀偵測和測試輸出列印也適用於偵錯模式。 + + + >>> 正在排程統計資料 <<< + + + 在更新後顯示版本資訊 + + + 執行的命令: '{0} {1}',工作目錄: '{2}' + + + 解析 {0} 中的測試位置與特性時,發生例外狀況\n{1} + + + {0} 與預設 regex {1} 不相符 + + + 測試重複次數 + + + 命令未產生任何輸出 + + + {0}{1}: 找不到檔案: {2} + + + 規則運算式 "{0}" 無效,例外狀況訊息: {1} + + + 在失敗時中斷 + + + 剖析測試可執行檔的偵錯符號資訊,以取得來源位置資訊及特徵 (透過 GTA_Traits.h 中的巨集而定義)。 +若將這項設為 false,將會忽略特徵探索的步驟 2,只有特徵 Regex 會生效。 + + + 測試名稱分隔符號 + + + {0}已對 Visual Studio 回報了 {1} 項測試結果,可執行檔為: '{2}',持續時間: {3} + + + 要用於測試執行的執行緒最大數目 (0: 每個處理器一個執行緒)。 + + + {0}<<<<<<<<<<<<<<< 輸出結尾 + + + {0} 不得為 <0 + + + 其他 + + + 時間戳記輸出 + + + {0} 可找到自訂 regex {1} + + + 測試輸出: + + + 未知的測試案例狀態: {0} + + + 如果非空白,將會設定執行測試的工作目錄 (預設: {0}) +範例: {1}\MyTestDir +版面配置區: + + + 預期與實際持續時間之間的平均差異: {0} 毫秒 + + + {0}已從結果 XML 檔案 {2} 收集到 {1} 個測試結果 + + + 如果為 true,測試會以隨機順序執行。請注意,只有在以非平行方式執行所有測試時,才會產生真正的隨機順序。否則,測試可執行檔很可能會執行一次以上,導致隨機順序受限於對應的執行。 +Google Test 選項: {0} + + + 正在附加偵錯工具至 {0} + + + {0} 與自訂 regex {1} 不相符 + + + 如果為 true,偵錯輸出將會列印到測試主控台。 + + + 如果為 true,所有 (選取的) 測試都會執行,即使已停用亦然。 +Google Test 選項: {0} + + + {0} - 包含測試可執行檔的目錄 + + + 測試執行 + + + 列印偵錯資訊 + + + {0}無法刪除測試目錄 '{1}': {2} + + + 隨機測試: 種子 + + + !! 這項測試可能已毀損 !! + + + 原因可能是測試 {0} 已損毀 + + + 無法完整剖析測試結果檔案 {0} - 測試可執行檔可能已毀損。例外狀況訊息: {1} + + + {0}執行測試期間已對 Visual Studio 回報了 {1} 項測試結果,可執行檔為: '{2}' + + + 也執行已停用的測試 + + + 經過這個秒數後,即假設測試探索失敗。0: 無限逾時 + + + 測試安裝批次檔 + + + 如果非空白,內容將會附加到測試可執行檔和探索處理序的 PATH 變數。 +範例: C:\MyBins;{0}\MyOtherBins; +預留位置: + + + 已新增測試案例 '{0}' + + + 正在執行 {0} 項測試... + + + {0}已為測試建立了 {1} 個測試結果,但在結果 XML 檔案中以及主控台輸出中都找不到任何結果 + + + 已位於分析器中的測試案例: {0} + + + 測試是否可於命令列上成功執行下列命令 (請確定 PATH 上有所有必要的二進位檔): {0}{1} + + + 測試安裝批次檔 + + + 請注意,由於 VS 單元測試架構的限制,測試可執行檔的輸出可能不會在對測試偵錯時顯示於測試主控台中! + + + {0}{1}: 已結束,代碼為 {2},執行的命令: '{3}' + + + 攔截例外狀況 + + + 執行階段行為 + + + 無法終止於 {1} 所啟動的處理序 {0}: {2} + + + 測試 {0}: 應為 {1} 毫秒,但實際為 {2} 毫秒 + + + 測試可執行檔 '{0}' 的設定: {1} + + + 無法剖析第 '{0}' 行中的持續時間 + + + 輸出檔案不存在,您的測試是否損毀? + + + 可執行檔 {0} 來自另一台電腦,且已加以封鎖以協助您保護此電腦。 + + + 正於 {0} 個執行緒上執行測試 + + + 在測試探索之前 + + + {0}堆疊追蹤: {1}{2} + + + 已於執行緒 '{0}' 上用可執行檔的設定執行了 SettingsWrapper,所以無法也供執行緒 '{1}' 使用 + + + 平行測試執行 + + + 找不到測試 {0} 的來源位置 + + + 已利用可執行檔 {0} 的設定加以執行,不可切換至 {1} 的設定 + + + 未對可執行檔 '{0}' 設定任何設定值; 將以解決方案設定加以執行: {1} + + + Regex '{0}' 逾時: {1} + + + 無法讀取測試持續時間: {0} + + + 剖析符號資訊 + + + 並行 + + + 依據測試持續時間使用分隔器 + + + 允許為符合 Regex 的測試案例覆寫/新增特徵。建立特徵有 3 個階段。首先,特徵會依據 'Traits before' 選項指派至測試。接下來,測試的特徵 (透過 GTA_Traits.h 中的巨集而定義) 會新增到測試,並以新的值覆寫來自階段 1 的特徵。最後,會再次以覆寫方式評估 'Traits after' 選項。 +語法: {0} 會從特徵中分隔出 Regex,特徵的名稱和值會以 {1} 分隔,每對 Regex 和特徵則以 {2} 分隔。 +範例: MySuite\.*{0}Type{1}Small{2}MySuite2\.*|MySuite3\.*{0}Type{1}Medium + + + 如果非空白,就會使用這個 regex 來探索包含測試的 Google Test 可執行檔。 +預設 regex: {0} + + + 要在測試執行之前執行的批次檔。如果平行執行測試,批次檔會在每個執行緒中各執行一次。預留位置: + + + 如果為 true,會將時間戳記新增到測試和偵錯輸出。 + + + 正在還原解決方案設定: {0} + + + 列印測試輸出 + + + 沒有要回報的項目。 + + + 根據預設值; Google 測試會攔截的例外狀況according 的測試失敗,且會繼續測試執行。選擇,則為 false 可讓例外狀況通過,讓偵錯工具攔截。 +Google 測試選項: {0} + + + 用於測試探索的 Regex + + + 要在測試執行之後執行的批次檔。如果平行執行測試,批次檔會在每個執行緒中各執行一次。預留位置: + + + {0} - 可供測試使用的目錄路徑 +{1} - 執行目前測試的執行緒識別碼 + + + {0} - 包含測試的可執行檔 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.TestAdapter.Resources.zh-HANT.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.TestAdapter.Resources.zh-HANT.resx new file mode 100644 index 000000000..f8b582b7b --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hant/GoogleTestAdapter.TestAdapter.Resources.zh-HANT.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RunSettingsDocument 不包含 RunSettings 節點! 正在取消設定合併... + + + 找不到處理序 + + + Visual Studio 版本: {0} + + + {0} 至少需要 Visual Studio 2012 Update 1 - 請更新您的 Visual Studio 安裝。 + + + 無法識別 Visual Studio 版本。{0} 至少需要 Visual Studio 2012 Update 1。 + + + 無法將偵錯工具附加至處理序 {0}:{1}{2} + + + 特性名稱與基底測試屬性的名稱相同,因此在測試案例篩選時將會忽略: {0} + + + 測試案例篩選: {0} + + + {0} {1} 期間發生了下列錯誤與警告: {2} + + + 找不到 Visual Studio 版本: {0} + + + 未知的列舉常值: {0} + + + 未知的列舉常值: {0} + + + 執行測試時發生例外狀況: {0} + + + 測試探索已完成,整體持續時間: {0} + + + 只有在 GoogleTestAdapter 已安裝到 Visual Studio 時,才可進行偵錯 - NuGet 安裝不支援此作業 (以及其他功能,像是 Visual Studio 選項、工具列以及解決方案設定)。 + + + 測試執行已取消。 + + + 未知的 Visual Studio 版本: {0} + + + 解決方案測試設定檔無法剖析,檢查檔案: {0} +例外狀況: {1} + + + (啟用偵錯模式以取得詳細資訊) + + + 未提供任何測試案例篩選 + + + 解決方案設定: {0} + + + 探索測試時發生例外狀況: {0} + + + 錯誤: {0} + + + 測試探索 + + + 測試案例篩選無效: {0} + + + Google Test 執行已完成,整體持續時間: {0} + + + Visual Studio 的 ActivityLog.xml 中可能有問題的詳細資訊 (請參閱像是 https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/) + + + 偵錯工具已附加至處理序 {0},花費 {1} 毫秒 + + + {0} 可找到 {1} + + + {0} 與 {1} 不相符 + + + 無法將偵錯工具附加至處理序 {0},未提供任何錯誤訊息 + + + 測試執行 + + + {0} 無效 + + + 警告: {0} + + + 解決方案測試設定檔案位於 '{0}',但不包含 {1} 節點 + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hant/NewProjectWizard.Properties.Resources.zh-HANT.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hant/NewProjectWizard.Properties.Resources.zh-HANT.resx new file mode 100644 index 000000000..d470f8476 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hant/NewProjectWizard.Properties.Resources.zh-HANT.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 測試專案組態 + + + 動態連結 (建議採用) + + + Google Test 取用方式: + + + C++ 執行階段程式庫: + + + 找不到 NuGet.VisualStudio.Interop.dll。精靈無法繼續。 + + + <沒有任何專案> + + + 找不到 Windows SDK。 + + + 靜態程式庫 (.lib) + + + 選取要測試的專案 (選用): + + + 靜態連結 + + + 動態程式庫 (.dll) + + \ No newline at end of file diff --git a/GoogleTestAdapter/Packaging.GTA/zh-Hant/VSPackage.zh-HANT.resx b/GoogleTestAdapter/Packaging.GTA/zh-Hant/VSPackage.zh-HANT.resx new file mode 100644 index 000000000..a0c7e9ef2 --- /dev/null +++ b/GoogleTestAdapter/Packaging.GTA/zh-Hant/VSPackage.zh-HANT.resx @@ -0,0 +1,1251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAlJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJSUAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAJSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCUAAAAAAAAAAAAAAAAAJCQkJCQkJCQkIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkFg4GAgIBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgECBg4WJCQkJCQkAAAAAAAAAAAAJCQkJCQYBwICAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgcYJCQkJCQAAAAAAAAAJSQkJCQSAgIBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAhIkJCQkJQAAAAAAACQkJCQTAgEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECEiQkJCQAAAAAACUkJCQa + AgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIaJCQkJQAAAAAk + JCQkCgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCiQkJCQA + AAAAJCQkGgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIa + JCQkAAAAJSQkJBECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBESQkJCUAACUkJCQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQskJCQlAAAkJCQkBwIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEHJSQkJAAAJCQkJAcCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQECByQkJCQAACUkJCQMAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQskJCQlAAAlJCQkEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERJCQkJQAAACQkJBoCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGiQkJAAAAAAkJCQkCgEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCiQkJCQAAAAAJSQkJBoCAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAhokJCQlAAAAAAAkJCQkEAEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARAkJCQkAAAAAAAAJSQkJCIHAgEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQciJCQkJQAAAAAAAAAkJCQkGwIB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIbJCQkJAAAAAAAAAAAACQk + JCQSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESJCQkJAAAAAAAAAAA + AAAlJCQkJAoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKJCQkJCUAAAAA + AAAAAAAAACQkJCQbAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECGyQkJCQA + AAAAAAAAAAAAAAAAJCQkJBMCAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEyUk + JCQAAAAAAAAAAAAAAAAAACUkJCQkCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + CyQkJCQlAAAAAAAAAAAAAAAAAAAAJCQkJB4CAgEBByIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIH + AgEBAh8kJCQkAAAAAAAAAAAAAAAAAAAAAAAkJCQkFQIBAQIRJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQRAgEBARUkJCQkAAAAAAAAAAAAAAAAAAAAAAAAJSQkJCQMAgEBARgkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQYAgEBAQwkJCQkJQAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkHwQCAQEHIiQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQiBwEBAQQfJSQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQWAQEBAQ8kJCQkJCQkJCQk + JCQkJCQkJCQkJCQkDwEBAQIWJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCQkJA4BAQEBFiQkJCQk + JCQkJCQkJCQkJCQkJCQkFgIBAQEOJCQkJCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQfBgEBAgYf + JCQkJCQkJCQkJCQkJCQkJCQkIgYBAQEEIiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBYC + AQECDiQkJCQkJCQkJCQkJCQkJCQkJA4BAQEBFiQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk + JCQlDwEBAgIWJCQkJCQkJCQkJCQkJCQkJBYBAQEBDyQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAJSQkJCIGAgEBBB8kJCQkJCQkJCQkJCQkJB8EAQEBBiIkJCQlAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAkJCQkGgEBAQEMJCQkJCQkJCQkJCQkJCQMAgEBAhokJCQkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQQAQECAhUkJCQkJCQkJCQkJCQVAgEBARAkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAlJCQkIgcCAQEEHiQkJCQkJCQkJCQeBAEBAQciJCQkJQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQbAgEBAQskJCQkJCQkJCQkCwEBAQIaJCQkJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBIBAQEBEyQkJCQkJCQkEwIBAQESJCQkJAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkJCQkCgEBAQIiJCQkJCQkJAIBAQEKIiQkJCUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJBsCAQECIiQkJCQkJCQCAQEBGyQk + JCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAR8kJCQkJCQkAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQIiJCQkJCQk + JAEBAQEiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQCAQEBIiQk + JCQkJCQBAQEBIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAQEB + ASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQk + JAIBAQEfJCQkJCQkJAEBAQIiJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACQkJCQBAQECIiQkJCQkJCQBAQECIiQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkAgEBASIkJCQkJCQkAQEBAR8lJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkJCQkJCQkJAEBAQEiJCQkJCQkJAEBAQIiJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAJCQkJCQkJCQCAQEBHyQkJCQkJCQBAQEBIiQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACQkJCQkJCQkAQEBAiIkJCQkJCQkAQEBASIkJCQkJCQkAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJCQkIiIiIgEBAQEeIiIfIiIfIgIBAQEeIiIiJCQkJAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAIBAQEBAQEBAgEBAgICAgIBAQEBAQEBASIkJCQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEfJSQkAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQECIiQk + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ASIkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAP/gAAAAAAf//4AAAAAAAf/+AAAAAAAA + f/wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAA + AAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAA + A8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAA + AAAAAD/+AAAAAAAAf/4AAAAAAAB//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//8AAAAAAA///4AAAAAAH + ///gAAAAAAf///AAAAAAD///+AAAAAAf///8AAAAAD////wAAAAAP////gAAAAB/////AAAAAP////8A + AAAA/////4AAAAH/////wAAAA//////AAAAD/////+AAAAf/////8AAAD//////wAAAP//////AAAA// + ////8AAAD//////wAAAP//////AAAA//////8AAAD/////8AAAAA/////wAAAAD/////AAAAAP////8A + AAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/ + ////AAAAAP//KAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAABBQUEARUVF + AElJSQBPT08AU1NTAFRUVABYWFgAXV1dAGVlZQBsbGwAdHR0AH19fQCGhoYAj4+PAJCQkACZmZkAnJyc + AKKiogCpqakArKysALW1tQC+vr4AxsbGAMnJyQDOzs4A1tbWAN3d3QDi4uIA5ubmAOnp6QDt7e0A8vLy + APX19QD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAA + ACIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAAAAAAAAAAAAAAAiIiIiIiIiHyIiIh8i + IiIiHyIiIh8iIiIiHyIiIiIfIiIiIiIAAAAAAAAAAAAAACIiIiIiHyIfIiIfIiIiHyIfIiIfIiIiHyIf + IiIfIh8iIiIfIiIiAAAAAAAAAAAAIiIiHRIKAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoTHyIi + IgAAAAAAAAAiIh8YBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxciIiIAAAAAACIiIhcD + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYIiIiAAAAACIiHQcBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHHSIiAAAAIiIiEAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBECIfIgAAIiIfBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + ByIiIgAAIiIdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR8iIgAAIiIbAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARsiIgAAIiIdAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAR8iIgAAIh8iBwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQMBAQEBByIiHwAAIiIiEAEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEB + ECIiIgAAACIiHwcBAQEBAQEBAQEBAQEBAQEDAQEBAQEDAQEBAQEBAQEBAQEBAQEHHyIiAAAAACIiIhYB + AQEDAQEBAQEBAwEBAwEBAQEBAwEBAQEBAwEBAQEDAQEBAQEXIh8iAAAAAAAiIiINAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0iIiIAAAAAAAAiHyIdBwEBAQEBAQEDAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBBx8iIiIAAAAAAAAAIiIiFwEBAQEDAQEBAQEBAQEBAQMBAQEDAQEBAwEBAQMBAQEDGCIi + IgAAAAAAAAAAACIiIhABAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEQIiIfAAAAAAAAAAAAACIi + Hx8HAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQgfIiIiAAAAAAAAAAAAAAAiIiIYAwEBEiIiIiIi + IiIiIiIiIiIiIiIiIiIiEgEBAxkiIiIAAAAAAAAAAAAAAAAAIiIiEAEBAxkiIiIiIh8iIh8iIh8iIiIi + IiIZAwEBECIiIgAAAAAAAAAAAAAAAAAAACIiHwoBAQofIiIfIiIiIiIiIiIiHyIfHx8IAQEKHyIiAAAA + AAAAAAAAAAAAAAAAACIiIhkDAQEQIiIiHyIiHyIfIiIiIh8iIhABAwMZIiIiAAAAAAAAAAAAAAAAAAAA + AAAiIiISAQEBGCIfIiIiHyIiHyIfIiIiGAMBARIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAIiIiCgEBCB8i + Ih8iIiIiIiIiHyIfBwEBCiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIfGwMBARAiIiIiHyIfIiIfIiIN + AwEDGyIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIhMBAQEXHyIfIiIiHyIiIhcBAQEUIiIiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiILAQEHHyIiIh8iIiIiHQcBAQsiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIiIbBwEBDR8iIiIiHyIfDQEBBx0iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiEwEB + ARYiHx8iIiIWAQEBFCIiHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIgsBAQciIiIiHyIDAQEN + IiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIh8BAQEfIiIiIiIBAQEdIh8iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiIh8iIh8BAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAiHyIBAQEiHyIiIiIBAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIB + AQEfIiIfIh8BAQEiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEiIiIiIiIBAQEf + IiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEiHyIfIiIBAQEiIiIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIBAQEiIiIiHyIBAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiIh8iIiIBAQEiHyIiIiIBAQEiIiIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiHyIB + AQEiHyIfIh8BAQEiHyIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIBAQEBAQEBAQEBAQEBAQEB + AQEfIh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIBAQEBAQEBAQEBAQEBAQEBAQEiHyIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiIh8BAQEBAQEBAQEBAQEBAQEBAQEiIiIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiHyIfIiIiHyIiIh8iIiIfIiIiHyIiHyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIh8i + IiIfIiIiHyIiIh8iIh8iIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiHyIiHyIiHyIiHyIiIh8iIh8i + IiIiHyIAAAAAAAAAAAAAAAD/AAAAAP8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAA + AAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEA + AIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAA + AAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8A + AP/gAAAH/wAA//AAAA//AAD/8AAAD/8AAP/4AAAf/wAA//wAAD//AAD//AAAP/8AAP/+AAB//wAA//4A + AH//AAD//gAAf/8AAP/+AAB//wAA//4AAH//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAD/8AAAD/8A + AP/wAAAP/wAA//AAAA//AAD/8AAAD/8AAP/wAAAP/wAA//AAAA//AAAoAAAAIAAAAEAAAAABAAgAAAAA + AAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgBFRUUASkpKAE5OTgBTU1MAWFhYAF5eXgBlZWUAbGxs + AHBwcAB1dXUAfn5+AIeHhwCRkZEAlJSUAJqamgCkpKQAra2tALCwsAC2trYAwMDAAMjIyADQ0NAA1dXV + ANzc3ADi4uIA6enpAO3t7QDy8vIA9fX1APj4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAHx4eHh4eHh4eHh4eHh4eHh4eHh4eHwAAAAAAAAAA + Hx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh8AAAAAAB8eGw8GAQEBAQEBAQEBAQEBAQEBAQEBBg8bHh8A + AAAAHhoGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYaHgAAAB4eCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQoeHgAAHhgBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgeAAAeEwEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBEx4AAB4TAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQETHgAAHhgBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBARgeAAAeHgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEKHh4AAAAeGQMBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAxkeAAAAAB4eEgEBAQEBAQEBAQEBAQEBAQEBAQEBAQESHh4AAAAAAB4eCgEBAQEB + AQEBAQEBAQEBAQEBAQEBCh4eAAAAAAAAAB4aBQEBAQEBAQEBAQEBAQEBAQEBAQMaHwAAAAAAAAAAHx8T + AQMZHh4eHh4eHh4eHh4eGQMBFB8fAAAAAAAAAAAAHh8MAQkeHh4eHh4eHh4eHh4JAQweHgAAAAAAAAAA + AAAAHhsFAREeHh4eHh4eHh4eEQEFGx4AAAAAAAAAAAAAAAAfHhUBARkeHh4eHh4eHhgDARUeHwAAAAAA + AAAAAAAAAAAeHg0BCB4eHh4eHh4eCAENHh4AAAAAAAAAAAAAAAAAAAAeGwYBEB4eHh4eHhABBhseAAAA + AAAAAAAAAAAAAAAAAB8fFgEBGB4eHh4YAQEWHh8AAAAAAAAAAAAAAAAAAAAAAB4eDwEGHh4eHgYBDx4f + AAAAAAAAAAAAAAAAAAAAAAAAAB4bAQEeHh8eAQEbHwAAAAAAAAAAAAAAAAAAAAAAAAAAHh8BAR4eHh8B + AR4eAAAAAAAAAAAAAAAAAAAAAAAAAAAeHwEBHh4fHgEBHh4AAAAAAAAAAAAAAAAAAAAAAAAAAB4eAQEe + Hh4eAQEeHgAAAAAAAAAAAAAAAAAAAAAAAB4eHh8BAR4eHx4BAR4eHh4AAAAAAAAAAAAAAAAAAAAAHh4e + HgEBHh4eHwEBHh4fHgAAAAAAAAAAAAAAAAAAAAAeHgEBAQEBAQEBAQEBAR4eAAAAAAAAAAAAAAAAAAAA + AB4eAQEBAQEBAQEBAQEBHh4AAAAAAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHgAAAAAAAAAAAAAA + AAAAAAAeHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAD4AAAf4AAAB8AAAAPAAAADgAAAAYAAAAGAAAABgAAA + AYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AAAA/4AAAf/AAAP/wAAD/+AAB//wAA//8AAP//gAH//8AD + ///AA///wAP//8AD//8AAP//AAD//wAA//8AAP//AAD//wAA/ygAAAAYAAAAMAAAAAEACAAAAAAAQAIA + AAAAAAAAAAAAAAEAAAABAAAAAAAAQUFBAERERABJSUkAU1NTAFZWVgBZWVkAX19fAGJiYgBra2sAg4OD + AIaGhgCIiIgAjIyMAJaWlgCampoAnJycAKCgoAC8vLwAwMDAAMXFxQDIyMgAzMzMANPT0wDU1NQA6enp + AO3t7QDy8vIA9fX1APn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8AAAAAHR0dHR0dHR0dHR0dHR0dHR0dAAAAAAAdHRIQEBAOEBAOEA4Q + DhAOEBIdHQAAAB0ZCQEBAQEBAQEBAQEBAQEBAQEJGR0AAB0KAQEBAQEBAQEBAQEBAQEBAQEBCh0AHR0B + AQEBAQEBAQEBAQEBAQEBAQEBAx0dHRkBAQEBAQEBAQEBAQEBAQEBAQEBARkdAB0HAQEBAQEBAQEBAQEB + AQEBAQEBBx0AAB0SAQEBAQEBAQEBAQEBAQEBAQEBEh0AAAAdCgEBAQEBAQEBAQEBAQEBAQEKHQAAAAAd + GQUBAQEBAQEBAQEBAQEBAQUZHQAAAAAAHRQBBw4QEBAQEBAQEBAHARQdAAAAAAAAAB0MARUdHR0dGR0d + HRQBDB0AAAAAAAAAAB0ZBwUZHRkdHR0ZGQUHGR0AAAAAAAAAAAAdFQEMHR0dGR0dCgEVHQAAAAAAAAAA + AAAAHQ4BEh0ZHR0SARAdAAAAAAAAAAAAAAAAHR0HBRkdHRkFBxkdAAAAAAAAAAAAAAAAAB0VARAdGRAB + GB0AAAAAAAAAAAAAAAAAAB0dARAdHRABHR0AAAAAAAAAAAAAAAAAAB0dAQ4dHQ4BHQAAAAAAAAAAAAAA + AAAAHR0dARAdGRABHR0dAAAAAAAAAAAAAAAAHR0ZAQ4dHRABHR0dAAAAAAAAAAAAAAAAHQ4BAQEBAQEB + AQ4ZAAAAAAAAAAAAAAAAHRQQEBAOEA4QDhQdAAAAAAAAAAAAAAAAHR0dGR0dHR0dHR0dAAAAAAAA4AAH + AMAAAwCAAAEAgAABAAAAAAAAAAAAgAABAIAAAQDAAAMAwAADAOAABwDwAA8A8AAPAPgAHwD8AD8A/AA/ + AP4AfwD+AH8A/gD/APwAPwD8AD8A/AA/APwAPwD8AD8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAA + AAAAAAAAAQAAAAEAAAAAAABCQkIARkZGAFBQUABeXl4AZWVlAG1tbQB1dXUAeXl5AIaGhgCbm5sAn5+f + AKSkpACurq4A0NDQANfX1wDe3t4A7+/vAPHx8QD19fUA+Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///wAAABQTExMTExMTExMTFAAAABMJAgICAQICAQICAgkTABQLAgEBAQEBAQEB + AQECCxQUCAEBAQEBAQEBAQEBAQcUFAsCAQEBAQEBAQEBAQELFAARBAEBAQEBAQEBAQEEEQAAAA4CAQEB + AQEBAQECDgAAAAATCwcTExMTExEHChMAAAAAABEFDRMTExMNBRMAAAAAAAAADwMQExMQAw8AAAAAAAAA + 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 + 9v/29vb/9vb2//b29vz29vbr9vb2wfb29oj29vY3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2Vvb29tX29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29tX29vZW9vb2AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYc9vb2vfb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29r329vYcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vY19vb26/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/7Ozs/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb26/b29jUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vY09vb28vb29v/29vb/9vb2//b29v/z8/P/u7u7/39/f/9XV1f/RERE/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9ERET/V1dX/39/f/+7u7v/8/Pz//b29v/29vb/9vb2//b29v/29vby9vb2NAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYY9vb25Pb29v/29vb/9vb2//b29v/FxcX/W1tb/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1tbW//FxcX/9vb2//b2 + 9v/29vb/9vb2//b29uT29vYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2q/b29v/29vb/9vb2//b2 + 9v+enp7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/56env/29vb/9vb2//b29v/29vb/9vb2qwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Q/b2 + 9v/29vb/9vb2//b29v+hoaH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/oaGh//b29v/29vb/9vb2//b29v/29vZDAAAAAAAA + AAAAAAAAAAAAAPb29rj29vb/9vb2//b29v/Ozs7/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Ozs7/9vb2//b2 + 9v/29vb/9vb2twAAAAAAAAAAAAAAAPb29h729vb/9vb2//b29v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/Z2dn//b29v/29vb/9vb2//b29v/29vYeAAAAAAAAAAD29vZn9vb2//b29v/29vb/zc3N/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/Nzc3/9vb2//b29v/29vb/9vb2ZwAAAAAAAAAA9vb2oPb2 + 9v/29vb/9vb2/5WVlf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/lZWV//b29v/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29sX29vb/9vb2//b29v9xcXH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3Fx + cf/29vb/9vb2//b29v/29vbFAAAAAAAAAAD29vbQ9vb2//b29v/29vb/YGBg/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9gYGD/9vb2//b29v/29vb/9vb20AAAAAAAAAAA9vb21vb29v/29vb/9vb2/1tb + W/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/W1tb//b29v/29vb/9vb2//b29tUAAAAAAAAAAPb2 + 9sT29vb/9vb2//b29v9wcHD/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/3BwcP/29vb/9vb2//b2 + 9v/29vbEAAAAAAAAAAD29vai9vb2//b29v/29vb/lZWV/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv+VlZX/9vb2//b29v/29vb/9vb2ogAAAAAAAAAA9vb2Zvb29v/29vb/9vb2/83Nzf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/zc3N//b29v/29vb/9vb2//b29mYAAAAAAAAAAPb29iD29vb+9vb2//b2 + 9v/29vb/Z2dn/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Z2dn//b29v/29vb/9vb2//b29v729vYgAAAAAAAA + AAAAAAAA9vb2uPb29v/29vb/9vb2/87Ozv9DQ0P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/Q0ND/87Ozv/29vb/9vb2//b2 + 9v/29va4AAAAAAAAAAAAAAAAAAAAAPb29kP29vb/9vb2//b29v/29vb/kZGR/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5GR + kf/29vb/9vb2//b29v/29vb/9vb2QwAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2rfb29v/29vb/9vb2//Dw + 8P9eXl7/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9hv29vbu9vb2//b29v/29vb/0dHR/0RERP9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27vb29hsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Wvb29v/29vb/9vb2//b29v+cnJz/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9loAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29var9vb2//b29v/29vb/8vLy/2Zm + Zv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9mZmb/8vLy//b2 + 9v/29vb/9vb2//b29qsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9uj29vb/9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9HR0f/2NjY//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZM9vb2//b29v/29vb/9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/paWl//b29v/29vb/9vb2//b29v/29vZMAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29p329vb/9vb2//b29v/19fX/bW1t/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/bW1t//X19f/29vb/9vb2//b29v/29vadAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYO9vb24Pb2 + 9v/29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//Dw8P9eXl7/QkJC/0JCQv9CQkL/SkpK/9/f3//29vb/9vb2//b2 + 9v/29vbg9vb2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kH29vb+9vb2//b29v/29vb/r6+v/0JCQv9CQkL/QkJC/0JCQv+SkpL/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb+9vb2QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/9vb2//X19f92dnb/QkJC/0JC + Qv9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/Kysr/Q0ND/0JC + Qv9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vb/9vb2jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gj29vbY9vb2//b2 + 9v/29vb/5OTk/09PT/9CQkL/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/t7e3/WVlZ/0JCQv9CQkL/QkJC/09PT//k5OT/9vb2//b29v/29vb/9vb22Pb29ggAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2NPb29vz29vb/9vb2//b29v+4uLj/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv+4uLj/9vb2//b29v/29vb/9vb2/Pb2 + 9jQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/wcHB//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/0JCQv9/f3//9vb2//b2 + 9v/29vb/9vb2//b29oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb29s329vb/9vb2//b2 + 9v/p6en/U1NT/0JCQv9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/6enp/1NTU/9CQkL/QkJC/0JC + Qv9TU1P/6enp//b29v/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYr9vb2+Pb29v/29vb/9vb2/8HBwf9CQkL/QkJC/0JCQv9CQkL/f39///b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/39/ + f/9CQkL/QkJC/0JCQv9CQkL/wcHB//b29v/29vb/9vb2//b29vj29vYrAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29nT29vb/9vb2//b29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JC + Qv+4uLj/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b29v/29vZ0AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2w/b29v/29vb/9vb2/+3t + 7f9ZWVn/QkJC/0JCQv9CQkL/T09P/+Tk5P/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+Tk5P9PT0//QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9iH29vb09vb2//b29v/29vb/ysrK/0NDQ/9CQkL/QkJC/0JCQv92dnb/9fX1//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//X19f92dnb/QkJC/0JCQv9CQkL/Q0ND/8rK + yv/29vb/9vb2//b29v/29vb09vb2IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9vb2//b29v+SkpL/QkJC/0JCQv9CQkL/QkJC/6+v + r//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v+vr6//QkJC/0JC + Qv9CQkL/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gH29va29vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/f39//SkpK/0JCQv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2G/b2 + 9u329vb/9vb2//b29v/R0dH/RERE/0JCQv9CQkL/QkJC/21tbf/19fX/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/19fX/bW1t/0JCQv9CQkL/QkJC/0RERP/R0dH/9vb2//b29v/29vb/9vb27fb2 + 9hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/29vb/9vb2/5ycnP9CQkL/QkJC/0JCQv9CQkL/paWl//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/paWl/0JCQv9CQkL/QkJC/0JCQv+cnJz/9vb2//b2 + 9v/29vb/9vb2//b29lkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29qr29vb/9vb2//b29v/y8vL/ZmZm/0JC + Qv9CQkL/QkJC/0dHR//v7+//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0dHR/9CQkL/QkJC/0JC + Qv9mZmb/8vLy//b29v/29vb/9vb2//b29qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYT9vb26Pb2 + 9v/29vb/9vb2/9jY2P9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/1NTU//b29v/29vb/9vb2//b29uj29vYTAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29kv29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vZNAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29hD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYf9vb2EPb29hD29vYQ9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/6+vr/+vr + 6//r6+v/6+vr/0JCQv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/0JC + Qv9CQkL/QkJC/0JCQv/g4OD/6+vr/+vr6//r6+v/9fX1//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6+vr//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vYQAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/A + AAAAAAP//gAAAAAAAH/8AAAAAAAAP/gAAAAAAAAf8AAAAAAAAA/gAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA4AAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AAAAAAAAAH4AAAAAAA + AAfwAAAAAAAAD/gAAAAAAAAf+AAAAAAAAB/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAH//AAAAAAAA//+A + AAAAAAH//4AAAAAAAf//wAAAAAAD///gAAAAAAf//+AAAAAAB///8AAAAAAP///4AAAAAB////gAAAAA + H////AAAAAA////+AAAAAH////4AAAAAf////wAAAAD/////gAAAAf/////AAAAD/////8AAAAP///// + 4AAAB//////wAAAH//////AAAAf/////8AAAB//////wAAAH//////AAAAf/////AAAAAH////8AAAAA + f////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB/////AAAAAH////8AAAAAf////wAAAAB///// + AAAAAH////8AAAAAf////wAAAAB/////AAAAAH//KAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29gL29vZJ9vb2oPb29tn29vb59vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb59vb22fb29qD29vZJ9vb2AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Pvb29tD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb20Pb29j4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZ49vb2/vb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v729vZ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nz29vb/9vb2//b29v/u7u7/pKSk/2hoaP9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9HR0f/aGho/6SkpP/u7u7/9vb2//b29v/29vb/9vb2fAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2R/b29v/29vb/9vb2/8fHx/9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9TU1P/x8fH//b29v/29vb/9vb2//b2 + 9kcAAAAAAAAAAAAAAAD29vYF9vb23fb29v/29vb/xcXF/0ZGRv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/RkZG/8XF + xf/29vb/9vb2//b29t329vYFAAAAAAAAAAD29vZb9vb2//b29v/o6Oj/T09P/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/09PT//o6Oj/9vb2//b29v/29vZbAAAAAAAAAAD29va09vb2//b29v+Xl5f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va0AAAAAAAAAAD29vb09vb2//b2 + 9v9YWFj/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9YWFj/9vb2//b29v/29vb0AAAAAPb2 + 9hn29vb/9vb2/+np6f9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/6enp//b2 + 9v/29vb/9vb2Gfb29iD29vb/9vb2/9/f3/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/39/f//b29v/29vb/9vb2IPb29hj29vb/9vb2/+jo6P9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/6Ojo//b29v/29vb/9vb2GAAAAAD29vb09vb2//b29v9XV1f/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9XV1f/9vb2//b29v/29vb0AAAAAAAAAAD29va19vb2//b2 + 9v+Xl5f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Xl5f/9vb2//b29v/29va1AAAAAAAA + AAD29vZb9vb2//b29v/p6en/T09P/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/09PT//p6en/9vb2//b2 + 9v/29vZbAAAAAAAAAAD29vYG9vb23Pb29v/29vb/uLi4/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7i4 + uP/29vb/9vb2//b29tz29vYGAAAAAAAAAAAAAAAA9vb2Sfb29v/29vb/9vb2/39/f/9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/f39///b29v/29vb/9vb2//b29kkAAAAAAAAAAAAAAAAAAAAAAAAAAPb29pz29vb/9vb2/+np + 6f9TU1P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9TU1P/6enp//b29v/29vb/9vb2nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9g729vbf9vb2//b29v/BwcH/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/BwcH/9vb2//b29v/29vbf9vb2DgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vZA9vb2/vb29v/29vb/iYmJ/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/4mJif/29vb/9vb2//b29v729vZAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2j/b29v/29vb/7e3t/1lZWf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/WVlZ/+3t7f/29vb/9vb2//b2 + 9o8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2CPb29tj29vb/9vb2/8rK + yv9DQ0P/QkJC/0JCQv+SkpL/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/+SkpL/QkJC/0JCQv9DQ0P/ysrK//b2 + 9v/29vb/9vb22Pb29ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9jT29vb89vb2//b29v+SkpL/QkJC/0JCQv9ERET/0dHR//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/9HR0f9ERET/QkJC/0JC + Qv+SkpL/9vb2//b29v/29vb89vb2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaB9vb2//b29v/w8PD/Xl5e/0JCQv9CQkL/Xl5e//Dw8P/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15e + Xv9CQkL/QkJC/15eXv/w8PD/9vb2//b29v/29vaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYF9vb2zfb29v/29vb/0dHR/0RERP9CQkL/QkJC/5KS + kv/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/kpKS/0JCQv9CQkL/RERE/9HR0f/29vb/9vb2//b29s329vYFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2K/b29vj29vb/9vb2/5yc + nP9CQkL/QkJC/0NDQ//Kysr/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/Kysr/Q0ND/0JCQv9CQkL/nJyc//b29v/29vb/9vb2+Pb29isAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9nT29vb/9vb2//Ly8v9mZmb/QkJC/0JCQv9ZWVn/7e3t//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/+3t7f9ZWVn/QkJC/0JCQv9mZmb/8vLy//b29v/29vb/9vb2dAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29gL29vbD9vb2//b29v/Y2Nj/R0dH/0JCQv9CQkL/iYmJ//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4mJif9CQkL/QkJC/0dHR//Y2Nj/9vb2//b2 + 9v/29vbD9vb2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v/29vb/paWl/0JCQv9CQkL/QkJC/8HB + wf/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/wcHB/0JCQv9CQkL/QkJC/6Wl + pf/29vb/9vb2//b29vT29vYhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v/29vb/9fX1/21t + bf9CQkL/QkJC/1NTU//p6en/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/p6en/U1NT/0JC + Qv9CQkL/bW1t//X19f/29vb/9vb2//b29mYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Afb2 + 9rb29vb/9vb2/9/f3/9KSkr/QkJC/0JCQv9/f3//9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v9/f3//QkJC/0JCQv9KSkr/39/f//b29v/29vb/9vb2tvb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2//b29v+vr6//QkJC/0JCQv9CQkL/uLi4//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2/7i4uP9CQkL/QkJC/0JCQv+vr6//9vb2//b29v/29vbt9vb2GwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZZ9vb2//b29v/19fX/dnZ2/0JCQv9CQkL/T09P//Dw + 8P/29vb/9vb2//b29v/29vb/9vb2/09PT/9CQkL/QkJC/3Z2dv/19fX/9vb2//b29v/29vZZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2qvb29v/29vb/5OTk/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/97e3v/29vb/9vb2//b2 + 9qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2E/b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29hD29vYQ9vb2EPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9h/29vYQ9vb2EPb29gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vb/9vb2/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/+vr + 6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//X19f/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAPwAA+AAAAAAf + AADwAAAAAA8AAOAAAAAABwAAwAAAAAADAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAAD + AADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD+AAAAAH8AAP4A + AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/gAAAH/wAA//AAAA// + AAD/+AAAH/8AAP/8AAA//wAA//wAAD//AAD//gAAP/8AAP/+AAA//wAA//4AAD//AAD/8AAAB/8AAP/w + AAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/AAD/8AAAB/8AAP/wAAAH/wAA//AAAAf/ + AAD/8AAAB/8AACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vYB9vb2T/b29rb29vbx9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb28fb29rb29vZP9vb2AQAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2D/b29rj29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29va49vb2DwAA + AAAAAAAAAAAAAPb29gj29vbH9vb2/+fn5/+Ojo7/UlJS/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1JSUv+Ojo7/5+fn//b2 + 9v/29vbH9vb2CAAAAAAAAAAA9vb2gvb29v/f39//VlZW/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9WVlb/39/f//b29v/29vaCAAAAAPb29gr29vbx9vb2/2pqav9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9qamr/9vb2//b29vH29vYK9vb2R/b29v/R0dH/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/R0dH/9vb2//b29kf29vZs9vb2/7CwsP9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/7CwsP/29vb/9vb2bPb29mv29vb/r6+v/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/r6+v//b29v/29vZr9vb2R/b2 + 9v/T09P/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/T09P/9vb2//b2 + 9kf29vYK9vb28fb29v9qamr/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/ampq//b2 + 9v/29vbx9vb2CgAAAAD29vaB9vb2/9jY2P9HR0f/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0dH + R//Y2Nj/9vb2//b29oEAAAAAAAAAAPb29gj29vbX9vb2/6Wlpf9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/paWl//b29v/29vbX9vb2CAAAAAAAAAAAAAAAAPb29jT29vb89fX1/21tbf9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/21tbf/19fX/9vb2/Pb29jQAAAAAAAAAAAAAAAAAAAAAAAAAAPb29oD29vb/39/f/0pK + Sv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9KSkr/39/f//b29v/29vaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Bfb2 + 9sz29vb/r6+v/0JCQv9FRUX/zs7O/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/87Ozv9FRUX/QkJC/6+vr//29vb/9vb2zPb29gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2Kvb29vj19fX/dnZ2/0JCQv9mZmb/8vLy//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/y8vL/ZmZm/0JCQv92dnb/9fX1//b29vj29vYqAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2c/b29v/k5OT/T09P/0JCQv+cnJz/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/5ycnP9CQkL/T09P/+Tk5P/29vb/9vb2cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYC9vb2wvb29v+4uLj/QkJC/0RERP/R0dH/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/R0dH/RERE/0JCQv+4uLj/9vb2//b29sL29vYCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYh9vb29Pb29v9/f3//QkJC/15e + Xv/w8PD/9vb2//b29v/29vb/9vb2//b29v/29vb/8PDw/15eXv9CQkL/f39///b29v/29vb09vb2IQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vZl9vb2/+np + 6f9TU1P/QkJC/5KSkv/29vb/9vb2//b29v/29vb/9vb2//b29v+SkpL/QkJC/1NTU//p6en/9vb2//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9gH29va19vb2/8HBwf9CQkL/Q0ND/8rKyv/29vb/9vb2//b29v/29vb/ysrK/0NDQ/9CQkL/wcHB//b2 + 9v/29va19vb2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29hv29vbt9vb2/4mJif9CQkL/WVlZ//Ly8v/29vb/9vb2//b29v9ZWVn/QkJC/4mJ + if/29vb/9vb27fb29hsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29ln29vb/7e3t/0JCQv9CQkL/6+vr//b29v/29vb/9vb2/0JC + Qv9CQkL/5eXl//b29v/29vZaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv/r6+v/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/+vr + 6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2EPb29hD29vb/9vb2/0JC + Qv9CQkL/6+vr//b29v/29vb/9vb2/0JCQv9CQkL/6+vr//b29v/29vYf9vb2EPb29gEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/QkJC/0JCQv/r6+v/9vb2//b29v/29vb/9vb2EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b29v9CQkL/QkJC/+vr6//29vb/9vb2//b2 + 9v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/r6+v/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/+vr6//29vb/9vb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/9fX1//b29v/29vYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA4AAAB8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AA + AAfgAAAH8AAAD/gAAB/4AAAf/AAAP/4AAH/+AAB//wAA//+AAf//wAH//8AB//8AAH//AAB//wAAf/8A + AH//AAB//wAAf/8AAH8oAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADq6uoO9vb2g/b29tr19fX89vb2//b29v/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2//b2 + 9v/19fX+9vb2/Pb29tr19fWD7u7uDgAAAAAAAAAAAAAAAPT09B319fXZ8/Pz/8DAwP+enp7+nJyc/5yc + nP+bm5v+nJyc/5ycnP+cnJz/m5ub/pycnP+bm5v+nJyc/5ycnP+bm5v+np6e/8DAwP/z8/P+9vb22fX1 + 9R0AAAAAy8vLAfX19cTq6ur+a2tr/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5ra2v+6urq/vX19cPe3t4B9vb2Qfb29v+Ghob+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+hoaG//b29v/19fVB9vb2gPLy8v9JSUn+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+SUlJ//Ly8v/19fWA9fX1jO3t + 7f5CQkL+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QkJC/u3t7f719fWM9vb2Z/X19f9fX1/+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+X19f//X1 + 9f/19fVn8PDwFvb29vS8vLz+QkJC/0JCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL/QUFB/kJC + Qv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JCQv9CQkL+vLy8//b29vT19fUWAAAAAPX19XP19fX+g4OD/kFB + Qf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFB + Qf6Dg4P+9fX1/vX19XMAAAAAAAAAAODg4AL19fXB6urq/1ZWVv9BQUH+QkJC/0JCQv9BQUH+QkJC/0JC + Qv9CQkL/QUFB/kJCQv9BQUH+QkJC/0JCQv9BQUH+QkJC/1ZWVv/q6ur+9vb2wenp6QIAAAAAAAAAAAAA + AAD19fUi9vb28sTExP9DQ0P+WVlZ/5qamv+ampr+mpqa/5qamv+ampr/mpqa/pqamv+ampr+mpqa/5qa + mv9ZWVn+Q0ND/8TExP/19fXy9vb2IgAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Zvb29v+MjIz+Q0ND/8jI + yP/19fX+9vb2//b29v/29vb/9fX1/vb29v/19fX+9vb2/8jIyP9DQ0P+jIyM//b29v/19fVmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2traAfX19bXu7u7+W1tb/lhYWP7s7Oz+9fX1/vX19f719fX+9fX1/vX1 + 9f719fX+7Ozs/lhYWP5bW1v+7u7u/vX19bXm5uYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 + 9Br19fXszMzM/0RERP+IiIj+9vb2//b29v/29vb/9fX1/vb29v/19fX+iIiI/0RERP/MzMz+9vb27PX1 + 9RoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fVZ9fX1/paWlv5CQkL+wMDA/vX1 + 9f719fX+9fX1/vX19f7AwMD+QkJC/paWlv719fX+9fX1WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA9vb2qfHx8f9iYmL+U1NT/+jo6P/29vb/9fX1/ujo6P9TU1P+YmJi//Hx + 8f/19fWpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyFPb2 + 9ubU1NT+QkJC/5+fn//29vb/9fX1/qCgoP9BQUH+09PT//b29ub19fUUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19YT19fX+QUFB/pqamv719fX+9fX1/pub + m/5BQUH+9PT0/vX19YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPb29oH19fX+QkJC/5qamv/29vb/9fX1/pycnP9BQUH+9PT0//b29n8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2gfb29sD19fX+QkJC/5qa + mv/29vb/9fX1/pycnP9BQUH+9PT0//b29sD19fWBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC4uLgB9fX1/vX19f719fX+QUFB/pqamv719fX+9fX1/pubm/5BQUH+9PT0/vX1 + 9f719fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/5yc + nP9BQUH+QkJC/0JCQv9CQkL/QUFB/kJCQv9BQUH+QkJC/5qamv/19fX+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLgB9vb2/8jIyP+ampr+mpqa/5qamv+ampr/mpqa/pqa + mv+ampr+mpqa/8fHx//19fX+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC4uLgB9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+9fX1/vX19f719fX+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAwAADAIAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAEAgAABAMAA + AwDgAAcA4AAHAPAADwD4AB8A/AA/APwAPwD+AH8A/gB/APwAPwD4AD8A+AA/APgAPwD4AD8AKAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYz9vb2wvPz8/vr6+v/6+vr/+vr + 6//r6+v/6+vr/+vr6//r6+v/6+vr//Pz8/v29vbC9vb2MwAAAAD29vYj8PDw9IKCgv9FRUX/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9FRUX/goKC//Dw8PT29vYj9vb2k5qamv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+ampr/9vb2k/b29rZ2dnb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/dnZ2//b29rb29vaQmpqa/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/5qamv/29vaQ9vb2I+3t + 7fhZWVn/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/1lZWf/t7e349vb2IwAA + AAD29vZzysrK/0NDQ/9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0NDQ//Kysr/9vb2cwAA + AAAAAAAA9vb2Avb29sKSkpL/bW1t//X19f/29vb/9vb2//b29v/29vb/9fX1/21tbf+SkpL/9vb2wvb2 + 9gIAAAAAAAAAAAAAAAD29vYh8PDw9F5eXv+lpaX/9vb2//b29v/29vb/9vb2/6Wlpf9eXl7/8PDw9Pb2 + 9iEAAAAAAAAAAAAAAAAAAAAAAAAAAPb29mXR0dH/SkpK/9jY2P/29vb/9vb2/9jY2P9KSkr/0dHR//b2 + 9mUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB9vb2tZycnP9mZmb/9vb2//b29v9mZmb/nJyc//b2 + 9rX29vYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/QkJC//b29v/29vb/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2/0JCQv/29vb/9vb2/0JC + Qv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/9vb2//b2 + 9v9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAQAAgAEAAMADAADgBwAA4AcAAPgfAAD4HwAA8A8AAPAPAADwDwAA + + + + 一般 + + + 並行 + + + Google Test + + + 適用於 Google Test 的測試配接器 + + + 利用為 Google Test 所撰寫的單元測試,啟用 Visual Studio 的測試工具。延伸模組安裝目錄中提供使用條款與協力廠商聲明。 + + + + + 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 + + + \ No newline at end of file diff --git a/GoogleTestAdapter/SetVersion.ps1 b/GoogleTestAdapter/SetVersion.ps1 index 8487d6b61..75520975d 100644 --- a/GoogleTestAdapter/SetVersion.ps1 +++ b/GoogleTestAdapter/SetVersion.ps1 @@ -11,6 +11,7 @@ $coretests_assembly_info = "Core.Tests\Properties\AssemblyInfo.cs" $dia_assembly_info = "DiaResolver\Properties\AssemblyInfo.cs" $diatests_assembly_info = "DiaResolver.Tests\Properties\AssemblyInfo.cs" +$packaging_gta_project = "Packaging.GTA\Packaging.GTA.csproj" $packaging_gta_assembly_info = "Packaging.GTA\Properties\AssemblyInfo.cs" $packaging_tafgt_assembly_info = "Packaging.TAfGT\Properties\AssemblyInfo.cs" $projecttemplates_vstemplate = "GoogleTestProjectTemplate\GoogleTest.vstemplate" @@ -40,6 +41,7 @@ $wizard_assembly_info = "NewProjectWizard\Properties\AssemblyInfo.cs" (Get-Content $dia_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $dia_assembly_info (Get-Content $diatests_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $diatests_assembly_info +(Get-Content $packaging_gta_project) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $packaging_gta_project (Get-Content $packaging_gta_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $packaging_gta_assembly_info (Get-Content $packaging_tafgt_assembly_info) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $packaging_tafgt_assembly_info (Get-Content $projecttemplates_vstemplate) | ForEach-Object { $_ -replace "0.1.0.0", $version } | Set-Content $projecttemplates_vstemplate From 43159a37d199da3ee17455e434542002aae4c2b0 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Wed, 8 May 2019 15:00:31 -0700 Subject: [PATCH 90/92] add missing filr --- .../AbstractConsoleIntegrationTests.cs | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs diff --git a/GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs b/GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs new file mode 100644 index 000000000..b05d821bd --- /dev/null +++ b/GoogleTestAdapter/Tests.Common/AbstractConsoleIntegrationTests.cs @@ -0,0 +1,175 @@ +// This file has been modified by Microsoft on 6/2017. + +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text.RegularExpressions; +using FluentAssertions; +using GoogleTestAdapter.Tests.Common.Helpers; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace GoogleTestAdapter.Tests.Common +{ + + public abstract class AbstractConsoleIntegrationTests + { + protected readonly string TestAdapterDir; + private readonly string _solutionFile; + + protected AbstractConsoleIntegrationTests() + { + GetDirectories(out TestAdapterDir, out _solutionFile); + } + + [ClassInitialize] + public void Setup() + { + // workaround for first test failing + string arguments = CreateListDiscoverersArguments(); + RunExecutableAndGetOutput(_solutionFile, arguments); + } + + protected abstract string GetAdapterIntegration(); + + public static string GetLogger() + { + return "/Logger:Trx "; + } + + public static void GetDirectories(out string testAdapterDir, out string testSolutionFile) + { + string testDll = Assembly.GetExecutingAssembly().Location; + Assert.IsNotNull(testDll); + Match match = Regex.Match(testDll, @"^(.*)\\GoogleTestAdapter\\(Debug|Release)\\VsPackage.Tests.*\\GoogleTestAdapter.Tests.Common.dll$"); + match.Success.Should().BeTrue(); + string binariesPath = match.Groups[1].Value; + string debugOrRelease = match.Groups[2].Value; + testAdapterDir = Path.Combine(binariesPath, "GoogleTestAdapter", debugOrRelease, "Packaging.GTA"); + testSolutionFile = Path.Combine(binariesPath, @"..\..\SampleTests\SampleTests.sln"); + } + + + [TestMethod] + [TestCategory(TestMetadata.TestCategories.EndToEnd)] + public virtual void Console_ListDiscoverers_DiscovererIsListed() + { + string arguments = CreateListDiscoverersArguments(); + string output = RunExecutableAndGetOutput(_solutionFile, arguments); + if (output.ToLower().Contains("googletestrunner")) + Assert.Fail("VS test framework appears to have been fixed :-) - enable test!"); + else + Assert.Inconclusive("skipped until vs test framework is fixed..."); + } + + [TestMethod] + [TestCategory(TestMetadata.TestCategories.EndToEnd)] + public virtual void Console_ListExecutors_ExecutorIsListed() + { + string arguments = CreateListExecutorsArguments(); + string output = RunExecutableAndGetOutput(_solutionFile, arguments); + if (output.ToLower().Contains("googletestrunner")) + Assert.Fail("VS test framework appears to have been fixed :-) - enable test!"); + else + Assert.Inconclusive("skipped until vs test framework is fixed..."); + } + + [TestMethod] + [TestCategory(TestMetadata.TestCategories.EndToEnd)] + public virtual void Console_ListSettingsProviders_SettingsProviderIsListed() + { + string arguments = CreateListSettingsProvidersArguments(); + string output = RunExecutableAndGetOutput(_solutionFile, arguments); + if (output.ToLower().Contains("googletestadapter")) + Assert.Fail("VS test framework appears to have been fixed :-) - enable test!"); + else + Assert.Inconclusive("skipped until vs test framework is fixed..."); + } + + + public static string RunExecutableAndGetOutput(string solutionFile, string arguments) + { + string command = TestResources.GetVsTestConsolePath(TestMetadata.VersionUnderTest); + string workingDir = ""; + + var launcher = new TestProcessLauncher(); + launcher.GetOutputStreams(workingDir, command, arguments, out List standardOut, out var standardErr); + + string resultString = string.Join("\n", standardOut) + "\n\n" + string.Join("\n", standardErr); + // ReSharper disable once AssignNullToNotNullAttribute + string baseDir = Directory.GetParent(Path.GetDirectoryName(solutionFile)).FullName; + resultString = NormalizeOutput(resultString, baseDir); + + return resultString; + } + + private static string NormalizeOutput(string resultString, string baseDir) + { + resultString = resultString.ReplaceIgnoreCase(baseDir, "${BaseDir}"); + resultString = Regex.Replace(resultString, @"\\(Debug|Release)\\", @"\${ConfigurationName}\"); + resultString = Regex.Replace(resultString, @"Test execution time: .*", "Test execution time: ${RunTime}"); + resultString = TestResources.NormalizePointerInfo(resultString); + resultString = Regex.Replace(resultString, @"Version .*\s*Copyright", "Version ${ToolVersion} Copyright"); + resultString = Regex.Replace(resultString, "Found [0-9]+ tests in executable", "Found ${NrOfTests} tests in executable"); + + // exception messages are localized (thanks, MS). Add your own language here... + resultString = resultString.Replace(" bei ", " at "); + resultString = Regex.Replace(resultString, @":Zeile ([0-9]+)\.", ":line $1"); + + string testExecutionCompletedPattern = @".*Test execution completed, overall duration: .*\n"; + if (Regex.IsMatch(resultString, testExecutionCompletedPattern)) + { + resultString = Regex.Replace(resultString, testExecutionCompletedPattern, ""); + resultString += "\n\nTest execution completed, overall duration: ${OverallDuration}\n"; + } + + string coveragePattern = @"Attachments:\n.*\.coverage\n\n"; + if (Regex.IsMatch(resultString, coveragePattern)) + { + resultString = Regex.Replace(resultString, coveragePattern, ""); + resultString += "\n\nGoogle Test Adapter Coverage Marker"; + } + else + { + // workaround for build server + coveragePattern = @"Attachments:\n.*\.coverage\n"; + if (Regex.IsMatch(resultString, coveragePattern)) + { + resultString = Regex.Replace(resultString, coveragePattern, ""); + resultString += "\nGoogle Test Adapter Coverage Marker"; + } + } + + string noDataAdapterPattern = "Warning: Could not find diagnostic data adapter 'Code Coverage'. Make sure diagnostic data adapter is installed and try again.\n\n"; + if (Regex.IsMatch(resultString, noDataAdapterPattern)) + { + resultString = Regex.Replace(resultString, noDataAdapterPattern, ""); + resultString += "\n\nGoogle Test Adapter Coverage Marker"; + } + + string emptyLinePattern = @"\n\n"; + while (Regex.IsMatch(resultString, emptyLinePattern)) + { + resultString = Regex.Replace(resultString, emptyLinePattern, "\n"); + } + + return resultString; + } + + private string CreateListDiscoverersArguments() + { + return GetAdapterIntegration() + @" /ListDiscoverers " + GetLogger(); + } + + private string CreateListExecutorsArguments() + { + return GetAdapterIntegration() + @" /ListExecutors " + GetLogger(); + } + + private string CreateListSettingsProvidersArguments() + { + return GetAdapterIntegration() + @" /ListSettingsProviders " + GetLogger(); + } + + } + +} \ No newline at end of file From 20a6c51b5e9b6cf0334587aa519576c6a81e4cff Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Thu, 16 May 2019 11:26:49 -0700 Subject: [PATCH 91/92] fix test resource --- GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs b/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs index 77f670a91..4ead4043a 100644 --- a/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs +++ b/GoogleTestAdapter/TestAdapter.Tests/TestExecutorTestsBase.cs @@ -30,6 +30,8 @@ public abstract class TestExecutorTestsBase : TestAdapterTestsBase private readonly bool _parallelTestExecution; private readonly int _maxNrOfThreads; + private const string TestSetup = "Test setup"; + private const string TestTeardown = "Test teardown"; protected TestExecutorTestsBase(bool parallelTestExecution, int maxNrOfThreads) From d12257214d6d86f6999c9b231a1b4cd617528ad1 Mon Sep 17 00:00:00 2001 From: Spencer Bloom Date: Thu, 16 May 2019 14:37:15 -0700 Subject: [PATCH 92/92] fix test string --- GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs index 75a978889..16948072d 100644 --- a/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs +++ b/GoogleTestAdapter/Core.Tests/GoogleTestDiscovererTests.cs @@ -230,7 +230,7 @@ public void GetTestsFromExecutable_WithoutPathExtension_ProducesWarning() IList testCases = discoverer.GetTestsFromExecutable(targetExe); testCases.Should().BeEmpty(); - MockLogger.Verify(l => l.LogError(It.Is(s => s.StartsWith("Could not list test cases of executable")))); + MockLogger.Verify(l => l.LogError(It.Is(s => s.StartsWith("Could not list test cases for executable")))); } finally {