From 6eec29a3a72c65e6e3df09bbe97a3fe1b1ed984a Mon Sep 17 00:00:00 2001 From: Tiberiu Chibici Date: Sat, 26 Jul 2014 10:12:56 +0300 Subject: [PATCH] Completed rename from RainmeterEditor to RainmeterStudio --- .gitignore | 2 +- {BuildTools => Build}/Build.bat | 352 +- {BuildTools => Build}/BuildLanguages.bat | 2 +- {BuildTools => Build}/BuildVersion.bat | 4 +- .../DllExporter/AssemblyInfo.cs | 0 .../DllExporter/DllExporter.csproj | 0 {BuildTools => Build}/DllExporter/Program.cs | 0 {BuildTools => Build}/Installer/Header.bmp | Bin {BuildTools => Build}/Installer/Icon.ico | Bin {BuildTools => Build}/Installer/Installer.nsi | 1918 ++++---- {BuildTools => Build}/Installer/MD5.dll | Bin {BuildTools => Build}/Installer/MoreInfo.dll | Bin {BuildTools => Build}/Installer/UAC.dll | Bin {BuildTools => Build}/Installer/UAC.nsh | 398 +- {BuildTools => Build}/Installer/Wizard.bmp | Bin .../Layouts/illustro default/Rainmeter.ini | 44 +- .../Skins/illustro/@Resources/Background.png | Bin .../Skins/illustro/Clock/Clock.ini | 274 +- .../Skins/illustro/Disk/1 Disk.ini | 296 +- .../Skins/illustro/Disk/2 Disks.ini | 416 +- .../Skins/illustro/Google/Google.ini | 236 +- .../Skins/illustro/Network/Network.ini | 428 +- .../illustro/Recycle Bin/Recycle Bin.ini | 292 +- .../Skins/illustro/System/System.ini | 410 +- .../Skins/illustro/Welcome/Background.png | Bin .../Skins/illustro/Welcome/Welcome.ini | 344 +- .../VS/Rainmeter.Cpp.Default.props | 60 +- {BuildTools => Build}/VS/Rainmeter.Cpp.props | 256 +- .../VS/RainmeterPlugin.Cpp.props | 34 +- .../VS/RainmeterPlugin.Cs.props | 16 +- .../RainmeterStudio.Tests.csproj | 190 +- .../Storage/ProjectStorageTest.cs | 220 +- ...r.exe.config => RainmeterStudio.exe.config | 6 +- RainmeterStudio.sln | 1070 ++--- ...onfig => RainmeterStudio.vshost.exe.config | 6 +- {RainmeterEditor => RainmeterStudio}/App.xaml | 26 +- .../App.xaml.cs | 44 +- .../Business/DocumentManager.cs | 156 +- .../Business/ProjectManager.cs | 32 +- .../Documents/Ini/IniDocument.cs | 24 +- .../Documents/Ini/IniSkinDesigner.cs | 62 +- .../Documents/Ini/IniSkinDesignerControl.xaml | 22 +- .../Ini/IniSkinDesignerControl.xaml.cs | 54 +- .../Documents/Ini/IniSkinDesignerFactory.cs | 28 +- .../Documents/Text/TextDocument.cs | 70 +- .../Documents/Text/TextEditor.cs | 54 +- .../Documents/Text/TextEditorControl.xaml | 22 +- .../Documents/Text/TextEditorControl.xaml.cs | 64 +- .../Documents/Text/TextEditorFactory.cs | 118 +- .../Documents/Text/TextStorage.cs | 128 +- .../Interop/NativeLibrary.cs | 106 +- {RainmeterEditor => RainmeterStudio}/LICENSE | 40 +- .../Model/DocumentFormat.cs | 28 +- .../Model/Events/DocumentOpenedEventArgs.cs | 34 +- .../Model/IDocument.cs | 26 +- .../Model/IDocumentEditor.cs | 272 +- .../Model/IDocumentEditorFactory.cs | 78 +- .../Model/IDocumentStorage.cs | 52 +- .../Model/Project.cs | 228 +- .../Model/Property.cs | 60 +- .../Model/RainmeterConfig.cs | 22 +- .../Model/Reference.cs | 100 +- .../Model/Tree.cs | 306 +- .../Properties/AssemblyInfo.cs | 110 +- .../Properties/Resources.Designer.cs | 126 +- .../Properties/Resources.resx | 232 +- .../Properties/Settings.Designer.cs | 52 +- .../Properties/Settings.settings | 12 +- .../Rainmeter.cs | 118 +- .../RainmeterStudio.csproj | 426 +- .../Resources/Icons/arrow_backward_16.png | Bin .../Resources/Icons/arrow_forward_16.png | Bin .../Resources/Icons/arrow_left_16.png | Bin .../Resources/Icons/arrow_right_16.png | Bin .../Resources/Icons/page_white_star_16.png | Bin .../Resources/Icons/project_16.png | Bin .../Resources/Icons/project_star_16.png | Bin .../Resources/Icons/text_file_32.png | Bin .../Resources/Strings.Designer.cs | 234 +- .../Resources/Strings.resx | 274 +- .../Resources/splash.png | Bin .../Storage/ProjectStorage.cs | 80 +- .../Storage/SkinDirectory.cs | 50 +- .../UI/Command.cs | 176 +- .../UI/Controller/DocumentController.cs | 154 +- .../UI/Dialogs/CreateDocumentDialog.xaml | 128 +- .../UI/Dialogs/CreateDocumentDialog.xaml.cs | 186 +- .../UI/MainWindow.xaml | 232 +- .../UI/MainWindow.xaml.cs | 148 +- .../UI/SkinsPanel.xaml | 32 +- .../UI/SkinsPanel.xaml.cs | 62 +- .../UI/Styles/ButtonStyle.xaml | 108 +- .../UI/Styles/Common.xaml | 10 +- .../app.config | 6 +- .../packages.config | 8 +- .../AvalonDock.2.0.2000.nuspec | 19 + .../Xceed.Wpf.AvalonDock.Themes.Aero.dll | Bin 0 -> 88576 bytes ...Xceed.Wpf.AvalonDock.Themes.Expression.dll | Bin 0 -> 97792 bytes .../Xceed.Wpf.AvalonDock.Themes.Metro.dll | Bin 0 -> 82432 bytes .../Xceed.Wpf.AvalonDock.Themes.VS2010.dll | Bin 0 -> 86528 bytes .../lib/net40/Xceed.Wpf.AvalonDock.dll | Bin 0 -> 426496 bytes .../lib/net40/Xceed.Wpf.AvalonDock.xml | 4044 +++++++++++++++++ .../de/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 6144 bytes .../es/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 5632 bytes .../fr/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 6144 bytes .../hu/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 5632 bytes .../it/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 5632 bytes .../pt-BR/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 6144 bytes .../ro/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 5632 bytes .../ru/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 6144 bytes .../sv/Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 5632 bytes .../Xceed.Wpf.AvalonDock.resources.dll | Bin 0 -> 5632 bytes packages/ini-parser.2.1.1/README.md | 56 + packages/ini-parser.2.1.1/content/LICENSE | 20 + .../ini-parser.2.1.1/ini-parser.2.1.1.nuspec | 17 + .../ini-parser.2.1.1/lib/INIFileParser.dll | Bin 0 -> 26112 bytes packages/repositories.config | 4 + 117 files changed, 10407 insertions(+), 6247 deletions(-) rename {BuildTools => Build}/Build.bat (97%) rename {BuildTools => Build}/BuildLanguages.bat (97%) rename {BuildTools => Build}/BuildVersion.bat (94%) rename {BuildTools => Build}/DllExporter/AssemblyInfo.cs (100%) rename {BuildTools => Build}/DllExporter/DllExporter.csproj (100%) rename {BuildTools => Build}/DllExporter/Program.cs (100%) rename {BuildTools => Build}/Installer/Header.bmp (100%) rename {BuildTools => Build}/Installer/Icon.ico (100%) rename {BuildTools => Build}/Installer/Installer.nsi (96%) rename {BuildTools => Build}/Installer/MD5.dll (100%) rename {BuildTools => Build}/Installer/MoreInfo.dll (100%) rename {BuildTools => Build}/Installer/UAC.dll (100%) rename {BuildTools => Build}/Installer/UAC.nsh (96%) rename {BuildTools => Build}/Installer/Wizard.bmp (100%) rename {BuildTools => Build}/Layouts/illustro default/Rainmeter.ini (93%) rename {BuildTools => Build}/Skins/illustro/@Resources/Background.png (100%) rename {BuildTools => Build}/Skins/illustro/Clock/Clock.ini (95%) rename {BuildTools => Build}/Skins/illustro/Disk/1 Disk.ini (95%) rename {BuildTools => Build}/Skins/illustro/Disk/2 Disks.ini (96%) rename {BuildTools => Build}/Skins/illustro/Google/Google.ini (95%) rename {BuildTools => Build}/Skins/illustro/Network/Network.ini (95%) rename {BuildTools => Build}/Skins/illustro/Recycle Bin/Recycle Bin.ini (96%) rename {BuildTools => Build}/Skins/illustro/System/System.ini (95%) rename {BuildTools => Build}/Skins/illustro/Welcome/Background.png (100%) rename {BuildTools => Build}/Skins/illustro/Welcome/Welcome.ini (95%) rename {BuildTools => Build}/VS/Rainmeter.Cpp.Default.props (97%) rename {BuildTools => Build}/VS/Rainmeter.Cpp.props (97%) rename {BuildTools => Build}/VS/RainmeterPlugin.Cpp.props (97%) rename {BuildTools => Build}/VS/RainmeterPlugin.Cs.props (98%) rename RainmeterEditor.exe.config => RainmeterStudio.exe.config (98%) rename RainmeterEditor.vshost.exe.config => RainmeterStudio.vshost.exe.config (98%) rename {RainmeterEditor => RainmeterStudio}/App.xaml (90%) rename {RainmeterEditor => RainmeterStudio}/App.xaml.cs (79%) rename {RainmeterEditor => RainmeterStudio}/Business/DocumentManager.cs (92%) rename {RainmeterEditor => RainmeterStudio}/Business/ProjectManager.cs (76%) rename {RainmeterEditor => RainmeterStudio}/Documents/Ini/IniDocument.cs (65%) rename {RainmeterEditor => RainmeterStudio}/Documents/Ini/IniSkinDesigner.cs (86%) rename {RainmeterEditor => RainmeterStudio}/Documents/Ini/IniSkinDesignerControl.xaml (85%) rename {RainmeterEditor => RainmeterStudio}/Documents/Ini/IniSkinDesignerControl.xaml.cs (90%) rename {RainmeterEditor => RainmeterStudio}/Documents/Ini/IniSkinDesignerFactory.cs (69%) rename {RainmeterEditor => RainmeterStudio}/Documents/Text/TextDocument.cs (83%) rename {RainmeterEditor => RainmeterStudio}/Documents/Text/TextEditor.cs (86%) rename {RainmeterEditor => RainmeterStudio}/Documents/Text/TextEditorControl.xaml (86%) rename {RainmeterEditor => RainmeterStudio}/Documents/Text/TextEditorControl.xaml.cs (91%) rename {RainmeterEditor => RainmeterStudio}/Documents/Text/TextEditorFactory.cs (91%) rename {RainmeterEditor => RainmeterStudio}/Documents/Text/TextStorage.cs (92%) rename {RainmeterEditor => RainmeterStudio}/Interop/NativeLibrary.cs (94%) rename {RainmeterEditor => RainmeterStudio}/LICENSE (98%) rename {RainmeterEditor => RainmeterStudio}/Model/DocumentFormat.cs (89%) rename {RainmeterEditor => RainmeterStudio}/Model/Events/DocumentOpenedEventArgs.cs (85%) rename {RainmeterEditor => RainmeterStudio}/Model/IDocument.cs (81%) rename {RainmeterEditor => RainmeterStudio}/Model/IDocumentEditor.cs (94%) rename {RainmeterEditor => RainmeterStudio}/Model/IDocumentEditorFactory.cs (91%) rename {RainmeterEditor => RainmeterStudio}/Model/IDocumentStorage.cs (92%) rename {RainmeterEditor => RainmeterStudio}/Model/Project.cs (95%) rename {RainmeterEditor => RainmeterStudio}/Model/Property.cs (89%) rename {RainmeterEditor => RainmeterStudio}/Model/RainmeterConfig.cs (76%) rename {RainmeterEditor => RainmeterStudio}/Model/Reference.cs (93%) rename {RainmeterEditor => RainmeterStudio}/Model/Tree.cs (94%) rename {RainmeterEditor => RainmeterStudio}/Properties/AssemblyInfo.cs (93%) rename {RainmeterEditor => RainmeterStudio}/Properties/Resources.Designer.cs (92%) rename {RainmeterEditor => RainmeterStudio}/Properties/Resources.resx (97%) rename {RainmeterEditor => RainmeterStudio}/Properties/Settings.Designer.cs (94%) rename {RainmeterEditor => RainmeterStudio}/Properties/Settings.settings (97%) rename {RainmeterEditor => RainmeterStudio}/Rainmeter.cs (91%) rename {RainmeterEditor => RainmeterStudio}/RainmeterStudio.csproj (97%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/arrow_backward_16.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/arrow_forward_16.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/arrow_left_16.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/arrow_right_16.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/page_white_star_16.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/project_16.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/project_star_16.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Icons/text_file_32.png (100%) rename {RainmeterEditor => RainmeterStudio}/Resources/Strings.Designer.cs (94%) rename {RainmeterEditor => RainmeterStudio}/Resources/Strings.resx (97%) rename {RainmeterEditor => RainmeterStudio}/Resources/splash.png (100%) rename {RainmeterEditor => RainmeterStudio}/Storage/ProjectStorage.cs (90%) rename {RainmeterEditor => RainmeterStudio}/Storage/SkinDirectory.cs (87%) rename {RainmeterEditor => RainmeterStudio}/UI/Command.cs (95%) rename {RainmeterEditor => RainmeterStudio}/UI/Controller/DocumentController.cs (89%) rename {RainmeterEditor => RainmeterStudio}/UI/Dialogs/CreateDocumentDialog.xaml (95%) rename {RainmeterEditor => RainmeterStudio}/UI/Dialogs/CreateDocumentDialog.xaml.cs (92%) rename {RainmeterEditor => RainmeterStudio}/UI/MainWindow.xaml (95%) rename {RainmeterEditor => RainmeterStudio}/UI/MainWindow.xaml.cs (92%) rename {RainmeterEditor => RainmeterStudio}/UI/SkinsPanel.xaml (90%) rename {RainmeterEditor => RainmeterStudio}/UI/SkinsPanel.xaml.cs (83%) rename {RainmeterEditor => RainmeterStudio}/UI/Styles/ButtonStyle.xaml (98%) rename {RainmeterEditor => RainmeterStudio}/UI/Styles/Common.xaml (98%) rename {RainmeterEditor => RainmeterStudio}/app.config (98%) rename {RainmeterEditor => RainmeterStudio}/packages.config (98%) create mode 100644 packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Metro.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.VS2010.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/es/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/fr/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/it/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/ro/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/sv/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll create mode 100644 packages/ini-parser.2.1.1/README.md create mode 100644 packages/ini-parser.2.1.1/content/LICENSE create mode 100644 packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec create mode 100644 packages/ini-parser.2.1.1/lib/INIFileParser.dll create mode 100644 packages/repositories.config diff --git a/.gitignore b/.gitignore index fca70329..6f346e78 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ Certificate.bat ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. +!Build/ # User-specific files *.suo @@ -17,7 +18,6 @@ Certificate.bat [Rr]eleases/ x64/ x86/ -build/ bld/ [Bb]in/ [Oo]bj/ diff --git a/BuildTools/Build.bat b/Build/Build.bat similarity index 97% rename from BuildTools/Build.bat rename to Build/Build.bat index e3dd3baf..1e3910de 100644 --- a/BuildTools/Build.bat +++ b/Build/Build.bat @@ -1,176 +1,176 @@ -@echo off -setlocal EnableDelayedExpansion - -set VCVARSALL=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat -set MAKENSIS=%PROGRAMFILES%\NSIS\MakeNSIS.exe -set GIT=%PROGRAMFILES%\Git\bin\git.exe - -:: Set VERSION_REVISION to non-zero value to override -set VERSION_MAJOR=3 -set VERSION_MINOR=2 -set VERSION_SUBMINOR=0 -set VERSION_REVISION=0 -set ISBETA=true - -if "%1" == "RELEASE" set ISBETA=false -if "%1" == "BUILDVERSION" goto BUILDVERSION -echo Rainmeter Build -echo ---------------------------------------------- -echo. - -if not exist "%VCVARSALL%" echo ERROR: vcvarsall.bat not found & goto END -call "%VCVARSALL%" x86 > nul - -set MSBUILD="msbuild.exe" /nologo^ - /p:PlatformToolset=v120_xp;VisualStudioVersion=12.0^ - /p:ExcludeTests=true^ - /p:Configuration=Release - -if exist "Certificate.bat" call "Certificate.bat" > nul -set SIGNTOOL="signtool.exe" sign /t http://time.certum.pl /f "%CERTFILE%" /p "%CERTKEY%" - -if "%1" == "BUILDLANGUAGES" goto BUILDLANGUAGES - -if exist "%MAKENSIS%" goto NSISFOUND -set MAKENSIS=%MAKENSIS:Program Files\=Program Files (x86)\% -if not exist "%MAKENSIS%" echo ERROR: MakeNSIS.exe not found & goto END -:NSISFOUND - -:BUILDVERSION - -if not exist "..\.git" goto UPDATEVERSION -if not "%VERSION_REVISION%" == "0" goto UPDATEVERSION - -:: git -if exist "%GIT%" goto GITFOUND -set GIT=%GIT:Program Files\=Program Files (x86)\% -if not exist "%GIT%" echo ERROR: git.exe not found & goto END -:GITFOUND -set /a VERSION_REVISION=0 -for /f "usebackq delims= " %%G in (`"%GIT%" rev-list --all --count`) do set VERSION_REVISION=%%G - -:UPDATEVERSION - -set VERSION_FULL=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%.%VERSION_REVISION% -set VERSION_SHORT=%VERSION_MAJOR%.%VERSION_MINOR% -if not "%VERSION_SUBMINOR%" == "0" set VERSION_SHORT=!VERSION_SHORT!.%VERSION_SUBMINOR% - -:: Update Version.h -> "..\Version.h" echo #pragma once ->>"..\Version.h" echo #define FILEVER %VERSION_MAJOR%,%VERSION_MINOR%,%VERSION_SUBMINOR%,%VERSION_REVISION% ->>"..\Version.h" echo #define PRODUCTVER FILEVER ->>"..\Version.h" echo #define STRFILEVER "%VERSION_FULL%" ->>"..\Version.h" echo #define STRPRODUCTVER STRFILEVER ->>"..\Version.h" echo #define APPVERSION L"%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%" ->>"..\Version.h" echo #define RAINMETER_VERSION ((%VERSION_MAJOR% * 1000000) + (%VERSION_MINOR% * 1000) + %VERSION_SUBMINOR%) ->>"..\Version.h" echo const int revision_number = %VERSION_REVISION%; ->>"..\Version.h" echo const bool revision_beta = %ISBETA%; - -:: Update Version.cs -> "..\Version.cs" echo namespace Rainmeter ->>"..\Version.cs" echo { ->>"..\Version.cs" echo public class Version ->>"..\Version.cs" echo { ->>"..\Version.cs" echo #if X64 ->>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (64-bit)"; ->>"..\Version.cs" echo #else ->>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (32-bit)"; ->>"..\Version.cs" echo #endif ->>"..\Version.cs" echo } ->>"..\Version.cs" echo } - - -if "%1" == "BUILDVERSION" goto :eof -echo * Updated Version.h - -:: Set vcbuild environment variables and begin build -echo * Starting build for %VERSION_FULL% -for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( - set /A "BUILD_BEGIN_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + 1%%c %% 100) * 100 + 1%%d %% 100" -) - -:: Build Library -echo * Building 32-bit projects -%MSBUILD% /t:rebuild /p:Platform=Win32 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" -if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END - -echo * Building 64-bit projects -%MSBUILD% /t:rebuild /p:Platform=x64 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" -if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END - -:BUILDLANGUAGES -echo * Building languages - -:: Build all language libraries ->".\Installer\Languages.nsh" echo. -for /f "tokens=1,2,3 delims=," %%a in (..\Language\List) do ( - > "..\Language\Language.rc" echo #include "%%a.h" - >>"..\Language\Language.rc" echo #include "Resource.rc" - >>".\Installer\Languages.nsh" echo ${IncludeLanguage} "%%b" "%%a" - set LANGDLL_PARAMS='%%a - ${LANGFILE_%%b_NAME}' '${LANG_%%b}' '${LANG_%%b_CP}' !LANGDLL_PARAMS! - set LANGUAGE_IDS=${LANG_%%b},!LANGUAGE_IDS! - - %MSBUILD% /t:Language /p:Platform=Win32;TargetName=%%c /v:q ..\Rainmeter.sln > "BuildLog.txt" - if not %ERRORLEVEL% == 0 echo ERROR: Building language %%a failed & goto END -) ->>".\Installer\Languages.nsh" echo ^^!define LANGDLL_PARAMS "%LANGDLL_PARAMS%" ->>".\Installer\Languages.nsh" echo ^^!define LANGUAGE_IDS "%LANGUAGE_IDS%" - -:: Restore English -echo #include "English.h"> "..\Language\Language.rc" -echo #include "Resource.rc">> "..\Language\Language.rc" -if "%1" == "BUILDLANGUAGES" ( - xcopy /Q /S /Y ..\x32-Release\Languages\*.dll ..\x64-Release\Languages\ > nul - xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x32-Debug\Languages\ > nul - xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x64-Debug\Languages\ > nul - if exist "BuildLog.txt" del "BuildLog.txt" - goto END -) - -:: Sign binaries -if not "%CERTFILE%" == "" ( - echo * Signing binaries - for %%Z in (Rainmeter.dll Rainmeter.exe SkinInstaller.exe SkinInstaller.dll) do ( - %SIGNTOOL% ..\x32-Release\%%Z > BuildLog.txt - if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x32\%%Z failed & goto END - %SIGNTOOL% ..\x64-Release\%%Z > BuildLog.txt - if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x64\%%Z failed & goto END - ) -) - -:: Build installer -echo * Building installer - -set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%.exe -if not "%1" == "RELEASE" set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%-r%VERSION_REVISION%-beta.exe - -set INSTALLER_DEFINES=^ - /DOUTFILE="%INSTALLER_NAME%"^ - /DVERSION_FULL="%VERSION_FULL%"^ - /DVERSION_SHORT="%VERSION_SHORT%"^ - /DVERSION_REVISION="%VERSION_REVISION%" -if not "%1" == "RELEASE" set INSTALLER_DEFINES=!INSTALLER_DEFINES! /DBETA - -"%MAKENSIS%" %INSTALLER_DEFINES% .\Installer\Installer.nsi > "BuildLog.txt" -if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Building installer failed & goto END - -:: Sign installer -if not "%CERTFILE%" == "" ( - echo * Signing installer - %SIGNTOOL% %INSTALLER_NAME% > BuildLog.txt - if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing installer failed & goto END -) - -:: If we got here, build was successful so delete BuildLog.txt -if exist "BuildLog.txt" del "BuildLog.txt" - -for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( - set /A "BUILD_END_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + %%c %% 100) * 100 + 1%%d %% 100" -) -set /A "BUILD_ELAPSED_TIME=(%BUILD_END_TIMESTAMP% - %BUILD_BEGIN_TIMESTAMP%) / 100" -echo * Build complete. Elapsed time: %BUILD_ELAPSED_TIME% sec - -:END -if exist ".\Installer\Languages.nsh" del ".\Installer\Languages.nsh" -echo. -pause +@echo off +setlocal EnableDelayedExpansion + +set VCVARSALL=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat +set MAKENSIS=%PROGRAMFILES%\NSIS\MakeNSIS.exe +set GIT=%PROGRAMFILES%\Git\bin\git.exe + +:: Set VERSION_REVISION to non-zero value to override +set VERSION_MAJOR=3 +set VERSION_MINOR=2 +set VERSION_SUBMINOR=0 +set VERSION_REVISION=0 +set ISBETA=true + +if "%1" == "RELEASE" set ISBETA=false +if "%1" == "BUILDVERSION" goto BUILDVERSION +echo Rainmeter Build +echo ---------------------------------------------- +echo. + +if not exist "%VCVARSALL%" echo ERROR: vcvarsall.bat not found & goto END +call "%VCVARSALL%" x86 > nul + +set MSBUILD="msbuild.exe" /nologo^ + /p:PlatformToolset=v120_xp;VisualStudioVersion=12.0^ + /p:ExcludeTests=true^ + /p:Configuration=Release + +if exist "Certificate.bat" call "Certificate.bat" > nul +set SIGNTOOL="signtool.exe" sign /t http://time.certum.pl /f "%CERTFILE%" /p "%CERTKEY%" + +if "%1" == "BUILDLANGUAGES" goto BUILDLANGUAGES + +if exist "%MAKENSIS%" goto NSISFOUND +set MAKENSIS=%MAKENSIS:Program Files\=Program Files (x86)\% +if not exist "%MAKENSIS%" echo ERROR: MakeNSIS.exe not found & goto END +:NSISFOUND + +:BUILDVERSION + +if not exist "..\.git" goto UPDATEVERSION +if not "%VERSION_REVISION%" == "0" goto UPDATEVERSION + +:: git +if exist "%GIT%" goto GITFOUND +set GIT=%GIT:Program Files\=Program Files (x86)\% +if not exist "%GIT%" echo ERROR: git.exe not found & goto END +:GITFOUND +set /a VERSION_REVISION=0 +for /f "usebackq delims= " %%G in (`"%GIT%" rev-list --all --count`) do set VERSION_REVISION=%%G + +:UPDATEVERSION + +set VERSION_FULL=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%.%VERSION_REVISION% +set VERSION_SHORT=%VERSION_MAJOR%.%VERSION_MINOR% +if not "%VERSION_SUBMINOR%" == "0" set VERSION_SHORT=!VERSION_SHORT!.%VERSION_SUBMINOR% + +:: Update Version.h +> "..\Version.h" echo #pragma once +>>"..\Version.h" echo #define FILEVER %VERSION_MAJOR%,%VERSION_MINOR%,%VERSION_SUBMINOR%,%VERSION_REVISION% +>>"..\Version.h" echo #define PRODUCTVER FILEVER +>>"..\Version.h" echo #define STRFILEVER "%VERSION_FULL%" +>>"..\Version.h" echo #define STRPRODUCTVER STRFILEVER +>>"..\Version.h" echo #define APPVERSION L"%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%" +>>"..\Version.h" echo #define RAINMETER_VERSION ((%VERSION_MAJOR% * 1000000) + (%VERSION_MINOR% * 1000) + %VERSION_SUBMINOR%) +>>"..\Version.h" echo const int revision_number = %VERSION_REVISION%; +>>"..\Version.h" echo const bool revision_beta = %ISBETA%; + +:: Update Version.cs +> "..\Version.cs" echo namespace Rainmeter +>>"..\Version.cs" echo { +>>"..\Version.cs" echo public class Version +>>"..\Version.cs" echo { +>>"..\Version.cs" echo #if X64 +>>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (64-bit)"; +>>"..\Version.cs" echo #else +>>"..\Version.cs" echo public const string Informational = "%VERSION_FULL% (32-bit)"; +>>"..\Version.cs" echo #endif +>>"..\Version.cs" echo } +>>"..\Version.cs" echo } + + +if "%1" == "BUILDVERSION" goto :eof +echo * Updated Version.h + +:: Set vcbuild environment variables and begin build +echo * Starting build for %VERSION_FULL% +for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( + set /A "BUILD_BEGIN_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + 1%%c %% 100) * 100 + 1%%d %% 100" +) + +:: Build Library +echo * Building 32-bit projects +%MSBUILD% /t:rebuild /p:Platform=Win32 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" +if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END + +echo * Building 64-bit projects +%MSBUILD% /t:rebuild /p:Platform=x64 /v:q /m ..\Rainmeter.sln > "BuildLog.txt" +if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Build failed & goto END + +:BUILDLANGUAGES +echo * Building languages + +:: Build all language libraries +>".\Installer\Languages.nsh" echo. +for /f "tokens=1,2,3 delims=," %%a in (..\Language\List) do ( + > "..\Language\Language.rc" echo #include "%%a.h" + >>"..\Language\Language.rc" echo #include "Resource.rc" + >>".\Installer\Languages.nsh" echo ${IncludeLanguage} "%%b" "%%a" + set LANGDLL_PARAMS='%%a - ${LANGFILE_%%b_NAME}' '${LANG_%%b}' '${LANG_%%b_CP}' !LANGDLL_PARAMS! + set LANGUAGE_IDS=${LANG_%%b},!LANGUAGE_IDS! + + %MSBUILD% /t:Language /p:Platform=Win32;TargetName=%%c /v:q ..\Rainmeter.sln > "BuildLog.txt" + if not %ERRORLEVEL% == 0 echo ERROR: Building language %%a failed & goto END +) +>>".\Installer\Languages.nsh" echo ^^!define LANGDLL_PARAMS "%LANGDLL_PARAMS%" +>>".\Installer\Languages.nsh" echo ^^!define LANGUAGE_IDS "%LANGUAGE_IDS%" + +:: Restore English +echo #include "English.h"> "..\Language\Language.rc" +echo #include "Resource.rc">> "..\Language\Language.rc" +if "%1" == "BUILDLANGUAGES" ( + xcopy /Q /S /Y ..\x32-Release\Languages\*.dll ..\x64-Release\Languages\ > nul + xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x32-Debug\Languages\ > nul + xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x64-Debug\Languages\ > nul + if exist "BuildLog.txt" del "BuildLog.txt" + goto END +) + +:: Sign binaries +if not "%CERTFILE%" == "" ( + echo * Signing binaries + for %%Z in (Rainmeter.dll Rainmeter.exe SkinInstaller.exe SkinInstaller.dll) do ( + %SIGNTOOL% ..\x32-Release\%%Z > BuildLog.txt + if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x32\%%Z failed & goto END + %SIGNTOOL% ..\x64-Release\%%Z > BuildLog.txt + if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing x64\%%Z failed & goto END + ) +) + +:: Build installer +echo * Building installer + +set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%.exe +if not "%1" == "RELEASE" set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%-r%VERSION_REVISION%-beta.exe + +set INSTALLER_DEFINES=^ + /DOUTFILE="%INSTALLER_NAME%"^ + /DVERSION_FULL="%VERSION_FULL%"^ + /DVERSION_SHORT="%VERSION_SHORT%"^ + /DVERSION_REVISION="%VERSION_REVISION%" +if not "%1" == "RELEASE" set INSTALLER_DEFINES=!INSTALLER_DEFINES! /DBETA + +"%MAKENSIS%" %INSTALLER_DEFINES% .\Installer\Installer.nsi > "BuildLog.txt" +if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Building installer failed & goto END + +:: Sign installer +if not "%CERTFILE%" == "" ( + echo * Signing installer + %SIGNTOOL% %INSTALLER_NAME% > BuildLog.txt + if not %ERRORLEVEL% == 0 echo ERROR %ERRORLEVEL%: Signing installer failed & goto END +) + +:: If we got here, build was successful so delete BuildLog.txt +if exist "BuildLog.txt" del "BuildLog.txt" + +for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do ( + set /A "BUILD_END_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + %%c %% 100) * 100 + 1%%d %% 100" +) +set /A "BUILD_ELAPSED_TIME=(%BUILD_END_TIMESTAMP% - %BUILD_BEGIN_TIMESTAMP%) / 100" +echo * Build complete. Elapsed time: %BUILD_ELAPSED_TIME% sec + +:END +if exist ".\Installer\Languages.nsh" del ".\Installer\Languages.nsh" +echo. +pause diff --git a/BuildTools/BuildLanguages.bat b/Build/BuildLanguages.bat similarity index 97% rename from BuildTools/BuildLanguages.bat rename to Build/BuildLanguages.bat index cd8047ac..4a5f9b19 100644 --- a/BuildTools/BuildLanguages.bat +++ b/Build/BuildLanguages.bat @@ -1,2 +1,2 @@ -@echo off +@echo off "Build.bat" BUILDLANGUAGES \ No newline at end of file diff --git a/BuildTools/BuildVersion.bat b/Build/BuildVersion.bat similarity index 94% rename from BuildTools/BuildVersion.bat rename to Build/BuildVersion.bat index fcf49acf..1ffcfc2b 100644 --- a/BuildTools/BuildVersion.bat +++ b/Build/BuildVersion.bat @@ -1,2 +1,2 @@ -@echo off -"Build.bat" BUILDVERSION +@echo off +"Build.bat" BUILDVERSION diff --git a/BuildTools/DllExporter/AssemblyInfo.cs b/Build/DllExporter/AssemblyInfo.cs similarity index 100% rename from BuildTools/DllExporter/AssemblyInfo.cs rename to Build/DllExporter/AssemblyInfo.cs diff --git a/BuildTools/DllExporter/DllExporter.csproj b/Build/DllExporter/DllExporter.csproj similarity index 100% rename from BuildTools/DllExporter/DllExporter.csproj rename to Build/DllExporter/DllExporter.csproj diff --git a/BuildTools/DllExporter/Program.cs b/Build/DllExporter/Program.cs similarity index 100% rename from BuildTools/DllExporter/Program.cs rename to Build/DllExporter/Program.cs diff --git a/BuildTools/Installer/Header.bmp b/Build/Installer/Header.bmp similarity index 100% rename from BuildTools/Installer/Header.bmp rename to Build/Installer/Header.bmp diff --git a/BuildTools/Installer/Icon.ico b/Build/Installer/Icon.ico similarity index 100% rename from BuildTools/Installer/Icon.ico rename to Build/Installer/Icon.ico diff --git a/BuildTools/Installer/Installer.nsi b/Build/Installer/Installer.nsi similarity index 96% rename from BuildTools/Installer/Installer.nsi rename to Build/Installer/Installer.nsi index 7eba80fc..f3d0aa8c 100644 --- a/BuildTools/Installer/Installer.nsi +++ b/Build/Installer/Installer.nsi @@ -1,959 +1,959 @@ -/* - Copyright (C) 2012 Birunthan Mohanathas - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -!verbose 3 -!addplugindir ".\" -!include "MUI2.nsh" -!include "x64.nsh" -!include "FileFunc.nsh" -!include "WordFunc.nsh" -!include "WinVer.nsh" -!include "UAC.nsh" - -!ifndef OUTFILE - !define OUTFILE "Rainmeter-test.exe" - !define VERSION_FULL "0.0.0.0" - !define VERSION_SHORT "0.0" - !define VERSION_REVISION "000" -!else - !define INCLUDEFILES -!endif - -Name "Rainmeter" -VIAddVersionKey "ProductName" "Rainmeter" -VIAddVersionKey "FileDescription" "Rainmeter Installer" -VIAddVersionKey "FileVersion" "${VERSION_FULL}" -VIAddVersionKey "ProductVersion" "${VERSION_FULL}" -VIAddVersionKey "OriginalFilename" "${OUTFILE}" -VIAddVersionKey "LegalCopyright" "Copyright (C) 2009-2013 - All authors" -VIProductVersion "${VERSION_FULL}" -BrandingText " " -SetCompressor /SOLID lzma -RequestExecutionLevel user -InstallDirRegKey HKLM "SOFTWARE\Rainmeter" "" -ShowInstDetails nevershow -AllowSkipFiles off -XPStyle on -OutFile "..\${OUTFILE}" -ReserveFile "${NSISDIR}\Plugins\LangDLL.dll" -ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll" -ReserveFile "${NSISDIR}\Plugins\System.dll" -ReserveFile ".\UAC.dll" - -!define REQUIREDSPACE 5 ; Minimum required space for install (in MB) - -; Error levels (for silent install) -!define ERROR_UNSUPPORTED 3 -!define ERROR_NOTADMIN 4 -!define ERROR_WRITEFAIL 5 -!define ERROR_NOVCREDIST 6 -!define ERROR_CLOSEFAIL 7 - -; Additional Windows definitions -!define BCM_SETSHIELD 0x0000160c -!define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 -!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 - -!define MUI_ICON ".\Icon.ico" -!define MUI_UNICON ".\Icon.ico" -!define MUI_WELCOMEFINISHPAGE_BITMAP ".\Wizard.bmp" -!define MUI_FINISHPAGE_RUN -!define MUI_FINISHPAGE_RUN_FUNCTION FinishRun -!define MUI_WELCOMEPAGE ; For language strings - -Page custom PageWelcome PageWelcomeOnLeave -Page custom PageOptions PageOptionsOnLeave -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH - -UninstPage custom un.PageOptions un.GetOptions -!insertmacro MUI_UNPAGE_INSTFILES - -; Include languages -!macro IncludeLanguage LANGUAGE CUSTOMLANGUAGE - !insertmacro MUI_LANGUAGE ${LANGUAGE} - !insertmacro LANGFILE_INCLUDE "..\..\Language\${CUSTOMLANGUAGE}.nsh" -!macroend -!define IncludeLanguage "!insertmacro IncludeLanguage" -!include "Languages.nsh" - -Var NonDefaultLanguage -Var AutoStartup -Var Install64Bit -Var InstallPortable -Var un.DeleteAll - -; Install -; -------------------------------------- -Function .onInit - ${If} ${RunningX64} - ${EnableX64FSRedirection} - ${EndIf} - - ${IfNot} ${UAC_IsInnerInstance} - ${If} ${IsWin2000} - ${OrIf} ${IsWinXP} - ${AndIf} ${AtMostServicePack} 2 - ${OrIf} ${IsWin2003} - ${AndIf} ${AtMostServicePack} 0 - ${IfNot} ${Silent} - MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires Windows XP SP3 or later." - ${EndIf} - SetErrorLevel ${ERROR_UNSUPPORTED} - Quit - ${EndIf} - - System::Call 'kernel32::IsProcessorFeaturePresent(i${PF_XMMI_INSTRUCTIONS_AVAILABLE})i.r0' - ${If} $0 = 0 - ${IfNot} ${Silent} - MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires a Pentium III or later processor." - ${EndIf} - SetErrorLevel ${ERROR_UNSUPPORTED} - Quit - ${EndIf} - - ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" - ReadRegDWORD $NonDefaultLanguage HKLM "SOFTWARE\Rainmeter" "NonDefault" - - ${IfNot} ${Silent} - ${If} $0 == "" - ${OrIf} $0 <> $LANGUAGE - ${AndIf} $NonDefaultLanguage != 1 - ; New install or better match - LangDLL::LangDialog "$(^SetupCaption)" "Please select the installer language.$\n$(SELECTLANGUAGE)" AC ${LANGDLL_PARAMS} "" - Pop $0 - ${If} $0 == "cancel" - Abort - ${EndIf} - - ${If} $0 <> $LANGUAGE - ; User selected non-default language - StrCpy $NonDefaultLanguage 1 - ${EndIf} - ${EndIf} - - StrCpy $LANGUAGE $0 - ${Else} - ${If} $0 != "" - StrCpy $LANGUAGE $0 - ${EndIf} - - ${GetParameters} $R1 - - ClearErrors - ${GetOptions} $R1 "/LANGUAGE=" $0 - ${IfNot} ${Errors} - ${If} $LANGUAGE != $0 - StrCpy $NonDefaultLanguage 1 - ${EndIf} - - StrCpy $LANGUAGE $0 - ${EndIf} - - ${GetOptions} $R1 "/STARTUP=" $0 - ${If} $0 = 1 - StrCpy $AutoStartup 1 - ${EndIf} - - ${GetOptions} $R1 "/PORTABLE=" $0 - ${If} $0 = 1 - StrCpy $InstallPortable 1 - ${Else} - ${IfNot} ${UAC_IsAdmin} - SetErrorLevel ${ERROR_NOTADMIN} - Quit - ${EndIf} - ${EndIf} - - ${GetOptions} $R1 "/VERSION=" $0 - ${If} $0 = 64 - StrCpy $Install64Bit 1 - - ${If} $INSTDIR == "" - StrCpy $INSTDIR "$PROGRAMFILES64\Rainmeter" - ${EndIf} - ${Else} - ${If} $INSTDIR == "" - StrCpy $INSTDIR "$PROGRAMFILES\Rainmeter" - ${EndIf} - ${EndIf} - - ClearErrors - CreateDirectory "$INSTDIR" - WriteINIStr "$INSTDIR\writetest~.rm" "1" "1" "1" - Delete "$INSTDIR\writetest~.rm" - - ${If} ${Errors} - RMDir "$INSTDIR" - SetErrorLevel ${ERROR_WRITEFAIL} - Quit - ${EndIf} - ${EndIf} - - ; If the language was set to a non-existent language, reset it back to English. - ${WordFind} ",${LANGUAGE_IDS}" ",$LANGUAGE," "E+1{" $0 - ${If} ${Errors} - StrCpy $LANGUAGE "1033" - ${EndIf} - ${Else} - ; Exchange settings with user instance - !insertmacro UAC_AsUser_Call Function ExchangeSettings ${UAC_SYNCREGISTERS} - StrCpy $AutoStartup $1 - StrCpy $Install64Bit $2 - StrCpy $NonDefaultLanguage $3 - StrCpy $LANGUAGE $4 - StrCpy $INSTDIR $5 - ${EndIf} -FunctionEnd - -Function ExchangeSettings - StrCpy $1 $AutoStartup - StrCpy $2 $Install64Bit - StrCpy $3 $NonDefaultLanguage - StrCpy $4 $LANGUAGE - StrCpy $5 $INSTDIR - HideWindow -FunctionEnd - -Function PageWelcome - ${If} ${UAC_IsInnerInstance} - ${If} ${UAC_IsAdmin} - ; Skip page - Abort - ${Else} - MessageBox MB_OK|MB_ICONSTOP "$(ADMINERROR) (Inner)" - Quit - ${EndIf} - ${EndIf} - - !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(^ComponentsSubText1)" - nsDialogs::Create 1044 - Pop $0 - nsDialogs::SetRTL $(^RTL) - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${NSD_CreateBitmap} 0u 0u 109u 193u "" - Pop $0 - ${NSD_SetImage} $0 "$PLUGINSDIR\modern-wizard.bmp" $R0 - - ${NSD_CreateLabel} 120u 10u 195u 38u "$(MUI_TEXT_WELCOME_INFO_TITLE)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - CreateFont $1 "$(^Font)" "12" "700" - SendMessage $0 ${WM_SETFONT} $1 0 - - ${NSD_CreateLabel} 120u 55u 195u 12u "$(^ComponentsSubText1)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${NSD_CreateRadioButton} 120u 70u 205u 12u "$(STANDARDINST)" - Pop $R1 - SetCtlColors $R1 "" "${MUI_BGCOLOR}" - ${NSD_AddStyle} $R1 ${WS_GROUP} - SendMessage $R1 ${WM_SETFONT} $mui.Header.Text.Font 0 - - ${NSD_CreateLabel} 132u 82u 185u 24u "$(STANDARDINSTDESC)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${NSD_CreateRadioButton} 120u 106u 310u 12u "$(PORTABLEINST)" - Pop $R2 - SetCtlColors $R2 "" "${MUI_BGCOLOR}" - ${NSD_AddStyle} $R2 ${WS_TABSTOP} - SendMessage $R2 ${WM_SETFONT} $mui.Header.Text.Font 0 - - ${NSD_CreateLabel} 132u 118u 185u 52u "$(PORTABLEINSTDESC)" - Pop $0 - SetCtlColors $0 "" "${MUI_BGCOLOR}" - - ${If} $InstallPortable = 1 - ${NSD_Check} $R2 - ${Else} - ${NSD_Check} $R1 - ${EndIf} - - Call muiPageLoadFullWindow - - nsDialogs::Show - ${NSD_FreeImage} $R0 -FunctionEnd - -Function PageWelcomeOnLeave - ${NSD_GetState} $R2 $InstallPortable - Call muiPageUnloadFullWindow -FunctionEnd - -Function PageOptions - ${If} ${UAC_IsInnerInstance} - ${AndIf} ${UAC_IsAdmin} - ; Skip page - Abort - ${EndIf} - - !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(INSTALLOPTIONSDESC)" - nsDialogs::Create 1018 - nsDialogs::SetRTL $(^RTL) - - ${NSD_CreateGroupBox} 0 0u -1u 36u "$(^DirSubText)" - - ${NSD_CreateDirRequest} 6u 14u 232u 14u "" - Pop $R0 - ${NSD_OnChange} $R0 PageOptionsDirectoryOnChange - - ${NSD_CreateBrowseButton} 242u 14u 50u 14u "$(^BrowseBtn)" - Pop $R1 - ${NSD_OnClick} $R1 PageOptionsBrowseOnClick - - StrCpy $1 0 - - StrCpy $R2 0 - ${If} ${RunningX64} - ${If} $InstallPortable = 1 - ${OrIf} $INSTDIR == "" - ${NSD_CreateCheckBox} 6u 54u 285u 12u "$(INSTALL64BIT)" - Pop $R2 - StrCpy $1 30u - ${EndIf} - ${EndIf} - - ${If} $InstallPortable <> 1 - ${If} $1 = 0 - StrCpy $0 54u - StrCpy $1 30u - ${Else} - StrCpy $0 66u - StrCpy $1 42u - ${EndIf} - - ${NSD_CreateCheckbox} 6u $0 285u 12u "$(AUTOSTARTUP)" - Pop $R3 - - ${If} $INSTDIR == "" - ${NSD_Check} $R3 - ${Else} - SetShellVarContext all - ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" - ${NSD_Check} $R3 - ${EndIf} - - SetShellVarContext current - ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" - ${NSD_Check} $R3 - ${EndIf} - ${EndIf} - ${Else} - StrCpy $R3 0 - ${EndIf} - - ${If} $1 <> 0 - ${NSD_CreateGroupBox} 0 42u -1u $1 "$(ADDITIONALOPTIONS)" - ${EndIf} - - ; Set default directory - ${If} $InstallPortable = 1 - ${GetRoot} "$WINDIR" $0 - ${NSD_SetText} $R0 "$0\Rainmeter" - ${Else} - ; Disable Directory editbox and Browse button if already installed - SendMessage $R0 ${EM_SETREADONLY} 1 0 - - ${If} $INSTDIR != "" - EnableWindow $R1 0 - ${NSD_SetText} $R0 "$INSTDIR" - ${Else} - ; Fresh install - ${If} ${RunningX64} - ${NSD_SetText} $R0 "$PROGRAMFILES64\Rainmeter" - ${NSD_Check} $R2 - ${Else} - ${NSD_SetText} $R0 "$PROGRAMFILES\Rainmeter" - ${EndIf} - ${EndIf} - ${EndIf} - - ; Show UAC shield on Install button if requiredd - GetDlgItem $0 $HWNDPARENT 1 - ${If} $InstallPortable = 1 - SendMessage $0 ${BCM_SETSHIELD} 0 0 - ${Else} - SendMessage $0 ${BCM_SETSHIELD} 0 1 - - ; Hide Back button - GetDlgItem $0 $HWNDPARENT 3 - ShowWindow $0 ${SW_HIDE} - ${EndIf} - - nsDialogs::Show -FunctionEnd - -Function PageOptionsDirectoryOnChange - ${NSD_GetText} $R0 $0 - - ; Disable Install button if not enough space - GetDlgItem $1 $HWNDPARENT 1 - ${GetRoot} $0 $2 - ${DriveSpace} "$2\" "/D=F /S=M" $3 - ${If} $3 < ${REQUIREDSPACE} - EnableWindow $1 0 - ${Else} - EnableWindow $1 1 - ${EndIf} - - StrCpy $Install64Bit 0 - ${If} ${RunningX64} - ${If} ${FileExists} "$0\Rainmeter.exe" - MoreInfo::GetProductVersion "$0\Rainmeter.exe" - Pop $0 - StrCpy $0 $0 2 -7 - ${If} $0 == 64 - StrCpy $Install64Bit 1 - ${EndIf} - - ${If} $R2 != 0 - ${NSD_SetState} $R2 $Install64Bit - EnableWindow $R2 0 - ${EndIf} - ${Else} - ${If} $R2 != 0 - EnableWindow $R2 1 - ${EndIf} - ${EndIf} - ${EndIf} -FunctionEnd - -Function PageOptionsBrowseOnClick - ${NSD_GetText} $R0 $0 - nsDialogs::SelectFolderDialog "$(^DirBrowseText)" $0 - Pop $1 - ${If} $1 != error - ${NSD_SetText} $R0 $1 - ${EndIf} -FunctionEnd - -Function PageOptionsOnLeave - ; Verify that selected folder is writable - ${NSD_GetText} $R0 $0 - ${If} $InstallPortable = 1 - ClearErrors - CreateDirectory "$0" - WriteINIStr "$0\writetest~.rm" "1" "1" "1" - Delete "$0\writetest~.rm" - - ${If} ${Errors} - RMDir "$0" - MessageBox MB_OK|MB_ICONEXCLAMATION "$(WRITEERROR)" - Abort - ${EndIf} - - RMDir "$0" - ${EndIf} - - StrCpy $INSTDIR $0 - - GetDlgItem $0 $HWNDPARENT 1 - EnableWindow $0 0 - - ${If} $R2 != 0 - ${NSD_GetState} $R2 $Install64Bit - ${EndIf} - - ${If} $R3 != 0 - ${NSD_GetState} $R3 $AutoStartup - ${EndIf} - - ${If} $InstallPortable <> 1 - ${IfNot} ${UAC_IsAdmin} - ; UAC_IsAdmin seems to return incorrect result sometimes. Recheck with UserInfo::GetAccountType to be sure. - UserInfo::GetAccountType - Pop $0 - ${If} $0 != "Admin" -UAC_TryAgain: - !insertmacro UAC_RunElevated - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} - ${IfThen} $3 <> 0 ${|} ${Break} ${|} - ${If} $1 = 3 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 - ${EndIf} - ${Case} 1223 - Quit - ${Case} 1062 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" - Quit - ${Default} - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" - Quit - ${EndSwitch} - ${EndIf} - ${EndIf} - ${EndIf} -FunctionEnd - -!macro InstallFiles DIR ARCH - SetOutPath "$INSTDIR" - File "..\..\${DIR}-Release\Rainmeter.exe" - File "..\..\${DIR}-Release\Rainmeter.dll" - File "..\..\${DIR}-Release\SkinInstaller.exe" - File "..\..\${DIR}-Release\SkinInstaller.dll" - - SetOutPath "$INSTDIR\Plugins" - File /x *Example*.dll "..\..\${DIR}-Release\Plugins\*.dll" - - SetOutPath "$INSTDIR\Runtime" - File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcp120.dll" - File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcr120.dll" -!macroend - -!macro RemoveStartMenuShortcuts STARTMENUPATH - Delete "${STARTMENUPATH}\Rainmeter.lnk" - Delete "${STARTMENUPATH}\Rainmeter Help.lnk" - Delete "${STARTMENUPATH}\Rainmeter Help.URL" - Delete "${STARTMENUPATH}\Remove Rainmeter.lnk" - Delete "${STARTMENUPATH}\RainThemes.lnk" - Delete "${STARTMENUPATH}\RainThemes Help.lnk" - Delete "${STARTMENUPATH}\RainBrowser.lnk" - Delete "${STARTMENUPATH}\RainBackup.lnk" - Delete "${STARTMENUPATH}\Rainstaller.lnk" - Delete "${STARTMENUPATH}\Skin Installer.lnk" - Delete "${STARTMENUPATH}\Rainstaller Help.lnk" - RMDir "${STARTMENUPATH}" -!macroend - -Section - SetOutPath "$PLUGINSDIR" - SetShellVarContext current - - Var /GLOBAL InstArc - ${If} $Install64Bit = 1 - StrCpy $InstArc "x64" - ${Else} - StrCpy $InstArc "x86" - ${EndIf} - - ${If} $InstallPortable <> 1 - ${AndIfNot} ${AtLeastWinVista} - ; Download and install .NET if required - ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install" - ${If} $0 <> 1 - ${If} $Install64Bit <> 1 - NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe" "$PLUGINSDIR\dotnetfx.exe" - ${Else} - NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe" "$PLUGINSDIR\dotnetfx.exe" - ${EndIf} - Pop $0 - - ${If} $0 == "success" - ExecWait '"$PLUGINSDIR\dotnetfx.exe" /q:a /c:"install /q"' $0 - Delete "$PLUGINSDIR\dotnetfx.exe" - - ${If} $0 = 3010 - SetRebootFlag true - ${ElseIf} $0 <> 0 - MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" - Quit - ${EndIf} - ${ElseIf} $0 == "cancel" - Quit - ${Else} - MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" - Quit - ${EndIf} - ${EndIf} - ${EndIf} - - SetOutPath "$INSTDIR" - - ; Close Rainmeter (and wait up to five seconds) - ${ForEach} $0 10 0 - 1 - FindWindow $1 "DummyRainWClass" "Rainmeter control window" - ClearErrors - Delete "$INSTDIR\Rainmeter.exe" - ${If} $1 = 0 - ${AndIfNot} ${Errors} - ${Break} - ${EndIf} - - SendMessage $1 ${WM_CLOSE} 0 0 - - ${If} $0 = 0 - ${If} ${Silent} - SetErrorLevel ${ERROR_CLOSEFAIL} - Quit - ${Else} - MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 - Quit - ${EndIf} - ${EndIf} - - Sleep 500 - ${Next} - - ; Move Rainmeter.ini to %APPDATA% if needed - ${IfNot} ${Silent} - ${AndIf} ${FileExists} "$INSTDIR\Rainmeter.ini" - ${If} $InstallPortable <> 1 - ${If} $Install64Bit = 1 - ${AndIf} "$INSTDIR" == "$PROGRAMFILES64\Rainmeter" - ${OrIf} "$INSTDIR" == "$PROGRAMFILES\Rainmeter" - MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(SETTINGSFILEERROR)" IDNO SkipIniMove - StrCpy $0 1 - !insertmacro UAC_AsUser_Call Function CopyIniToAppData ${UAC_SYNCREGISTERS} - ${If} $0 = 1 - ; Copy succeeded - Delete "$INSTDIR\Rainmeter.ini" - ${Else} - MessageBox MB_OK|MB_ICONSTOP "$(SETTINGSMOVEERROR)" - ${EndIf} -SkipIniMove: - ${EndIf} - ${Else} - ReadINIStr $0 "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" - ${If} $0 == "$INSTDIR\Skins\" - DeleteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" - ${EndIf} - ${EndIf} - ${EndIf} - - SetOutPath "$INSTDIR" - - ; Cleanup old stuff - Delete "$INSTDIR\Rainmeter.chm" - Delete "$INSTDIR\Default.ini" - Delete "$INSTDIR\Launcher.exe" - Delete "$INSTDIR\Defaults\Plugins\FileView.dll" - RMDir /r "$INSTDIR\Addons\Rainstaller" - RMDir /r "$INSTDIR\Addons\RainBackup" - - ${If} $InstallPortable <> 1 - CreateDirectory "$INSTDIR\Defaults" - Rename "$INSTDIR\Skins" "$INSTDIR\Defaults\Skins" - - Rename "$INSTDIR\Themes" "$INSTDIR\Defaults\Layouts" - Rename "$INSTDIR\Defaults\Themes" "$INSTDIR\Defaults\Layouts" - ${Locate} "$INSTDIR\Defaults\Layouts" "/L=F /M=Rainmeter.thm /G=1" "RenameToRainmeterIni" - - ${If} ${FileExists} "$INSTDIR\Addons\Backup" - ${OrIf} ${FileExists} "$INSTDIR\Plugins\Backup" - CreateDirectory "$INSTDIR\Defaults\Backup" - Rename "$INSTDIR\Addons\Backup" "$INSTDIR\Defaults\Backup\Addons" - Rename "$INSTDIR\Plugins\Backup" "$INSTDIR\Defaults\Backup\Plugins" - ${EndIf} - - Rename "$INSTDIR\Addons" "$INSTDIR\Defaults\Addons" - ${Locate} "$INSTDIR\Plugins" "/L=F /M=*.dll /G=0" "MoveNonDefaultPlugins" - ${EndIf} - -!ifdef INCLUDEFILES - File "..\..\Application\Rainmeter.exe.config" - - ${If} $instArc == "x86" - !insertmacro InstallFiles "x32" "x86" - ${Else} - !insertmacro InstallFiles "x64" "x64" - ${EndIf} - - RMDir /r "$INSTDIR\Languages" - SetOutPath "$INSTDIR\Languages" - File "..\..\x32-Release\Languages\*.*" - - SetOutPath "$INSTDIR\Defaults\Skins" - RMDir /r "$INSTDIR\Skins\illustro" - Delete "$INSTDIR\Skins\*.txt" - File /r "..\Skins\*.*" - - SetOutPath "$INSTDIR\Defaults\Layouts" - File /r "..\Layouts\*.*" -!endif - - SetOutPath "$INSTDIR" - - ${If} $InstallPortable <> 1 - ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "" - WriteRegStr HKLM "SOFTWARE\Rainmeter" "" "$INSTDIR" - WriteRegStr HKLM "SOFTWARE\Rainmeter" "Language" "$LANGUAGE" - WriteRegDWORD HKLM "SOFTWARE\Rainmeter" "NonDefault" $NonDefaultLanguage - - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayName" "Rainmeter" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayIcon" "$INSTDIR\Rainmeter.exe,0" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "URLInfoAbout" "http://rainmeter.net" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "UninstallString" "$INSTDIR\uninst.exe" - -!ifdef BETA - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} beta r${VERSION_REVISION}" -!else - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} r${VERSION_REVISION}" -!endif - - ; Create .rmskin association - WriteRegStr HKCR ".rmskin" "" "Rainmeter.SkinInstaller" - DeleteRegKey HKCR "Rainmeter skin" ; Old key - WriteRegStr HKCR "Rainmeter.SkinInstaller" "" "Rainmeter Skin Installer" - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell" "" "open" - WriteRegStr HKCR "Rainmeter.SkinInstaller\DefaultIcon" "" "$INSTDIR\SkinInstaller.exe,0" - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\open\command" "" '"$INSTDIR\SkinInstaller.exe" %1' - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit" "" "Install Rainmeter skin" - WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit\command" "" '"$INSTDIR\SkinInstaller.exe" %1' - - ; If .inc isn't associated, use the .ini association for it. - ReadRegStr $1 HKCR ".inc" "" - ${If} $1 == "" - ReadRegStr $1 HKCR ".ini" "" - ${If} $1 != "" - WriteRegStr HKCR ".inc" "" "$1" - ${EndIf} - ${EndIf} - - ; Refresh shell icons if new install - ${If} $0 == "" - ${RefreshShellIcons} - ${EndIf} - - ; Remove all start menu shortcuts - SetShellVarContext all - Call RemoveStartMenuShortcuts - - StrCpy $0 "$SMPROGRAMS\Rainmeter.lnk" - ${If} ${FileExists} "$SMPROGRAMS\Rainmeter" - StrCpy $0 "$SMPROGRAMS\Rainmeter\Rainmeter.lnk" - ${EndIf} - CreateShortcut "$0" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 - - ${If} $AutoStartup = 1 - ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" - ; Remove user shortcut to prevent duplicate with all users shortcut - !insertmacro UAC_AsUser_Call Function RemoveUserStartupShortcut ${UAC_SYNCREGISTERS} - ${Else} - !insertmacro UAC_AsUser_Call Function CreateUserStartupShortcut ${UAC_SYNCREGISTERS} - ${EndIf} - ${EndIf} - - SetShellVarContext current - Call RemoveStartMenuShortcuts - - !insertmacro UAC_AsUser_Call Function RemoveStartMenuShortcuts ${UAC_SYNCREGISTERS} - - WriteUninstaller "$INSTDIR\uninst.exe" - ${Else} - ${IfNot} ${FileExists} "Rainmeter.ini" - CopyFiles /SILENT "$INSTDIR\Defaults\Layouts\illustro default\Rainmeter.ini" "$INSTDIR\Rainmeter.ini" - ${EndIf} - - WriteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "Language" "$LANGUAGE" - ${EndIf} -SectionEnd - -Function CopyIniToAppData - ClearErrors - CreateDirectory "$APPDATA\Rainmeter" - CopyFiles /SILENT "$INSTDIR\Rainmeter.ini" "$APPDATA\Rainmeter\Rainmeter.ini" - ${If} ${Errors} - StrCpy $0 0 - ${EndIf} -FunctionEnd - -Function RenameToRainmeterIni - ${If} ${FileExists} "$R8\Rainmeter.ini" - Delete "$R8\Rainmeter.thm" - ${Else} - Rename "$R9" "$R8\Rainmeter.ini" - ${EndIf} - - Push $0 -FunctionEnd - -Function MoveNonDefaultPlugins - ${If} $R7 != "AdvancedCPU.dll" - ${AndIf} $R7 != "CoreTemp.dll" - ${AndIf} $R7 != "FileView.dll" - ${AndIf} $R7 != "FolderInfo.dll" - ${AndIf} $R7 != "InputText.dll" - ${AndIf} $R7 != "iTunesPlugin.dll" - ${AndIf} $R7 != "MediaKey.dll" - ${AndIf} $R7 != "NowPlaying.dll" - ${AndIf} $R7 != "PerfMon.dll" - ${AndIf} $R7 != "PingPlugin.dll" - ${AndIf} $R7 != "PowerPlugin.dll" - ${AndIf} $R7 != "Process.dll" - ${AndIf} $R7 != "QuotePlugin.dll" - ${AndIf} $R7 != "RecycleManager.dll" - ${AndIf} $R7 != "ResMon.dll" - ${AndIf} $R7 != "SpeedFanPlugin.dll" - ${AndIf} $R7 != "SysInfo.dll" - ${AndIf} $R7 != "VirtualDesktops.dll" - ${AndIf} $R7 != "WebParser.dll" - ${AndIf} $R7 != "WifiStatus.dll" - ${AndIf} $R7 != "Win7AudioPlugin.dll" - ${AndIf} $R7 != "WindowMessagePlugin.dll" - CreateDirectory "$INSTDIR\Defaults\Plugins" - Delete "$INSTDIR\Defaults\Plugins\$R7" - Rename "$R9" "$INSTDIR\Defaults\Plugins\$R7" - ${EndIf} - - Push $0 -FunctionEnd - -Function RemoveStartMenuShortcuts - !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" -FunctionEnd - -Function CreateUserStartupShortcut - SetShellVarContext current - CreateShortcut "$SMSTARTUP\Rainmeter.lnk" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 -FunctionEnd - -Function RemoveUserStartupShortcut - SetShellVarContext current - Delete "$SMSTARTUP\Rainmeter.lnk" -FunctionEnd - -Function FinishRun - !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\Rainmeter.exe" "" "" "" -FunctionEnd - - -; Uninstall -; -------------------------------------- -Function un.onInit -UAC_TryAgain: - ; Request administrative rights - !insertmacro UAC_RunElevated - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} - ${IfThen} $3 <> 0 ${|} ${Break} ${|} - ${If} $1 = 3 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 - ${EndIf} - ${Case} 1223 - Quit - ${Case} 1062 - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" - Quit - ${Default} - MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" - Quit - ${EndSwitch} - - ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" - ${If} $0 != "" - StrCpy $LANGUAGE $0 - ${EndIf} -FunctionEnd - -Function un.PageOptions - !insertmacro MUI_HEADER_TEXT "$(UNSTALLOPTIONS)" "$(UNSTALLOPTIONSDESC)" - nsDialogs::Create 1018 - nsDialogs::SetRTL $(^RTL) - - ${NSD_CreateCheckbox} 0 0u 95% 12u "$(UNSTALLRAINMETER)" - Pop $0 - EnableWindow $0 0 - ${NSD_Check} $0 - - ${NSD_CreateCheckbox} 0 15u 70% 12u "$(UNSTALLSETTINGS)" - Pop $R0 - - ${NSD_CreateLabel} 16 26u 95% 12u "$(UNSTALLSETTINGSDESC)" - - nsDialogs::Show -FunctionEnd - -Function un.GetOptions - ${NSD_GetState} $R0 $un.DeleteAll -FunctionEnd - -Section Uninstall - ; Close Rainmeter (and wait up to five seconds) - ${ForEach} $0 10 0 - 1 - FindWindow $1 "DummyRainWClass" "Rainmeter control window" - ClearErrors - Delete "$INSTDIR\Rainmeter.exe" - ${If} $1 = 0 - ${AndIfNot} ${Errors} - ${Break} - ${EndIf} - - SendMessage $1 ${WM_CLOSE} 0 0 - - ${If} $0 = 0 - ${If} ${Silent} - SetErrorLevel ${ERROR_CLOSEFAIL} - Quit - ${Else} - MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 - Quit - ${EndIf} - ${EndIf} - - Sleep 500 - ${Next} - - ; Old stuff - RMDir /r "$INSTDIR\Addons" - RMDir /r "$INSTDIR\Fonts" - - RMDir /r "$INSTDIR\Defaults" - RMDir /r "$INSTDIR\Languages" - RMDir /r "$INSTDIR\Plugins" - RMDir /r "$INSTDIR\Runtime" - RMDir /r "$INSTDIR\Skins" - Delete "$INSTDIR\Rainmeter.dll" - Delete "$INSTDIR\Rainmeter.exe" - Delete "$INSTDIR\Rainmeter.exe.config" - Delete "$INSTDIR\SkinInstaller.exe" - Delete "$INSTDIR\SkinInstaller.dll" - Delete "$INSTDIR\uninst.exe" - - RMDir "$INSTDIR" - - SetShellVarContext all - RMDir /r "$APPDATA\Rainstaller" - - SetShellVarContext current - Call un.RemoveShortcuts - ${If} $un.DeleteAll = 1 - RMDir /r "$APPDATA\Rainmeter" - RMDir /r "$DOCUMENTS\Rainmeter\Skins" - RMDir "$DOCUMENTS\Rainmeter" - RMDir /r "$1\Rainmeter" - ${EndIf} - - !insertmacro UAC_AsUser_Call Function un.RemoveShortcuts ${UAC_SYNCREGISTERS} - ${If} $un.DeleteAll = 1 - RMDir /r "$APPDATA\Rainmeter" - RMDir /r "$DOCUMENTS\Rainmeter\Skins" - RMDir "$DOCUMENTS\Rainmeter" - ${EndIf} - - SetShellVarContext all - Call un.RemoveShortcuts - Delete "$SMPROGRAMS\Rainmeter.lnk" - - DeleteRegKey HKLM "SOFTWARE\Rainmeter" - DeleteRegKey HKCR ".rmskin" - DeleteRegKey HKCR "Rainmeter.SkinInstaller" - DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" - ${RefreshShellIcons} -SectionEnd - -Function un.RemoveShortcuts - !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" - Delete "$SMSTARTUP\Rainmeter.lnk" - Delete "$DESKTOP\Rainmeter.lnk" -FunctionEnd +/* + Copyright (C) 2012 Birunthan Mohanathas + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +!verbose 3 +!addplugindir ".\" +!include "MUI2.nsh" +!include "x64.nsh" +!include "FileFunc.nsh" +!include "WordFunc.nsh" +!include "WinVer.nsh" +!include "UAC.nsh" + +!ifndef OUTFILE + !define OUTFILE "Rainmeter-test.exe" + !define VERSION_FULL "0.0.0.0" + !define VERSION_SHORT "0.0" + !define VERSION_REVISION "000" +!else + !define INCLUDEFILES +!endif + +Name "Rainmeter" +VIAddVersionKey "ProductName" "Rainmeter" +VIAddVersionKey "FileDescription" "Rainmeter Installer" +VIAddVersionKey "FileVersion" "${VERSION_FULL}" +VIAddVersionKey "ProductVersion" "${VERSION_FULL}" +VIAddVersionKey "OriginalFilename" "${OUTFILE}" +VIAddVersionKey "LegalCopyright" "Copyright (C) 2009-2013 - All authors" +VIProductVersion "${VERSION_FULL}" +BrandingText " " +SetCompressor /SOLID lzma +RequestExecutionLevel user +InstallDirRegKey HKLM "SOFTWARE\Rainmeter" "" +ShowInstDetails nevershow +AllowSkipFiles off +XPStyle on +OutFile "..\${OUTFILE}" +ReserveFile "${NSISDIR}\Plugins\LangDLL.dll" +ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll" +ReserveFile "${NSISDIR}\Plugins\System.dll" +ReserveFile ".\UAC.dll" + +!define REQUIREDSPACE 5 ; Minimum required space for install (in MB) + +; Error levels (for silent install) +!define ERROR_UNSUPPORTED 3 +!define ERROR_NOTADMIN 4 +!define ERROR_WRITEFAIL 5 +!define ERROR_NOVCREDIST 6 +!define ERROR_CLOSEFAIL 7 + +; Additional Windows definitions +!define BCM_SETSHIELD 0x0000160c +!define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 +!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 + +!define MUI_ICON ".\Icon.ico" +!define MUI_UNICON ".\Icon.ico" +!define MUI_WELCOMEFINISHPAGE_BITMAP ".\Wizard.bmp" +!define MUI_FINISHPAGE_RUN +!define MUI_FINISHPAGE_RUN_FUNCTION FinishRun +!define MUI_WELCOMEPAGE ; For language strings + +Page custom PageWelcome PageWelcomeOnLeave +Page custom PageOptions PageOptionsOnLeave +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +UninstPage custom un.PageOptions un.GetOptions +!insertmacro MUI_UNPAGE_INSTFILES + +; Include languages +!macro IncludeLanguage LANGUAGE CUSTOMLANGUAGE + !insertmacro MUI_LANGUAGE ${LANGUAGE} + !insertmacro LANGFILE_INCLUDE "..\..\Language\${CUSTOMLANGUAGE}.nsh" +!macroend +!define IncludeLanguage "!insertmacro IncludeLanguage" +!include "Languages.nsh" + +Var NonDefaultLanguage +Var AutoStartup +Var Install64Bit +Var InstallPortable +Var un.DeleteAll + +; Install +; -------------------------------------- +Function .onInit + ${If} ${RunningX64} + ${EnableX64FSRedirection} + ${EndIf} + + ${IfNot} ${UAC_IsInnerInstance} + ${If} ${IsWin2000} + ${OrIf} ${IsWinXP} + ${AndIf} ${AtMostServicePack} 2 + ${OrIf} ${IsWin2003} + ${AndIf} ${AtMostServicePack} 0 + ${IfNot} ${Silent} + MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires Windows XP SP3 or later." + ${EndIf} + SetErrorLevel ${ERROR_UNSUPPORTED} + Quit + ${EndIf} + + System::Call 'kernel32::IsProcessorFeaturePresent(i${PF_XMMI_INSTRUCTIONS_AVAILABLE})i.r0' + ${If} $0 = 0 + ${IfNot} ${Silent} + MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires a Pentium III or later processor." + ${EndIf} + SetErrorLevel ${ERROR_UNSUPPORTED} + Quit + ${EndIf} + + ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" + ReadRegDWORD $NonDefaultLanguage HKLM "SOFTWARE\Rainmeter" "NonDefault" + + ${IfNot} ${Silent} + ${If} $0 == "" + ${OrIf} $0 <> $LANGUAGE + ${AndIf} $NonDefaultLanguage != 1 + ; New install or better match + LangDLL::LangDialog "$(^SetupCaption)" "Please select the installer language.$\n$(SELECTLANGUAGE)" AC ${LANGDLL_PARAMS} "" + Pop $0 + ${If} $0 == "cancel" + Abort + ${EndIf} + + ${If} $0 <> $LANGUAGE + ; User selected non-default language + StrCpy $NonDefaultLanguage 1 + ${EndIf} + ${EndIf} + + StrCpy $LANGUAGE $0 + ${Else} + ${If} $0 != "" + StrCpy $LANGUAGE $0 + ${EndIf} + + ${GetParameters} $R1 + + ClearErrors + ${GetOptions} $R1 "/LANGUAGE=" $0 + ${IfNot} ${Errors} + ${If} $LANGUAGE != $0 + StrCpy $NonDefaultLanguage 1 + ${EndIf} + + StrCpy $LANGUAGE $0 + ${EndIf} + + ${GetOptions} $R1 "/STARTUP=" $0 + ${If} $0 = 1 + StrCpy $AutoStartup 1 + ${EndIf} + + ${GetOptions} $R1 "/PORTABLE=" $0 + ${If} $0 = 1 + StrCpy $InstallPortable 1 + ${Else} + ${IfNot} ${UAC_IsAdmin} + SetErrorLevel ${ERROR_NOTADMIN} + Quit + ${EndIf} + ${EndIf} + + ${GetOptions} $R1 "/VERSION=" $0 + ${If} $0 = 64 + StrCpy $Install64Bit 1 + + ${If} $INSTDIR == "" + StrCpy $INSTDIR "$PROGRAMFILES64\Rainmeter" + ${EndIf} + ${Else} + ${If} $INSTDIR == "" + StrCpy $INSTDIR "$PROGRAMFILES\Rainmeter" + ${EndIf} + ${EndIf} + + ClearErrors + CreateDirectory "$INSTDIR" + WriteINIStr "$INSTDIR\writetest~.rm" "1" "1" "1" + Delete "$INSTDIR\writetest~.rm" + + ${If} ${Errors} + RMDir "$INSTDIR" + SetErrorLevel ${ERROR_WRITEFAIL} + Quit + ${EndIf} + ${EndIf} + + ; If the language was set to a non-existent language, reset it back to English. + ${WordFind} ",${LANGUAGE_IDS}" ",$LANGUAGE," "E+1{" $0 + ${If} ${Errors} + StrCpy $LANGUAGE "1033" + ${EndIf} + ${Else} + ; Exchange settings with user instance + !insertmacro UAC_AsUser_Call Function ExchangeSettings ${UAC_SYNCREGISTERS} + StrCpy $AutoStartup $1 + StrCpy $Install64Bit $2 + StrCpy $NonDefaultLanguage $3 + StrCpy $LANGUAGE $4 + StrCpy $INSTDIR $5 + ${EndIf} +FunctionEnd + +Function ExchangeSettings + StrCpy $1 $AutoStartup + StrCpy $2 $Install64Bit + StrCpy $3 $NonDefaultLanguage + StrCpy $4 $LANGUAGE + StrCpy $5 $INSTDIR + HideWindow +FunctionEnd + +Function PageWelcome + ${If} ${UAC_IsInnerInstance} + ${If} ${UAC_IsAdmin} + ; Skip page + Abort + ${Else} + MessageBox MB_OK|MB_ICONSTOP "$(ADMINERROR) (Inner)" + Quit + ${EndIf} + ${EndIf} + + !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(^ComponentsSubText1)" + nsDialogs::Create 1044 + Pop $0 + nsDialogs::SetRTL $(^RTL) + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${NSD_CreateBitmap} 0u 0u 109u 193u "" + Pop $0 + ${NSD_SetImage} $0 "$PLUGINSDIR\modern-wizard.bmp" $R0 + + ${NSD_CreateLabel} 120u 10u 195u 38u "$(MUI_TEXT_WELCOME_INFO_TITLE)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + CreateFont $1 "$(^Font)" "12" "700" + SendMessage $0 ${WM_SETFONT} $1 0 + + ${NSD_CreateLabel} 120u 55u 195u 12u "$(^ComponentsSubText1)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${NSD_CreateRadioButton} 120u 70u 205u 12u "$(STANDARDINST)" + Pop $R1 + SetCtlColors $R1 "" "${MUI_BGCOLOR}" + ${NSD_AddStyle} $R1 ${WS_GROUP} + SendMessage $R1 ${WM_SETFONT} $mui.Header.Text.Font 0 + + ${NSD_CreateLabel} 132u 82u 185u 24u "$(STANDARDINSTDESC)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${NSD_CreateRadioButton} 120u 106u 310u 12u "$(PORTABLEINST)" + Pop $R2 + SetCtlColors $R2 "" "${MUI_BGCOLOR}" + ${NSD_AddStyle} $R2 ${WS_TABSTOP} + SendMessage $R2 ${WM_SETFONT} $mui.Header.Text.Font 0 + + ${NSD_CreateLabel} 132u 118u 185u 52u "$(PORTABLEINSTDESC)" + Pop $0 + SetCtlColors $0 "" "${MUI_BGCOLOR}" + + ${If} $InstallPortable = 1 + ${NSD_Check} $R2 + ${Else} + ${NSD_Check} $R1 + ${EndIf} + + Call muiPageLoadFullWindow + + nsDialogs::Show + ${NSD_FreeImage} $R0 +FunctionEnd + +Function PageWelcomeOnLeave + ${NSD_GetState} $R2 $InstallPortable + Call muiPageUnloadFullWindow +FunctionEnd + +Function PageOptions + ${If} ${UAC_IsInnerInstance} + ${AndIf} ${UAC_IsAdmin} + ; Skip page + Abort + ${EndIf} + + !insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(INSTALLOPTIONSDESC)" + nsDialogs::Create 1018 + nsDialogs::SetRTL $(^RTL) + + ${NSD_CreateGroupBox} 0 0u -1u 36u "$(^DirSubText)" + + ${NSD_CreateDirRequest} 6u 14u 232u 14u "" + Pop $R0 + ${NSD_OnChange} $R0 PageOptionsDirectoryOnChange + + ${NSD_CreateBrowseButton} 242u 14u 50u 14u "$(^BrowseBtn)" + Pop $R1 + ${NSD_OnClick} $R1 PageOptionsBrowseOnClick + + StrCpy $1 0 + + StrCpy $R2 0 + ${If} ${RunningX64} + ${If} $InstallPortable = 1 + ${OrIf} $INSTDIR == "" + ${NSD_CreateCheckBox} 6u 54u 285u 12u "$(INSTALL64BIT)" + Pop $R2 + StrCpy $1 30u + ${EndIf} + ${EndIf} + + ${If} $InstallPortable <> 1 + ${If} $1 = 0 + StrCpy $0 54u + StrCpy $1 30u + ${Else} + StrCpy $0 66u + StrCpy $1 42u + ${EndIf} + + ${NSD_CreateCheckbox} 6u $0 285u 12u "$(AUTOSTARTUP)" + Pop $R3 + + ${If} $INSTDIR == "" + ${NSD_Check} $R3 + ${Else} + SetShellVarContext all + ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" + ${NSD_Check} $R3 + ${EndIf} + + SetShellVarContext current + ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" + ${NSD_Check} $R3 + ${EndIf} + ${EndIf} + ${Else} + StrCpy $R3 0 + ${EndIf} + + ${If} $1 <> 0 + ${NSD_CreateGroupBox} 0 42u -1u $1 "$(ADDITIONALOPTIONS)" + ${EndIf} + + ; Set default directory + ${If} $InstallPortable = 1 + ${GetRoot} "$WINDIR" $0 + ${NSD_SetText} $R0 "$0\Rainmeter" + ${Else} + ; Disable Directory editbox and Browse button if already installed + SendMessage $R0 ${EM_SETREADONLY} 1 0 + + ${If} $INSTDIR != "" + EnableWindow $R1 0 + ${NSD_SetText} $R0 "$INSTDIR" + ${Else} + ; Fresh install + ${If} ${RunningX64} + ${NSD_SetText} $R0 "$PROGRAMFILES64\Rainmeter" + ${NSD_Check} $R2 + ${Else} + ${NSD_SetText} $R0 "$PROGRAMFILES\Rainmeter" + ${EndIf} + ${EndIf} + ${EndIf} + + ; Show UAC shield on Install button if requiredd + GetDlgItem $0 $HWNDPARENT 1 + ${If} $InstallPortable = 1 + SendMessage $0 ${BCM_SETSHIELD} 0 0 + ${Else} + SendMessage $0 ${BCM_SETSHIELD} 0 1 + + ; Hide Back button + GetDlgItem $0 $HWNDPARENT 3 + ShowWindow $0 ${SW_HIDE} + ${EndIf} + + nsDialogs::Show +FunctionEnd + +Function PageOptionsDirectoryOnChange + ${NSD_GetText} $R0 $0 + + ; Disable Install button if not enough space + GetDlgItem $1 $HWNDPARENT 1 + ${GetRoot} $0 $2 + ${DriveSpace} "$2\" "/D=F /S=M" $3 + ${If} $3 < ${REQUIREDSPACE} + EnableWindow $1 0 + ${Else} + EnableWindow $1 1 + ${EndIf} + + StrCpy $Install64Bit 0 + ${If} ${RunningX64} + ${If} ${FileExists} "$0\Rainmeter.exe" + MoreInfo::GetProductVersion "$0\Rainmeter.exe" + Pop $0 + StrCpy $0 $0 2 -7 + ${If} $0 == 64 + StrCpy $Install64Bit 1 + ${EndIf} + + ${If} $R2 != 0 + ${NSD_SetState} $R2 $Install64Bit + EnableWindow $R2 0 + ${EndIf} + ${Else} + ${If} $R2 != 0 + EnableWindow $R2 1 + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + +Function PageOptionsBrowseOnClick + ${NSD_GetText} $R0 $0 + nsDialogs::SelectFolderDialog "$(^DirBrowseText)" $0 + Pop $1 + ${If} $1 != error + ${NSD_SetText} $R0 $1 + ${EndIf} +FunctionEnd + +Function PageOptionsOnLeave + ; Verify that selected folder is writable + ${NSD_GetText} $R0 $0 + ${If} $InstallPortable = 1 + ClearErrors + CreateDirectory "$0" + WriteINIStr "$0\writetest~.rm" "1" "1" "1" + Delete "$0\writetest~.rm" + + ${If} ${Errors} + RMDir "$0" + MessageBox MB_OK|MB_ICONEXCLAMATION "$(WRITEERROR)" + Abort + ${EndIf} + + RMDir "$0" + ${EndIf} + + StrCpy $INSTDIR $0 + + GetDlgItem $0 $HWNDPARENT 1 + EnableWindow $0 0 + + ${If} $R2 != 0 + ${NSD_GetState} $R2 $Install64Bit + ${EndIf} + + ${If} $R3 != 0 + ${NSD_GetState} $R3 $AutoStartup + ${EndIf} + + ${If} $InstallPortable <> 1 + ${IfNot} ${UAC_IsAdmin} + ; UAC_IsAdmin seems to return incorrect result sometimes. Recheck with UserInfo::GetAccountType to be sure. + UserInfo::GetAccountType + Pop $0 + ${If} $0 != "Admin" +UAC_TryAgain: + !insertmacro UAC_RunElevated + ${Switch} $0 + ${Case} 0 + ${IfThen} $1 = 1 ${|} Quit ${|} + ${IfThen} $3 <> 0 ${|} ${Break} ${|} + ${If} $1 = 3 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 + ${EndIf} + ${Case} 1223 + Quit + ${Case} 1062 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" + Quit + ${Default} + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" + Quit + ${EndSwitch} + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + +!macro InstallFiles DIR ARCH + SetOutPath "$INSTDIR" + File "..\..\${DIR}-Release\Rainmeter.exe" + File "..\..\${DIR}-Release\Rainmeter.dll" + File "..\..\${DIR}-Release\SkinInstaller.exe" + File "..\..\${DIR}-Release\SkinInstaller.dll" + + SetOutPath "$INSTDIR\Plugins" + File /x *Example*.dll "..\..\${DIR}-Release\Plugins\*.dll" + + SetOutPath "$INSTDIR\Runtime" + File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcp120.dll" + File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcr120.dll" +!macroend + +!macro RemoveStartMenuShortcuts STARTMENUPATH + Delete "${STARTMENUPATH}\Rainmeter.lnk" + Delete "${STARTMENUPATH}\Rainmeter Help.lnk" + Delete "${STARTMENUPATH}\Rainmeter Help.URL" + Delete "${STARTMENUPATH}\Remove Rainmeter.lnk" + Delete "${STARTMENUPATH}\RainThemes.lnk" + Delete "${STARTMENUPATH}\RainThemes Help.lnk" + Delete "${STARTMENUPATH}\RainBrowser.lnk" + Delete "${STARTMENUPATH}\RainBackup.lnk" + Delete "${STARTMENUPATH}\Rainstaller.lnk" + Delete "${STARTMENUPATH}\Skin Installer.lnk" + Delete "${STARTMENUPATH}\Rainstaller Help.lnk" + RMDir "${STARTMENUPATH}" +!macroend + +Section + SetOutPath "$PLUGINSDIR" + SetShellVarContext current + + Var /GLOBAL InstArc + ${If} $Install64Bit = 1 + StrCpy $InstArc "x64" + ${Else} + StrCpy $InstArc "x86" + ${EndIf} + + ${If} $InstallPortable <> 1 + ${AndIfNot} ${AtLeastWinVista} + ; Download and install .NET if required + ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install" + ${If} $0 <> 1 + ${If} $Install64Bit <> 1 + NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe" "$PLUGINSDIR\dotnetfx.exe" + ${Else} + NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe" "$PLUGINSDIR\dotnetfx.exe" + ${EndIf} + Pop $0 + + ${If} $0 == "success" + ExecWait '"$PLUGINSDIR\dotnetfx.exe" /q:a /c:"install /q"' $0 + Delete "$PLUGINSDIR\dotnetfx.exe" + + ${If} $0 = 3010 + SetRebootFlag true + ${ElseIf} $0 <> 0 + MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" + Quit + ${EndIf} + ${ElseIf} $0 == "cancel" + Quit + ${Else} + MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)" + Quit + ${EndIf} + ${EndIf} + ${EndIf} + + SetOutPath "$INSTDIR" + + ; Close Rainmeter (and wait up to five seconds) + ${ForEach} $0 10 0 - 1 + FindWindow $1 "DummyRainWClass" "Rainmeter control window" + ClearErrors + Delete "$INSTDIR\Rainmeter.exe" + ${If} $1 = 0 + ${AndIfNot} ${Errors} + ${Break} + ${EndIf} + + SendMessage $1 ${WM_CLOSE} 0 0 + + ${If} $0 = 0 + ${If} ${Silent} + SetErrorLevel ${ERROR_CLOSEFAIL} + Quit + ${Else} + MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 + Quit + ${EndIf} + ${EndIf} + + Sleep 500 + ${Next} + + ; Move Rainmeter.ini to %APPDATA% if needed + ${IfNot} ${Silent} + ${AndIf} ${FileExists} "$INSTDIR\Rainmeter.ini" + ${If} $InstallPortable <> 1 + ${If} $Install64Bit = 1 + ${AndIf} "$INSTDIR" == "$PROGRAMFILES64\Rainmeter" + ${OrIf} "$INSTDIR" == "$PROGRAMFILES\Rainmeter" + MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(SETTINGSFILEERROR)" IDNO SkipIniMove + StrCpy $0 1 + !insertmacro UAC_AsUser_Call Function CopyIniToAppData ${UAC_SYNCREGISTERS} + ${If} $0 = 1 + ; Copy succeeded + Delete "$INSTDIR\Rainmeter.ini" + ${Else} + MessageBox MB_OK|MB_ICONSTOP "$(SETTINGSMOVEERROR)" + ${EndIf} +SkipIniMove: + ${EndIf} + ${Else} + ReadINIStr $0 "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" + ${If} $0 == "$INSTDIR\Skins\" + DeleteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath" + ${EndIf} + ${EndIf} + ${EndIf} + + SetOutPath "$INSTDIR" + + ; Cleanup old stuff + Delete "$INSTDIR\Rainmeter.chm" + Delete "$INSTDIR\Default.ini" + Delete "$INSTDIR\Launcher.exe" + Delete "$INSTDIR\Defaults\Plugins\FileView.dll" + RMDir /r "$INSTDIR\Addons\Rainstaller" + RMDir /r "$INSTDIR\Addons\RainBackup" + + ${If} $InstallPortable <> 1 + CreateDirectory "$INSTDIR\Defaults" + Rename "$INSTDIR\Skins" "$INSTDIR\Defaults\Skins" + + Rename "$INSTDIR\Themes" "$INSTDIR\Defaults\Layouts" + Rename "$INSTDIR\Defaults\Themes" "$INSTDIR\Defaults\Layouts" + ${Locate} "$INSTDIR\Defaults\Layouts" "/L=F /M=Rainmeter.thm /G=1" "RenameToRainmeterIni" + + ${If} ${FileExists} "$INSTDIR\Addons\Backup" + ${OrIf} ${FileExists} "$INSTDIR\Plugins\Backup" + CreateDirectory "$INSTDIR\Defaults\Backup" + Rename "$INSTDIR\Addons\Backup" "$INSTDIR\Defaults\Backup\Addons" + Rename "$INSTDIR\Plugins\Backup" "$INSTDIR\Defaults\Backup\Plugins" + ${EndIf} + + Rename "$INSTDIR\Addons" "$INSTDIR\Defaults\Addons" + ${Locate} "$INSTDIR\Plugins" "/L=F /M=*.dll /G=0" "MoveNonDefaultPlugins" + ${EndIf} + +!ifdef INCLUDEFILES + File "..\..\Application\Rainmeter.exe.config" + + ${If} $instArc == "x86" + !insertmacro InstallFiles "x32" "x86" + ${Else} + !insertmacro InstallFiles "x64" "x64" + ${EndIf} + + RMDir /r "$INSTDIR\Languages" + SetOutPath "$INSTDIR\Languages" + File "..\..\x32-Release\Languages\*.*" + + SetOutPath "$INSTDIR\Defaults\Skins" + RMDir /r "$INSTDIR\Skins\illustro" + Delete "$INSTDIR\Skins\*.txt" + File /r "..\Skins\*.*" + + SetOutPath "$INSTDIR\Defaults\Layouts" + File /r "..\Layouts\*.*" +!endif + + SetOutPath "$INSTDIR" + + ${If} $InstallPortable <> 1 + ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "" + WriteRegStr HKLM "SOFTWARE\Rainmeter" "" "$INSTDIR" + WriteRegStr HKLM "SOFTWARE\Rainmeter" "Language" "$LANGUAGE" + WriteRegDWORD HKLM "SOFTWARE\Rainmeter" "NonDefault" $NonDefaultLanguage + + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayName" "Rainmeter" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayIcon" "$INSTDIR\Rainmeter.exe,0" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "URLInfoAbout" "http://rainmeter.net" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "UninstallString" "$INSTDIR\uninst.exe" + +!ifdef BETA + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} beta r${VERSION_REVISION}" +!else + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} r${VERSION_REVISION}" +!endif + + ; Create .rmskin association + WriteRegStr HKCR ".rmskin" "" "Rainmeter.SkinInstaller" + DeleteRegKey HKCR "Rainmeter skin" ; Old key + WriteRegStr HKCR "Rainmeter.SkinInstaller" "" "Rainmeter Skin Installer" + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell" "" "open" + WriteRegStr HKCR "Rainmeter.SkinInstaller\DefaultIcon" "" "$INSTDIR\SkinInstaller.exe,0" + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\open\command" "" '"$INSTDIR\SkinInstaller.exe" %1' + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit" "" "Install Rainmeter skin" + WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit\command" "" '"$INSTDIR\SkinInstaller.exe" %1' + + ; If .inc isn't associated, use the .ini association for it. + ReadRegStr $1 HKCR ".inc" "" + ${If} $1 == "" + ReadRegStr $1 HKCR ".ini" "" + ${If} $1 != "" + WriteRegStr HKCR ".inc" "" "$1" + ${EndIf} + ${EndIf} + + ; Refresh shell icons if new install + ${If} $0 == "" + ${RefreshShellIcons} + ${EndIf} + + ; Remove all start menu shortcuts + SetShellVarContext all + Call RemoveStartMenuShortcuts + + StrCpy $0 "$SMPROGRAMS\Rainmeter.lnk" + ${If} ${FileExists} "$SMPROGRAMS\Rainmeter" + StrCpy $0 "$SMPROGRAMS\Rainmeter\Rainmeter.lnk" + ${EndIf} + CreateShortcut "$0" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 + + ${If} $AutoStartup = 1 + ${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk" + ; Remove user shortcut to prevent duplicate with all users shortcut + !insertmacro UAC_AsUser_Call Function RemoveUserStartupShortcut ${UAC_SYNCREGISTERS} + ${Else} + !insertmacro UAC_AsUser_Call Function CreateUserStartupShortcut ${UAC_SYNCREGISTERS} + ${EndIf} + ${EndIf} + + SetShellVarContext current + Call RemoveStartMenuShortcuts + + !insertmacro UAC_AsUser_Call Function RemoveStartMenuShortcuts ${UAC_SYNCREGISTERS} + + WriteUninstaller "$INSTDIR\uninst.exe" + ${Else} + ${IfNot} ${FileExists} "Rainmeter.ini" + CopyFiles /SILENT "$INSTDIR\Defaults\Layouts\illustro default\Rainmeter.ini" "$INSTDIR\Rainmeter.ini" + ${EndIf} + + WriteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "Language" "$LANGUAGE" + ${EndIf} +SectionEnd + +Function CopyIniToAppData + ClearErrors + CreateDirectory "$APPDATA\Rainmeter" + CopyFiles /SILENT "$INSTDIR\Rainmeter.ini" "$APPDATA\Rainmeter\Rainmeter.ini" + ${If} ${Errors} + StrCpy $0 0 + ${EndIf} +FunctionEnd + +Function RenameToRainmeterIni + ${If} ${FileExists} "$R8\Rainmeter.ini" + Delete "$R8\Rainmeter.thm" + ${Else} + Rename "$R9" "$R8\Rainmeter.ini" + ${EndIf} + + Push $0 +FunctionEnd + +Function MoveNonDefaultPlugins + ${If} $R7 != "AdvancedCPU.dll" + ${AndIf} $R7 != "CoreTemp.dll" + ${AndIf} $R7 != "FileView.dll" + ${AndIf} $R7 != "FolderInfo.dll" + ${AndIf} $R7 != "InputText.dll" + ${AndIf} $R7 != "iTunesPlugin.dll" + ${AndIf} $R7 != "MediaKey.dll" + ${AndIf} $R7 != "NowPlaying.dll" + ${AndIf} $R7 != "PerfMon.dll" + ${AndIf} $R7 != "PingPlugin.dll" + ${AndIf} $R7 != "PowerPlugin.dll" + ${AndIf} $R7 != "Process.dll" + ${AndIf} $R7 != "QuotePlugin.dll" + ${AndIf} $R7 != "RecycleManager.dll" + ${AndIf} $R7 != "ResMon.dll" + ${AndIf} $R7 != "SpeedFanPlugin.dll" + ${AndIf} $R7 != "SysInfo.dll" + ${AndIf} $R7 != "VirtualDesktops.dll" + ${AndIf} $R7 != "WebParser.dll" + ${AndIf} $R7 != "WifiStatus.dll" + ${AndIf} $R7 != "Win7AudioPlugin.dll" + ${AndIf} $R7 != "WindowMessagePlugin.dll" + CreateDirectory "$INSTDIR\Defaults\Plugins" + Delete "$INSTDIR\Defaults\Plugins\$R7" + Rename "$R9" "$INSTDIR\Defaults\Plugins\$R7" + ${EndIf} + + Push $0 +FunctionEnd + +Function RemoveStartMenuShortcuts + !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" +FunctionEnd + +Function CreateUserStartupShortcut + SetShellVarContext current + CreateShortcut "$SMSTARTUP\Rainmeter.lnk" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0 +FunctionEnd + +Function RemoveUserStartupShortcut + SetShellVarContext current + Delete "$SMSTARTUP\Rainmeter.lnk" +FunctionEnd + +Function FinishRun + !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\Rainmeter.exe" "" "" "" +FunctionEnd + + +; Uninstall +; -------------------------------------- +Function un.onInit +UAC_TryAgain: + ; Request administrative rights + !insertmacro UAC_RunElevated + ${Switch} $0 + ${Case} 0 + ${IfThen} $1 = 1 ${|} Quit ${|} + ${IfThen} $3 <> 0 ${|} ${Break} ${|} + ${If} $1 = 3 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0 + ${EndIf} + ${Case} 1223 + Quit + ${Case} 1062 + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)" + Quit + ${Default} + MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)" + Quit + ${EndSwitch} + + ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language" + ${If} $0 != "" + StrCpy $LANGUAGE $0 + ${EndIf} +FunctionEnd + +Function un.PageOptions + !insertmacro MUI_HEADER_TEXT "$(UNSTALLOPTIONS)" "$(UNSTALLOPTIONSDESC)" + nsDialogs::Create 1018 + nsDialogs::SetRTL $(^RTL) + + ${NSD_CreateCheckbox} 0 0u 95% 12u "$(UNSTALLRAINMETER)" + Pop $0 + EnableWindow $0 0 + ${NSD_Check} $0 + + ${NSD_CreateCheckbox} 0 15u 70% 12u "$(UNSTALLSETTINGS)" + Pop $R0 + + ${NSD_CreateLabel} 16 26u 95% 12u "$(UNSTALLSETTINGSDESC)" + + nsDialogs::Show +FunctionEnd + +Function un.GetOptions + ${NSD_GetState} $R0 $un.DeleteAll +FunctionEnd + +Section Uninstall + ; Close Rainmeter (and wait up to five seconds) + ${ForEach} $0 10 0 - 1 + FindWindow $1 "DummyRainWClass" "Rainmeter control window" + ClearErrors + Delete "$INSTDIR\Rainmeter.exe" + ${If} $1 = 0 + ${AndIfNot} ${Errors} + ${Break} + ${EndIf} + + SendMessage $1 ${WM_CLOSE} 0 0 + + ${If} $0 = 0 + ${If} ${Silent} + SetErrorLevel ${ERROR_CLOSEFAIL} + Quit + ${Else} + MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2 + Quit + ${EndIf} + ${EndIf} + + Sleep 500 + ${Next} + + ; Old stuff + RMDir /r "$INSTDIR\Addons" + RMDir /r "$INSTDIR\Fonts" + + RMDir /r "$INSTDIR\Defaults" + RMDir /r "$INSTDIR\Languages" + RMDir /r "$INSTDIR\Plugins" + RMDir /r "$INSTDIR\Runtime" + RMDir /r "$INSTDIR\Skins" + Delete "$INSTDIR\Rainmeter.dll" + Delete "$INSTDIR\Rainmeter.exe" + Delete "$INSTDIR\Rainmeter.exe.config" + Delete "$INSTDIR\SkinInstaller.exe" + Delete "$INSTDIR\SkinInstaller.dll" + Delete "$INSTDIR\uninst.exe" + + RMDir "$INSTDIR" + + SetShellVarContext all + RMDir /r "$APPDATA\Rainstaller" + + SetShellVarContext current + Call un.RemoveShortcuts + ${If} $un.DeleteAll = 1 + RMDir /r "$APPDATA\Rainmeter" + RMDir /r "$DOCUMENTS\Rainmeter\Skins" + RMDir "$DOCUMENTS\Rainmeter" + RMDir /r "$1\Rainmeter" + ${EndIf} + + !insertmacro UAC_AsUser_Call Function un.RemoveShortcuts ${UAC_SYNCREGISTERS} + ${If} $un.DeleteAll = 1 + RMDir /r "$APPDATA\Rainmeter" + RMDir /r "$DOCUMENTS\Rainmeter\Skins" + RMDir "$DOCUMENTS\Rainmeter" + ${EndIf} + + SetShellVarContext all + Call un.RemoveShortcuts + Delete "$SMPROGRAMS\Rainmeter.lnk" + + DeleteRegKey HKLM "SOFTWARE\Rainmeter" + DeleteRegKey HKCR ".rmskin" + DeleteRegKey HKCR "Rainmeter.SkinInstaller" + DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" + ${RefreshShellIcons} +SectionEnd + +Function un.RemoveShortcuts + !insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter" + Delete "$SMSTARTUP\Rainmeter.lnk" + Delete "$DESKTOP\Rainmeter.lnk" +FunctionEnd diff --git a/BuildTools/Installer/MD5.dll b/Build/Installer/MD5.dll similarity index 100% rename from BuildTools/Installer/MD5.dll rename to Build/Installer/MD5.dll diff --git a/BuildTools/Installer/MoreInfo.dll b/Build/Installer/MoreInfo.dll similarity index 100% rename from BuildTools/Installer/MoreInfo.dll rename to Build/Installer/MoreInfo.dll diff --git a/BuildTools/Installer/UAC.dll b/Build/Installer/UAC.dll similarity index 100% rename from BuildTools/Installer/UAC.dll rename to Build/Installer/UAC.dll diff --git a/BuildTools/Installer/UAC.nsh b/Build/Installer/UAC.nsh similarity index 96% rename from BuildTools/Installer/UAC.nsh rename to Build/Installer/UAC.nsh index 3f2c11cc..a0e137fa 100644 --- a/BuildTools/Installer/UAC.nsh +++ b/Build/Installer/UAC.nsh @@ -1,200 +1,200 @@ -!ifndef UAC_HDR__INC -!verbose push -!verbose 3 -!ifndef UAC_VERBOSE - !define UAC_VERBOSE 3 -!endif -!verbose ${UAC_VERBOSE} - -!define UAC_HDR__INC 0x00020204 ;MMmmbbrr - -!include LogicLib.nsh - -!macro _UAC_definemath def val1 op val2 -!define /math _UAC_definemath "${val1}" ${op} ${val2} -!ifdef ${def} - !undef ${def} -!endif -!define ${def} "${_UAC_definemath}" -!undef _UAC_definemath -!macroend - -!macro _UAC_ParseDefineFlags_orin parse outflags -!searchparse /noerrors ${${parse}} "" _UAC_ParseDefineFlags_orin_f1 "|" _UAC_ParseDefineFlags_orin_f2 -!define _UAC_ParseDefineFlags_orin_this ${_UAC_ParseDefineFlags_orin_f1} -!undef ${parse} -!define ${parse} ${_UAC_ParseDefineFlags_orin_f2} -!define _UAC_ParseDefineFlags_orin_saveout ${${outflags}} -!undef ${outflags} -!define /math ${outflags} "${_UAC_ParseDefineFlags_orin_saveout}" | "${_UAC_ParseDefineFlags_orin_this}" -!undef _UAC_ParseDefineFlags_orin_saveout -!undef _UAC_ParseDefineFlags_orin_this -!ifdef _UAC_ParseDefineFlags_orin_f1 - !undef _UAC_ParseDefineFlags_orin_f1 - !undef _UAC_ParseDefineFlags_orin_f2 -!endif -!macroend -!macro _UAC_ParseDefineFlags_Begin _outdef _in -!define _UAC_PDF${_outdef}_parse "${_in}" -!define _UAC_PDF${_outdef}_flags "" -!define _UAC_PDF${_outdef}_r 0 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x1 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x2 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x4 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x8 -!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x10 -!macroend -!macro _UAC_ParseDefineFlags_End _outdef -!define ${_outdef} ${_UAC_PDF${_outdef}_r} -!undef _UAC_PDF${_outdef}_r -!undef _UAC_PDF${_outdef}_flags -!undef _UAC_PDF${_outdef}_parse -!macroend -!macro _UAC_ParseDefineFlags_IncludeFlag _outdef flag -!if ${_UAC_PDF${_outdef}_flags} & ${flag} - !insertmacro _UAC_definemath _UAC_PDF${_outdef}_r ${_UAC_PDF${_outdef}_r} | ${flag} -!endif -!macroend -!macro _UAC_ParseDefineFlagsToInt _outdef _in -!insertmacro _UAC_ParseDefineFlags_Begin _UAC_ParseDefineFlagsToInt_tmp "${_in}" -!define ${_outdef} ${_UAC_PDF_UAC_ParseDefineFlagsToInt_tmp_flags} -!insertmacro _UAC_ParseDefineFlags_End _UAC_ParseDefineFlagsToInt_tmp -!undef _UAC_ParseDefineFlagsToInt_tmp -!macroend - -!macro _UAC_IncL -!insertmacro _UAC_definemath __UAC_L "${__UAC_L}" + 1 -!macroend - - -!macro _UAC_MakeLL_Cmp cmpop cmp pluginparams -!insertmacro _LOGICLIB_TEMP -UAC::_ ${pluginparams} -pop $_LOGICLIB_TEMP -!insertmacro ${cmpop} $_LOGICLIB_TEMP ${cmp} `${_t}` `${_f}` -!macroend - - -!macro UAC_RunElevated -UAC::_ 0 -!macroend -!macro UAC_PageElevation_RunElevated -UAC::_ 0 -!macroend -/*!macro UAC_OnInitElevation_RunElevated -UAC::_ 0 -!macroend -!macro UAC_OnInitElevation_OnGuiInit -!macroend*/ - - -!macro UAC_IsAdmin -UAC::_ 2 -!macroend -!define UAC_IsAdmin `"" UAC_IsAdmin ""` -!macro _UAC_IsAdmin _a _b _t _f -!insertmacro _UAC_MakeLL_Cmp _!= 0 2s -!macroend - - - -!macro UAC_IsInnerInstance -UAC::_ 3 -!macroend -!define UAC_IsInnerInstance `"" UAC_IsInnerInstance ""` -!macro _UAC_IsInnerInstance _a _b _t _f -!insertmacro _UAC_MakeLL_Cmp _!= 0 3s -!macroend - -!macro UAC_Notify_OnGuiInit -UAC::_ 4 -!macroend -!macro UAC_PageElevation_OnGuiInit -!insertmacro UAC_Notify_OnGuiInit -!macroend -!macro UAC_PageElevation_OnInit -UAC::_ 5 -${IfThen} ${Errors} ${|} Quit ${|} -!macroend - - -!define UAC_SYNCREGISTERS 0x1 -#!define UAC_SYNCSTACK 0x2 -!define UAC_SYNCOUTDIR 0x4 -!define UAC_SYNCINSTDIR 0x8 -#!define UAC_CLEARERRFLAG 0x10 -!macro UAC_AsUser_Call type name flags -push $0 -Get${type}Address $0 ${name} -!verbose push -!verbose ${UAC_VERBOSE} -!insertmacro _UAC_ParseDefineFlagsToInt _UAC_AsUser_Call__flags ${flags} -!verbose pop -StrCpy $0 "1$0:${_UAC_AsUser_Call__flags}" -!undef _UAC_AsUser_Call__flags -Exch $0 -UAC::_ -!macroend - -!macro _UAC_AsUser_GenOp outvar op opparam1 opparam2 -!define _UAC_AUGOGR_ID _UAC_AUGOGR_OP${outvar}${op}${opparam1}${opparam2} -!ifndef ${_UAC_AUGOGR_ID} ;Has this exact action been done before? - !if ${outvar} == $0 - !define ${_UAC_AUGOGR_ID} $1 - !else - !define ${_UAC_AUGOGR_ID} $0 - !endif - !if "${opparam1}" == "" - !define _UAC_AUGOGR_OPP1 ${${_UAC_AUGOGR_ID}} - !define _UAC_AUGOGR_OPP2 ${opparam2} - !else - !define _UAC_AUGOGR_OPP1 ${opparam1} - !define _UAC_AUGOGR_OPP2 ${${_UAC_AUGOGR_ID}} - !endif - goto ${_UAC_AUGOGR_ID}_C - ${_UAC_AUGOGR_ID}_F: - ${op} ${_UAC_AUGOGR_OPP1} ${_UAC_AUGOGR_OPP2} - return - ${_UAC_AUGOGR_ID}_C: - !undef _UAC_AUGOGR_OPP1 - !undef _UAC_AUGOGR_OPP2 -!endif -push ${${_UAC_AUGOGR_ID}} -!insertmacro UAC_AsUser_Call Label ${_UAC_AUGOGR_ID}_F ${UAC_SYNCREGISTERS} -StrCpy ${outvar} ${${_UAC_AUGOGR_ID}} -pop ${${_UAC_AUGOGR_ID}} -!undef _UAC_AUGOGR_ID -!macroend - -!macro UAC_AsUser_GetSection datatype secidx outvar -!insertmacro _UAC_AsUser_GenOp ${outvar} SectionGet${datatype} ${secidx} "" -!macroend - -!macro UAC_AsUser_GetGlobalVar var -!insertmacro _UAC_AsUser_GenOp ${var} StrCpy "" ${var} -!macroend -!macro UAC_AsUser_GetGlobal outvar srcvar -!insertmacro _UAC_AsUser_GenOp ${outvar} StrCpy "" ${srcvar} -!macroend - - -!macro UAC_AsUser_ExecShell verb command params workdir show -!insertmacro _UAC_IncL -goto _UAC_L_E_${__UAC_L} -_UAC_L_F_${__UAC_L}: -ExecShell "${verb}" "${command}" ${params} ${show} -return -_UAC_L_E_${__UAC_L}: -!if "${workdir}" != "" - push $outdir - SetOutPath "${workdir}" -!endif -!insertmacro UAC_AsUser_Call Label _UAC_L_F_${__UAC_L} ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR} #|${UAC_CLEARERRFLAG} -!if "${workdir}" != "" - pop $outdir - SetOutPath $outdir -!endif -!macroend - -!verbose pop +!ifndef UAC_HDR__INC +!verbose push +!verbose 3 +!ifndef UAC_VERBOSE + !define UAC_VERBOSE 3 +!endif +!verbose ${UAC_VERBOSE} + +!define UAC_HDR__INC 0x00020204 ;MMmmbbrr + +!include LogicLib.nsh + +!macro _UAC_definemath def val1 op val2 +!define /math _UAC_definemath "${val1}" ${op} ${val2} +!ifdef ${def} + !undef ${def} +!endif +!define ${def} "${_UAC_definemath}" +!undef _UAC_definemath +!macroend + +!macro _UAC_ParseDefineFlags_orin parse outflags +!searchparse /noerrors ${${parse}} "" _UAC_ParseDefineFlags_orin_f1 "|" _UAC_ParseDefineFlags_orin_f2 +!define _UAC_ParseDefineFlags_orin_this ${_UAC_ParseDefineFlags_orin_f1} +!undef ${parse} +!define ${parse} ${_UAC_ParseDefineFlags_orin_f2} +!define _UAC_ParseDefineFlags_orin_saveout ${${outflags}} +!undef ${outflags} +!define /math ${outflags} "${_UAC_ParseDefineFlags_orin_saveout}" | "${_UAC_ParseDefineFlags_orin_this}" +!undef _UAC_ParseDefineFlags_orin_saveout +!undef _UAC_ParseDefineFlags_orin_this +!ifdef _UAC_ParseDefineFlags_orin_f1 + !undef _UAC_ParseDefineFlags_orin_f1 + !undef _UAC_ParseDefineFlags_orin_f2 +!endif +!macroend +!macro _UAC_ParseDefineFlags_Begin _outdef _in +!define _UAC_PDF${_outdef}_parse "${_in}" +!define _UAC_PDF${_outdef}_flags "" +!define _UAC_PDF${_outdef}_r 0 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x1 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x2 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x4 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x8 +!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags ;0x10 +!macroend +!macro _UAC_ParseDefineFlags_End _outdef +!define ${_outdef} ${_UAC_PDF${_outdef}_r} +!undef _UAC_PDF${_outdef}_r +!undef _UAC_PDF${_outdef}_flags +!undef _UAC_PDF${_outdef}_parse +!macroend +!macro _UAC_ParseDefineFlags_IncludeFlag _outdef flag +!if ${_UAC_PDF${_outdef}_flags} & ${flag} + !insertmacro _UAC_definemath _UAC_PDF${_outdef}_r ${_UAC_PDF${_outdef}_r} | ${flag} +!endif +!macroend +!macro _UAC_ParseDefineFlagsToInt _outdef _in +!insertmacro _UAC_ParseDefineFlags_Begin _UAC_ParseDefineFlagsToInt_tmp "${_in}" +!define ${_outdef} ${_UAC_PDF_UAC_ParseDefineFlagsToInt_tmp_flags} +!insertmacro _UAC_ParseDefineFlags_End _UAC_ParseDefineFlagsToInt_tmp +!undef _UAC_ParseDefineFlagsToInt_tmp +!macroend + +!macro _UAC_IncL +!insertmacro _UAC_definemath __UAC_L "${__UAC_L}" + 1 +!macroend + + +!macro _UAC_MakeLL_Cmp cmpop cmp pluginparams +!insertmacro _LOGICLIB_TEMP +UAC::_ ${pluginparams} +pop $_LOGICLIB_TEMP +!insertmacro ${cmpop} $_LOGICLIB_TEMP ${cmp} `${_t}` `${_f}` +!macroend + + +!macro UAC_RunElevated +UAC::_ 0 +!macroend +!macro UAC_PageElevation_RunElevated +UAC::_ 0 +!macroend +/*!macro UAC_OnInitElevation_RunElevated +UAC::_ 0 +!macroend +!macro UAC_OnInitElevation_OnGuiInit +!macroend*/ + + +!macro UAC_IsAdmin +UAC::_ 2 +!macroend +!define UAC_IsAdmin `"" UAC_IsAdmin ""` +!macro _UAC_IsAdmin _a _b _t _f +!insertmacro _UAC_MakeLL_Cmp _!= 0 2s +!macroend + + + +!macro UAC_IsInnerInstance +UAC::_ 3 +!macroend +!define UAC_IsInnerInstance `"" UAC_IsInnerInstance ""` +!macro _UAC_IsInnerInstance _a _b _t _f +!insertmacro _UAC_MakeLL_Cmp _!= 0 3s +!macroend + +!macro UAC_Notify_OnGuiInit +UAC::_ 4 +!macroend +!macro UAC_PageElevation_OnGuiInit +!insertmacro UAC_Notify_OnGuiInit +!macroend +!macro UAC_PageElevation_OnInit +UAC::_ 5 +${IfThen} ${Errors} ${|} Quit ${|} +!macroend + + +!define UAC_SYNCREGISTERS 0x1 +#!define UAC_SYNCSTACK 0x2 +!define UAC_SYNCOUTDIR 0x4 +!define UAC_SYNCINSTDIR 0x8 +#!define UAC_CLEARERRFLAG 0x10 +!macro UAC_AsUser_Call type name flags +push $0 +Get${type}Address $0 ${name} +!verbose push +!verbose ${UAC_VERBOSE} +!insertmacro _UAC_ParseDefineFlagsToInt _UAC_AsUser_Call__flags ${flags} +!verbose pop +StrCpy $0 "1$0:${_UAC_AsUser_Call__flags}" +!undef _UAC_AsUser_Call__flags +Exch $0 +UAC::_ +!macroend + +!macro _UAC_AsUser_GenOp outvar op opparam1 opparam2 +!define _UAC_AUGOGR_ID _UAC_AUGOGR_OP${outvar}${op}${opparam1}${opparam2} +!ifndef ${_UAC_AUGOGR_ID} ;Has this exact action been done before? + !if ${outvar} == $0 + !define ${_UAC_AUGOGR_ID} $1 + !else + !define ${_UAC_AUGOGR_ID} $0 + !endif + !if "${opparam1}" == "" + !define _UAC_AUGOGR_OPP1 ${${_UAC_AUGOGR_ID}} + !define _UAC_AUGOGR_OPP2 ${opparam2} + !else + !define _UAC_AUGOGR_OPP1 ${opparam1} + !define _UAC_AUGOGR_OPP2 ${${_UAC_AUGOGR_ID}} + !endif + goto ${_UAC_AUGOGR_ID}_C + ${_UAC_AUGOGR_ID}_F: + ${op} ${_UAC_AUGOGR_OPP1} ${_UAC_AUGOGR_OPP2} + return + ${_UAC_AUGOGR_ID}_C: + !undef _UAC_AUGOGR_OPP1 + !undef _UAC_AUGOGR_OPP2 +!endif +push ${${_UAC_AUGOGR_ID}} +!insertmacro UAC_AsUser_Call Label ${_UAC_AUGOGR_ID}_F ${UAC_SYNCREGISTERS} +StrCpy ${outvar} ${${_UAC_AUGOGR_ID}} +pop ${${_UAC_AUGOGR_ID}} +!undef _UAC_AUGOGR_ID +!macroend + +!macro UAC_AsUser_GetSection datatype secidx outvar +!insertmacro _UAC_AsUser_GenOp ${outvar} SectionGet${datatype} ${secidx} "" +!macroend + +!macro UAC_AsUser_GetGlobalVar var +!insertmacro _UAC_AsUser_GenOp ${var} StrCpy "" ${var} +!macroend +!macro UAC_AsUser_GetGlobal outvar srcvar +!insertmacro _UAC_AsUser_GenOp ${outvar} StrCpy "" ${srcvar} +!macroend + + +!macro UAC_AsUser_ExecShell verb command params workdir show +!insertmacro _UAC_IncL +goto _UAC_L_E_${__UAC_L} +_UAC_L_F_${__UAC_L}: +ExecShell "${verb}" "${command}" ${params} ${show} +return +_UAC_L_E_${__UAC_L}: +!if "${workdir}" != "" + push $outdir + SetOutPath "${workdir}" +!endif +!insertmacro UAC_AsUser_Call Label _UAC_L_F_${__UAC_L} ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR} #|${UAC_CLEARERRFLAG} +!if "${workdir}" != "" + pop $outdir + SetOutPath $outdir +!endif +!macroend + +!verbose pop !endif /* UAC_HDR__INC */ \ No newline at end of file diff --git a/BuildTools/Installer/Wizard.bmp b/Build/Installer/Wizard.bmp similarity index 100% rename from BuildTools/Installer/Wizard.bmp rename to Build/Installer/Wizard.bmp diff --git a/BuildTools/Layouts/illustro default/Rainmeter.ini b/Build/Layouts/illustro default/Rainmeter.ini similarity index 93% rename from BuildTools/Layouts/illustro default/Rainmeter.ini rename to Build/Layouts/illustro default/Rainmeter.ini index b362333b..1b9c400e 100644 --- a/BuildTools/Layouts/illustro default/Rainmeter.ini +++ b/Build/Layouts/illustro default/Rainmeter.ini @@ -1,23 +1,23 @@ -[Rainmeter] - -[illustro\Clock] -Active=1 -WindowX=(#SCREENAREAWIDTH#-200) -WindowY=0 - -[illustro\Disk] -Active=2 -WindowX=(#SCREENAREAWIDTH#-200) -WindowY=176 - -[illustro\System] -Active=1 -WindowX=(#SCREENAREAWIDTH#-200) -WindowY=68 - -[illustro\Welcome] -Active=1 -WindowX=50.000000% -WindowY=50.000000% -AnchorX=50.000000% +[Rainmeter] + +[illustro\Clock] +Active=1 +WindowX=(#SCREENAREAWIDTH#-200) +WindowY=0 + +[illustro\Disk] +Active=2 +WindowX=(#SCREENAREAWIDTH#-200) +WindowY=176 + +[illustro\System] +Active=1 +WindowX=(#SCREENAREAWIDTH#-200) +WindowY=68 + +[illustro\Welcome] +Active=1 +WindowX=50.000000% +WindowY=50.000000% +AnchorX=50.000000% AnchorY=50.000000% \ No newline at end of file diff --git a/BuildTools/Skins/illustro/@Resources/Background.png b/Build/Skins/illustro/@Resources/Background.png similarity index 100% rename from BuildTools/Skins/illustro/@Resources/Background.png rename to Build/Skins/illustro/@Resources/Background.png diff --git a/BuildTools/Skins/illustro/Clock/Clock.ini b/Build/Skins/illustro/Clock/Clock.ini similarity index 95% rename from BuildTools/Skins/illustro/Clock/Clock.ini rename to Build/Skins/illustro/Clock/Clock.ini index 3bcb981d..64bda3da 100644 --- a/BuildTools/Skins/illustro/Clock/Clock.ini +++ b/Build/Skins/illustro/Clock/Clock.ini @@ -1,138 +1,138 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays the current date and time. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureTime] -; This measure returns the time in a 24-hour format (i.e. HH:MM). -Measure=Time -Format=%H:%M -; For a 12-hour clock, change the Format option above to: %I:%M %p -; Refer to the Rainmeter manual for other format codes. - -[measureDate] -; Returns the date as DD.MM.YYYY -Measure=Time -Format=%d.%m.%Y - -[measureDay] -; Returns the current day -Measure=Time -Format=%A - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -MeasureName=measureTime -X=100 -Y=12 -W=190 -H=18 -Text="%1" -; %1 stands for the value of MeasureName (measureTime in this case). - -[meterDay] -Meter=STRING -MeterStyle=styleLeftText -MeasureName=measureDay -X=10 -Y=40 -W=190 -H=14 -Text="%1" - -[meterDate] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureDate -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1" - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays the current date and time. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureTime] +; This measure returns the time in a 24-hour format (i.e. HH:MM). +Measure=Time +Format=%H:%M +; For a 12-hour clock, change the Format option above to: %I:%M %p +; Refer to the Rainmeter manual for other format codes. + +[measureDate] +; Returns the date as DD.MM.YYYY +Measure=Time +Format=%d.%m.%Y + +[measureDay] +; Returns the current day +Measure=Time +Format=%A + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +MeasureName=measureTime +X=100 +Y=12 +W=190 +H=18 +Text="%1" +; %1 stands for the value of MeasureName (measureTime in this case). + +[meterDay] +Meter=STRING +MeterStyle=styleLeftText +MeasureName=measureDay +X=10 +Y=40 +W=190 +H=14 +Text="%1" + +[meterDate] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureDate +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1" + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Disk/1 Disk.ini b/Build/Skins/illustro/Disk/1 Disk.ini similarity index 95% rename from BuildTools/Skins/illustro/Disk/1 Disk.ini rename to Build/Skins/illustro/Disk/1 Disk.ini index 669723bd..40deafc4 100644 --- a/BuildTools/Skins/illustro/Disk/1 Disk.ini +++ b/Build/Skins/illustro/Disk/1 Disk.ini @@ -1,149 +1,149 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -; NOTE! If you want to add more disks, take a look at 'Disks 2.ini'. - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays disk usage. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 -disk1=C: - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureTotalDisk1] -; This measure returns the total disk space -Measure=FreeDiskSpace -Drive=#disk1# -Total=1 -UpdateDivider=120 - -[measureUsedDisk1] -; Returns inverted value of free disk space (i.e. used disk space) -Measure=FreeDiskSpace -Drive=#disk1# -InvertMeasure=1 -UpdateDivider=120 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Disks" -; Even though the text is set to Disks, Rainmeter will display -; it as DISKS, because styleTitle contains StringCase=UPPER. - -[meterLabelDisk1] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="#disk1#\" - -[meterValueDisk1] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureUsedDisk1 -MeasureName2=measureTotalDisk1 -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1B/%2B used" -; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). -; %2 stands for the value of MeasureName2. -NumOfDecimals=1 -AutoScale=1 -; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. -LeftMouseUpAction=!Execute ["#disk1#\"] -; Open #disk1# on click - -[meterBarDisk1] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureUsedDisk1 -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +; NOTE! If you want to add more disks, take a look at 'Disks 2.ini'. + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays disk usage. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 +disk1=C: + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureTotalDisk1] +; This measure returns the total disk space +Measure=FreeDiskSpace +Drive=#disk1# +Total=1 +UpdateDivider=120 + +[measureUsedDisk1] +; Returns inverted value of free disk space (i.e. used disk space) +Measure=FreeDiskSpace +Drive=#disk1# +InvertMeasure=1 +UpdateDivider=120 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Disks" +; Even though the text is set to Disks, Rainmeter will display +; it as DISKS, because styleTitle contains StringCase=UPPER. + +[meterLabelDisk1] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="#disk1#\" + +[meterValueDisk1] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureUsedDisk1 +MeasureName2=measureTotalDisk1 +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1B/%2B used" +; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). +; %2 stands for the value of MeasureName2. +NumOfDecimals=1 +AutoScale=1 +; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. +LeftMouseUpAction=!Execute ["#disk1#\"] +; Open #disk1# on click + +[meterBarDisk1] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureUsedDisk1 +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Disk/2 Disks.ini b/Build/Skins/illustro/Disk/2 Disks.ini similarity index 96% rename from BuildTools/Skins/illustro/Disk/2 Disks.ini rename to Build/Skins/illustro/Disk/2 Disks.ini index e255501a..78079f21 100644 --- a/BuildTools/Skins/illustro/Disk/2 Disks.ini +++ b/Build/Skins/illustro/Disk/2 Disks.ini @@ -1,209 +1,209 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -; HOWTO: Adding more disks -; ---------------------------------- -; Adding more disks is a pretty straightforward process. Follow the following steps to turn -; this 2 disks skin into a 3 disks skin. You can then extend it even further as you wish. -; -; 1) Create a new variable called disk3=X: directly below disk2=D: in the [Variables] section -; 2) Create a copy of the [measureTotalDisk2] and [measureUsedDisk2] sections -; 3) Rename the copied sections to [measureTotalDisk3] and [measureUsedDisk3], respectively. -; Also change Drive=#disk2# to Drive=#disk3# -; 4) Create a copy of the [meterLabelDisk2], [meterValueDisk2], and [meterBarDisk2]. -; Rename all Disk2's in the copied sections to Disk3. -; 5) Now we need to change the Y= values to adjust height. Change Y= under [meterLabelDisk3] -; to Y=80 (calculated by adding 20 to the Y= value of previous meterLabel). -; Then change Y= under [meterBarDisk3] to Y=92 (calculated by adding 20 to the Y= value of previous meterBar). -; 6) Save the file as '3 Disks.ini'. Now right-click on the Rainmeter tray icon and select -; 'Refresh All'. Now go activate the '3 Disks.ini' skin and enjoy! :) - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays disk usage. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 -disk1=C: -disk2=D: - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureTotalDisk1] -; This measure returns the total disk space -Measure=FreeDiskSpace -Drive=#disk1# -Total=1 -UpdateDivider=120 - -[measureUsedDisk1] -; Returns inverted value of free disk space (i.e. used disk space) -Measure=FreeDiskSpace -Drive=#disk1# -InvertMeasure=1 -UpdateDivider=120 - -[measureTotalDisk2] -Measure=FreeDiskSpace -Drive=#disk2# -Total=1 -UpdateDivider=120 - -[measureUsedDisk2] -Measure=FreeDiskSpace -Drive=#disk2# -InvertMeasure=1 -UpdateDivider=120 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Disk" -; Even though the text is set to Disk, Rainmeter will display -; it as DISK, because styleTitle contains StringCase=UPPER. - -[meterLabelDisk1] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="#disk1#\" - -[meterValueDisk1] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureUsedDisk1 -MeasureName2=measureTotalDisk1 -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1B/%2B used" -; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). -; %2 stands for the value of MeasureName2. -NumOfDecimals=1 -AutoScale=1 -; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. -LeftMouseUpAction=!Execute ["#disk1#\"] -; Open #disk1# on click - -[meterBarDisk1] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureUsedDisk1 -X=10 -Y=52 -W=190 -H=1 - -[meterLabelDisk2] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=60 -W=190 -H=14 -Text="#disk2#\" -LeftMouseUpAction=!Execute ["#disk2#\"] - -[meterValueDisk2] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureUsedDisk2 -MeasureName2=measureTotalDisk2 -X=200 -Y=0r -W=190 -H=14 -Text="%1B/%2B used" -NumOfDecimals=1 -AutoScale=1 - -[meterBarDisk2] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureUsedDisk2 -X=10 -Y=72 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +; HOWTO: Adding more disks +; ---------------------------------- +; Adding more disks is a pretty straightforward process. Follow the following steps to turn +; this 2 disks skin into a 3 disks skin. You can then extend it even further as you wish. +; +; 1) Create a new variable called disk3=X: directly below disk2=D: in the [Variables] section +; 2) Create a copy of the [measureTotalDisk2] and [measureUsedDisk2] sections +; 3) Rename the copied sections to [measureTotalDisk3] and [measureUsedDisk3], respectively. +; Also change Drive=#disk2# to Drive=#disk3# +; 4) Create a copy of the [meterLabelDisk2], [meterValueDisk2], and [meterBarDisk2]. +; Rename all Disk2's in the copied sections to Disk3. +; 5) Now we need to change the Y= values to adjust height. Change Y= under [meterLabelDisk3] +; to Y=80 (calculated by adding 20 to the Y= value of previous meterLabel). +; Then change Y= under [meterBarDisk3] to Y=92 (calculated by adding 20 to the Y= value of previous meterBar). +; 6) Save the file as '3 Disks.ini'. Now right-click on the Rainmeter tray icon and select +; 'Refresh All'. Now go activate the '3 Disks.ini' skin and enjoy! :) + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays disk usage. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 +disk1=C: +disk2=D: + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureTotalDisk1] +; This measure returns the total disk space +Measure=FreeDiskSpace +Drive=#disk1# +Total=1 +UpdateDivider=120 + +[measureUsedDisk1] +; Returns inverted value of free disk space (i.e. used disk space) +Measure=FreeDiskSpace +Drive=#disk1# +InvertMeasure=1 +UpdateDivider=120 + +[measureTotalDisk2] +Measure=FreeDiskSpace +Drive=#disk2# +Total=1 +UpdateDivider=120 + +[measureUsedDisk2] +Measure=FreeDiskSpace +Drive=#disk2# +InvertMeasure=1 +UpdateDivider=120 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Disk" +; Even though the text is set to Disk, Rainmeter will display +; it as DISK, because styleTitle contains StringCase=UPPER. + +[meterLabelDisk1] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="#disk1#\" + +[meterValueDisk1] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureUsedDisk1 +MeasureName2=measureTotalDisk1 +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1B/%2B used" +; %1 stands for the value of MeasureName (measureUsedDisk1 in this case). +; %2 stands for the value of MeasureName2. +NumOfDecimals=1 +AutoScale=1 +; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. +LeftMouseUpAction=!Execute ["#disk1#\"] +; Open #disk1# on click + +[meterBarDisk1] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureUsedDisk1 +X=10 +Y=52 +W=190 +H=1 + +[meterLabelDisk2] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=60 +W=190 +H=14 +Text="#disk2#\" +LeftMouseUpAction=!Execute ["#disk2#\"] + +[meterValueDisk2] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureUsedDisk2 +MeasureName2=measureTotalDisk2 +X=200 +Y=0r +W=190 +H=14 +Text="%1B/%2B used" +NumOfDecimals=1 +AutoScale=1 + +[meterBarDisk2] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureUsedDisk2 +X=10 +Y=72 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Google/Google.ini b/Build/Skins/illustro/Google/Google.ini similarity index 95% rename from BuildTools/Skins/illustro/Google/Google.ini rename to Build/Skins/illustro/Google/Google.ini index 07b32b6c..2cf7dc04 100644 --- a/BuildTools/Skins/illustro/Google/Google.ini +++ b/Build/Skins/illustro/Google/Google.ini @@ -1,119 +1,119 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Allows searching through Google. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureInput] -; The InputText.dll plugin has special powers: it allows user input. -; However, it's not the easiest way to start learning Rainmeter. Get a -; hold of the basics, and then check out the manual entry for InputText. -Measure=Plugin -Plugin=InputText.dll -SolidColor=20,20,20,255 -StringAlign=LEFT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -X=10 -Y=38 -W=188 -H=17 -FocusDismiss=1 -DefaultValue="" -Command1=!Execute ["http://www.google.com/search?q=$UserInput$"] -UpdateDivider=86400 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Google" - -[meterSearch] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="Search..." -LeftMouseUpAction=!PluginBang "measureInput ExecuteBatch 1" - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Allows searching through Google. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureInput] +; The InputText.dll plugin has special powers: it allows user input. +; However, it's not the easiest way to start learning Rainmeter. Get a +; hold of the basics, and then check out the manual entry for InputText. +Measure=Plugin +Plugin=InputText.dll +SolidColor=20,20,20,255 +StringAlign=LEFT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +X=10 +Y=38 +W=188 +H=17 +FocusDismiss=1 +DefaultValue="" +Command1=!Execute ["http://www.google.com/search?q=$UserInput$"] +UpdateDivider=86400 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Google" + +[meterSearch] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="Search..." +LeftMouseUpAction=!PluginBang "measureInput ExecuteBatch 1" + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Network/Network.ini b/Build/Skins/illustro/Network/Network.ini similarity index 95% rename from BuildTools/Skins/illustro/Network/Network.ini rename to Build/Skins/illustro/Network/Network.ini index b72007bf..3669c330 100644 --- a/BuildTools/Skins/illustro/Network/Network.ini +++ b/Build/Skins/illustro/Network/Network.ini @@ -1,215 +1,215 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Shows your IP address and network activity. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 -maxDownload=10485760 -MaxUpload=10485760 -; Set maxDownload and maxUpload to your maximum download and upload speed in bits. -; To convert kilobits, megabits, kilobytes, and megabytes into bits, go to www.google.com -; and search for something like "10 megabytes in bits". - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureIP] -; This measure returns your IP. WebParser measures are relatively complicated. If you're a beginner with -; Rainmeter, take a look at some of the other illustro skins before modifying this one. -Measure=Plugin -Plugin=WebParser.dll -Url=http://checkip.dyndns.org -UpdateRate=14400 -RegExp="(?siU)Address: (.*)" -StringIndex=1 -Substitute="":"N/A" -; Substitute works as follows: "A":"B" where A is a string to substitute and B is a string -; to substitute with. In this case, it substutes "" (i.e. empty) to N/A - -[measureNetIn] -Measure=NetIn -NetInSpeed=#maxDownload# -; NetInSpeed must be set so your maximun download speed for the download bar to scale correctly - -[measureNetOut] -Measure=NetOut -NetOutSpeed=#maxUpload# - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Network" -; Even though the text is set to Network, Rainmeter will display -; it as NETWORK, because styleTitle contains StringCase=UPPER. - -[meterIPLabel] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="IP Address" - -[meterIPValue] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureIP -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1" -; %1 stands for the value of MeasureName (measureIP in this case). - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 -H=1 - -[meterUploadLabel] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=60 -W=190 -H=14 -Text="Upload" - -[meterUploadValue] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureNetOut -X=200 -Y=0r -W=190 -H=14 -Text="%1B/s" -NumOfDecimals=1 -AutoScale=1 -; Because measureIP returns the current upload speed in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. - -[meterUploadBar] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureNetOut -X=10 -Y=72 -W=190 -H=1 - -[meterDownloadLabel] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=80 -W=190 -H=14 -Text="Download" - -[meterDownloadValue] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureNetIn -X=200 -Y=0r -W=190 -H=14 -Text="%1B/s" -NumOfDecimals=1 -AutoScale=1 - -[meterDownloadBar] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureNetIn -X=10 -Y=92 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Shows your IP address and network activity. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 +maxDownload=10485760 +MaxUpload=10485760 +; Set maxDownload and maxUpload to your maximum download and upload speed in bits. +; To convert kilobits, megabits, kilobytes, and megabytes into bits, go to www.google.com +; and search for something like "10 megabytes in bits". + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureIP] +; This measure returns your IP. WebParser measures are relatively complicated. If you're a beginner with +; Rainmeter, take a look at some of the other illustro skins before modifying this one. +Measure=Plugin +Plugin=WebParser.dll +Url=http://checkip.dyndns.org +UpdateRate=14400 +RegExp="(?siU)Address: (.*)" +StringIndex=1 +Substitute="":"N/A" +; Substitute works as follows: "A":"B" where A is a string to substitute and B is a string +; to substitute with. In this case, it substutes "" (i.e. empty) to N/A + +[measureNetIn] +Measure=NetIn +NetInSpeed=#maxDownload# +; NetInSpeed must be set so your maximun download speed for the download bar to scale correctly + +[measureNetOut] +Measure=NetOut +NetOutSpeed=#maxUpload# + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Network" +; Even though the text is set to Network, Rainmeter will display +; it as NETWORK, because styleTitle contains StringCase=UPPER. + +[meterIPLabel] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="IP Address" + +[meterIPValue] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureIP +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1" +; %1 stands for the value of MeasureName (measureIP in this case). + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 +H=1 + +[meterUploadLabel] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=60 +W=190 +H=14 +Text="Upload" + +[meterUploadValue] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureNetOut +X=200 +Y=0r +W=190 +H=14 +Text="%1B/s" +NumOfDecimals=1 +AutoScale=1 +; Because measureIP returns the current upload speed in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. + +[meterUploadBar] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureNetOut +X=10 +Y=72 +W=190 +H=1 + +[meterDownloadLabel] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=80 +W=190 +H=14 +Text="Download" + +[meterDownloadValue] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureNetIn +X=200 +Y=0r +W=190 +H=14 +Text="%1B/s" +NumOfDecimals=1 +AutoScale=1 + +[meterDownloadBar] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureNetIn +X=10 +Y=92 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Recycle Bin/Recycle Bin.ini b/Build/Skins/illustro/Recycle Bin/Recycle Bin.ini similarity index 96% rename from BuildTools/Skins/illustro/Recycle Bin/Recycle Bin.ini rename to Build/Skins/illustro/Recycle Bin/Recycle Bin.ini index 9a1a7448..1ecbd933 100644 --- a/BuildTools/Skins/illustro/Recycle Bin/Recycle Bin.ini +++ b/Build/Skins/illustro/Recycle Bin/Recycle Bin.ini @@ -1,147 +1,147 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Shows the state and size of your Recycle Bin. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureBinItems] -; This measure returns the amount of items in the Recycle Bin. -Measure=Plugin -Plugin=RecycleManager.dll -RecycleType=COUNT -UpdateDivider=3 -; UpdateDivider sets the rate at which the value of the measure is updated. It is -; calculated as follows: UpdateDivider x Update. In this case, Update is set to -; 1000 milliseconds (in the [Rainmeter] section). 1000 x 3 = 3000 ms or 3 seconds. - -[measureBinSize] -; Returns the total size of the Recycle Bin in bytes. -Measure=Plugin -Plugin=RecycleManager.dll -RecycleType=SIZE -UpdateDivider=3 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="Recycle Bin" -; Even though the text is set to Recycle Bin, Rainmeter will display -; it as RECYCLE BIN, because styleTitle contains StringCase=UPPER. -LeftMouseUpAction=!Execute [!PluginBang "measureBinItems OpenBin"] -RightMouseUpAction=!Execute [!PluginBang "measureBinItems EmptyBin"] -ToolTipText="Left-click to open Recycle Bin#CRLF#Right-click to empty" -; Hovering over this meter will display a tooltip with the text above. -; The #CRLF# variable creates a new line. - -[meterBinItems] -Meter=STRING -MeterStyle=styleLeftText -MeasureName=measureBinItems -X=10 -Y=40 -W=190 -H=14 -Text="%1 items" -; %1 stands for the value of MeasureName (measureBinItems in this case). - -[meterBinSize] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureBinSize -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1B" -AutoScale=1 -; Because measureBinSize returns the size in bytes, we must use AutoScale=1 to -; automatically scale the value into a more readable figure. - -[meterSeperator] -Meter=IMAGE -MeterStyle=styleSeperator -X=10 -Y=52 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Shows the state and size of your Recycle Bin. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureBinItems] +; This measure returns the amount of items in the Recycle Bin. +Measure=Plugin +Plugin=RecycleManager.dll +RecycleType=COUNT +UpdateDivider=3 +; UpdateDivider sets the rate at which the value of the measure is updated. It is +; calculated as follows: UpdateDivider x Update. In this case, Update is set to +; 1000 milliseconds (in the [Rainmeter] section). 1000 x 3 = 3000 ms or 3 seconds. + +[measureBinSize] +; Returns the total size of the Recycle Bin in bytes. +Measure=Plugin +Plugin=RecycleManager.dll +RecycleType=SIZE +UpdateDivider=3 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="Recycle Bin" +; Even though the text is set to Recycle Bin, Rainmeter will display +; it as RECYCLE BIN, because styleTitle contains StringCase=UPPER. +LeftMouseUpAction=!Execute [!PluginBang "measureBinItems OpenBin"] +RightMouseUpAction=!Execute [!PluginBang "measureBinItems EmptyBin"] +ToolTipText="Left-click to open Recycle Bin#CRLF#Right-click to empty" +; Hovering over this meter will display a tooltip with the text above. +; The #CRLF# variable creates a new line. + +[meterBinItems] +Meter=STRING +MeterStyle=styleLeftText +MeasureName=measureBinItems +X=10 +Y=40 +W=190 +H=14 +Text="%1 items" +; %1 stands for the value of MeasureName (measureBinItems in this case). + +[meterBinSize] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureBinSize +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1B" +AutoScale=1 +; Because measureBinSize returns the size in bytes, we must use AutoScale=1 to +; automatically scale the value into a more readable figure. + +[meterSeperator] +Meter=IMAGE +MeterStyle=styleSeperator +X=10 +Y=52 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/System/System.ini b/Build/Skins/illustro/System/System.ini similarity index 95% rename from BuildTools/Skins/illustro/System/System.ini rename to Build/Skins/illustro/System/System.ini index c7a89ffa..5b92a963 100644 --- a/BuildTools/Skins/illustro/System/System.ini +++ b/Build/Skins/illustro/System/System.ini @@ -1,206 +1,206 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 -Background=#@#Background.png -; #@# is equal to Rainmeter\Skins\illustro\@Resources -BackgroundMode=3 -BackgroundMargins=0,34,0,14 - -[Metadata] -; Contains basic information of the skin. -Description=Displays basic system stats. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=8 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; MEASURES return some kind of value -; ---------------------------------- - -[measureCPU] -; This measure returns the average CPU load between all cores. -Measure=CPU -Processor=0 - -[measureRAM] -; Returns the amount of RAM used in bytes. -Measure=PhysicalMemory -UpdateDivider=20 -; UpdateDivider sets the rate at which the value of the measure is updated. It is -; calculated as follows: UpdateDivider x Update. In this case, Update is set to -; 1000 milliseconds (in the [Rainmeter] section). 1000 x 20 = 20000 ms or 20 seconds. - -[measureSWAP] -; Returns the amount of SWAP (pagefile) used in bytes. -Measure=SWAPMemory -UpdateDivider=20 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=CENTER -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleRightText] -StringAlign=RIGHT -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleBar] -BarColor=#colorBar# -BarOrientation=HORIZONTAL -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=100 -Y=12 -W=190 -H=18 -Text="System" -; Even though the text is set to System, Rainmeter will display -; it as SYSTEM, because styleTitle contains StringCase=UPPER. -LeftMouseUpAction=!Execute ["taskmgr.exe"] -; Left-clicking this meter will launch taskmgr.exe (the Task Manager). -ToolTipText="Open Task Manager" -; Hovering over this meter will display a tooltip with the text above. - -[meterLabelCPU] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=40 -W=190 -H=14 -Text="CPU Usage" - -[meterValueCPU] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureCPU -X=200 -Y=0r -; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels -; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). -W=190 -H=14 -Text="%1%" -; %1 stands for the value of MeasureName (measureCPU in this case). - -[meterBarCPU] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureCPU -X=10 -Y=52 -W=190 -H=1 - -[meterLabelRAM] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=60 -W=190 -H=14 -Text="RAM Usage" - -[meterValueRAM] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureRAM -X=200 -Y=0r -W=190 -H=14 -Text="%1%" -Percentual=1 -; Percentual=1 needs to be added her because measureRAM returns the amount -; of RAM used in bytes. Using Percentual=1 will convert that into a percentual value. - -[meterBarRAM] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureRAM -X=10 -Y=72 -W=190 -H=1 - -[meterLabelSWAP] -Meter=STRING -MeterStyle=styleLeftText -X=10 -Y=80 -W=190 -H=14 -Text="SWAP Usage" - -[meterValueSWAP] -Meter=STRING -MeterStyle=styleRightText -MeasureName=measureSWAP -X=200 -Y=0r -W=190 -H=14 -Text="%1%" -Percentual=1 - -[meterBarSWAP] -Meter=BAR -MeterStyle=styleBar -MeasureName=measureSWAP -X=10 -Y=92 -W=190 +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 +Background=#@#Background.png +; #@# is equal to Rainmeter\Skins\illustro\@Resources +BackgroundMode=3 +BackgroundMargins=0,34,0,14 + +[Metadata] +; Contains basic information of the skin. +Description=Displays basic system stats. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=8 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; MEASURES return some kind of value +; ---------------------------------- + +[measureCPU] +; This measure returns the average CPU load between all cores. +Measure=CPU +Processor=0 + +[measureRAM] +; Returns the amount of RAM used in bytes. +Measure=PhysicalMemory +UpdateDivider=20 +; UpdateDivider sets the rate at which the value of the measure is updated. It is +; calculated as follows: UpdateDivider x Update. In this case, Update is set to +; 1000 milliseconds (in the [Rainmeter] section). 1000 x 20 = 20000 ms or 20 seconds. + +[measureSWAP] +; Returns the amount of SWAP (pagefile) used in bytes. +Measure=SWAPMemory +UpdateDivider=20 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=CENTER +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleRightText] +StringAlign=RIGHT +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleBar] +BarColor=#colorBar# +BarOrientation=HORIZONTAL +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=100 +Y=12 +W=190 +H=18 +Text="System" +; Even though the text is set to System, Rainmeter will display +; it as SYSTEM, because styleTitle contains StringCase=UPPER. +LeftMouseUpAction=!Execute ["taskmgr.exe"] +; Left-clicking this meter will launch taskmgr.exe (the Task Manager). +ToolTipText="Open Task Manager" +; Hovering over this meter will display a tooltip with the text above. + +[meterLabelCPU] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=40 +W=190 +H=14 +Text="CPU Usage" + +[meterValueCPU] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureCPU +X=200 +Y=0r +; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels +; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU). +W=190 +H=14 +Text="%1%" +; %1 stands for the value of MeasureName (measureCPU in this case). + +[meterBarCPU] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureCPU +X=10 +Y=52 +W=190 +H=1 + +[meterLabelRAM] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=60 +W=190 +H=14 +Text="RAM Usage" + +[meterValueRAM] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureRAM +X=200 +Y=0r +W=190 +H=14 +Text="%1%" +Percentual=1 +; Percentual=1 needs to be added her because measureRAM returns the amount +; of RAM used in bytes. Using Percentual=1 will convert that into a percentual value. + +[meterBarRAM] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureRAM +X=10 +Y=72 +W=190 +H=1 + +[meterLabelSWAP] +Meter=STRING +MeterStyle=styleLeftText +X=10 +Y=80 +W=190 +H=14 +Text="SWAP Usage" + +[meterValueSWAP] +Meter=STRING +MeterStyle=styleRightText +MeasureName=measureSWAP +X=200 +Y=0r +W=190 +H=14 +Text="%1%" +Percentual=1 + +[meterBarSWAP] +Meter=BAR +MeterStyle=styleBar +MeasureName=measureSWAP +X=10 +Y=92 +W=190 H=1 \ No newline at end of file diff --git a/BuildTools/Skins/illustro/Welcome/Background.png b/Build/Skins/illustro/Welcome/Background.png similarity index 100% rename from BuildTools/Skins/illustro/Welcome/Background.png rename to Build/Skins/illustro/Welcome/Background.png diff --git a/BuildTools/Skins/illustro/Welcome/Welcome.ini b/Build/Skins/illustro/Welcome/Welcome.ini similarity index 95% rename from BuildTools/Skins/illustro/Welcome/Welcome.ini rename to Build/Skins/illustro/Welcome/Welcome.ini index a16764aa..f0597fca 100644 --- a/BuildTools/Skins/illustro/Welcome/Welcome.ini +++ b/Build/Skins/illustro/Welcome/Welcome.ini @@ -1,173 +1,173 @@ -; Lines starting ; (semicolons) are commented out. -; That is, they do not affect the code and are here for demonstration purposes only. -; ---------------------------------- - -[Rainmeter] -; This section contains general settings that can be used to change how Rainmeter behaves. -Author=poiru -AppVersion=2003000 -Update=1000 - -[Metadata] -; Contains basic information of the skin. -Description=The welcome skin for illustro. -License=Creative Commons BY-NC-SA 3.0 -Version=1.0.0 - -[Variables] -; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). -fontName=Trebuchet MS -textSize=9 -colorBar=235,170,0,255 -colorText=255,255,255,205 - -; ---------------------------------- -; STYLES are used to "centralize" options -; ---------------------------------- - -[styleTitle] -StringAlign=LEFT -StringCase=UPPER -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,50 -FontColor=#colorText# -FontFace=#fontName# -FontSize=10 -AntiAlias=1 -ClipString=1 - -[styleLeftText] -StringAlign=LEFT -; Meters using styleLeftText will be left-aligned. -StringCase=NONE -StringStyle=BOLD -StringEffect=SHADOW -FontEffectColor=0,0,0,20 -FontColor=#colorText# -FontFace=#fontName# -FontSize=#textSize# -AntiAlias=1 -ClipString=1 - -[styleSeperator] -SolidColor=255,255,255,15 - -; ---------------------------------- -; METERS display images, text, bars, etc. -; ---------------------------------- - -[meterBackground] -Meter=IMAGE -ImageName=Background.png -X=0 -Y=0 - -[meterMidLine] -Meter=IMAGE -SolidColor=255,255,255,80 -W=1 -H=200 -X=245 -Y=60 - -[meterTitle] -Meter=STRING -MeterStyle=styleTitle -; Using MeterStyle=styleTitle will basically "copy" the -; contents of the [styleTitle] section here during runtime. -X=20 -Y=18 -W=400 -H=18 -FontSize=11 -Text="Welcome to Rainmeter!" - -[meterIllustroTitle] -Meter=STRING -MeterStyle=styleLeftText -X=20 -Y=55 -W=240 -H=30 -FontColor=255,217,120,255 -FontSize=10 -Text="illustro: Getting started with Rainmeter skinning" - -[meterIllustroLine] -Meter=STRING -MeterStyle=styleLeftText -X=20 -Y=95 -W=225 -H=175 -FontColor=#colorText# -FontSize=9 -Text="illustro is a simple set of skins designed to show some of the capabilities of Rainmeter. It offers a good place to start learning how to edit Rainmeter to make it your own. Use the "Rainmeter 101" link on the right to learn the basics.#CRLF##CRLF#To explore installed skins and change Rainmeter settings, simply click on the Rainmeter tray icon." -; #CRLF# is a pre-defined varaible for newline. - -[meterLinksTitle] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=55 -W=235 -H=30 -FontColor=255,217,120,255 -FontSize=10 -Text=Recommended skin suites: Start using Rainmeter now! - -[meterLinksLine] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=95 -W=225 -H=80 -FontColor=#colorText# -FontSize=9 -Text=There are literally thousands of skins available for Rainmeter. We have a few popular ones we recommend, which you can install with just a few clicks. - -[meterLink1] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=175 -W=225 -H=14 -FontColor=255,217,120,255 -Text="» Recommended Skin Suites" -LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Discover"] - -[meterLink2] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=195 -W=225 -H=14 -FontColor=255,174,69,255 -Text="» Rainmeter 101" -LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Rainmeter101"] - -[meterLink3] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=215 -W=225 -H=14 -FontColor=255,174,69,255 -Text="» Rainmeter Manual" -LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Support"] - -[meterLink4] -Meter=STRING -MeterStyle=styleLeftText -X=260 -Y=235 -W=225 -H=14 -FontColor=255,174,69,255 -Text="» Rainmeter Forums" +; Lines starting ; (semicolons) are commented out. +; That is, they do not affect the code and are here for demonstration purposes only. +; ---------------------------------- + +[Rainmeter] +; This section contains general settings that can be used to change how Rainmeter behaves. +Author=poiru +AppVersion=2003000 +Update=1000 + +[Metadata] +; Contains basic information of the skin. +Description=The welcome skin for illustro. +License=Creative Commons BY-NC-SA 3.0 +Version=1.0.0 + +[Variables] +; Variables declared here can be used later on between two # characters (e.g. #MyVariable#). +fontName=Trebuchet MS +textSize=9 +colorBar=235,170,0,255 +colorText=255,255,255,205 + +; ---------------------------------- +; STYLES are used to "centralize" options +; ---------------------------------- + +[styleTitle] +StringAlign=LEFT +StringCase=UPPER +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,50 +FontColor=#colorText# +FontFace=#fontName# +FontSize=10 +AntiAlias=1 +ClipString=1 + +[styleLeftText] +StringAlign=LEFT +; Meters using styleLeftText will be left-aligned. +StringCase=NONE +StringStyle=BOLD +StringEffect=SHADOW +FontEffectColor=0,0,0,20 +FontColor=#colorText# +FontFace=#fontName# +FontSize=#textSize# +AntiAlias=1 +ClipString=1 + +[styleSeperator] +SolidColor=255,255,255,15 + +; ---------------------------------- +; METERS display images, text, bars, etc. +; ---------------------------------- + +[meterBackground] +Meter=IMAGE +ImageName=Background.png +X=0 +Y=0 + +[meterMidLine] +Meter=IMAGE +SolidColor=255,255,255,80 +W=1 +H=200 +X=245 +Y=60 + +[meterTitle] +Meter=STRING +MeterStyle=styleTitle +; Using MeterStyle=styleTitle will basically "copy" the +; contents of the [styleTitle] section here during runtime. +X=20 +Y=18 +W=400 +H=18 +FontSize=11 +Text="Welcome to Rainmeter!" + +[meterIllustroTitle] +Meter=STRING +MeterStyle=styleLeftText +X=20 +Y=55 +W=240 +H=30 +FontColor=255,217,120,255 +FontSize=10 +Text="illustro: Getting started with Rainmeter skinning" + +[meterIllustroLine] +Meter=STRING +MeterStyle=styleLeftText +X=20 +Y=95 +W=225 +H=175 +FontColor=#colorText# +FontSize=9 +Text="illustro is a simple set of skins designed to show some of the capabilities of Rainmeter. It offers a good place to start learning how to edit Rainmeter to make it your own. Use the "Rainmeter 101" link on the right to learn the basics.#CRLF##CRLF#To explore installed skins and change Rainmeter settings, simply click on the Rainmeter tray icon." +; #CRLF# is a pre-defined varaible for newline. + +[meterLinksTitle] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=55 +W=235 +H=30 +FontColor=255,217,120,255 +FontSize=10 +Text=Recommended skin suites: Start using Rainmeter now! + +[meterLinksLine] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=95 +W=225 +H=80 +FontColor=#colorText# +FontSize=9 +Text=There are literally thousands of skins available for Rainmeter. We have a few popular ones we recommend, which you can install with just a few clicks. + +[meterLink1] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=175 +W=225 +H=14 +FontColor=255,217,120,255 +Text="» Recommended Skin Suites" +LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Discover"] + +[meterLink2] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=195 +W=225 +H=14 +FontColor=255,174,69,255 +Text="» Rainmeter 101" +LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Rainmeter101"] + +[meterLink3] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=215 +W=225 +H=14 +FontColor=255,174,69,255 +Text="» Rainmeter Manual" +LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Support"] + +[meterLink4] +Meter=STRING +MeterStyle=styleLeftText +X=260 +Y=235 +W=225 +H=14 +FontColor=255,174,69,255 +Text="» Rainmeter Forums" LeftMouseUpAction=!Execute ["http://rainmeter.net/forums"] \ No newline at end of file diff --git a/BuildTools/VS/Rainmeter.Cpp.Default.props b/Build/VS/Rainmeter.Cpp.Default.props similarity index 97% rename from BuildTools/VS/Rainmeter.Cpp.Default.props rename to Build/VS/Rainmeter.Cpp.Default.props index 7545c67a..acfa2e60 100644 --- a/BuildTools/VS/Rainmeter.Cpp.Default.props +++ b/Build/VS/Rainmeter.Cpp.Default.props @@ -1,31 +1,31 @@ - - - - - $(SolutionDir)..\WinDDK\7600.16385.1\ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - Unicode - v120_xp - + + + + + $(SolutionDir)..\WinDDK\7600.16385.1\ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + + Unicode + v120_xp + \ No newline at end of file diff --git a/BuildTools/VS/Rainmeter.Cpp.props b/Build/VS/Rainmeter.Cpp.props similarity index 97% rename from BuildTools/VS/Rainmeter.Cpp.props rename to Build/VS/Rainmeter.Cpp.props index d4b94401..8a5fc870 100644 --- a/BuildTools/VS/Rainmeter.Cpp.props +++ b/Build/VS/Rainmeter.Cpp.props @@ -1,129 +1,129 @@ - - - - - - $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath); - - - - true - true - - - - true - - - - - $(SolutionDir)x32-$(Configuration)\ - $(SolutionDir)x64-$(Configuration)\ - - $(RmOutDirRoot) - $(OutDir)\Obj\$(ProjectName)\ - - - - - $(IntDir) - - - - - - false - - - Microsoft.VisualStudio.TestTools.CppUnitTestFramework.dll - Microsoft.VisualStudio.TestTools.CppUnitTestFramework.x64.dll - - - - - - - $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) - - - $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) - - - - - - - 4351;%(DisableSpecificWarnings) - - false - - - - WIN32;_WINDOWS;WINVER=0x0601;_WIN32_WINNT=0x0601;_WIN32_IE=0x0601;PSAPI_VERSION=1;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) - Level3 - - - Windows - $(IntDir)$(TargetName).lib - $(IntDir)$(TargetName).pdb - false - - - 0x0409 - - - - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - EnableFastChecks - - - true - - - _DEBUG;%(PreprocessorDefinitions) - - - - - - true - MaxSpeed - NDEBUG;%(PreprocessorDefinitions) - true - true - /Gw %(AdditionalOptions) - - - false - UseLinkTimeCodeGeneration - .rdata=.text - true - true - - - NDEBUG;%(PreprocessorDefinitions) - - - - - - StreamingSIMDExtensions - - - MachineX86 - - - - - - _WIN64;%(PreprocessorDefinitions) - - - MachineX64 - - + + + + + + $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath); + + + + true + true + + + + true + + + + + $(SolutionDir)x32-$(Configuration)\ + $(SolutionDir)x64-$(Configuration)\ + + $(RmOutDirRoot) + $(OutDir)\Obj\$(ProjectName)\ + + + + + $(IntDir) + + + + + + false + + + Microsoft.VisualStudio.TestTools.CppUnitTestFramework.dll + Microsoft.VisualStudio.TestTools.CppUnitTestFramework.x64.dll + + + + + + + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + + + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + + + 4351;%(DisableSpecificWarnings) + + false + + + + WIN32;_WINDOWS;WINVER=0x0601;_WIN32_WINNT=0x0601;_WIN32_IE=0x0601;PSAPI_VERSION=1;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) + Level3 + + + Windows + $(IntDir)$(TargetName).lib + $(IntDir)$(TargetName).pdb + false + + + 0x0409 + + + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + + + true + + + _DEBUG;%(PreprocessorDefinitions) + + + + + + true + MaxSpeed + NDEBUG;%(PreprocessorDefinitions) + true + true + /Gw %(AdditionalOptions) + + + false + UseLinkTimeCodeGeneration + .rdata=.text + true + true + + + NDEBUG;%(PreprocessorDefinitions) + + + + + + StreamingSIMDExtensions + + + MachineX86 + + + + + + _WIN64;%(PreprocessorDefinitions) + + + MachineX64 + + \ No newline at end of file diff --git a/BuildTools/VS/RainmeterPlugin.Cpp.props b/Build/VS/RainmeterPlugin.Cpp.props similarity index 97% rename from BuildTools/VS/RainmeterPlugin.Cpp.props rename to Build/VS/RainmeterPlugin.Cpp.props index 486163dc..7677773f 100644 --- a/BuildTools/VS/RainmeterPlugin.Cpp.props +++ b/Build/VS/RainmeterPlugin.Cpp.props @@ -1,18 +1,18 @@ - - - - false - $(OutDir)Plugins\ - - - - - $(SolutionDir)Plugins\API\x32\Rainmeter.lib;%(AdditionalDependencies) - - - - - $(SolutionDir)Plugins\API\x64\Rainmeter.lib;%(AdditionalDependencies) - - + + + + false + $(OutDir)Plugins\ + + + + + $(SolutionDir)Plugins\API\x32\Rainmeter.lib;%(AdditionalDependencies) + + + + + $(SolutionDir)Plugins\API\x64\Rainmeter.lib;%(AdditionalDependencies) + + \ No newline at end of file diff --git a/BuildTools/VS/RainmeterPlugin.Cs.props b/Build/VS/RainmeterPlugin.Cs.props similarity index 98% rename from BuildTools/VS/RainmeterPlugin.Cs.props rename to Build/VS/RainmeterPlugin.Cs.props index b79649ae..53b7ff31 100644 --- a/BuildTools/VS/RainmeterPlugin.Cs.props +++ b/Build/VS/RainmeterPlugin.Cs.props @@ -1,9 +1,9 @@ - - - - $(SolutionDir)x32-$(Configuration)\ - $(SolutionDir)x64-$(Configuration)\ - - $(RmOutDirRoot)Plugins\ - + + + + $(SolutionDir)x32-$(Configuration)\ + $(SolutionDir)x64-$(Configuration)\ + + $(RmOutDirRoot)Plugins\ + \ No newline at end of file diff --git a/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj b/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj index f235ff84..47efa5b9 100644 --- a/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj +++ b/RainmeterStudio.Tests/RainmeterStudio.Tests.csproj @@ -1,96 +1,96 @@ - - - - Debug - AnyCPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A} - Library - Properties - RainmeterStudio.Tests - RainmeterStudio.Tests - v4.0 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - x86 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - 3.5 - - - - - - - - - - - - - - - - - - - - - - - - {438d0136-4a27-4e4d-a617-fface4554236} - RainmeterStudio - - - - - - - False - - - False - - - False - - - False - - - - - - - + + + + Debug + AnyCPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A} + Library + Properties + RainmeterStudio.Tests + RainmeterStudio.Tests + v4.0 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + {438d0136-4a27-4e4d-a617-fface4554236} + RainmeterStudio + + + + + + + False + + + False + + + False + + + False + + + + + + + \ No newline at end of file diff --git a/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs b/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs index adac4e10..fdd834b8 100644 --- a/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs +++ b/RainmeterStudio.Tests/Storage/ProjectStorageTest.cs @@ -1,110 +1,110 @@ -using System; -using System.Text; -using System.Collections.Generic; -using System.Linq; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using RainmeterEditor.Storage; -using RainmeterEditor.Model; -using System.IO; - -namespace RainmeterStudio.Tests.Storage -{ - /// - /// Tests the ProjectStorage class - /// - [TestClass] - public class ProjectStorageTest - { - private ProjectStorage ProjectStorage = new ProjectStorage(); - - public TestContext TestContext { get; set; } - - [TestInitialize] - public void Initialize() - { - Directory.SetCurrentDirectory(TestContext.DeploymentDirectory); - } - - [TestMethod] - public void ProjectStorageSmokeTest() - { - string filename = TestContext.TestName + ".rsproj"; - - // Create project - Project project = CreateProject(); - - // Save and load - ProjectStorage.Save(filename, project); - Project res = ProjectStorage.Load(filename); - - // Verify results - Assert.IsNotNull(res); - Assert.AreEqual(project, res); - Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); - Assert.AreEqual(project.Author, res.Author); - Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); - Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); - Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); - Assert.AreEqual(project.Name, res.Name); - Assert.AreEqual(project.Root, res.Root); - Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); - Assert.AreEqual(project.Version, res.Version); - } - - [TestMethod] - public void ProjectStorageEmptyProjectSmokeTest() - { - string filename = TestContext.TestName + ".rsproj"; - - // Create a project - Project project = new Project(); - - // Save and load project - ProjectStorage.Save(filename, project); - Project res = ProjectStorage.Load(filename); - - // Test results - Assert.IsNotNull(res); - Assert.AreEqual(project, res); - Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); - Assert.AreEqual(project.Author, res.Author); - Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); - Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); - Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); - Assert.AreEqual(project.Name, res.Name); - Assert.AreEqual(project.Root, res.Root); - Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); - Assert.AreEqual(project.Version, res.Version); - } - - private Project CreateProject() - { - // Create some file references - Reference folder1 = new Reference("folder1"); - Reference folder2 = new Reference("folder2"); - Reference file1 = new Reference("file1.txt"); - Reference file2 = new Reference("file2.ini"); - Reference file3 = new Reference("file3.bmp"); - - // Create a project - Project project = new Project(); - project.Author = "Tiberiu Chibici"; - project.MinimumRainmeter = new Version("3.1"); - project.MinimumWindows = new Version("5.1"); - project.Name = "My project"; - project.Version = new Version("1.0.1"); - - project.AutoLoadFile = file2; - project.VariableFiles.Add(file1); - - // Set project references - project.Root.Add(folder1); - project.Root.Add(folder2); - project.Root[0].Add(file1); - project.Root[1].Add(file2); - project.Root.Add(file3); - - return project; - } - } -} +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using RainmeterStudio.Storage; +using RainmeterStudio.Model; +using System.IO; + +namespace RainmeterStudio.Tests.Storage +{ + /// + /// Tests the ProjectStorage class + /// + [TestClass] + public class ProjectStorageTest + { + private ProjectStorage ProjectStorage = new ProjectStorage(); + + public TestContext TestContext { get; set; } + + [TestInitialize] + public void Initialize() + { + Directory.SetCurrentDirectory(TestContext.DeploymentDirectory); + } + + [TestMethod] + public void ProjectStorageSmokeTest() + { + string filename = TestContext.TestName + ".rsproj"; + + // Create project + Project project = CreateProject(); + + // Save and load + ProjectStorage.Save(filename, project); + Project res = ProjectStorage.Load(filename); + + // Verify results + Assert.IsNotNull(res); + Assert.AreEqual(project, res); + Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); + Assert.AreEqual(project.Author, res.Author); + Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); + Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); + Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); + Assert.AreEqual(project.Name, res.Name); + Assert.AreEqual(project.Root, res.Root); + Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); + Assert.AreEqual(project.Version, res.Version); + } + + [TestMethod] + public void ProjectStorageEmptyProjectSmokeTest() + { + string filename = TestContext.TestName + ".rsproj"; + + // Create a project + Project project = new Project(); + + // Save and load project + ProjectStorage.Save(filename, project); + Project res = ProjectStorage.Load(filename); + + // Test results + Assert.IsNotNull(res); + Assert.AreEqual(project, res); + Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); + Assert.AreEqual(project.Author, res.Author); + Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); + Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); + Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); + Assert.AreEqual(project.Name, res.Name); + Assert.AreEqual(project.Root, res.Root); + Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); + Assert.AreEqual(project.Version, res.Version); + } + + private Project CreateProject() + { + // Create some file references + Reference folder1 = new Reference("folder1"); + Reference folder2 = new Reference("folder2"); + Reference file1 = new Reference("file1.txt"); + Reference file2 = new Reference("file2.ini"); + Reference file3 = new Reference("file3.bmp"); + + // Create a project + Project project = new Project(); + project.Author = "Tiberiu Chibici"; + project.MinimumRainmeter = new Version("3.1"); + project.MinimumWindows = new Version("5.1"); + project.Name = "My project"; + project.Version = new Version("1.0.1"); + + project.AutoLoadFile = file2; + project.VariableFiles.Add(file1); + + // Set project references + project.Root.Add(folder1); + project.Root.Add(folder2); + project.Root[0].Add(file1); + project.Root[1].Add(file2); + project.Root.Add(file3); + + return project; + } + } +} diff --git a/RainmeterEditor.exe.config b/RainmeterStudio.exe.config similarity index 98% rename from RainmeterEditor.exe.config rename to RainmeterStudio.exe.config index fcd0c937..57c0f2cb 100644 --- a/RainmeterEditor.exe.config +++ b/RainmeterStudio.exe.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/RainmeterStudio.sln b/RainmeterStudio.sln index ffea0851..9566f702 100644 --- a/RainmeterStudio.sln +++ b/RainmeterStudio.sln @@ -1,535 +1,535 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30110.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Common\Common.vcxproj", "{19312085-AA51-4BD6-BE92-4B6098CCA539}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Installer", "Installer\Installer.vcxproj", "{2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Language", "Language\Language.vcxproj", "{6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library", "Library\Library.vcxproj", "{BE9D2400-7F1C-49D6-8498-5CE495491AD6}" - ProjectSection(ProjectDependencies) = postProject - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} = {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} - {19312085-AA51-4BD6-BE92-4B6098CCA539} = {19312085-AA51-4BD6-BE92-4B6098CCA539} - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} = {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} - {6D61FBE9-6913-4885-A95D-1A8C0C223D82} = {6D61FBE9-6913-4885-A95D-1A8C0C223D82} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_Lua", "Library\Library_Lua.vcxproj", "{BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_PCRE", "Library\Library_PCRE.vcxproj", "{6D61FBE9-6913-4885-A95D-1A8C0C223D82}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstaller", "SkinInstaller\SkinInstaller.vcxproj", "{6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstallerLauncher", "SkinInstaller\SkinInstallerLauncher.vcxproj", "{2D8F1DDB-6470-45A1-B95A-3E2960641314}" - ProjectSection(ProjectDependencies) = postProject - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} = {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginAdvancedCPU", "Plugins\PluginAdvancedCPU\PluginAdvancedCPU.vcxproj", "{EE8EC522-8430-4B46-86A3-D943D77F9E4B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginCoreTemp", "Plugins\PluginCoreTemp\PluginCoreTemp.vcxproj", "{F32FA418-8DF4-4E94-B92B-EBD502F5DC07}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFileView", "Plugins\PluginFileView\PluginFileView.vcxproj", "{64FDEE97-6B7E-40E5-A489-ECA322825BC8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFolderInfo", "Plugins\PluginFolderInfo\PluginFolderInfo.vcxproj", "{A221819D-4263-42AA-B22A-C022924842A7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginInputText", "Plugins\PluginInputText\PluginInputText.csproj", "{2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginiTunes", "Plugins\PluginiTunes\PluginiTunes.vcxproj", "{A2DD3CBE-B140-4892-A875-24107FA52518}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginMediaKey", "Plugins\PluginMediaKey\PluginMediaKey.vcxproj", "{EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginNowPlaying", "Plugins\PluginNowPlaying\PluginNowPlaying.vcxproj", "{C7FECFCD-E6C6-4F95-BB9A-E1762B043969}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPerfMon", "Plugins\PluginPerfMon\PluginPerfMon.vcxproj", "{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPing", "Plugins\PluginPing\PluginPing.vcxproj", "{C862B662-5CC6-4E79-B1B3-905E0B98D627}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPower", "Plugins\PluginPower\PluginPower.vcxproj", "{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginProcess", "Plugins\PluginProcess\PluginProcess.vcxproj", "{05203741-CD80-4060-8218-EC5D1120FE3E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginQuote", "Plugins\PluginQuote\PluginQuote.vcxproj", "{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginRecycleManager", "Plugins\PluginRecycleManager\PluginRecycleManager.vcxproj", "{4F8C4C09-431C-45C4-830B-32006E783C3A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginResMon", "Plugins\PluginResMon\PluginResMon.vcxproj", "{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSpeedFan", "Plugins\PluginSpeedFan\PluginSpeedFan.vcxproj", "{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSysInfo", "Plugins\PluginSysInfo\PluginSysInfo.vcxproj", "{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginVirtualDesktops", "Plugins\PluginVirtualDesktops\PluginVirtualDesktops.vcxproj", "{4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWebParser", "Plugins\PluginWebParser\PluginWebParser.vcxproj", "{8B820B9F-C154-417C-A090-42198F2AF496}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWifiStatus", "Plugins\PluginWifiStatus\PluginWifiStatus.vcxproj", "{45A34285-56DD-4521-912B-3F884D36FA35}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWin7Audio", "Plugins\PluginWin7Audio\PluginWin7Audio.vcxproj", "{6D032D6B-7656-4743-B454-3388E2921EB0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWindowMessage", "Plugins\PluginWindowMessage\PluginWindowMessage.vcxproj", "{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio", "RainmeterEditor\RainmeterStudio.csproj", "{438D0136-4A27-4E4D-A617-FFACE4554236}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio.Tests", "RainmeterStudio.Tests\RainmeterStudio.Tests.csproj", "{845F4BD4-6822-4D92-9DDB-15FD18A47E5A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.ActiveCfg = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.Build.0 = Debug|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.ActiveCfg = Debug|x64 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.Build.0 = Debug|x64 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Any CPU.ActiveCfg = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.Build.0 = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.ActiveCfg = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.Build.0 = Release|Win32 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.ActiveCfg = Release|x64 - {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.Build.0 = Release|x64 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Win32.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|x64.ActiveCfg = Debug|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Any CPU.ActiveCfg = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.Build.0 = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Win32.ActiveCfg = Release|Win32 - {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|x64.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.ActiveCfg = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.Build.0 = Debug|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.ActiveCfg = Debug|x64 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.Build.0 = Debug|x64 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Any CPU.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.ActiveCfg = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.Build.0 = Release|Win32 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.ActiveCfg = Release|x64 - {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.Build.0 = Release|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.ActiveCfg = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.Build.0 = Debug|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.ActiveCfg = Debug|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.Build.0 = Debug|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Any CPU.ActiveCfg = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.Build.0 = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.ActiveCfg = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.Build.0 = Release|Win32 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.ActiveCfg = Release|x64 - {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.Build.0 = Release|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.ActiveCfg = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.Build.0 = Debug|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.ActiveCfg = Debug|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.Build.0 = Debug|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Any CPU.ActiveCfg = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.Build.0 = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.ActiveCfg = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.Build.0 = Release|Win32 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.ActiveCfg = Release|x64 - {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.Build.0 = Release|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.ActiveCfg = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.Build.0 = Debug|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.ActiveCfg = Debug|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.Build.0 = Debug|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Any CPU.ActiveCfg = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.ActiveCfg = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.Build.0 = Release|Win32 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.ActiveCfg = Release|x64 - {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.Build.0 = Release|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.ActiveCfg = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.Build.0 = Debug|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.ActiveCfg = Debug|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.Build.0 = Debug|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Any CPU.ActiveCfg = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.ActiveCfg = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.Build.0 = Release|Win32 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.ActiveCfg = Release|x64 - {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.Build.0 = Release|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.ActiveCfg = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.Build.0 = Debug|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.ActiveCfg = Debug|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.Build.0 = Debug|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Any CPU.ActiveCfg = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.Build.0 = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.ActiveCfg = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.Build.0 = Release|Win32 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.ActiveCfg = Release|x64 - {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.Build.0 = Release|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.ActiveCfg = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.Build.0 = Debug|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.ActiveCfg = Debug|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.Build.0 = Debug|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Any CPU.ActiveCfg = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.Build.0 = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.ActiveCfg = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.Build.0 = Release|Win32 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.ActiveCfg = Release|x64 - {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.Build.0 = Release|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.ActiveCfg = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.Build.0 = Debug|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.ActiveCfg = Debug|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.Build.0 = Debug|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Any CPU.ActiveCfg = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.Build.0 = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.ActiveCfg = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.Build.0 = Release|Win32 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.ActiveCfg = Release|x64 - {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.Build.0 = Release|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.ActiveCfg = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.Build.0 = Debug|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.ActiveCfg = Debug|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.Build.0 = Debug|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Any CPU.ActiveCfg = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.Build.0 = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.ActiveCfg = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.Build.0 = Release|Win32 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.ActiveCfg = Release|x64 - {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.Build.0 = Release|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.ActiveCfg = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.Build.0 = Debug|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.ActiveCfg = Debug|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.Build.0 = Debug|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Any CPU.ActiveCfg = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.Build.0 = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.ActiveCfg = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.Build.0 = Release|Win32 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.ActiveCfg = Release|x64 - {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.Build.0 = Release|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Any CPU.ActiveCfg = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.ActiveCfg = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.Build.0 = Debug|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.ActiveCfg = Debug|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.Build.0 = Debug|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Any CPU.ActiveCfg = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.Build.0 = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.ActiveCfg = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.Build.0 = Release|x86 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.ActiveCfg = Release|x64 - {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.Build.0 = Release|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.ActiveCfg = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.Build.0 = Debug|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.ActiveCfg = Debug|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.Build.0 = Debug|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Any CPU.ActiveCfg = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.Build.0 = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.ActiveCfg = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.Build.0 = Release|Win32 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.ActiveCfg = Release|x64 - {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.Build.0 = Release|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.ActiveCfg = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.Build.0 = Debug|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.ActiveCfg = Debug|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.Build.0 = Debug|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Any CPU.ActiveCfg = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.ActiveCfg = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.Build.0 = Release|Win32 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.ActiveCfg = Release|x64 - {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.Build.0 = Release|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.ActiveCfg = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.Build.0 = Debug|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.ActiveCfg = Debug|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.Build.0 = Debug|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Any CPU.ActiveCfg = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.ActiveCfg = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.Build.0 = Release|Win32 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.ActiveCfg = Release|x64 - {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.Build.0 = Release|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.ActiveCfg = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.Build.0 = Debug|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.ActiveCfg = Debug|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.Build.0 = Debug|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Any CPU.ActiveCfg = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.Build.0 = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.ActiveCfg = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.Build.0 = Release|Win32 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.ActiveCfg = Release|x64 - {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.Build.0 = Release|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.ActiveCfg = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.Build.0 = Debug|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.ActiveCfg = Debug|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.Build.0 = Debug|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Any CPU.ActiveCfg = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.ActiveCfg = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.Build.0 = Release|Win32 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.ActiveCfg = Release|x64 - {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.Build.0 = Release|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.Build.0 = Debug|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.ActiveCfg = Debug|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.Build.0 = Debug|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Any CPU.ActiveCfg = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.ActiveCfg = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.Build.0 = Release|Win32 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.ActiveCfg = Release|x64 - {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.Build.0 = Release|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.ActiveCfg = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.Build.0 = Debug|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.ActiveCfg = Debug|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.Build.0 = Debug|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Any CPU.ActiveCfg = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.Build.0 = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.ActiveCfg = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.Build.0 = Release|Win32 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.ActiveCfg = Release|x64 - {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.Build.0 = Release|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.ActiveCfg = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.Build.0 = Debug|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.ActiveCfg = Debug|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.Build.0 = Debug|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Any CPU.ActiveCfg = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.Build.0 = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.ActiveCfg = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.Build.0 = Release|Win32 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.ActiveCfg = Release|x64 - {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.Build.0 = Release|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.ActiveCfg = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.Build.0 = Debug|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.ActiveCfg = Debug|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.Build.0 = Debug|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Any CPU.ActiveCfg = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.ActiveCfg = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.Build.0 = Release|Win32 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.ActiveCfg = Release|x64 - {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.Build.0 = Release|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.ActiveCfg = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.Build.0 = Debug|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.ActiveCfg = Debug|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.Build.0 = Debug|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Any CPU.ActiveCfg = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.Build.0 = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.ActiveCfg = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.Build.0 = Release|Win32 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.ActiveCfg = Release|x64 - {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.Build.0 = Release|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.ActiveCfg = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.Build.0 = Debug|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.ActiveCfg = Debug|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.Build.0 = Debug|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Any CPU.ActiveCfg = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.Build.0 = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.ActiveCfg = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.Build.0 = Release|Win32 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.ActiveCfg = Release|x64 - {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.Build.0 = Release|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.ActiveCfg = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.Build.0 = Debug|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.ActiveCfg = Debug|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.Build.0 = Debug|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Any CPU.ActiveCfg = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.ActiveCfg = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.Build.0 = Release|Win32 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.ActiveCfg = Release|x64 - {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.Build.0 = Release|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.ActiveCfg = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.Build.0 = Debug|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.ActiveCfg = Debug|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.Build.0 = Debug|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Any CPU.ActiveCfg = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.ActiveCfg = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.Build.0 = Release|Win32 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.ActiveCfg = Release|x64 - {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.Build.0 = Release|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.ActiveCfg = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.Build.0 = Debug|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.ActiveCfg = Debug|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.Build.0 = Debug|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Any CPU.ActiveCfg = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.Build.0 = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.ActiveCfg = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.Build.0 = Release|Win32 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.ActiveCfg = Release|x64 - {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.Build.0 = Release|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.ActiveCfg = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.Build.0 = Debug|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.ActiveCfg = Debug|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.Build.0 = Debug|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Any CPU.ActiveCfg = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.Build.0 = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.ActiveCfg = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.Build.0 = Release|Win32 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.ActiveCfg = Release|x64 - {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.Build.0 = Release|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.ActiveCfg = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.Build.0 = Debug|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.ActiveCfg = Debug|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.Build.0 = Debug|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Any CPU.ActiveCfg = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.ActiveCfg = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.Build.0 = Release|Win32 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.ActiveCfg = Release|x64 - {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.Build.0 = Release|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.ActiveCfg = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.Build.0 = Debug|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.ActiveCfg = Debug|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.Build.0 = Debug|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Any CPU.ActiveCfg = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.ActiveCfg = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.Build.0 = Release|Win32 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.ActiveCfg = Release|x64 - {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.Build.0 = Release|x64 - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.Build.0 = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Win32.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|x64.ActiveCfg = Debug|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.ActiveCfg = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.Build.0 = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Win32.ActiveCfg = Release|Any CPU - {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|x64.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Win32.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|x64.ActiveCfg = Debug|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.Build.0 = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Win32.ActiveCfg = Release|Any CPU - {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|x64.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30110.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Common\Common.vcxproj", "{19312085-AA51-4BD6-BE92-4B6098CCA539}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Installer", "Installer\Installer.vcxproj", "{2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Language", "Language\Language.vcxproj", "{6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library", "Library\Library.vcxproj", "{BE9D2400-7F1C-49D6-8498-5CE495491AD6}" + ProjectSection(ProjectDependencies) = postProject + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} = {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A} + {19312085-AA51-4BD6-BE92-4B6098CCA539} = {19312085-AA51-4BD6-BE92-4B6098CCA539} + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} = {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6} + {6D61FBE9-6913-4885-A95D-1A8C0C223D82} = {6D61FBE9-6913-4885-A95D-1A8C0C223D82} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_Lua", "Library\Library_Lua.vcxproj", "{BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Library_PCRE", "Library\Library_PCRE.vcxproj", "{6D61FBE9-6913-4885-A95D-1A8C0C223D82}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstaller", "SkinInstaller\SkinInstaller.vcxproj", "{6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkinInstallerLauncher", "SkinInstaller\SkinInstallerLauncher.vcxproj", "{2D8F1DDB-6470-45A1-B95A-3E2960641314}" + ProjectSection(ProjectDependencies) = postProject + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} = {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginAdvancedCPU", "Plugins\PluginAdvancedCPU\PluginAdvancedCPU.vcxproj", "{EE8EC522-8430-4B46-86A3-D943D77F9E4B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginCoreTemp", "Plugins\PluginCoreTemp\PluginCoreTemp.vcxproj", "{F32FA418-8DF4-4E94-B92B-EBD502F5DC07}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFileView", "Plugins\PluginFileView\PluginFileView.vcxproj", "{64FDEE97-6B7E-40E5-A489-ECA322825BC8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginFolderInfo", "Plugins\PluginFolderInfo\PluginFolderInfo.vcxproj", "{A221819D-4263-42AA-B22A-C022924842A7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginInputText", "Plugins\PluginInputText\PluginInputText.csproj", "{2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginiTunes", "Plugins\PluginiTunes\PluginiTunes.vcxproj", "{A2DD3CBE-B140-4892-A875-24107FA52518}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginMediaKey", "Plugins\PluginMediaKey\PluginMediaKey.vcxproj", "{EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginNowPlaying", "Plugins\PluginNowPlaying\PluginNowPlaying.vcxproj", "{C7FECFCD-E6C6-4F95-BB9A-E1762B043969}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPerfMon", "Plugins\PluginPerfMon\PluginPerfMon.vcxproj", "{5344B52B-BAC3-479C-B41D-D465B8BDA1AD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPing", "Plugins\PluginPing\PluginPing.vcxproj", "{C862B662-5CC6-4E79-B1B3-905E0B98D627}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginPower", "Plugins\PluginPower\PluginPower.vcxproj", "{C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginProcess", "Plugins\PluginProcess\PluginProcess.vcxproj", "{05203741-CD80-4060-8218-EC5D1120FE3E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginQuote", "Plugins\PluginQuote\PluginQuote.vcxproj", "{C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginRecycleManager", "Plugins\PluginRecycleManager\PluginRecycleManager.vcxproj", "{4F8C4C09-431C-45C4-830B-32006E783C3A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginResMon", "Plugins\PluginResMon\PluginResMon.vcxproj", "{17D3BD92-6F5D-438C-A89B-88F4CE06DB94}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSpeedFan", "Plugins\PluginSpeedFan\PluginSpeedFan.vcxproj", "{D10AB316-0F7A-4551-BE4F-385E04CCF1E8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginSysInfo", "Plugins\PluginSysInfo\PluginSysInfo.vcxproj", "{6EBCA4DA-8CC7-42FE-8F45-878ABE165078}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginVirtualDesktops", "Plugins\PluginVirtualDesktops\PluginVirtualDesktops.vcxproj", "{4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWebParser", "Plugins\PluginWebParser\PluginWebParser.vcxproj", "{8B820B9F-C154-417C-A090-42198F2AF496}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWifiStatus", "Plugins\PluginWifiStatus\PluginWifiStatus.vcxproj", "{45A34285-56DD-4521-912B-3F884D36FA35}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWin7Audio", "Plugins\PluginWin7Audio\PluginWin7Audio.vcxproj", "{6D032D6B-7656-4743-B454-3388E2921EB0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginWindowMessage", "Plugins\PluginWindowMessage\PluginWindowMessage.vcxproj", "{B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio", "RainmeterStudio\RainmeterStudio.csproj", "{438D0136-4A27-4E4D-A617-FFACE4554236}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RainmeterStudio.Tests", "RainmeterStudio.Tests\RainmeterStudio.Tests.csproj", "{845F4BD4-6822-4D92-9DDB-15FD18A47E5A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.ActiveCfg = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|Win32.Build.0 = Debug|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.ActiveCfg = Debug|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Debug|x64.Build.0 = Debug|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Any CPU.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Mixed Platforms.Build.0 = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.ActiveCfg = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|Win32.Build.0 = Release|Win32 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.ActiveCfg = Release|x64 + {19312085-AA51-4BD6-BE92-4B6098CCA539}.Release|x64.Build.0 = Release|x64 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|Win32.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Debug|x64.ActiveCfg = Debug|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Any CPU.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|Win32.ActiveCfg = Release|Win32 + {2FCFBFD2-2720-4BDD-B620-4BDD3DBB8D3D}.Release|x64.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.ActiveCfg = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|Win32.Build.0 = Debug|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.ActiveCfg = Debug|x64 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Debug|x64.Build.0 = Debug|x64 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Any CPU.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.ActiveCfg = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|Win32.Build.0 = Release|Win32 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.ActiveCfg = Release|x64 + {6BE6F228-B741-4DA9-9FBC-E9F2A7BD483A}.Release|x64.Build.0 = Release|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.ActiveCfg = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|Win32.Build.0 = Debug|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.ActiveCfg = Debug|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Debug|x64.Build.0 = Debug|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Any CPU.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Mixed Platforms.Build.0 = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.ActiveCfg = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|Win32.Build.0 = Release|Win32 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.ActiveCfg = Release|x64 + {BE9D2400-7F1C-49D6-8498-5CE495491AD6}.Release|x64.Build.0 = Release|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.ActiveCfg = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|Win32.Build.0 = Debug|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.ActiveCfg = Debug|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Debug|x64.Build.0 = Debug|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Any CPU.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Mixed Platforms.Build.0 = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.ActiveCfg = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|Win32.Build.0 = Release|Win32 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.ActiveCfg = Release|x64 + {BC25C5DC-AEFB-49F9-8188-3C1B8C8929E6}.Release|x64.Build.0 = Release|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.ActiveCfg = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|Win32.Build.0 = Debug|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.ActiveCfg = Debug|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Debug|x64.Build.0 = Debug|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Any CPU.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.ActiveCfg = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|Win32.Build.0 = Release|Win32 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.ActiveCfg = Release|x64 + {6D61FBE9-6913-4885-A95D-1A8C0C223D82}.Release|x64.Build.0 = Release|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.ActiveCfg = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|Win32.Build.0 = Debug|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.ActiveCfg = Debug|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Debug|x64.Build.0 = Debug|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Any CPU.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.ActiveCfg = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|Win32.Build.0 = Release|Win32 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.ActiveCfg = Release|x64 + {6F5D4C4A-C8C3-41DA-BF44-6D42B76464DA}.Release|x64.Build.0 = Release|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.ActiveCfg = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|Win32.Build.0 = Debug|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.ActiveCfg = Debug|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Debug|x64.Build.0 = Debug|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Any CPU.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.ActiveCfg = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|Win32.Build.0 = Release|Win32 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.ActiveCfg = Release|x64 + {2D8F1DDB-6470-45A1-B95A-3E2960641314}.Release|x64.Build.0 = Release|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.ActiveCfg = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|Win32.Build.0 = Debug|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.ActiveCfg = Debug|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Debug|x64.Build.0 = Debug|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Any CPU.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Mixed Platforms.Build.0 = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.ActiveCfg = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|Win32.Build.0 = Release|Win32 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.ActiveCfg = Release|x64 + {EE8EC522-8430-4B46-86A3-D943D77F9E4B}.Release|x64.Build.0 = Release|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.ActiveCfg = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|Win32.Build.0 = Debug|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.ActiveCfg = Debug|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Debug|x64.Build.0 = Debug|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Any CPU.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Mixed Platforms.Build.0 = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.ActiveCfg = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|Win32.Build.0 = Release|Win32 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.ActiveCfg = Release|x64 + {F32FA418-8DF4-4E94-B92B-EBD502F5DC07}.Release|x64.Build.0 = Release|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.ActiveCfg = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|Win32.Build.0 = Debug|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.ActiveCfg = Debug|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Debug|x64.Build.0 = Debug|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Any CPU.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Mixed Platforms.Build.0 = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.ActiveCfg = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|Win32.Build.0 = Release|Win32 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.ActiveCfg = Release|x64 + {64FDEE97-6B7E-40E5-A489-ECA322825BC8}.Release|x64.Build.0 = Release|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.ActiveCfg = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|Win32.Build.0 = Debug|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.ActiveCfg = Debug|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Debug|x64.Build.0 = Debug|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Any CPU.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.ActiveCfg = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|Win32.Build.0 = Release|Win32 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.ActiveCfg = Release|x64 + {A221819D-4263-42AA-B22A-C022924842A7}.Release|x64.Build.0 = Release|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Any CPU.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.ActiveCfg = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|Win32.Build.0 = Debug|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.ActiveCfg = Debug|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Debug|x64.Build.0 = Debug|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Any CPU.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Mixed Platforms.Build.0 = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.ActiveCfg = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|Win32.Build.0 = Release|x86 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.ActiveCfg = Release|x64 + {2CFEC79A-E39E-4FFD-ABC2-C4A69DD1E44D}.Release|x64.Build.0 = Release|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|Win32.Build.0 = Debug|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.ActiveCfg = Debug|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Debug|x64.Build.0 = Debug|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Any CPU.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Mixed Platforms.Build.0 = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.ActiveCfg = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|Win32.Build.0 = Release|Win32 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.ActiveCfg = Release|x64 + {A2DD3CBE-B140-4892-A875-24107FA52518}.Release|x64.Build.0 = Release|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.ActiveCfg = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|Win32.Build.0 = Debug|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.ActiveCfg = Debug|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Debug|x64.Build.0 = Debug|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Any CPU.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Mixed Platforms.Build.0 = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.ActiveCfg = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|Win32.Build.0 = Release|Win32 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.ActiveCfg = Release|x64 + {EB48A04A-657E-41B8-B2F5-D47F8C30B2B4}.Release|x64.Build.0 = Release|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.ActiveCfg = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|Win32.Build.0 = Debug|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.ActiveCfg = Debug|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Debug|x64.Build.0 = Debug|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Any CPU.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.ActiveCfg = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|Win32.Build.0 = Release|Win32 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.ActiveCfg = Release|x64 + {C7FECFCD-E6C6-4F95-BB9A-E1762B043969}.Release|x64.Build.0 = Release|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.ActiveCfg = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|Win32.Build.0 = Debug|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.ActiveCfg = Debug|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Debug|x64.Build.0 = Debug|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Any CPU.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Mixed Platforms.Build.0 = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.ActiveCfg = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|Win32.Build.0 = Release|Win32 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.ActiveCfg = Release|x64 + {5344B52B-BAC3-479C-B41D-D465B8BDA1AD}.Release|x64.Build.0 = Release|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.ActiveCfg = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|Win32.Build.0 = Debug|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.ActiveCfg = Debug|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Debug|x64.Build.0 = Debug|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Any CPU.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.ActiveCfg = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|Win32.Build.0 = Release|Win32 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.ActiveCfg = Release|x64 + {C862B662-5CC6-4E79-B1B3-905E0B98D627}.Release|x64.Build.0 = Release|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.ActiveCfg = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|Win32.Build.0 = Debug|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.ActiveCfg = Debug|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Debug|x64.Build.0 = Debug|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Any CPU.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.ActiveCfg = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|Win32.Build.0 = Release|Win32 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.ActiveCfg = Release|x64 + {C30E7EB6-9655-4AF4-98AE-D6E6B14631AF}.Release|x64.Build.0 = Release|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.ActiveCfg = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|Win32.Build.0 = Debug|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.ActiveCfg = Debug|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Debug|x64.Build.0 = Debug|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Any CPU.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Mixed Platforms.Build.0 = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.ActiveCfg = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|Win32.Build.0 = Release|Win32 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.ActiveCfg = Release|x64 + {05203741-CD80-4060-8218-EC5D1120FE3E}.Release|x64.Build.0 = Release|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.ActiveCfg = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|Win32.Build.0 = Debug|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.ActiveCfg = Debug|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Debug|x64.Build.0 = Debug|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Any CPU.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Mixed Platforms.Build.0 = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.ActiveCfg = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|Win32.Build.0 = Release|Win32 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.ActiveCfg = Release|x64 + {C029E0CF-F203-41D0-9608-A3EA2CF0ED1F}.Release|x64.Build.0 = Release|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|Win32.Build.0 = Debug|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.ActiveCfg = Debug|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Debug|x64.Build.0 = Debug|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Any CPU.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Mixed Platforms.Build.0 = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.ActiveCfg = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|Win32.Build.0 = Release|Win32 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.ActiveCfg = Release|x64 + {4F8C4C09-431C-45C4-830B-32006E783C3A}.Release|x64.Build.0 = Release|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.ActiveCfg = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|Win32.Build.0 = Debug|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.ActiveCfg = Debug|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Debug|x64.Build.0 = Debug|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Any CPU.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Mixed Platforms.Build.0 = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.ActiveCfg = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|Win32.Build.0 = Release|Win32 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.ActiveCfg = Release|x64 + {17D3BD92-6F5D-438C-A89B-88F4CE06DB94}.Release|x64.Build.0 = Release|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.ActiveCfg = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|Win32.Build.0 = Debug|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.ActiveCfg = Debug|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Debug|x64.Build.0 = Debug|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Any CPU.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Mixed Platforms.Build.0 = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.ActiveCfg = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|Win32.Build.0 = Release|Win32 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.ActiveCfg = Release|x64 + {D10AB316-0F7A-4551-BE4F-385E04CCF1E8}.Release|x64.Build.0 = Release|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.ActiveCfg = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|Win32.Build.0 = Debug|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.ActiveCfg = Debug|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Debug|x64.Build.0 = Debug|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Any CPU.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.ActiveCfg = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|Win32.Build.0 = Release|Win32 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.ActiveCfg = Release|x64 + {6EBCA4DA-8CC7-42FE-8F45-878ABE165078}.Release|x64.Build.0 = Release|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.ActiveCfg = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|Win32.Build.0 = Debug|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.ActiveCfg = Debug|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Debug|x64.Build.0 = Debug|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Any CPU.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Mixed Platforms.Build.0 = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.ActiveCfg = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|Win32.Build.0 = Release|Win32 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.ActiveCfg = Release|x64 + {4640AB3A-5A8B-2DA0-980C-A70BCAB3A7F1}.Release|x64.Build.0 = Release|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.ActiveCfg = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|Win32.Build.0 = Debug|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.ActiveCfg = Debug|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Debug|x64.Build.0 = Debug|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Any CPU.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Mixed Platforms.Build.0 = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.ActiveCfg = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|Win32.Build.0 = Release|Win32 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.ActiveCfg = Release|x64 + {8B820B9F-C154-417C-A090-42198F2AF496}.Release|x64.Build.0 = Release|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.ActiveCfg = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|Win32.Build.0 = Debug|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.ActiveCfg = Debug|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Debug|x64.Build.0 = Debug|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Any CPU.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Mixed Platforms.Build.0 = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.ActiveCfg = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|Win32.Build.0 = Release|Win32 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.ActiveCfg = Release|x64 + {45A34285-56DD-4521-912B-3F884D36FA35}.Release|x64.Build.0 = Release|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.ActiveCfg = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|Win32.Build.0 = Debug|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.ActiveCfg = Debug|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Debug|x64.Build.0 = Debug|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Any CPU.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.ActiveCfg = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|Win32.Build.0 = Release|Win32 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.ActiveCfg = Release|x64 + {6D032D6B-7656-4743-B454-3388E2921EB0}.Release|x64.Build.0 = Release|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.ActiveCfg = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|Win32.Build.0 = Debug|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.ActiveCfg = Debug|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Debug|x64.Build.0 = Debug|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Any CPU.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Mixed Platforms.Build.0 = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.ActiveCfg = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|Win32.Build.0 = Release|Win32 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.ActiveCfg = Release|x64 + {B9184DBA-C6B7-44FE-8BBD-0852DB22D2E4}.Release|x64.Build.0 = Release|x64 + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Any CPU.Build.0 = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|Win32.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Debug|x64.ActiveCfg = Debug|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Any CPU.Build.0 = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|Win32.ActiveCfg = Release|Any CPU + {438D0136-4A27-4E4D-A617-FFACE4554236}.Release|x64.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|Win32.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Debug|x64.ActiveCfg = Debug|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Any CPU.Build.0 = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|Win32.ActiveCfg = Release|Any CPU + {845F4BD4-6822-4D92-9DDB-15FD18A47E5A}.Release|x64.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/RainmeterEditor.vshost.exe.config b/RainmeterStudio.vshost.exe.config similarity index 98% rename from RainmeterEditor.vshost.exe.config rename to RainmeterStudio.vshost.exe.config index fcd0c937..57c0f2cb 100644 --- a/RainmeterEditor.vshost.exe.config +++ b/RainmeterStudio.vshost.exe.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/RainmeterEditor/App.xaml b/RainmeterStudio/App.xaml similarity index 90% rename from RainmeterEditor/App.xaml rename to RainmeterStudio/App.xaml index adce9422..2b40779e 100644 --- a/RainmeterEditor/App.xaml +++ b/RainmeterStudio/App.xaml @@ -1,13 +1,13 @@ - - - - - - - - - + + + + + + + + + diff --git a/RainmeterEditor/App.xaml.cs b/RainmeterStudio/App.xaml.cs similarity index 79% rename from RainmeterEditor/App.xaml.cs rename to RainmeterStudio/App.xaml.cs index 4f4b4409..36ae7304 100644 --- a/RainmeterEditor/App.xaml.cs +++ b/RainmeterStudio/App.xaml.cs @@ -1,22 +1,22 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Windows; -using RainmeterEditor.Business; -using RainmeterEditor.Documents.Text; - -namespace RainmeterEditor -{ - /// - /// Interaction logic for App.xaml - /// - public partial class App : Application - { - private void Application_Startup(object sender, StartupEventArgs e) - { - DocumentManager.Instance.RegisterEditorFactory(new TextEditorFactory()); - } - } -} +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Windows; +using RainmeterStudio.Business; +using RainmeterStudio.Documents.Text; + +namespace RainmeterStudio +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + private void Application_Startup(object sender, StartupEventArgs e) + { + DocumentManager.Instance.RegisterEditorFactory(new TextEditorFactory()); + } + } +} diff --git a/RainmeterEditor/Business/DocumentManager.cs b/RainmeterStudio/Business/DocumentManager.cs similarity index 92% rename from RainmeterEditor/Business/DocumentManager.cs rename to RainmeterStudio/Business/DocumentManager.cs index 230f99c9..62a38377 100644 --- a/RainmeterEditor/Business/DocumentManager.cs +++ b/RainmeterStudio/Business/DocumentManager.cs @@ -1,78 +1,78 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; -using RainmeterEditor.Model.Events; - -namespace RainmeterEditor.Business -{ - public class DocumentManager - { - #region Singleton instance - private static DocumentManager _instance = null; - - /// - /// Gets the instance of DocumentManager - /// - public static DocumentManager Instance - { - get - { - if (_instance == null) - _instance = new DocumentManager(); - - return _instance; - } - } - - #endregion - - private DocumentManager() - { - } - - List _factories = new List(); - List _editors = new List(); - - public event EventHandler DocumentOpened; - - /// - /// Registers a document editor factory - /// - /// Document editor factory - public void RegisterEditorFactory(IDocumentEditorFactory factory) - { - _factories.Add(factory); - } - - /// - /// Creates a new document in the specified path, with the specified format, and opens it - /// - /// - /// - public void Create(DocumentFormat format, string path) - { - // Create document - var document = format.Factory.CreateDocument(format, path); - - // Create editor - var editor = format.Factory.CreateEditor(document); - _editors.Add(editor); - - // Trigger event - if (DocumentOpened != null) - DocumentOpened(this, new DocumentOpenedEventArgs(editor)); - } - - public IEnumerable DocumentFormats - { - get - { - foreach (var f in _factories) - foreach (var df in f.CreateDocumentFormats) - yield return df; - } - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; +using RainmeterStudio.Model.Events; + +namespace RainmeterStudio.Business +{ + public class DocumentManager + { + #region Singleton instance + private static DocumentManager _instance = null; + + /// + /// Gets the instance of DocumentManager + /// + public static DocumentManager Instance + { + get + { + if (_instance == null) + _instance = new DocumentManager(); + + return _instance; + } + } + + #endregion + + private DocumentManager() + { + } + + List _factories = new List(); + List _editors = new List(); + + public event EventHandler DocumentOpened; + + /// + /// Registers a document editor factory + /// + /// Document editor factory + public void RegisterEditorFactory(IDocumentEditorFactory factory) + { + _factories.Add(factory); + } + + /// + /// Creates a new document in the specified path, with the specified format, and opens it + /// + /// + /// + public void Create(DocumentFormat format, string path) + { + // Create document + var document = format.Factory.CreateDocument(format, path); + + // Create editor + var editor = format.Factory.CreateEditor(document); + _editors.Add(editor); + + // Trigger event + if (DocumentOpened != null) + DocumentOpened(this, new DocumentOpenedEventArgs(editor)); + } + + public IEnumerable DocumentFormats + { + get + { + foreach (var f in _factories) + foreach (var df in f.CreateDocumentFormats) + yield return df; + } + } + } +} diff --git a/RainmeterEditor/Business/ProjectManager.cs b/RainmeterStudio/Business/ProjectManager.cs similarity index 76% rename from RainmeterEditor/Business/ProjectManager.cs rename to RainmeterStudio/Business/ProjectManager.cs index 491ea1e7..a29b6852 100644 --- a/RainmeterEditor/Business/ProjectManager.cs +++ b/RainmeterStudio/Business/ProjectManager.cs @@ -1,16 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Business -{ - public class ProjectManager - { - public Project ActiveProject { get; protected set; } - - public void Open() { } - public void Close() { } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Business +{ + public class ProjectManager + { + public Project ActiveProject { get; protected set; } + + public void Open() { } + public void Close() { } + } +} diff --git a/RainmeterEditor/Documents/Ini/IniDocument.cs b/RainmeterStudio/Documents/Ini/IniDocument.cs similarity index 65% rename from RainmeterEditor/Documents/Ini/IniDocument.cs rename to RainmeterStudio/Documents/Ini/IniDocument.cs index e6f47574..927171ca 100644 --- a/RainmeterEditor/Documents/Ini/IniDocument.cs +++ b/RainmeterStudio/Documents/Ini/IniDocument.cs @@ -1,12 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Ini -{ - /*public class IniDocument : IDocument - { - }*/ -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Ini +{ + /*public class IniDocument : IDocument + { + }*/ +} diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesigner.cs b/RainmeterStudio/Documents/Ini/IniSkinDesigner.cs similarity index 86% rename from RainmeterEditor/Documents/Ini/IniSkinDesigner.cs rename to RainmeterStudio/Documents/Ini/IniSkinDesigner.cs index f03ec66d..dda2d27c 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesigner.cs +++ b/RainmeterStudio/Documents/Ini/IniSkinDesigner.cs @@ -1,31 +1,31 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Ini -{ - /*public class IniSkinDesigner : IDocumentEditor - { - public override IDocument Document - { - get { throw new NotImplementedException(); } - } - - public override string Title - { - get { throw new NotImplementedException(); } - } - - public override System.Windows.UIElement EditorUI - { - get { throw new NotImplementedException(); } - } - - public override EventHandler SelectionChanged - { - get { throw new NotImplementedException(); } - } - }*/ -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Ini +{ + /*public class IniSkinDesigner : IDocumentEditor + { + public override IDocument Document + { + get { throw new NotImplementedException(); } + } + + public override string Title + { + get { throw new NotImplementedException(); } + } + + public override System.Windows.UIElement EditorUI + { + get { throw new NotImplementedException(); } + } + + public override EventHandler SelectionChanged + { + get { throw new NotImplementedException(); } + } + }*/ +} diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml similarity index 85% rename from RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml rename to RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml index 6a86740f..b4c5c6df 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml +++ b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml.cs b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml.cs similarity index 90% rename from RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml.cs rename to RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml.cs index f1ad22c5..c854d10a 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesignerControl.xaml.cs +++ b/RainmeterStudio/Documents/Ini/IniSkinDesignerControl.xaml.cs @@ -1,27 +1,27 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace RainmeterEditor.Documents.Ini -{ - /// - /// Interaction logic for IniSkinDesignerControl.xaml - /// - public partial class IniSkinDesignerControl : UserControl - { - public IniSkinDesignerControl() - { - InitializeComponent(); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace RainmeterStudio.Documents.Ini +{ + /// + /// Interaction logic for IniSkinDesignerControl.xaml + /// + public partial class IniSkinDesignerControl : UserControl + { + public IniSkinDesignerControl() + { + InitializeComponent(); + } + } +} diff --git a/RainmeterEditor/Documents/Ini/IniSkinDesignerFactory.cs b/RainmeterStudio/Documents/Ini/IniSkinDesignerFactory.cs similarity index 69% rename from RainmeterEditor/Documents/Ini/IniSkinDesignerFactory.cs rename to RainmeterStudio/Documents/Ini/IniSkinDesignerFactory.cs index d5ebe6cd..ee89b656 100644 --- a/RainmeterEditor/Documents/Ini/IniSkinDesignerFactory.cs +++ b/RainmeterStudio/Documents/Ini/IniSkinDesignerFactory.cs @@ -1,14 +1,14 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Ini -{ - /*public class IniSkinDesignerFactory : IDocumentEditorFactory - { - - }*/ -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Ini +{ + /*public class IniSkinDesignerFactory : IDocumentEditorFactory + { + + }*/ +} diff --git a/RainmeterEditor/Documents/Text/TextDocument.cs b/RainmeterStudio/Documents/Text/TextDocument.cs similarity index 83% rename from RainmeterEditor/Documents/Text/TextDocument.cs rename to RainmeterStudio/Documents/Text/TextDocument.cs index a634706c..f6050965 100644 --- a/RainmeterEditor/Documents/Text/TextDocument.cs +++ b/RainmeterStudio/Documents/Text/TextDocument.cs @@ -1,35 +1,35 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - public class TextDocument : IDocument - { - public string Name - { - get - { - return Path.GetFileName(FilePath); - } - } - - public string FilePath - { - get; set; - } - - public string Text - { - get; set; - } - - public TextDocument() - { - Text = String.Empty; - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + public class TextDocument : IDocument + { + public string Name + { + get + { + return Path.GetFileName(FilePath); + } + } + + public string FilePath + { + get; set; + } + + public string Text + { + get; set; + } + + public TextDocument() + { + Text = String.Empty; + } + } +} diff --git a/RainmeterEditor/Documents/Text/TextEditor.cs b/RainmeterStudio/Documents/Text/TextEditor.cs similarity index 86% rename from RainmeterEditor/Documents/Text/TextEditor.cs rename to RainmeterStudio/Documents/Text/TextEditor.cs index 1b052d22..1496cb9c 100644 --- a/RainmeterEditor/Documents/Text/TextEditor.cs +++ b/RainmeterStudio/Documents/Text/TextEditor.cs @@ -1,27 +1,27 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - public class TextEditor : IDocumentEditor - { - private TextDocument _document; - private TextEditorControl _control; - - public TextEditor(TextDocument document) - { - _document = document; - _control = new TextEditorControl(document); - } - - public override IDocument Document { get { return _document; } } - - public override string Title { get { return _document.Name; } } - - public override System.Windows.UIElement EditorUI { get { return _control; } } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + public class TextEditor : IDocumentEditor + { + private TextDocument _document; + private TextEditorControl _control; + + public TextEditor(TextDocument document) + { + _document = document; + _control = new TextEditorControl(document); + } + + public override IDocument Document { get { return _document; } } + + public override string Title { get { return _document.Name; } } + + public override System.Windows.UIElement EditorUI { get { return _control; } } + } +} diff --git a/RainmeterEditor/Documents/Text/TextEditorControl.xaml b/RainmeterStudio/Documents/Text/TextEditorControl.xaml similarity index 86% rename from RainmeterEditor/Documents/Text/TextEditorControl.xaml rename to RainmeterStudio/Documents/Text/TextEditorControl.xaml index e8508998..41b4a98f 100644 --- a/RainmeterEditor/Documents/Text/TextEditorControl.xaml +++ b/RainmeterStudio/Documents/Text/TextEditorControl.xaml @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/RainmeterEditor/Documents/Text/TextEditorControl.xaml.cs b/RainmeterStudio/Documents/Text/TextEditorControl.xaml.cs similarity index 91% rename from RainmeterEditor/Documents/Text/TextEditorControl.xaml.cs rename to RainmeterStudio/Documents/Text/TextEditorControl.xaml.cs index e2994252..8e716e5d 100644 --- a/RainmeterEditor/Documents/Text/TextEditorControl.xaml.cs +++ b/RainmeterStudio/Documents/Text/TextEditorControl.xaml.cs @@ -1,32 +1,32 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace RainmeterEditor.Documents.Text -{ - /// - /// Interaction logic for TextEditorControl.xaml - /// - public partial class TextEditorControl : UserControl - { - private TextDocument _document; - - public TextEditorControl(TextDocument document) - { - InitializeComponent(); - - _document = document; - text.Text = document.Text; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace RainmeterStudio.Documents.Text +{ + /// + /// Interaction logic for TextEditorControl.xaml + /// + public partial class TextEditorControl : UserControl + { + private TextDocument _document; + + public TextEditorControl(TextDocument document) + { + InitializeComponent(); + + _document = document; + text.Text = document.Text; + } + } +} diff --git a/RainmeterEditor/Documents/Text/TextEditorFactory.cs b/RainmeterStudio/Documents/Text/TextEditorFactory.cs similarity index 91% rename from RainmeterEditor/Documents/Text/TextEditorFactory.cs rename to RainmeterStudio/Documents/Text/TextEditorFactory.cs index 544cf7de..b75dbead 100644 --- a/RainmeterEditor/Documents/Text/TextEditorFactory.cs +++ b/RainmeterStudio/Documents/Text/TextEditorFactory.cs @@ -1,59 +1,59 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using RainmeterEditor.Business; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - public class TextEditorFactory : IDocumentEditorFactory - { - private TextStorage _storage = new TextStorage(); - - /// - public string EditorName - { - get { return Resources.Strings.DocumentEditor_Text_Name; } - } - - /// - public IEnumerable CreateDocumentFormats - { - get - { - yield return new DocumentFormat() - { - Name = Resources.Strings.DocumentFormat_TextFile_Name, - Category = Resources.Strings.Category_Utility, - DefaultExtension = ".txt", - Description = Resources.Strings.DocumentFormat_TextFile_Description, - Icon = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Resources/Icons/text_file_32.png", UriKind.RelativeOrAbsolute)), - Factory = this - }; - } - } - - - public IDocumentEditor CreateEditor(IDocument document) - { - TextDocument textDocument = document as TextDocument; - - if (textDocument == null) - throw new ArgumentException("Cannot edit provided document."); - - return new TextEditor(textDocument); - } - - public IDocumentStorage Storage { get { return _storage; } } - - public IDocument CreateDocument(DocumentFormat format, string path) - { - var document = new TextDocument(); - document.FilePath = path; - - return document; - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using RainmeterStudio.Business; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + public class TextEditorFactory : IDocumentEditorFactory + { + private TextStorage _storage = new TextStorage(); + + /// + public string EditorName + { + get { return Resources.Strings.DocumentEditor_Text_Name; } + } + + /// + public IEnumerable CreateDocumentFormats + { + get + { + yield return new DocumentFormat() + { + Name = Resources.Strings.DocumentFormat_TextFile_Name, + Category = Resources.Strings.Category_Utility, + DefaultExtension = ".txt", + Description = Resources.Strings.DocumentFormat_TextFile_Description, + Icon = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Resources/Icons/text_file_32.png", UriKind.RelativeOrAbsolute)), + Factory = this + }; + } + } + + + public IDocumentEditor CreateEditor(IDocument document) + { + TextDocument textDocument = document as TextDocument; + + if (textDocument == null) + throw new ArgumentException("Cannot edit provided document."); + + return new TextEditor(textDocument); + } + + public IDocumentStorage Storage { get { return _storage; } } + + public IDocument CreateDocument(DocumentFormat format, string path) + { + var document = new TextDocument(); + document.FilePath = path; + + return document; + } + } +} diff --git a/RainmeterEditor/Documents/Text/TextStorage.cs b/RainmeterStudio/Documents/Text/TextStorage.cs similarity index 92% rename from RainmeterEditor/Documents/Text/TextStorage.cs rename to RainmeterStudio/Documents/Text/TextStorage.cs index a607e13f..ddde402c 100644 --- a/RainmeterEditor/Documents/Text/TextStorage.cs +++ b/RainmeterStudio/Documents/Text/TextStorage.cs @@ -1,64 +1,64 @@ -using System; -using System.IO; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Documents.Text -{ - /// - /// Storage for text files - /// - public class TextStorage : IDocumentStorage - { - /// - IDocument IDocumentStorage.Read(string path) - { - TextDocument document = new TextDocument(); - document.FilePath = path; - document.Text = File.ReadAllText(path); - - return document; - } - - /// - public void Write(string path, IDocument document) - { - TextDocument textDocument = document as TextDocument; - - if (textDocument == null) - throw new ArgumentException("Provided document is not supported by this storage."); - - File.WriteAllText(path, textDocument.Text); - } - - /// - public bool CanRead(string path) - { - // Open the file - FileStream file = File.OpenRead(path); - - // Read a small chunk (1kb should be enough) - byte[] buffer = new byte[1024]; - int read = file.Read(buffer, 0, buffer.Length); - - // Close file - file.Close(); - - // Find 4 consecutive zero bytes - int cnt = 0; - for (int i = 0; i < read; i++) - { - // Count zero bytes - if (buffer[i] == 0) - ++cnt; - else cnt = 0; - - // Found > 4? Most likely binary file - if (cnt >= 4) - return false; - } - - // Not found, probably text file - return true; - } - } -} +using System; +using System.IO; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Documents.Text +{ + /// + /// Storage for text files + /// + public class TextStorage : IDocumentStorage + { + /// + IDocument IDocumentStorage.Read(string path) + { + TextDocument document = new TextDocument(); + document.FilePath = path; + document.Text = File.ReadAllText(path); + + return document; + } + + /// + public void Write(string path, IDocument document) + { + TextDocument textDocument = document as TextDocument; + + if (textDocument == null) + throw new ArgumentException("Provided document is not supported by this storage."); + + File.WriteAllText(path, textDocument.Text); + } + + /// + public bool CanRead(string path) + { + // Open the file + FileStream file = File.OpenRead(path); + + // Read a small chunk (1kb should be enough) + byte[] buffer = new byte[1024]; + int read = file.Read(buffer, 0, buffer.Length); + + // Close file + file.Close(); + + // Find 4 consecutive zero bytes + int cnt = 0; + for (int i = 0; i < read; i++) + { + // Count zero bytes + if (buffer[i] == 0) + ++cnt; + else cnt = 0; + + // Found > 4? Most likely binary file + if (cnt >= 4) + return false; + } + + // Not found, probably text file + return true; + } + } +} diff --git a/RainmeterEditor/Interop/NativeLibrary.cs b/RainmeterStudio/Interop/NativeLibrary.cs similarity index 94% rename from RainmeterEditor/Interop/NativeLibrary.cs rename to RainmeterStudio/Interop/NativeLibrary.cs index 58daf48a..df6905e2 100644 --- a/RainmeterEditor/Interop/NativeLibrary.cs +++ b/RainmeterStudio/Interop/NativeLibrary.cs @@ -1,53 +1,53 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; - -namespace RainmeterEditor.Interop -{ - public class NativeLibrary : IDisposable - { - #region Imports - - [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] - private static extern IntPtr LoadLibrary(string libname); - - [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] - private static extern bool FreeLibrary(IntPtr hModule); - - [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] - private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); - - #endregion - - public string DllName { get; private set; } - private IntPtr _handle; - - public NativeLibrary(string dllName) - { - // Set properties - DllName = dllName; - - // Load library - _handle = LoadLibrary(DllName); - if (_handle == IntPtr.Zero) - { - int errorCode = Marshal.GetLastWin32Error(); - throw new BadImageFormatException(string.Format("Failed to load library (ErrorCode: {0})", errorCode)); - } - } - - public void Dispose() - { - if (_handle != IntPtr.Zero) - FreeLibrary(_handle); - } - - public Delegate GetFunctionByName(string name, Type delegateType) - { - IntPtr addr = GetProcAddress(_handle, name); - return Marshal.GetDelegateForFunctionPointer(addr, delegateType); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace RainmeterStudio.Interop +{ + public class NativeLibrary : IDisposable + { + #region Imports + + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr LoadLibrary(string libname); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] + private static extern bool FreeLibrary(IntPtr hModule); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] + private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); + + #endregion + + public string DllName { get; private set; } + private IntPtr _handle; + + public NativeLibrary(string dllName) + { + // Set properties + DllName = dllName; + + // Load library + _handle = LoadLibrary(DllName); + if (_handle == IntPtr.Zero) + { + int errorCode = Marshal.GetLastWin32Error(); + throw new BadImageFormatException(string.Format("Failed to load library (ErrorCode: {0})", errorCode)); + } + } + + public void Dispose() + { + if (_handle != IntPtr.Zero) + FreeLibrary(_handle); + } + + public Delegate GetFunctionByName(string name, Type delegateType) + { + IntPtr addr = GetProcAddress(_handle, name); + return Marshal.GetDelegateForFunctionPointer(addr, delegateType); + } + } +} diff --git a/RainmeterEditor/LICENSE b/RainmeterStudio/LICENSE similarity index 98% rename from RainmeterEditor/LICENSE rename to RainmeterStudio/LICENSE index 67901943..fe5f7ed6 100644 --- a/RainmeterEditor/LICENSE +++ b/RainmeterStudio/LICENSE @@ -1,20 +1,20 @@ -The MIT License (MIT) - -Copyright (c) 2008 Ricardo Amores Hernández - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2008 Ricardo Amores Hernández + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/RainmeterEditor/Model/DocumentFormat.cs b/RainmeterStudio/Model/DocumentFormat.cs similarity index 89% rename from RainmeterEditor/Model/DocumentFormat.cs rename to RainmeterStudio/Model/DocumentFormat.cs index 41acc9a2..b9522f80 100644 --- a/RainmeterEditor/Model/DocumentFormat.cs +++ b/RainmeterStudio/Model/DocumentFormat.cs @@ -1,14 +1,14 @@ -using System.Windows.Media; - -namespace RainmeterEditor.Model -{ - public class DocumentFormat - { - public string Name { get; set; } - public ImageSource Icon { get; set; } - public string Description { get; set; } - public string DefaultExtension { get; set; } - public IDocumentEditorFactory Factory { get; set; } - public string Category { get; set; } - } -} +using System.Windows.Media; + +namespace RainmeterStudio.Model +{ + public class DocumentFormat + { + public string Name { get; set; } + public ImageSource Icon { get; set; } + public string Description { get; set; } + public string DefaultExtension { get; set; } + public IDocumentEditorFactory Factory { get; set; } + public string Category { get; set; } + } +} diff --git a/RainmeterEditor/Model/Events/DocumentOpenedEventArgs.cs b/RainmeterStudio/Model/Events/DocumentOpenedEventArgs.cs similarity index 85% rename from RainmeterEditor/Model/Events/DocumentOpenedEventArgs.cs rename to RainmeterStudio/Model/Events/DocumentOpenedEventArgs.cs index 9c4e0df2..4769fe89 100644 --- a/RainmeterEditor/Model/Events/DocumentOpenedEventArgs.cs +++ b/RainmeterStudio/Model/Events/DocumentOpenedEventArgs.cs @@ -1,17 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model.Events -{ - public class DocumentOpenedEventArgs : EventArgs - { - public IDocumentEditor Editor { get; private set; } - - public DocumentOpenedEventArgs(IDocumentEditor editor) - { - Editor = editor; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model.Events +{ + public class DocumentOpenedEventArgs : EventArgs + { + public IDocumentEditor Editor { get; private set; } + + public DocumentOpenedEventArgs(IDocumentEditor editor) + { + Editor = editor; + } + } +} diff --git a/RainmeterEditor/Model/IDocument.cs b/RainmeterStudio/Model/IDocument.cs similarity index 81% rename from RainmeterEditor/Model/IDocument.cs rename to RainmeterStudio/Model/IDocument.cs index 48ef5cf8..84b8ddb9 100644 --- a/RainmeterEditor/Model/IDocument.cs +++ b/RainmeterStudio/Model/IDocument.cs @@ -1,13 +1,13 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model -{ - public interface IDocument - { - string Name { get; } - string FilePath { get; } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model +{ + public interface IDocument + { + string Name { get; } + string FilePath { get; } + } +} diff --git a/RainmeterEditor/Model/IDocumentEditor.cs b/RainmeterStudio/Model/IDocumentEditor.cs similarity index 94% rename from RainmeterEditor/Model/IDocumentEditor.cs rename to RainmeterStudio/Model/IDocumentEditor.cs index b0677422..7cc5ff8d 100644 --- a/RainmeterEditor/Model/IDocumentEditor.cs +++ b/RainmeterStudio/Model/IDocumentEditor.cs @@ -1,136 +1,136 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; - -namespace RainmeterEditor.Model -{ - public abstract class IDocumentEditor : IDisposable - { - #region Dirty flag - - private bool _dirty = false; - - /// - /// Gets a flag indicating if the active document is dirty (modified and not saved) - /// - public virtual bool Dirty - { - get - { - return _dirty; - } - protected set - { - _dirty = value; - if (DirtyChanged != null) - DirtyChanged(this, new EventArgs()); - } - } - - /// - /// Triggered when the dirty flag changes - /// - public event EventHandler DirtyChanged; - - #endregion - - #region Document - - /// - /// Gets the opened document - /// - public abstract IDocument Document { get; } - - /// - /// Gets the title to be displayed in the title bar - /// - public abstract string Title { get; } - - /// - /// Triggered when the title changes - /// - public event EventHandler TitleChanged; - - #endregion - - #region EditorUI - - /// - /// Gets the editor UI - /// - public abstract UIElement EditorUI { get; } - - #endregion - - #region Selection properties - - /// - /// Gets a value indicating if this editor uses the selection properties window - /// - public virtual bool UsesSelectionProperties - { - get - { - return false; - } - } - - /// - /// Gets the name of the selected object - /// - public virtual string SelectionName - { - get - { - return String.Empty; - } - } - - /// - /// Gets a list of properties for the currently selected object - /// - public virtual IEnumerable SelectionProperties - { - get - { - yield break; - } - } - - /// - /// Triggered when the selected object changes (used to update properties) - /// - public event EventHandler SelectionChanged; - - #endregion - - #region Toolbox - - /// - /// Gets a list of items to populate the toolbox - /// - public virtual IEnumerable ToolboxItems - { - get - { - yield break; - } - } - - public event EventHandler ToolboxChanged; - - #endregion - - #region Dispose - /// - /// Dispose - /// - public virtual void Dispose() - { - } - - #endregion - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; + +namespace RainmeterStudio.Model +{ + public abstract class IDocumentEditor : IDisposable + { + #region Dirty flag + + private bool _dirty = false; + + /// + /// Gets a flag indicating if the active document is dirty (modified and not saved) + /// + public virtual bool Dirty + { + get + { + return _dirty; + } + protected set + { + _dirty = value; + if (DirtyChanged != null) + DirtyChanged(this, new EventArgs()); + } + } + + /// + /// Triggered when the dirty flag changes + /// + public event EventHandler DirtyChanged; + + #endregion + + #region Document + + /// + /// Gets the opened document + /// + public abstract IDocument Document { get; } + + /// + /// Gets the title to be displayed in the title bar + /// + public abstract string Title { get; } + + /// + /// Triggered when the title changes + /// + public event EventHandler TitleChanged; + + #endregion + + #region EditorUI + + /// + /// Gets the editor UI + /// + public abstract UIElement EditorUI { get; } + + #endregion + + #region Selection properties + + /// + /// Gets a value indicating if this editor uses the selection properties window + /// + public virtual bool UsesSelectionProperties + { + get + { + return false; + } + } + + /// + /// Gets the name of the selected object + /// + public virtual string SelectionName + { + get + { + return String.Empty; + } + } + + /// + /// Gets a list of properties for the currently selected object + /// + public virtual IEnumerable SelectionProperties + { + get + { + yield break; + } + } + + /// + /// Triggered when the selected object changes (used to update properties) + /// + public event EventHandler SelectionChanged; + + #endregion + + #region Toolbox + + /// + /// Gets a list of items to populate the toolbox + /// + public virtual IEnumerable ToolboxItems + { + get + { + yield break; + } + } + + public event EventHandler ToolboxChanged; + + #endregion + + #region Dispose + /// + /// Dispose + /// + public virtual void Dispose() + { + } + + #endregion + } +} diff --git a/RainmeterEditor/Model/IDocumentEditorFactory.cs b/RainmeterStudio/Model/IDocumentEditorFactory.cs similarity index 91% rename from RainmeterEditor/Model/IDocumentEditorFactory.cs rename to RainmeterStudio/Model/IDocumentEditorFactory.cs index 806e36f8..a6205e9f 100644 --- a/RainmeterEditor/Model/IDocumentEditorFactory.cs +++ b/RainmeterStudio/Model/IDocumentEditorFactory.cs @@ -1,39 +1,39 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Storage; - -namespace RainmeterEditor.Model -{ - public interface IDocumentEditorFactory - { - /// - /// Name of the editor - /// - string EditorName { get; } - - /// - /// Formats that will be used to populate the 'create document' dialog - /// - IEnumerable CreateDocumentFormats { get; } - - /// - /// Creates a new editor object - /// - /// Document to be edited by the editor - /// A new document editor - IDocumentEditor CreateEditor(IDocument document); - - /// - /// Creates a new document - /// - /// A new document - IDocument CreateDocument(DocumentFormat format, string path); - - /// - /// Gets the storage of this factory - /// - IDocumentStorage Storage { get; } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Storage; + +namespace RainmeterStudio.Model +{ + public interface IDocumentEditorFactory + { + /// + /// Name of the editor + /// + string EditorName { get; } + + /// + /// Formats that will be used to populate the 'create document' dialog + /// + IEnumerable CreateDocumentFormats { get; } + + /// + /// Creates a new editor object + /// + /// Document to be edited by the editor + /// A new document editor + IDocumentEditor CreateEditor(IDocument document); + + /// + /// Creates a new document + /// + /// A new document + IDocument CreateDocument(DocumentFormat format, string path); + + /// + /// Gets the storage of this factory + /// + IDocumentStorage Storage { get; } + } +} diff --git a/RainmeterEditor/Model/IDocumentStorage.cs b/RainmeterStudio/Model/IDocumentStorage.cs similarity index 92% rename from RainmeterEditor/Model/IDocumentStorage.cs rename to RainmeterStudio/Model/IDocumentStorage.cs index 061945c8..7215dedc 100644 --- a/RainmeterEditor/Model/IDocumentStorage.cs +++ b/RainmeterStudio/Model/IDocumentStorage.cs @@ -1,26 +1,26 @@ -namespace RainmeterEditor.Model -{ - public interface IDocumentStorage - { - /// - /// Reads a document from file - /// - /// Path to file - /// Read document - IDocument Read(string path); - - /// - /// Writes a document to a file - /// - /// Path to file - /// Document to write - void Write(string path, IDocument document); - - /// - /// Tests if the file can be read by this storage - /// - /// Path to file - /// True if file can be read - bool CanRead(string path); - } -} +namespace RainmeterStudio.Model +{ + public interface IDocumentStorage + { + /// + /// Reads a document from file + /// + /// Path to file + /// Read document + IDocument Read(string path); + + /// + /// Writes a document to a file + /// + /// Path to file + /// Document to write + void Write(string path, IDocument document); + + /// + /// Tests if the file can be read by this storage + /// + /// Path to file + /// True if file can be read + bool CanRead(string path); + } +} diff --git a/RainmeterEditor/Model/Project.cs b/RainmeterStudio/Model/Project.cs similarity index 95% rename from RainmeterEditor/Model/Project.cs rename to RainmeterStudio/Model/Project.cs index e697f616..088263f9 100644 --- a/RainmeterEditor/Model/Project.cs +++ b/RainmeterStudio/Model/Project.cs @@ -1,114 +1,114 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Xml.Serialization; - -namespace RainmeterEditor.Model -{ - public class Project - { - [XmlElement("name")] - public string Name { get; set; } - - [XmlElement("author")] - public string Author { get; set; } - - [XmlIgnore] - public Version Version { get; set; } - - [XmlElement("version")] - public string VersionString - { - get - { - return Version.ToString(); - } - set - { - Version = new Version(value); - } - } - - [XmlElement("autoLoadFile")] - public Reference AutoLoadFile { get; set; } - - [XmlArray("variableFiles")] - public List VariableFiles { get; set; } - - [XmlIgnore] - public Version MinimumRainmeter { get; set; } - - [XmlElement("minimumRainmeter")] - public string MinimumRainmeterString - { - get - { - return MinimumRainmeter.ToString(); - } - set - { - MinimumRainmeter = new Version(value); - } - } - - [XmlIgnore] - public Version MinimumWindows { get; set; } - - [XmlElement("minimumWindows")] - public string MinimumWindowsString - { - get - { - return MinimumWindows.ToString(); - } - set - { - MinimumWindows = new Version(value); - } - } - - [XmlElement("root")] - public Tree Root { get; set; } - - public Project() - { - Root = new Tree(); - VariableFiles = new List(); - Version = new Version(); - MinimumRainmeter = new Version("3.1"); - MinimumWindows = new Version("5.1"); - } - - public override bool Equals(object obj) - { - Project other = obj as Project; - - if (other == null) - return false; - - bool res = String.Equals(Author, other.Author); - res &= Reference.Equals(AutoLoadFile, other.AutoLoadFile); - res &= Version.Equals(MinimumRainmeter, other.MinimumRainmeter); - res &= Version.Equals(MinimumWindows, other.MinimumWindows); - res &= String.Equals(Name, other.Name); - res &= Tree.Equals(Root, other.Root); - res &= Version.Equals(Version, other.Version); - - return res; - } - - public override int GetHashCode() - { - int hash = (Author == null) ? 0 : Author.GetHashCode(); - hash = hash * 7 + ((AutoLoadFile == null) ? 0 : AutoLoadFile.GetHashCode()); - hash = hash * 7 + ((MinimumRainmeter == null) ? 0 : MinimumRainmeter.GetHashCode()); - hash = hash * 7 + ((MinimumWindows == null) ? 0 : MinimumWindows.GetHashCode()); - hash = hash * 7 + ((Name == null) ? 0 : Name.GetHashCode()); - hash = hash * 7 + ((Root == null) ? 0 : Root.GetHashCode()); - hash = hash * 7 + ((Version == null) ? 0 : Version.GetHashCode()); - - return hash; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Serialization; + +namespace RainmeterStudio.Model +{ + public class Project + { + [XmlElement("name")] + public string Name { get; set; } + + [XmlElement("author")] + public string Author { get; set; } + + [XmlIgnore] + public Version Version { get; set; } + + [XmlElement("version")] + public string VersionString + { + get + { + return Version.ToString(); + } + set + { + Version = new Version(value); + } + } + + [XmlElement("autoLoadFile")] + public Reference AutoLoadFile { get; set; } + + [XmlArray("variableFiles")] + public List VariableFiles { get; set; } + + [XmlIgnore] + public Version MinimumRainmeter { get; set; } + + [XmlElement("minimumRainmeter")] + public string MinimumRainmeterString + { + get + { + return MinimumRainmeter.ToString(); + } + set + { + MinimumRainmeter = new Version(value); + } + } + + [XmlIgnore] + public Version MinimumWindows { get; set; } + + [XmlElement("minimumWindows")] + public string MinimumWindowsString + { + get + { + return MinimumWindows.ToString(); + } + set + { + MinimumWindows = new Version(value); + } + } + + [XmlElement("root")] + public Tree Root { get; set; } + + public Project() + { + Root = new Tree(); + VariableFiles = new List(); + Version = new Version(); + MinimumRainmeter = new Version("3.1"); + MinimumWindows = new Version("5.1"); + } + + public override bool Equals(object obj) + { + Project other = obj as Project; + + if (other == null) + return false; + + bool res = String.Equals(Author, other.Author); + res &= Reference.Equals(AutoLoadFile, other.AutoLoadFile); + res &= Version.Equals(MinimumRainmeter, other.MinimumRainmeter); + res &= Version.Equals(MinimumWindows, other.MinimumWindows); + res &= String.Equals(Name, other.Name); + res &= Tree.Equals(Root, other.Root); + res &= Version.Equals(Version, other.Version); + + return res; + } + + public override int GetHashCode() + { + int hash = (Author == null) ? 0 : Author.GetHashCode(); + hash = hash * 7 + ((AutoLoadFile == null) ? 0 : AutoLoadFile.GetHashCode()); + hash = hash * 7 + ((MinimumRainmeter == null) ? 0 : MinimumRainmeter.GetHashCode()); + hash = hash * 7 + ((MinimumWindows == null) ? 0 : MinimumWindows.GetHashCode()); + hash = hash * 7 + ((Name == null) ? 0 : Name.GetHashCode()); + hash = hash * 7 + ((Root == null) ? 0 : Root.GetHashCode()); + hash = hash * 7 + ((Version == null) ? 0 : Version.GetHashCode()); + + return hash; + } + } +} diff --git a/RainmeterEditor/Model/Property.cs b/RainmeterStudio/Model/Property.cs similarity index 89% rename from RainmeterEditor/Model/Property.cs rename to RainmeterStudio/Model/Property.cs index 96c320a3..40f2c6ae 100644 --- a/RainmeterEditor/Model/Property.cs +++ b/RainmeterStudio/Model/Property.cs @@ -1,30 +1,30 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model -{ - public class Property - { - public string Name { get; set; } - - private object _value; - public object Value - { - get - { - return _value; - } - set - { - _value = value; - - if (ValueChanged != null) - ValueChanged(this, new EventArgs()); - } - } - - public event EventHandler ValueChanged; - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model +{ + public class Property + { + public string Name { get; set; } + + private object _value; + public object Value + { + get + { + return _value; + } + set + { + _value = value; + + if (ValueChanged != null) + ValueChanged(this, new EventArgs()); + } + } + + public event EventHandler ValueChanged; + } +} diff --git a/RainmeterEditor/Model/RainmeterConfig.cs b/RainmeterStudio/Model/RainmeterConfig.cs similarity index 76% rename from RainmeterEditor/Model/RainmeterConfig.cs rename to RainmeterStudio/Model/RainmeterConfig.cs index e2605a2a..5d67763c 100644 --- a/RainmeterEditor/Model/RainmeterConfig.cs +++ b/RainmeterStudio/Model/RainmeterConfig.cs @@ -1,11 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace RainmeterEditor.Model -{ - public class RainmeterConfig - { - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainmeterStudio.Model +{ + public class RainmeterConfig + { + } +} diff --git a/RainmeterEditor/Model/Reference.cs b/RainmeterStudio/Model/Reference.cs similarity index 93% rename from RainmeterEditor/Model/Reference.cs rename to RainmeterStudio/Model/Reference.cs index 75f9ad5b..c1270971 100644 --- a/RainmeterEditor/Model/Reference.cs +++ b/RainmeterStudio/Model/Reference.cs @@ -1,50 +1,50 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Xml.Serialization; - -namespace RainmeterEditor.Model -{ - /// - /// Reference to a file or folder - /// - public class Reference - { - [XmlAttribute("name")] - public string Name { get; set; } - - [XmlAttribute("path")] - public string Path { get; set; } - - public Reference() - { - } - - public Reference(string name, string path = null) - { - Name = name; - Path = path; - } - - public override bool Equals(object obj) - { - var other = obj as Reference; - - // Types are different, so not equal - if (other == null) - return false; - - // Compare using string equals - return String.Equals(Name, other.Name) && String.Equals(Path, other.Path); - } - - public override int GetHashCode() - { - int hash = (Name == null) ? 0 : Name.GetHashCode(); - hash = hash * 7 + ((Path == null) ? 0 : Path.GetHashCode()); - - return hash; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Serialization; + +namespace RainmeterStudio.Model +{ + /// + /// Reference to a file or folder + /// + public class Reference + { + [XmlAttribute("name")] + public string Name { get; set; } + + [XmlAttribute("path")] + public string Path { get; set; } + + public Reference() + { + } + + public Reference(string name, string path = null) + { + Name = name; + Path = path; + } + + public override bool Equals(object obj) + { + var other = obj as Reference; + + // Types are different, so not equal + if (other == null) + return false; + + // Compare using string equals + return String.Equals(Name, other.Name) && String.Equals(Path, other.Path); + } + + public override int GetHashCode() + { + int hash = (Name == null) ? 0 : Name.GetHashCode(); + hash = hash * 7 + ((Path == null) ? 0 : Path.GetHashCode()); + + return hash; + } + } +} diff --git a/RainmeterEditor/Model/Tree.cs b/RainmeterStudio/Model/Tree.cs similarity index 94% rename from RainmeterEditor/Model/Tree.cs rename to RainmeterStudio/Model/Tree.cs index 0c187f4d..262e9dcd 100644 --- a/RainmeterEditor/Model/Tree.cs +++ b/RainmeterStudio/Model/Tree.cs @@ -1,153 +1,153 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Xml.Serialization; - -namespace RainmeterEditor.Model -{ - public class Tree - { - [XmlElement("data")] - public T Data { get; set; } - - [XmlArray("children"), XmlArrayItem("child")] - public List> Children { get; set; } - - public Tree() - { - Children = new List>(); - Data = default(T); - } - - public Tree(T data) - { - Children = new List>(); - Data = data; - } - - public int IndexOf(Tree item) - { - return Children.IndexOf(item); - } - - public void Insert(int index, Tree item) - { - Children.Insert(index, item); - } - - public void RemoveAt(int index) - { - Children.RemoveAt(index); - } - - public Tree this[int index] - { - get - { - return Children[index]; - } - set - { - Children[index] = value; - } - } - - public void Add(Tree item) - { - Children.Add(item); - } - - public void Clear() - { - Children.Clear(); - } - - public bool Contains(Tree item) - { - return Children.Contains(item); - } - - public void CopyTo(Tree[] array, int arrayIndex) - { - Children.CopyTo(array, arrayIndex); - } - - public int Count - { - get { return Children.Count; } - } - - public bool IsReadOnly - { - get { return false; } - } - - public bool Remove(Tree item) - { - return Children.Remove(item); - } - - public IEnumerator> GetEnumerator() - { - return Children.GetEnumerator(); - } - - public int IndexOf(T item) - { - return Children.IndexOf(new Tree(item)); - } - - public void Insert(int index, T item) - { - Children.Insert(index, new Tree(item)); - } - - public void Add(T item) - { - Children.Add(new Tree(item)); - } - - public bool Contains(T item) - { - return Children.Contains(new Tree(item)); - } - - public void CopyTo(T[] array, int arrayIndex) - { - foreach (var node in Children) - array[arrayIndex++] = node.Data; - } - - public bool Remove(T item) - { - return Children.Remove(new Tree(item)); - } - - public override bool Equals(object obj) - { - Tree other = obj as Tree; - - // Types are different, so not equal - if (other == null) - return false; - - // Compare data - if (!object.Equals(Data, other.Data)) - return false; - - // Compare children array - return Children.SequenceEqual(other.Children); - } - - public override int GetHashCode() - { - int hash = ((Data == null) ? 0 : Data.GetHashCode()); - - foreach (var c in Children) - hash = hash * 7 + c.GetHashCode(); - - return hash; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Serialization; + +namespace RainmeterStudio.Model +{ + public class Tree + { + [XmlElement("data")] + public T Data { get; set; } + + [XmlArray("children"), XmlArrayItem("child")] + public List> Children { get; set; } + + public Tree() + { + Children = new List>(); + Data = default(T); + } + + public Tree(T data) + { + Children = new List>(); + Data = data; + } + + public int IndexOf(Tree item) + { + return Children.IndexOf(item); + } + + public void Insert(int index, Tree item) + { + Children.Insert(index, item); + } + + public void RemoveAt(int index) + { + Children.RemoveAt(index); + } + + public Tree this[int index] + { + get + { + return Children[index]; + } + set + { + Children[index] = value; + } + } + + public void Add(Tree item) + { + Children.Add(item); + } + + public void Clear() + { + Children.Clear(); + } + + public bool Contains(Tree item) + { + return Children.Contains(item); + } + + public void CopyTo(Tree[] array, int arrayIndex) + { + Children.CopyTo(array, arrayIndex); + } + + public int Count + { + get { return Children.Count; } + } + + public bool IsReadOnly + { + get { return false; } + } + + public bool Remove(Tree item) + { + return Children.Remove(item); + } + + public IEnumerator> GetEnumerator() + { + return Children.GetEnumerator(); + } + + public int IndexOf(T item) + { + return Children.IndexOf(new Tree(item)); + } + + public void Insert(int index, T item) + { + Children.Insert(index, new Tree(item)); + } + + public void Add(T item) + { + Children.Add(new Tree(item)); + } + + public bool Contains(T item) + { + return Children.Contains(new Tree(item)); + } + + public void CopyTo(T[] array, int arrayIndex) + { + foreach (var node in Children) + array[arrayIndex++] = node.Data; + } + + public bool Remove(T item) + { + return Children.Remove(new Tree(item)); + } + + public override bool Equals(object obj) + { + Tree other = obj as Tree; + + // Types are different, so not equal + if (other == null) + return false; + + // Compare data + if (!object.Equals(Data, other.Data)) + return false; + + // Compare children array + return Children.SequenceEqual(other.Children); + } + + public override int GetHashCode() + { + int hash = ((Data == null) ? 0 : Data.GetHashCode()); + + foreach (var c in Children) + hash = hash * 7 + c.GetHashCode(); + + return hash; + } + } +} diff --git a/RainmeterEditor/Properties/AssemblyInfo.cs b/RainmeterStudio/Properties/AssemblyInfo.cs similarity index 93% rename from RainmeterEditor/Properties/AssemblyInfo.cs rename to RainmeterStudio/Properties/AssemblyInfo.cs index f9620b46..eb132073 100644 --- a/RainmeterEditor/Properties/AssemblyInfo.cs +++ b/RainmeterStudio/Properties/AssemblyInfo.cs @@ -1,55 +1,55 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("RainmeterEditor")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("RainmeterEditor")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//CultureYouAreCodingWith in your .csproj file -//inside a . For example, if you are using US english -//in your source files, set the to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("RainmeterStudio")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RainmeterStudio")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RainmeterEditor/Properties/Resources.Designer.cs b/RainmeterStudio/Properties/Resources.Designer.cs similarity index 92% rename from RainmeterEditor/Properties/Resources.Designer.cs rename to RainmeterStudio/Properties/Resources.Designer.cs index 06dc2237..883f3dad 100644 --- a/RainmeterEditor/Properties/Resources.Designer.cs +++ b/RainmeterStudio/Properties/Resources.Designer.cs @@ -1,63 +1,63 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34014 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace RainmeterEditor.Properties { - 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", "4.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("RainmeterEditor.Properties.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; - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterStudio.Properties { + 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", "4.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("RainmeterStudio.Properties.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; + } + } + } +} diff --git a/RainmeterEditor/Properties/Resources.resx b/RainmeterStudio/Properties/Resources.resx similarity index 97% rename from RainmeterEditor/Properties/Resources.resx rename to RainmeterStudio/Properties/Resources.resx index af7dbebb..ffecec85 100644 --- a/RainmeterEditor/Properties/Resources.resx +++ b/RainmeterStudio/Properties/Resources.resx @@ -1,117 +1,117 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/RainmeterEditor/Properties/Settings.Designer.cs b/RainmeterStudio/Properties/Settings.Designer.cs similarity index 94% rename from RainmeterEditor/Properties/Settings.Designer.cs rename to RainmeterStudio/Properties/Settings.Designer.cs index cfa37b69..c6767e20 100644 --- a/RainmeterEditor/Properties/Settings.Designer.cs +++ b/RainmeterStudio/Properties/Settings.Designer.cs @@ -1,26 +1,26 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34014 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace RainmeterEditor.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.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 { - return defaultInstance; - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterStudio.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.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 { + return defaultInstance; + } + } + } +} diff --git a/RainmeterEditor/Properties/Settings.settings b/RainmeterStudio/Properties/Settings.settings similarity index 97% rename from RainmeterEditor/Properties/Settings.settings rename to RainmeterStudio/Properties/Settings.settings index 033d7a5e..8f2fd95d 100644 --- a/RainmeterEditor/Properties/Settings.settings +++ b/RainmeterStudio/Properties/Settings.settings @@ -1,7 +1,7 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/RainmeterEditor/Rainmeter.cs b/RainmeterStudio/Rainmeter.cs similarity index 91% rename from RainmeterEditor/Rainmeter.cs rename to RainmeterStudio/Rainmeter.cs index 136b55f6..9784d15b 100644 --- a/RainmeterEditor/Rainmeter.cs +++ b/RainmeterStudio/Rainmeter.cs @@ -1,59 +1,59 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using RainmeterEditor.Interop; - -namespace RainmeterEditor -{ - class Rainmeter - { - #region Imports - - [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern IntPtr Rainmeter_Initialize(); - - [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] - private static extern void Rainmeter_Finalize(IntPtr handle); - - #endregion - - private static Rainmeter _instance = null; - - /// - /// Gets the single instance of this class - /// - public static Rainmeter Instance - { - get - { - if (_instance == null) - _instance = new Rainmeter(); - - return _instance; - } - } - - private IntPtr _handle; - - #region Constructor, finalizer - - private Rainmeter() - { - _handle = Rainmeter_Initialize(); - - if (_handle == IntPtr.Zero) - throw new Exception("Failed to initialize native library."); - } - - ~Rainmeter() - { - Rainmeter_Finalize(_handle); - } - - #endregion - - public IntPtr Handle { get { return _handle; } } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using RainmeterStudio.Interop; + +namespace RainmeterStudio +{ + class Rainmeter + { + #region Imports + + [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] + private static extern IntPtr Rainmeter_Initialize(); + + [DllImport("Rainmeter.dll", CallingConvention = CallingConvention.Cdecl)] + private static extern void Rainmeter_Finalize(IntPtr handle); + + #endregion + + private static Rainmeter _instance = null; + + /// + /// Gets the single instance of this class + /// + public static Rainmeter Instance + { + get + { + if (_instance == null) + _instance = new Rainmeter(); + + return _instance; + } + } + + private IntPtr _handle; + + #region Constructor, finalizer + + private Rainmeter() + { + _handle = Rainmeter_Initialize(); + + if (_handle == IntPtr.Zero) + throw new Exception("Failed to initialize native library."); + } + + ~Rainmeter() + { + Rainmeter_Finalize(_handle); + } + + #endregion + + public IntPtr Handle { get { return _handle; } } + } +} diff --git a/RainmeterEditor/RainmeterStudio.csproj b/RainmeterStudio/RainmeterStudio.csproj similarity index 97% rename from RainmeterEditor/RainmeterStudio.csproj rename to RainmeterStudio/RainmeterStudio.csproj index 202b305b..21268294 100644 --- a/RainmeterEditor/RainmeterStudio.csproj +++ b/RainmeterStudio/RainmeterStudio.csproj @@ -1,214 +1,214 @@ - - - - - Debug - AnyCPU - {438D0136-4A27-4E4D-A617-FFACE4554236} - WinExe - Properties - RainmeterEditor - RainmeterEditor - v4.0 - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 4 - - - - x86 - true - full - false - ..\x32-Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\ini-parser.2.1.1\lib\INIFileParser.dll - - - - - - - - - - - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Expression.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll - - - ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll - - - - - MSBuild:Compile - Designer - - - - - - TextEditorControl.xaml - - - - - - - - - - IniSkinDesignerControl.xaml - - - - - - - - - - - - - True - True - Strings.resx - - - - - - - CreateDocumentDialog.xaml - - - - - SkinsPanel.xaml - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - App.xaml - Code - - - MainWindow.xaml - Code - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - - - Code - - - True - True - Resources.resx - - - True - Settings.settings - True - - - ResXFileCodeGenerator - Resources.Designer.cs - - - ResXFileCodeGenerator - Strings.Designer.cs - - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + AnyCPU + {438D0136-4A27-4E4D-A617-FFACE4554236} + WinExe + Properties + RainmeterStudio + RainmeterEditor + v4.0 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + + + + x86 + true + full + false + ..\x32-Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ini-parser.2.1.1\lib\INIFileParser.dll + + + + + + + + + + + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Expression.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll + + + ..\packages\AvalonDock.2.0.2000\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll + + + + + MSBuild:Compile + Designer + + + + + + TextEditorControl.xaml + + + + + + + + + + IniSkinDesignerControl.xaml + + + + + + + + + + + + + True + True + Strings.resx + + + + + + + CreateDocumentDialog.xaml + + + + + SkinsPanel.xaml + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + ResXFileCodeGenerator + Strings.Designer.cs + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RainmeterEditor/Resources/Icons/arrow_backward_16.png b/RainmeterStudio/Resources/Icons/arrow_backward_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_backward_16.png rename to RainmeterStudio/Resources/Icons/arrow_backward_16.png diff --git a/RainmeterEditor/Resources/Icons/arrow_forward_16.png b/RainmeterStudio/Resources/Icons/arrow_forward_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_forward_16.png rename to RainmeterStudio/Resources/Icons/arrow_forward_16.png diff --git a/RainmeterEditor/Resources/Icons/arrow_left_16.png b/RainmeterStudio/Resources/Icons/arrow_left_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_left_16.png rename to RainmeterStudio/Resources/Icons/arrow_left_16.png diff --git a/RainmeterEditor/Resources/Icons/arrow_right_16.png b/RainmeterStudio/Resources/Icons/arrow_right_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/arrow_right_16.png rename to RainmeterStudio/Resources/Icons/arrow_right_16.png diff --git a/RainmeterEditor/Resources/Icons/page_white_star_16.png b/RainmeterStudio/Resources/Icons/page_white_star_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/page_white_star_16.png rename to RainmeterStudio/Resources/Icons/page_white_star_16.png diff --git a/RainmeterEditor/Resources/Icons/project_16.png b/RainmeterStudio/Resources/Icons/project_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/project_16.png rename to RainmeterStudio/Resources/Icons/project_16.png diff --git a/RainmeterEditor/Resources/Icons/project_star_16.png b/RainmeterStudio/Resources/Icons/project_star_16.png similarity index 100% rename from RainmeterEditor/Resources/Icons/project_star_16.png rename to RainmeterStudio/Resources/Icons/project_star_16.png diff --git a/RainmeterEditor/Resources/Icons/text_file_32.png b/RainmeterStudio/Resources/Icons/text_file_32.png similarity index 100% rename from RainmeterEditor/Resources/Icons/text_file_32.png rename to RainmeterStudio/Resources/Icons/text_file_32.png diff --git a/RainmeterEditor/Resources/Strings.Designer.cs b/RainmeterStudio/Resources/Strings.Designer.cs similarity index 94% rename from RainmeterEditor/Resources/Strings.Designer.cs rename to RainmeterStudio/Resources/Strings.Designer.cs index a84078db..c82b8218 100644 --- a/RainmeterEditor/Resources/Strings.Designer.cs +++ b/RainmeterStudio/Resources/Strings.Designer.cs @@ -1,117 +1,117 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34014 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace RainmeterEditor.Resources { - 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", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings() { - } - - /// - /// 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("RainmeterEditor.Resources.Strings", typeof(Strings).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 Utility. - /// - internal static string Category_Utility { - get { - return ResourceManager.GetString("Category_Utility", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to _File.... - /// - internal static string DocumentCreateCommand_DisplayText { - get { - return ResourceManager.GetString("DocumentCreateCommand_DisplayText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Creates a new file. - /// - internal static string DocumentCreateCommand_ToolTip { - get { - return ResourceManager.GetString("DocumentCreateCommand_ToolTip", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Text Editor. - /// - internal static string DocumentEditor_Text_Name { - get { - return ResourceManager.GetString("DocumentEditor_Text_Name", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Blank text file. - /// - internal static string DocumentFormat_TextFile_Description { - get { - return ResourceManager.GetString("DocumentFormat_TextFile_Description", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Text file. - /// - internal static string DocumentFormat_TextFile_Name { - get { - return ResourceManager.GetString("DocumentFormat_TextFile_Name", resourceCulture); - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RainmeterStudio.Resources { + 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", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Strings { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Strings() { + } + + /// + /// 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("RainmeterStudio.Resources.Strings", typeof(Strings).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 Utility. + /// + internal static string Category_Utility { + get { + return ResourceManager.GetString("Category_Utility", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to _File.... + /// + internal static string DocumentCreateCommand_DisplayText { + get { + return ResourceManager.GetString("DocumentCreateCommand_DisplayText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Creates a new file. + /// + internal static string DocumentCreateCommand_ToolTip { + get { + return ResourceManager.GetString("DocumentCreateCommand_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Text Editor. + /// + internal static string DocumentEditor_Text_Name { + get { + return ResourceManager.GetString("DocumentEditor_Text_Name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Blank text file. + /// + internal static string DocumentFormat_TextFile_Description { + get { + return ResourceManager.GetString("DocumentFormat_TextFile_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Text file. + /// + internal static string DocumentFormat_TextFile_Name { + get { + return ResourceManager.GetString("DocumentFormat_TextFile_Name", resourceCulture); + } + } + } +} diff --git a/RainmeterEditor/Resources/Strings.resx b/RainmeterStudio/Resources/Strings.resx similarity index 97% rename from RainmeterEditor/Resources/Strings.resx rename to RainmeterStudio/Resources/Strings.resx index a26a6958..e2d125c1 100644 --- a/RainmeterEditor/Resources/Strings.resx +++ b/RainmeterStudio/Resources/Strings.resx @@ -1,138 +1,138 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - Utility - - - _File... - - - Creates a new file - - - Text Editor - - - Blank text file - - - Text file - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Utility + + + _File... + + + Creates a new file + + + Text Editor + + + Blank text file + + + Text file + \ No newline at end of file diff --git a/RainmeterEditor/Resources/splash.png b/RainmeterStudio/Resources/splash.png similarity index 100% rename from RainmeterEditor/Resources/splash.png rename to RainmeterStudio/Resources/splash.png diff --git a/RainmeterEditor/Storage/ProjectStorage.cs b/RainmeterStudio/Storage/ProjectStorage.cs similarity index 90% rename from RainmeterEditor/Storage/ProjectStorage.cs rename to RainmeterStudio/Storage/ProjectStorage.cs index 0fd30d59..224ba2e9 100644 --- a/RainmeterEditor/Storage/ProjectStorage.cs +++ b/RainmeterStudio/Storage/ProjectStorage.cs @@ -1,40 +1,40 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Xml.Serialization; -using RainmeterEditor.Model; - -namespace RainmeterEditor.Storage -{ - public class ProjectStorage - { - public Project Load(string path) - { - // Open file - var file = File.OpenText(path); - - // Deserialize file - var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); - Project project = serializer.Deserialize(file) as Project; - - // Clean up - file.Close(); - return project; - } - - public void Save(string path, Project project) - { - // Open file - var file = File.OpenWrite(path); - - // Deserialize file - var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); - serializer.Serialize(file, project); - - // Clean up - file.Close(); - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml.Serialization; +using RainmeterStudio.Model; + +namespace RainmeterStudio.Storage +{ + public class ProjectStorage + { + public Project Load(string path) + { + // Open file + var file = File.OpenText(path); + + // Deserialize file + var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); + Project project = serializer.Deserialize(file) as Project; + + // Clean up + file.Close(); + return project; + } + + public void Save(string path, Project project) + { + // Open file + var file = File.OpenWrite(path); + + // Deserialize file + var serializer = new XmlSerializer(typeof(Project), new XmlRootAttribute("project")); + serializer.Serialize(file, project); + + // Clean up + file.Close(); + } + } +} diff --git a/RainmeterEditor/Storage/SkinDirectory.cs b/RainmeterStudio/Storage/SkinDirectory.cs similarity index 87% rename from RainmeterEditor/Storage/SkinDirectory.cs rename to RainmeterStudio/Storage/SkinDirectory.cs index 00705ff0..eedc135d 100644 --- a/RainmeterEditor/Storage/SkinDirectory.cs +++ b/RainmeterStudio/Storage/SkinDirectory.cs @@ -1,25 +1,25 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; - -namespace RainmeterEditor.Storage -{ - public static class SkinDirectory - { - private static string _path = null; - - public static string Path - { - get - { - return ""; - } - set - { - - } - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace RainmeterStudio.Storage +{ + public static class SkinDirectory + { + private static string _path = null; + + public static string Path + { + get + { + return ""; + } + set + { + + } + } + } +} diff --git a/RainmeterEditor/UI/Command.cs b/RainmeterStudio/UI/Command.cs similarity index 95% rename from RainmeterEditor/UI/Command.cs rename to RainmeterStudio/UI/Command.cs index ebcd6643..1a931f14 100644 --- a/RainmeterEditor/UI/Command.cs +++ b/RainmeterStudio/UI/Command.cs @@ -1,88 +1,88 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows.Input; -using System.Windows.Media; - -namespace RainmeterEditor.UI -{ - public class Command : ICommand - { - #region Private members - - private Action _execute; - private Func _canExecute; - private Action _executeNoParam; - private Func _canExecuteNoParam; - - #endregion - - #region Public properties - - public string Name { get; set; } - public string DisplayText { get; set; } - public string Tooltip { get; set; } - public ImageSource Icon { get; set; } - public KeyGesture Shortcut { get; set; } - - public string ShortcutText - { - get - { - string text = String.Empty; - - if ((Shortcut.Modifiers & ModifierKeys.Windows) != 0) - text += "Win+"; - - if ((Shortcut.Modifiers & ModifierKeys.Control) != 0) - text += "Ctrl+"; - - if ((Shortcut.Modifiers & ModifierKeys.Alt) != 0) - text += "Alt+"; - - if ((Shortcut.Modifiers & ModifierKeys.Shift) != 0) - text += "Shift+"; - - text += Enum.GetName(typeof(Key), Shortcut.Key); - return text; - } - } - - #endregion - - public event EventHandler CanExecuteChanged; - - public Command(string name = null, Action execute = null, Func canExecute = null) - { - Name = name; - _execute = execute; - _canExecute = canExecute; - } - - public Command(string name = null, Action execute = null, Func canExecute = null) - { - Name = name; - _executeNoParam = execute; - _canExecuteNoParam = canExecute; - } - - public virtual bool CanExecute(object parameter) - { - if (_canExecute != null) - return _canExecute(parameter); - else if (_canExecuteNoParam != null) - return _canExecuteNoParam(); - - return true; - } - - public virtual void Execute(object parameter) - { - if (_execute != null) - _execute(parameter); - else if (_executeNoParam != null) - _executeNoParam(); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Input; +using System.Windows.Media; + +namespace RainmeterStudio.UI +{ + public class Command : ICommand + { + #region Private members + + private Action _execute; + private Func _canExecute; + private Action _executeNoParam; + private Func _canExecuteNoParam; + + #endregion + + #region Public properties + + public string Name { get; set; } + public string DisplayText { get; set; } + public string Tooltip { get; set; } + public ImageSource Icon { get; set; } + public KeyGesture Shortcut { get; set; } + + public string ShortcutText + { + get + { + string text = String.Empty; + + if ((Shortcut.Modifiers & ModifierKeys.Windows) != 0) + text += "Win+"; + + if ((Shortcut.Modifiers & ModifierKeys.Control) != 0) + text += "Ctrl+"; + + if ((Shortcut.Modifiers & ModifierKeys.Alt) != 0) + text += "Alt+"; + + if ((Shortcut.Modifiers & ModifierKeys.Shift) != 0) + text += "Shift+"; + + text += Enum.GetName(typeof(Key), Shortcut.Key); + return text; + } + } + + #endregion + + public event EventHandler CanExecuteChanged; + + public Command(string name = null, Action execute = null, Func canExecute = null) + { + Name = name; + _execute = execute; + _canExecute = canExecute; + } + + public Command(string name = null, Action execute = null, Func canExecute = null) + { + Name = name; + _executeNoParam = execute; + _canExecuteNoParam = canExecute; + } + + public virtual bool CanExecute(object parameter) + { + if (_canExecute != null) + return _canExecute(parameter); + else if (_canExecuteNoParam != null) + return _canExecuteNoParam(); + + return true; + } + + public virtual void Execute(object parameter) + { + if (_execute != null) + _execute(parameter); + else if (_executeNoParam != null) + _executeNoParam(); + } + } +} diff --git a/RainmeterEditor/UI/Controller/DocumentController.cs b/RainmeterStudio/UI/Controller/DocumentController.cs similarity index 89% rename from RainmeterEditor/UI/Controller/DocumentController.cs rename to RainmeterStudio/UI/Controller/DocumentController.cs index e5db844b..6acaded3 100644 --- a/RainmeterEditor/UI/Controller/DocumentController.cs +++ b/RainmeterStudio/UI/Controller/DocumentController.cs @@ -1,77 +1,77 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using RainmeterEditor.Business; -using RainmeterEditor.UI.Dialogs; -using RainmeterEditor.Model.Events; -using RainmeterEditor.Model; -using System.Windows; -using System.Windows.Input; -using System.Windows.Media.Imaging; - -namespace RainmeterEditor.UI.Controller -{ - public class DocumentController - { - #region Commands - - public Command DocumentCreateCommand { get; private set; } - - #endregion - - public event EventHandler DocumentOpened - { - add - { - DocumentManager.Instance.DocumentOpened += value; - } - remove - { - DocumentManager.Instance.DocumentOpened -= value; - } - } - public event EventHandler DocumentClosed; - - public Window OwnerWindow { get; set; } - - public DocumentController() - { - DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow()) - { - DisplayText = Resources.Strings.DocumentCreateCommand_DisplayText, - Tooltip = Resources.Strings.DocumentCreateCommand_ToolTip, - Icon = new BitmapImage(new Uri("/Resources/Icons/page_white_star_16.png", UriKind.RelativeOrAbsolute)), - Shortcut = new KeyGesture(Key.N, ModifierKeys.Control) - }; - } - - public void CreateWindow(DocumentFormat defaultFormat = null, string defaultPath = "") - { - // Show dialog - var dialog = new CreateDocumentDialog() - { - Owner = OwnerWindow, - SelectedFormat = defaultFormat, - SelectedPath = defaultPath - }; - bool? res = dialog.ShowDialog(); - - if (!res.HasValue || !res.Value) - return; - - var format = dialog.SelectedFormat; - var path = dialog.SelectedPath; - - // Call manager - DocumentManager.Instance.Create(format, path); - } - - public void Create(DocumentFormat format, string path) - { - // Call manager - DocumentManager.Instance.Create(format, path); - } - - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RainmeterStudio.Business; +using RainmeterStudio.UI.Dialogs; +using RainmeterStudio.Model.Events; +using RainmeterStudio.Model; +using System.Windows; +using System.Windows.Input; +using System.Windows.Media.Imaging; + +namespace RainmeterStudio.UI.Controller +{ + public class DocumentController + { + #region Commands + + public Command DocumentCreateCommand { get; private set; } + + #endregion + + public event EventHandler DocumentOpened + { + add + { + DocumentManager.Instance.DocumentOpened += value; + } + remove + { + DocumentManager.Instance.DocumentOpened -= value; + } + } + public event EventHandler DocumentClosed; + + public Window OwnerWindow { get; set; } + + public DocumentController() + { + DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow()) + { + DisplayText = Resources.Strings.DocumentCreateCommand_DisplayText, + Tooltip = Resources.Strings.DocumentCreateCommand_ToolTip, + Icon = new BitmapImage(new Uri("/Resources/Icons/page_white_star_16.png", UriKind.RelativeOrAbsolute)), + Shortcut = new KeyGesture(Key.N, ModifierKeys.Control) + }; + } + + public void CreateWindow(DocumentFormat defaultFormat = null, string defaultPath = "") + { + // Show dialog + var dialog = new CreateDocumentDialog() + { + Owner = OwnerWindow, + SelectedFormat = defaultFormat, + SelectedPath = defaultPath + }; + bool? res = dialog.ShowDialog(); + + if (!res.HasValue || !res.Value) + return; + + var format = dialog.SelectedFormat; + var path = dialog.SelectedPath; + + // Call manager + DocumentManager.Instance.Create(format, path); + } + + public void Create(DocumentFormat format, string path) + { + // Call manager + DocumentManager.Instance.Create(format, path); + } + + } +} diff --git a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml similarity index 95% rename from RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml rename to RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml index 7b416439..e28574e6 100644 --- a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml +++ b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml @@ -1,64 +1,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Path: + + + + + + + + + + + + diff --git a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml.cs b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml.cs similarity index 92% rename from RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml.cs rename to RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml.cs index 6060ed95..8c2767bf 100644 --- a/RainmeterEditor/UI/Dialogs/CreateDocumentDialog.xaml.cs +++ b/RainmeterStudio/UI/Dialogs/CreateDocumentDialog.xaml.cs @@ -1,93 +1,93 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; -using RainmeterEditor.Business; -using RainmeterEditor.Model; - -namespace RainmeterEditor.UI.Dialogs -{ - /// - /// Interaction logic for CreateDocumentDialog.xaml - /// - public partial class CreateDocumentDialog : Window - { - /// - /// Gets or sets the currently selected file format - /// - public DocumentFormat SelectedFormat - { - get - { - return listFormats.SelectedItem as DocumentFormat; - } - set - { - listFormats.SelectedItem = value; - } - } - - /// - /// Gets or sets the path - /// - public string SelectedPath - { - get - { - return textPath.Text; - } - set - { - textPath.Text = value; - } - } - - /// - /// Creates a new instance of CreateDocumentDialog - /// - public CreateDocumentDialog() - { - InitializeComponent(); - - PopulateFormats(); - Validate(); - } - - private void PopulateFormats() - { - listFormats.ItemsSource = DocumentManager.Instance.DocumentFormats; - CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(listFormats.ItemsSource); - view.GroupDescriptions.Add(new PropertyGroupDescription("Category")); - } - - private void buttonCreate_Click(object sender, RoutedEventArgs e) - { - DialogResult = true; - Close(); - } - - private void buttonCancel_Click(object sender, RoutedEventArgs e) - { - DialogResult = false; - Close(); - } - - private void Validate() - { - bool res = true; - res &= !String.IsNullOrWhiteSpace(textPath.Text); - res &= (listFormats.SelectedItem != null); - - buttonCreate.IsEnabled = res; - } - } -} +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; +using RainmeterStudio.Business; +using RainmeterStudio.Model; + +namespace RainmeterStudio.UI.Dialogs +{ + /// + /// Interaction logic for CreateDocumentDialog.xaml + /// + public partial class CreateDocumentDialog : Window + { + /// + /// Gets or sets the currently selected file format + /// + public DocumentFormat SelectedFormat + { + get + { + return listFormats.SelectedItem as DocumentFormat; + } + set + { + listFormats.SelectedItem = value; + } + } + + /// + /// Gets or sets the path + /// + public string SelectedPath + { + get + { + return textPath.Text; + } + set + { + textPath.Text = value; + } + } + + /// + /// Creates a new instance of CreateDocumentDialog + /// + public CreateDocumentDialog() + { + InitializeComponent(); + + PopulateFormats(); + Validate(); + } + + private void PopulateFormats() + { + listFormats.ItemsSource = DocumentManager.Instance.DocumentFormats; + CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(listFormats.ItemsSource); + view.GroupDescriptions.Add(new PropertyGroupDescription("Category")); + } + + private void buttonCreate_Click(object sender, RoutedEventArgs e) + { + DialogResult = true; + Close(); + } + + private void buttonCancel_Click(object sender, RoutedEventArgs e) + { + DialogResult = false; + Close(); + } + + private void Validate() + { + bool res = true; + res &= !String.IsNullOrWhiteSpace(textPath.Text); + res &= (listFormats.SelectedItem != null); + + buttonCreate.IsEnabled = res; + } + } +} diff --git a/RainmeterEditor/UI/MainWindow.xaml b/RainmeterStudio/UI/MainWindow.xaml similarity index 95% rename from RainmeterEditor/UI/MainWindow.xaml rename to RainmeterStudio/UI/MainWindow.xaml index 34e353d1..65071269 100644 --- a/RainmeterEditor/UI/MainWindow.xaml +++ b/RainmeterStudio/UI/MainWindow.xaml @@ -1,116 +1,116 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ready - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ready + + + diff --git a/RainmeterEditor/UI/MainWindow.xaml.cs b/RainmeterStudio/UI/MainWindow.xaml.cs similarity index 92% rename from RainmeterEditor/UI/MainWindow.xaml.cs rename to RainmeterStudio/UI/MainWindow.xaml.cs index e378257e..29cacacb 100644 --- a/RainmeterEditor/UI/MainWindow.xaml.cs +++ b/RainmeterStudio/UI/MainWindow.xaml.cs @@ -1,75 +1,75 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using RainmeterEditor.Model.Events; -using RainmeterEditor.UI.Controller; -using Xceed.Wpf.AvalonDock.Layout; - -namespace RainmeterEditor.UI -{ - /// - /// Interaction logic for MainWindow.xaml - /// - public partial class MainWindow : Window - { - private DocumentController documentController; - - public Command DocumentCreateCommand { get { return documentController.DocumentCreateCommand; } } - - public MainWindow() - { - InitializeComponent(); - - this.DataContext = this; - - documentController = new DocumentController(); - documentController.OwnerWindow = this; - documentController.DocumentOpened += documentController_DocumentOpened; - AddKeyBinding(documentController.DocumentCreateCommand); - } - - private void AddKeyBinding(Command c) - { - if (c.Shortcut != null) - InputBindings.Add(new KeyBinding(c, c.Shortcut)); - } - - void documentController_DocumentOpened(object sender, DocumentOpenedEventArgs e) - { - // Spawn a new window - LayoutDocument document = new LayoutDocument(); - document.Content = e.Editor.EditorUI; - document.Title = e.Editor.Title; - document.Closing += document_Closing; - - documentPane.Children.Add(document); - documentPane.SelectedContentIndex = documentPane.IndexOf(document); - } - - void document_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - switch (MessageBox.Show("Are you sure?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)) - { - case MessageBoxResult.Yes: - break; - - case MessageBoxResult.No: - break; - - default: - e.Cancel = true; - return; - } - } - } +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using RainmeterStudio.Model.Events; +using RainmeterStudio.UI.Controller; +using Xceed.Wpf.AvalonDock.Layout; + +namespace RainmeterStudio.UI +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + private DocumentController documentController; + + public Command DocumentCreateCommand { get { return documentController.DocumentCreateCommand; } } + + public MainWindow() + { + InitializeComponent(); + + this.DataContext = this; + + documentController = new DocumentController(); + documentController.OwnerWindow = this; + documentController.DocumentOpened += documentController_DocumentOpened; + AddKeyBinding(documentController.DocumentCreateCommand); + } + + private void AddKeyBinding(Command c) + { + if (c.Shortcut != null) + InputBindings.Add(new KeyBinding(c, c.Shortcut)); + } + + void documentController_DocumentOpened(object sender, DocumentOpenedEventArgs e) + { + // Spawn a new window + LayoutDocument document = new LayoutDocument(); + document.Content = e.Editor.EditorUI; + document.Title = e.Editor.Title; + document.Closing += document_Closing; + + documentPane.Children.Add(document); + documentPane.SelectedContentIndex = documentPane.IndexOf(document); + } + + void document_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + switch (MessageBox.Show("Are you sure?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)) + { + case MessageBoxResult.Yes: + break; + + case MessageBoxResult.No: + break; + + default: + e.Cancel = true; + return; + } + } + } } \ No newline at end of file diff --git a/RainmeterEditor/UI/SkinsPanel.xaml b/RainmeterStudio/UI/SkinsPanel.xaml similarity index 90% rename from RainmeterEditor/UI/SkinsPanel.xaml rename to RainmeterStudio/UI/SkinsPanel.xaml index 5a5746f6..95e255ca 100644 --- a/RainmeterEditor/UI/SkinsPanel.xaml +++ b/RainmeterStudio/UI/SkinsPanel.xaml @@ -1,16 +1,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/RainmeterEditor/UI/SkinsPanel.xaml.cs b/RainmeterStudio/UI/SkinsPanel.xaml.cs similarity index 83% rename from RainmeterEditor/UI/SkinsPanel.xaml.cs rename to RainmeterStudio/UI/SkinsPanel.xaml.cs index 6d8425ab..30cf0c99 100644 --- a/RainmeterEditor/UI/SkinsPanel.xaml.cs +++ b/RainmeterStudio/UI/SkinsPanel.xaml.cs @@ -1,31 +1,31 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using RainmeterEditor.Interop; -using RainmeterEditor.Storage; - -namespace RainmeterEditor.UI -{ - /// - /// Interaction logic for SkinsPanel.xaml - /// - public partial class SkinsPanel : UserControl - { - public SkinsPanel() - { - InitializeComponent(); - - //var x = Rainmeter.Instance.Handle; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using RainmeterStudio.Interop; +using RainmeterStudio.Storage; + +namespace RainmeterStudio.UI +{ + /// + /// Interaction logic for SkinsPanel.xaml + /// + public partial class SkinsPanel : UserControl + { + public SkinsPanel() + { + InitializeComponent(); + + //var x = Rainmeter.Instance.Handle; + } + } +} diff --git a/RainmeterEditor/UI/Styles/ButtonStyle.xaml b/RainmeterStudio/UI/Styles/ButtonStyle.xaml similarity index 98% rename from RainmeterEditor/UI/Styles/ButtonStyle.xaml rename to RainmeterStudio/UI/Styles/ButtonStyle.xaml index 53f3fd5a..72b3c419 100644 --- a/RainmeterEditor/UI/Styles/ButtonStyle.xaml +++ b/RainmeterStudio/UI/Styles/ButtonStyle.xaml @@ -1,55 +1,55 @@ - - + + \ No newline at end of file diff --git a/RainmeterEditor/UI/Styles/Common.xaml b/RainmeterStudio/UI/Styles/Common.xaml similarity index 98% rename from RainmeterEditor/UI/Styles/Common.xaml rename to RainmeterStudio/UI/Styles/Common.xaml index 57751a24..bae659cf 100644 --- a/RainmeterEditor/UI/Styles/Common.xaml +++ b/RainmeterStudio/UI/Styles/Common.xaml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/RainmeterEditor/app.config b/RainmeterStudio/app.config similarity index 98% rename from RainmeterEditor/app.config rename to RainmeterStudio/app.config index fcd0c937..57c0f2cb 100644 --- a/RainmeterEditor/app.config +++ b/RainmeterStudio/app.config @@ -1,3 +1,3 @@ - - - + + + diff --git a/RainmeterEditor/packages.config b/RainmeterStudio/packages.config similarity index 98% rename from RainmeterEditor/packages.config rename to RainmeterStudio/packages.config index 82c30905..f523d41a 100644 --- a/RainmeterEditor/packages.config +++ b/RainmeterStudio/packages.config @@ -1,5 +1,5 @@ - - - - + + + + \ No newline at end of file diff --git a/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec new file mode 100644 index 00000000..89e0af8f --- /dev/null +++ b/packages/AvalonDock.2.0.2000/AvalonDock.2.0.2000.nuspec @@ -0,0 +1,19 @@ + + + + AvalonDock + 2.0.2000 + AvalonDock + Xceed Software Inc. + Xceed Software Inc. + http://avalondock.codeplex.com/license + http://avalondock.codeplex.com/ + false + AvalonDock is a docking windows control for WPF that lets you create customizable layouts using a full featured window docking system similar to what is found in many popular integrated development environements (IDEs) such as Visual Studio. It includes themes and samples to get you started. + Powerful and free WPF docking windows control. + v2.0.2000 is a bug-fix release + Copyright (c) 2007-2013 Xceed Software Inc. + en-US + WPF Docking + + \ No newline at end of file diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Aero.dll new file mode 100644 index 0000000000000000000000000000000000000000..18ebf3724fb685e0159a8610102591937f007a13 GIT binary patch literal 88576 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

    *JATmm~FaRJF*&d?KDi2bPX0>0rfn zs@9pLVh5hdGa64Mf>k^D**gINab5{-+Qo16gDEi9oJ@HPA|{>;R_|tt`^KX&QM`r@ zE?y;i3ni0HrC9<61AFYa?`PcWBJ`$ZDn}j1v<6qRm;M8)K^HZ_%1(aQh}_tfLn=Xl z#_k+nL951|9N!*6!CpHS2jJOupawkK<484TdDh)?gd;adFmSMPAJq_*ie9GeK9q36YBBPUPo~+JKyNJgpw=p+itHz)_GMTYY7~IwB1~f^u2{CU{7gEus*8S zS*Ni-hvuS{1rFG0E-Iq&W_#2g5w-CayKlFs%9>kQNEl7C?Un{$yRR^|vNtwyHfro3 zHRz;nyCtx8Kt`S2Mgap*Un2lHw>yJ_OkBA7Cga%z+G|tsbXI8%Rvf?)o5AMWsmWQ8 z2e;nAL7T0qG#Nh}%|;m;yteJ#fQ)xKlF%IPL{2Ihp>k(}Z3DD{sL3qD*`Z4;#?Ky( zC$quoLE4PwKglY0d_K5!h`X60C6K+ooLAt0dR-828Re{6ELja^lLHIc)M04A zGQZ#D!RZLV*o7j@fyti`9$J?lRh5pp^-2TbY|j-=?(PvTqKlk>Qjmx)N?k8lag08z^H240Rug?EU|7SjFIaJcMh!L_hyEs6F0{9jb~_S5 z*V7IwQFM(uF+yEcd9-ko3+*X_6?f6wmox^iIY~cb(Jn%fYT8vWcOf5)%sXqS!!f#< zxjjKgZ5|#Qn@T0Qo-k}MphxQRAY(!oNu;V6+%UnduhtAaJDNyEAq6IBZkc@Aa46Vx zH%F_nMB{1>hEB2frX25qj867o^J$LIV2PkN{$SHRxgc34ggWZ;6jq06#lG=ghEc5t zofTpu7`%^tH`;v%5(y~Lle6(mu z4}<*C1Ue+qR)ZC9X0my>VuI~wIYp~A1?(!>_>?97mIpXaixKBo>H-V{$05}XklUgh zC72ThW}pl4)I!FH7C6W4)Et?0v4+$%MYz>mlNl#dDKWZC1RG=QU41e>Gn-}kCWkKp zg?+1zD$^FvhH3V!oJ`G|5u0WNRH-_e-i@;Ys$RjeHMiZ`wpy8YC>@WXlZrpAq`8jK zJq8=&cHz?{6wS&9sZsB(gLUWW&33J`8h5vv>UrCt%|KwlQB-N!R=5&^4Jr1t zk8+yl*{|VH0w#H3nKWTEKEy%Q6SJv{a-7WFcQBY{-;HCL!*R%iOjg*-63SRoL#rjj zoD?uP$eA^XEGNOH1I^ zoD3>pA({wQU!rAnVsh|$Z?JmN@_J9`)&TXd5%^(9iL@Bg z)jUj3FOz>H85>Wr@>cflseB80Fy<20nqbvi`Nex;dOD+IL$^25Eo;nq zLP=nZuEaR=(4i(8T4(yPWRwkVihwh`f$mr*9D@>}{*BbTRv^N@R`E7ehwRzgdfLG# zdkV8$PMrrEAI*_bLh?3TrmteutkX*jFzX+qX1n_6{_YamBORE{X6J9-yEik1naOA- zGH1-qO{M1cUW_NFFYWE_?A*Wi60Gxk=hNnlg&U?aH+d*EIt-YV!1#oKnoI1yt1ZDp18*&g{+MgJ_G`XCdwl~vR0z0$vi zy7$SaT6$1C$ryF?jP}NG>gm7j=U4)poZszG1IKTcp+3a$<6DMrIldM6R^nTQZ#BL( z_}1ZDk1zYz(stlHdK;(S4&&JSwJo>Y%`_dTP! zcHyNmvRie-FzhY=q55ixi+jCzq28x@k;KkUX{2|A#7U+}^jKkQAes~ zNbIU@3J8O5WN0>?h^3X}L<(yeV!M5?gTm~+tG2F2A6m!8qX^IL_V_)1-$zxg#;T~F zEts}y`=p>ez=!t*XfKbuBAPkGHgTj+o!Ctcfn{W1R`(|iSO){tw?|Q6J+JyOeWGNiX2DQZFIwK(f1o~Gf~NU8 ze!i}@{}4Z~N}dB_hifpy#jv87rHL^wf~CQWf~C=ZL^B*(oJuGh1_Nc!6KdqFXl;P| znb0N*SG}(Kx;n%kHwnb)w#ISF`vtU3d)%i{tj*1|aeUz9hl=v6AIh*yxz^+up=ZyTXR=*@^?tHi!7+squVchxOJ!r3p;=|>yb=qSZzj)VdO^8& z`9}hEuMZf~BdR1PC@RP)dWi3+vcq^;MJX{k8TMg3-}%&%?UYgTv#bkg<#pN z>T?@L$}-)DWxFYQUqTx%C0{q19lo}{^#xgU4%*YTkGm;LI%~&^QtKVB=yA2)G3h0vu$VuH8+TRYeKM-dpeqK?-WxL4T8QFIi60@N4H&MwT zV(C4cCW?f}Kqrbn?nSFMlCKlx=(+=`TT116)QHYd z;hf0LjAOOaw0*b?y?B@83IpT6RKw+^Hf?JZmev`}Kqf8vtXFgZ zLW#BH`DzhJgXl+B2gxe@Km=X*6&rQvqm0}kNWoEuvzq3timgz=Fq+6wy;$X1w~F)v zG`^QqLsN2Ncpt9A(AYlGsd_<$6lOUL)l47nShYc+70Q8>p=%Xr2af%Im(lO4{?pjB#ciKX)a~ij5N;cUWs;7`)c{&(VzJc*-)<^BuHwS)yi&_jItz`EIi$(|fu`qo)(i+>rk)`XQio zm6FG?UOA4HS`L~?xN5hql;VxWFYHLVhOFzvxpt&t@1n=Rswv;?0@+=)yLLEqjpmf0 z=-cIL2va`hvHIL0K!$4rR4!)}xN-u^MT|vkrQm+0vY8CcIm|tQ(8gKz_`ap-z&^SB zuqYybuf^}!Rj_QfbtFZB{+$N2w|n(KW~#H<@HDes*#DAR!U}i$ zAl+9oKy1bn_Pgs?yF=@)UA9&<4pWUVtc=agut^EVC5)EFuBb!nvtg_-OSxg%3^$EX zt;j`RW+Ag-DnXmk4WBx(KuN4wu$e(CUsMg7sG#L2`MxhIJ{$^Av&q&GJqK;tzbKpg z7A2UP0KtYblH|p$F-s~#=MZD_6G=sk%{6nLZpqs;Obt2}bp&J)*KZBd;heP^`2;oV zN2pTd#!HV(O7=KX(p`*_hYU)#2B^tGNrryIsfbAe!yanoMYCvkUQvhF$BS|~rj>kB zIb};zc}N<`EJ|mfUJ8)0j7IvHlGFu+%?4#!nwo-6eC-w8(q=Vx)gxPOuqZU_KTIVD zI$;Q5<6a(QYO4)o#FB%;h=@_+n5iWcu^AROb~Xkb#DeU%uc+ZWOKF`|BE*B$zF7p* z)mS&*U|gG89qYU}O*aMe2nmC($4lw(`dHl%7At96-n#f%YgSCO2Iho=1cn@EsNi6)xk3 z0M$us4?LuMG%x zYZ;caB2YBqqwZEfDcekLENoo^BG-SA+J#QcR{S5xVYFtU&I$aXm|@Xoo?Gn$uUAzs zY`xmdyv4L<49Kty07)<^`z(6x;4#`HG#{QomwQVyJQCs=$~5%Wvg16*aNsVL?H!}6 z-k#9Y6;vRDi7FW-jE@@c4`zqZ`|OK1uIghKF=fbckNmbutA1z7TY zYKb#o{dxN^-Bd6xFHGk72kWGM`HQND{V{KP;)*)94pE8;;Pd8SkYPo}k01K0<#74O zRL^lt7qe}a@!K&>TMFVQxH=cXiWgO#-NWNo)H|;kLy=1!6n73&dqEVXwOPYaH$8`~ zLxS*KSJWfdjHCpe2g_~46e@@%+9Y!z=7mJ-wBvXDin^Yj-CoUryArt^mNl7zr~g;5 zEVFmn7gTpwS0{SLvM=dRHukhq*19f6%=&pMwIw$mHhN1(7%!OHe7~!@FbokZZ1{Jb zx;qz}(I1(c&o0V|a0_FH>t9eSA!s9*!R*+BAGU&Wx3=x7Dyt|T5o8tVV{?6lPVEaS zrm%VhxDa|gw&-wS?zy6#TqjSV0AgGGK*mIcYfsGSTZ#ht&WP{0s>()c#)^W24`H&>k0Fm&wizoOoK9kJJ1 za~|}!Usa{t&WFAxw;6d}3uDZ7*eQPR6?Nh|;w%LDdNIa?cnT88N^YK)sd+&y(_4#$ zyRV_+(YbppnSpNPz|>%C7BpMNsZ|%5#wig$5h7`2U(3xnd{s5{28Z%GOCO(|q1L%3 zj3uUCEd>OPAtCj+>k>29(3$D^78ET;+tg#*vCJ!2a!7d{IJ~e7*?LtC7U1vINsx6K z2tgX7!V5`_A~-tB3|%5$2MQLG5!=R1waRESqd1}`znnPGqpL0ly706H)rBWv@+vWT z)R}!O{IOt|f3JZa%)&?cFdV7VI13O%53n-6ofxJN;jUEcmGt_$LBb=fH7reA*>zP7 zuV8ySmR5a5=z~}}3Vd}uZ07{$-&jor}SjZ zF?On21d3R2VJGU15+rNK(;`%KidriFI#4vPP!Za6?^QLjqSj4uf)->|%bCoY)}$i~ zeNV6cH((5qL*M;Z)y@Lgi5W#u4d?lhzd~Vo|l3FAT;Z za^Hso4vZDz6+t6+!+dL5FLtf8TQAMo>aYevdfdN&RiJmMZXDjw{wejok_jAuBPTiP z16Z8HM`9QgxTsqr-rYt#UaG^Yq+_&GMzody4mv|L^JEFf1gDJzjR73Hq3ud{jCzj| zl~EPbLY8>zo|KmpHMw-T_XcKW5cNJI6P`yGB{EO%u$0ZLhWm{ag{$j~5pR|C@FpX{ zmH@Rnp7~)xXx+qip+))LOu|?;dPTis9fpv@`bi*~6~V^+VgDD@k}gc)S$X%YQ8r%q zfwJk#?{!Gmqh!2Q>l#aTO2=o_C40aqSujAGR-UPHJqm_h_ZB%2HF9hZ5SC)|DK5E3 zv|Nu|d65TtmM6uInwH!NATeolPFqYH;&taO<}o;|p79Kiez0gi?{1d!L|bH3?L=6o zL+KD1JStWSiY*8&R4>haJg28Gi$^3>w}{jtA!-Nzh_i7lu|PW!t4YSHmY^&VP)rd4 z$JBBensiOxJ~fH_u(?4*)C+6cAXh}yH_Wz4m@I|GFxj?74j_FR$e@h3!33Eb6FcHW z<~l?(Cev9vs0|Ryw0JsE^qlRn%C%U#WWHPUSX^(s*n^iEt|(MR4rqrRn?RsaizT)q zv``(Nw8KY6W}(EKj>odIV#7f%Zz$reBYF*6qsen>?D6dDJu$rqhRj{`Y1x>_YAEYM zMfMr5*a4s~2+dKRj7?Ly3qplbg$efdZ(&LP6sA(-#$SDi@8PwWA}l7ubWIr}K{HH| zVY&`#3!ApXL>x2Sj6DpnMOb)4Gt~(-SntdE=s#?@VjO3w{dxR6ueQI4pBFKenuD>X zhssvpmfPx!Px~T?tzNXX3_^(1+QC_8ixFf?X5U!B)oESEP^T@@Vm^(WiYpiOg;x3Y zP}@pXlOGKP0S)Vl-YxcR%6dz&v?nOwKDk(zRakQ=UNM|_86phO=AvZ>{+0XN3$q^^ zv3Uv)^>5iPFIZvS>pnK-5rgYr^${|TGqVep^{@F5t135*;8$0%EisJI7qf;d7qRm&9>Ze7gQ{4%3T;$dy4n_?4Q4Gz>{@WabwTE$$);g#IT{x5 zVlAkEficxOXI^y(wne94dERfKuT;!pZ?Um#QmiUBx3yZg;qrPnM}o>B7uNstiW%*= zFJ7vYCkI~Ug*BOC8RWIW=e0DeTc@{nyemRfIvq`9ETj?Z)1tCU)`qy_24!7=YRE5i z5R@Zy!dq;6>l{1#8z^>onT%E3u63utkISkt7W6_8pj*9xTR3nyx!h`DEL$wlOCkx#Bru!&sl+dIoD!MSpg8}XP4II0sa=cFxK5ZidmdWS)o}kaunhF`K?HpG zkG>7pk@v)QE#9+)@AciTWfg4t<^h(rdgoD0ZS(2-p&WMu=}>Irx1u2RrLoWkIVbnY2w)Y^k%>n5m2v6|nl&AM2(SXiq%m1uvV+Ft6WUDrpYG`5%&Ee z45L%Xx;e^*>NOmdqvLDQQ*+7FIHE88jVHCkSske3CPAGGk~$Z!l{#$cS{rpX4pY4t zVoUwq!1NkUhtgmapiRRFRf$Y>ecypHrIIA~N|InoeBE|p*s%QikY{Ir+MQe6kLd8n z!d6lb5yp@2pa+zvVPSBjpDrcG7HvxvvSY(>wpk@yvzf|tZpB$c`nvymqo>vTKd(6F z=Z{tW3KLST<(jMitWD>ntG#T1abw2wFpo`lWS>7*0g?^S74(--uw zR6ux9zc`sH*jl(pC_dn_ZZ6VxN7dN+ zX|uZ+h~9`Ta>DX?lcQp$c{SZ&9_KrMPrM+X{lc~LbCL{-Z z7UTJvw04~QB~Ah3lfUdbyk#_LS*37ICof>Ys&{W2132f8@9cxzoWObd@~)#I`k=P9 zfk!J=ldq#V^ksdyk7CK#m>2|#aR$>gXreWug?7+%bh-Q3F%%N)^a$%BR zA9C%gZK&fd{F+@)-V|F*ua6Vjz`LiCV1EUA>;yQF-WO&pL^+_=v ze&@1YR~vZ=+Ge$O)V#z>+(nM1WcrdpVf4s%^XCY2WF8z07v?eCIiHp%%0pJ7oNiUnrlMLo_(^vk34wF@zL z*vV6_bxk;UF^Quvbep0+rzVcx?~*5ITgT%cz$_Z`so47_X3vKQQ=%;62Z9cz6O6H9MGEI0&L97m z%`AHLEaZVL;&ktKE?bUvx1a8fLYDm47jkvy`fJBKiMHBqh+nNC3Yn{&9pi1}_S?2p zHG#|dCR3UPA{;2?EB3J3b08U$%Q^L9r-cY_TPlZT4=GqN69<+WUHQr?pqCE#*mc zq!N?jIQ_zQActth7PDB+`cru!4v*H&DN19z&hDMM{l}O)kmjY4ggE;f>TD97;O~+ca#&cet zENh#~x#_)XgIq!v;ybcKax|FXscJh(aS{qpW2Se%3tXZh-~Uk+0;~L0^A4r2<6I1I zb=e=Q?p{XRxSFV{!ZdJZcxl;XZM9FJUZa}_f_lCm4z)ciq-UM@WGC4xulEaFowL4UPuGZfwRGFYBV@;=b#Ik z4u5d57hUL$bVhnQd%6y=Pbnqf?!Xmm?QbJ`62IfP;;)@=Vo1(pIL6=L=7)aV$ku-M z1hwL9Y~1KT?T79j8^&)3zvH5|_Q6C--1`PUhieiX_xCcWb&9R z?P{j)xn73*NXg5tYWj3Z+U2F6^`t#s`h@3$a9+$Q=PxXrXIVtUJ77NnB&;+ntgs-?Z49qYUNS4)RLy)x9444V^Sd{HWgJxV`| ziwdzE4-~DXk02)R(5a?Vm&2}BxI@A{A>7k&_tTTE7~J0#ZdD0CcMJDRCGW!X*M$2m z;r>9lWp4K0Al$9O?Gf&Pa8C&L&BC1%?puWWF5x~c+-HURN#TA$xPL0#zZLFxh3ock zF7?8_Nw}TDy8caYn}quf+U&dE z^$m*nqOR`?AD2te)pf%6B)ME?;Fh@__RUfq{AXP**L!?P*Cr8Xlk4MnE^~bzp_^P^ z#`8_CZ-`V?{sq@gSF`^SSC@#{<=W*>0{)o)?XCmx{~6Z-I_H14YXG6YV;cNLlmJ3Dk+Iz!`3X^ zcKTJgyXha{_K@Elp<8Gl+##BVdxR2jCnyc~etHz{l<+@K{{zn%@%#vV4bMMCufly7 z{ge9{7q>;CpD%ek-1nEf1MV}zeHK2LfD>(z+n@{k?Zglct_$tZhfu$8%kky{p4dHi zSx8;LU_K!Fuk<%y6EKDGanYy6GxrDjr=0$$c(lfApnq85=YqWDk3HTrXO!dj!U{hZ zJ?m=An?Ffb>a@gpa!F@(i zR@TKu^%qm=^IGzVrXHJFX?fD%0xsO7yVG$xq+~JBOf96R6n>3N;f8n`jAj&#BBcM0 zFPuxnr;aF#ld1Dck~Gj9GbcA1R_2u?HVREGYL^2q0@wJ|`J|G`7(O#f_N?JcxDnm* z#ut+t5v>Ir!ktPvxkZjCv3Qikg~G%@IkA8z9-wOgT>}_LkX|B+_9)NtkX3dJryIqS zwgfAKMPdi<;dJyOR2yv`o=#xJCJ2!>i%%A$$N>O&Pu`NL*9qt?YD4e`Uv6%`b=%&0 zY;V1`w|%y^{kFG0+grcw?SSpAtJD5!$EM4UPL~~@E;~Y9c8t30D0SI!>b9rtwx{j3 zr|r&3YcEi@y+l3s67|?i)MGDEk0=o?NncPXX0K=2SR*HK%Ts(#iD)ebj6m{mU!z?P zWTE<=TgVzrd{UWCpn;?9(m*Do%$-XtYN^erdVm<5t@O4G)>j5HKSh&^D+9pbv4yGZ z%7CHN{9>AorDjl0@x+aVsrd;deIbrJa|n58yWh+tLq{h#>qI=7v;Yzki$$y%QRnmF zxS&Eby~sBr3xa6b-h(T`SG0Lt7`re}_sk`dnPFu*o{Vz}6RJ+KVI>h=oWSLWD}%tx zXp4$t!13suB|yVtI3ArzVz*0tDgz03ZeeDI_v)MJr5`GtO?Vj{W1T0M8ptkfr5Zd$ zNlyaHOX4YGg3}U;3e3jO#j#=BQjNuWHWuwiaI29;7HeGzBwqk_Z_ZN0(<%hsC_{a`%{C{K%B(JSP|D71FAYpLv1=ga+aH zZ8V*l(|ip2>AlS{B^!-Jvr&_>xgjTnQ4Z)}!-|s5E*dFLDl>8H#6s7dUdYTc|D_Uf ztba?S(q`8v7L7V86V{2|$V>z}h0qAZ7@g+!(ml{S75v4Zy`H9dn#S({U7#pN_$f-# zFx)9R58p|eMZ7tDGa`;cX@uQ^&=h>6ouGJ$uNRo;}Pj4sd$NnVvlu$q~)I{j1+U_n-db z@ee*;_3xMd8UrW)Cmud?YE$pakNa;Mjeq&IlHu?AyFS-{>cjhw?6Gy3Lr^FX3an&8GJ64L{>S|6eoMSt@C#}55{sPXDAKD*~P9$30CS6lzk|N7nUjXZvMekuA>TTl0W_2&=$ z_wQ{jdE&Pgl+AVHE!mU*K(}1})c)wvmp<6`$-hs%`!AljZRRTz@B7&0XW#qT4WIL5 z?|k%C_unSH5|7S`G*+0jDcyCo)v@>#iWYQ4)9h$OtknN@&5bD#=5e^O|;^+}wG+7-mVh+b~ zBXx9+fg1aR?N zDW3TWpJOiSn9XMAZ{E8%Gc~KsMKh60Q;HIcOr_@bUYwuadkKo>-l!;03~QfSL`IR* z^V1QNU|K&(FfCDKBytA-nPeoBJP)(73)U0<;DJrdM4K6j$&#ki>F7Kzvlu~kqWhl2 zrsRtmfz{T}fBr6x$|;}5w>9a)VdE~evEhktWy&9o*1he}Q%CRkjps6-?%+5>H=jvB zKTgDy3ujJG9y!z7dB((ePgiGmSAYK*jj6gLoo5P^A;NWkCUx$?GtfU34C9MNj?Bl- z0f(1?qyAau=aBwp|NXWlo(wsQ@%wNhaSZpINK1#J2ons4s#_^^hm7|BrOVcFG#aAI z_Tmdh=6-2~KgT(1c3G?uq{5h#WR0CMGhRutM<9HG#| z#OJp?JAkVTII$kb`q>OHV(rcf$s^))qTKSY7yTS)K)*?MA}#B2bNG{bWCs3HXUu>V zS<_=(Zw@IEvkVP8}iSncoYQ|cr>xM+>7Ja&)s2uhebbqLf*A?>D_sr+{vRa)b!Gqn literal 0 HcmV?d00001 diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.Themes.Expression.dll new file mode 100644 index 0000000000000000000000000000000000000000..ff2cc3f450ac890907a0365ad1e9a6d2e3c276a3 GIT binary patch literal 97792 zcmeEv1zeR&^YC*H-6gB+P8cfbGm zD*#-^r+JJIJ;Z9JD~72w)9IYDb)$7bINKo19BD1goSdB9Y0a%@5gtyowobG%>e{r9 z&X!gjczDJJfMyx`jIT*0`%PP7nY%7Ji0Sb)aev4Jr{ z=%C^W@~@I4Ur2L?SPgCMNk zRtO?zgrMiTFi3+If&xCa{ZZDhlUw1|BrSF_lv*WxLg7GMb<4a2)}gLC?V%ex;v1wn z#_^0A8Yk7d;T8ki*!+!uVKvcXv4`_CXtNY=ZMyMftaW5dx|_Jf?22?dVILXIra ze}rP?K_q^LW2J_(P#~{@{2(%ygZl%iL1h85ft|qw`e9YtYe9)X)>x=M0)b`Q19Hbk z0tvwVku4~nuVeh?Ijc^IbtlNVqCr|<-rygR8#U+{+l>Z%lb{o!?{}sJ zC1g&wo8w>{`m~Cl3vTq_k~64cy8(`2lVA{Gz*)fZW0T+#3p8C1PUY-{;aNY!YIUuen4@ zO#0RAcDaO2f<}b8%O4`N-!KS=2&arwGC_nI194$aTH4u zyYf#%=*ABkSp>jW0CJ-s_>p+XJ+KS?1&{O_P~_%7Nc;{c%TYk>8*t=aL8$)mh#=^< zBSP*Wu)o~^=AIt-yuY6To!8R1SPoPK6azjE+Na&ztsFVDtlXSE5EfQ$pG#U+W|me6 zHd;qF3ulCbtvMU5o)yB)*4asnkAn;O$3}b1!@=DHVI}5d<>8Jnb6}&@@Gy6bKOKTD3i5R`LRZac3(=Td2Z=G4;)b@_U)DdFdX5tmyy z(mmTF-#u#Atgh_1`^07Ra9Z1>iLk`9mH*PhNlErM_jk0`ywm93a$VNmCcZ(sbF`Ra zN9>vS4%wO^O1}XU_D$(W#4@KE$-E!BlFz=sd!Ul^`Jo^J4Mqm#sw06>Ge_j?O1YIM z>iGEG9RxG&x@8?St<^m&Jx-_@9yhyY>S|xO)^XY&%;hYY$UPt+2vi741|J@!1t+`BkvQJs|f6Hzs3HZUEQ2Kwbx~w*vfQKw?x;Am{`5WB{06Kx+}?&LHOlA2CoC z0(~R^JbVD-1KyakZsgAWa$6$08#08BObJO}V+L4T+qF9g@E0Nyr$sRb~+pig9C z1N()~0&<3&Aa@7>atFu_;)FcFw-u;=dxaaUmN{ewIRYqTqO}AS1Y{2y5xXd-0Fv8R zK>M*{g$8d z;CA^t!tgyme>Po-x`(o4ID*^HAA|mAW_5_)$iv>uzVvVsuzgSIf9mVH*H85I+u1ny{SFuR1buaj$3TZ>qkQAf}sQ@d_ z^z#P>!fPPFMhTRQt$~G=l_iJ1i#3Oor;4J%`RID@Wi~$a=dVtlW_P!xu+_ z=Vu)WUMoHU0U=8sYhErMK0a%{gGM|S4hVK9GeFtJ%)(0ek9t1l?BtGcc5q|(86XIv z0$vydasLc3hpw9y;v;!(U_e8Z#xTf01I*LP$=%Ey%vBBq46VGJ5%ymu{nOqPFSofh zuOPpGnI*3PpA|1ZC5VBj>DxM4I(xZEo4Hy28zl8nAnmWmd(0W}Z_p)`frL)EySoT; za=KZ7^*3|laJ02RIJ-GpyK`7LJ92v2I$3*j@^EnpaC)0LI&dOo;}g$NKu`+~f}E6E zsF2!6kI?`C{f+s4?|_mD!@Sx4%D_-T0CsOQq)Ko{3z6?|on5S)yd52^oe_>^?rt2; z2pdjEGlac|3p<#k3y=VFTL)YB)4LP>ij*YGlIJ^0-?GQ*^Jd{Rcd&A@L=q7Eihv9n z2#T6H{EbcUg$T#;4hnn+;yAKHbrd*+KPmCrE)KR%R?^N05F0=NXfz<44Kh?YTL%Yp z;J8h}L2YLT9eZ*I6n8+G0kd@n&duezjf#p2r#k|CPT*bwHS)*m#2ETdZY0>hzmeeo zk&Q&Dh4OFj0a^y&q<_)RC%-7>lSr*{%-O*i!A%3!sC*kj+pWy;q zagS!0 z=I;_vbTYGWxAnBzB_xXnN&Q_ypXY!TeBq}5FX%Q0$iR~pO zEEoiywt&Qh1>b$lf-IpxAmqE-hWhc57ZVm5Wc0BO9e5^tS23V-A4`}}+{Y3Yl=ZQM z4L$x?!hxDUmT;kwk0m^4Ww(R^HXj2X1YsQF+f8?NPoLKWVW6Gw9!TeNg{H78}~XZL!fDfFN*_Bv!RT*jQQ0*n%6dvy&MDEE)|S z40#1zd-vJhzi=l-`dz4h=T3^Y>#_k?x-p zm($n%!cxyhru$rc5F4L(E-K@EbY^l&N=j;KI!L!}-O9+w$jr>l%F4cXFDEzm!Gi|{ z4dAeCMG5)Cr3u7rl+T8W@ct*XXobT=I7@Z78Vv47ssa7 z7natSmX_YUd9%E{yt1;gicD*7-@aX6Uw`-R-TU|Nkzu-D=@$q7E(c6J>&F2umWzU+ z8#r75P7~l)!}hT#1%So_?y?5%+90~;WrnbVG|X(B+&R=_b!a_#IrupQkBS7G0FD-` zqKuS|pnCI_L9J>o!i$5aGANrAHSebc=wNq;nctXz7I$>Q`YdZ03XeX2_hP=KS3;!u zc^#tBOlXrw&}MmqU0*$Whqq_3gkNIZN2`LV>}8)R)xhhdXZ9m-PJ7JOeFJX~+1yz7 z%&qgK7@|C&f+HqgA@vQMIq@vo9Oy4$0rld?xcK8z=AmfdggN1Tu=SB46UfB&|P^ zQ5IvNPkMG_z7~ePnxc!oY_k7UDn`&wO*Z*Nso?d++_ddZ{i3k_2Rq6K+h%22nYcq@ zFBL~^YCgeUlL?iG^}Rjs%p@6R!t^X+BA@^5oo9%XfGB3!;A^yYS5Y6*vNCP-)XPEzhWrz$Q3h?pT9P!P9a5F zw|#!o(l5J=LG`%#F=s`46~{3B0$^Eb82b8}!p_I|tHSIpNyd0Ym9**-M&9hWBR3=bB;HdL;F=8%+ zi{y2ci)b0aMer<|%PLHYv9}IJAA)WBOL&yNu&=CTWWFAwtD&oF>uXa_PAHb;RfkJy zo&%@PvT3W|XjQVvE!}~MiO*Ljco#-Cf?Q~ zTVcAo0^=y&ZJ~3w1TP8lgvnaPnMclLZ?4uI#*v(_LQAQy8N_HmI3UU3C~$-A#lFGm z+i?o}rrvbuKVT1bf*u`b*R&I$9jc+lRBUZ+HKf=d{+={L1}94V1Wf5HY@eg<|K!)YaAVsE&0w2sFiN-n;90I7?@0JWS^85e(&wjueS~!XhGv zn0uw-^xW_iweOHBCmO`@k+Qcp%K2-I#&b!>TS<5K1&kvMaRZ}CB^rcA>(cH?++w}b zNYyxwNE5!DP%}NYHnM{*BMV`1iN5QC;p?L;N|FeXN7aWOin~T~l#-Vuz(5o~xW$#J1Sv4kx0q2%CAt-Bu!Ia^9_biy$tJ`_kMt!ZDsBs{H8-C= zN`ZImRf;@;A<-paW9pJ2rm3_|Z-3psv3ZtmX zWPe(ug)L2@irYSs)LeTzwCY-Ed*^m0rD4&HW(O@LNt9sTtGoqZJ6n2sF}*x7(m2Cf``Xp6 z@VL8&2cs3ReE1>?2OX6%wZ>iyZQ*nfauH%`(8ojvcGM7{JhSMS<_lV1cb1}n=Q=xR zWOW{(aPg^=(u;s`a&p?*+uL)c7@cr?V9T%7hD~XHfY8#QU?4d)&u7)+cD?}xJDY@bJvU#I-S@rN|~)|L_xTJ%Cq!nW}f}# zsuh&5X21E)8nQoJdkxhH&oAd?y1`>Q9jP1F>8SUQlPA@m!mWQWprLhKN+pDfT3mOk zZR>c9G)5MjczzrA4K(JTRL_!R0Sh}l4twF`3KN|efxW9sjXvWawOo7GV0DU@=P63` zrZ;tgK}(!frChozPMg5NTlKsrS(4ap&r?ZP^dvMhRY4)1xo(DwLh;?Tk;)l;8LS~9 z<;BH>;#YRkQyc|op)6{44e^u2)AG1RWhVPgA(?}{CHK}TaWo|9n>zx?b+WskqQTxB zNAshDBs#lR;bPYwwwnmDZV=U@V?uVb1ODj-dU_OX)9zXsTB+vwEPm3q?b)@sVrO?Q zXF7@}_`QoE&0wJ=tnqYrm#MF>hZ8y)Pd<3*=1^jsX;;Xq6Q@NOz|71X*ED{i7v)3P zWY=1^R%haVZim|_@PJdVg|Dsw7GNu|F&~x;#x`KR!g9F*lR&cc?nqM!WVK@DG4COp z9CJ8~9x5SNlgfwC7_`{&LZlijwOC>`68MT@(@k$NXkGF=q4&PrDEnfZ9DO)MTa{K6Yi;5-ph_`=%QJVr?>11(;-m^bdOq*oKWZH zRf|P+19{yQxhhxj@f|$FjRgaQf>7Bv`sLY=^~=vWJ5KIlp8m;u&d#2v6A)1ZoSh3X znZUuhefu_WaPH;g03RneFAumm4<9}ZyWSd;K9>LZSxVkyS#A6C=H?cVT3dmS(*;s@ z_luV=hlhuI1{MZij1Ih*Y42O@8Co3~8F}^U)t;yG>J@NwK6*M6Qwvj5ADx}AJ)N0_ zt?%5NwY86K&g$FkJx^x?nKrk!wzjvoKYaM`%ke?V#jo^NIFPCt{tm$ZeP>5#&)F&L zw$%@mBn>d5Jx*BEsPa6Ao+mDc5C`qz_|8ry&m)nnlGr`E3KJq&LY zoQAIUuhkD<)lDoC!P4@qx@9C{6?VI(UOOY9H{9R#mcEdXD%w51%R9XptD15vE&|DiTg>qh^7=Sl%j6o6Q^;&)v&#!i_J+*qp!y{LOE zWFubOIok_8A2c`>=Z44Egt0QmnD7Rcn2|cYSb3dQB{+PXOz?HSnraeBp^3Q~qnneO zU5Jo#?aEeTHadNaQ6klGo#^?*eyf+y4>R%HT;nQkJUBEcbSu%&&v3Bf%6wsRZjQv2 zrHp%~GXswLi`}Oz&08JkS&P=hyR_!mMJ996-ex=W#q@bxbUC@{HY-+LJ~(&w6^TtI zZr=>q<00g7efE9I!I}0S_&ziMhIZHYnF&k>5u1O{_koLiG?uQahIeX^UR+EO@%jMm zRBmzWkLnRwl6%mFg&jf5XLLk&olC>Vd~{@gASO?9pLM0wO@VEv%l-_ir9RERDTfNR z6E3}+sjhBfED@S4nH+Lc*UCscSz=s%t##6DVQ%C!eX8oJy4urH8IGz++#1PzooZ9A zN^j8~rVZxcCn2S&h!RSN!5(x`cJk$Cx_8_uYF@eIxD2mL<&ILh6Rrn5_ivbz*JkBp$Yfg8$>%PnL zx4A2Jqgkofl~R5a-Y4;F^kAH^6%}RW12)@t4v_J64%MoRsU3>ztTP4sO{{oE@XAg5 zAoqq9(Z1kd+E#)<_V-y7XH*h7NwK}likKbM!59-mim*&yV_5ekXcX3IO9FxXBEt87 z?7q_i7@A!XzNpt40V@BV`_8^6!p-_kY7}PVH*+`1&YW}Fpgj}pRLaAV&}9J9kEbI2Hpv5uP#TEZ14F|Dm5zxCCJ$k% z&dRQP;dSRu97@P+AJ`C9BzLp7c}8fA=41bZQ zB>a-Gs7_K+i+}3%5{+co_7VxdD#{c!0W5@?hNgfk0!K`jy<_Zh z)Fk>?5=@t*Ax+9fR1QA%a*86Y@OWfUQ*m4WrKeM`p5m&iRaM&f2r+lwa6@@VjraC| zWEG->4QiK8t*qwaSS8JnB#Dw}>rx5G9NxLr8-75EmHn;`tGkN}txEBWg_o4K^|BvU zRB%G=#vJw4T)B7eZn!*}@}fU#3e~Q^eJfL)d9J4BSb;@|HO~PuIamIiV}^w)c@tKM zL}m>(vbFcA9qsKzB@w8EW$pYjz+cCqz4d<&!>ntT}Q!%1$)J~ z9l|w52;Xd}5?UI4L0p<`gHLe7UKNJ5dZ3brPfu#eC?rYb$)S_YnnOEl^@X@>^sphE z`zYpaTq+S8QHBmSb8ikBE2Ko}(wQi@@P^6Ik5X2WH3(rWzkgD!+J8=yvM9}zOQHCn zcx4bbS$Jp$h#<+sF|g{|@bB+?jhK1s9sTrBXvo5J;5tyEYn|jp77@u*Bi4~EYolHP z5>n&Up7%>#kq-vGY}#W#Hlk?(%ztRpR_<-u7gvpxjid+*3E$wr!Xl8qW2MoU#hI_q}1a;ms>Ly>Ch5qo5wAaJZ(O*Lz4p(x~x}xnWE~C#V9k@EXD394LCjtaXb9B0g|0SD&vvD-xQaB05!gobO)c z0j4Xix7QPnITRi&!V8e-EY_~%(4YV%kCp&XuFpCo<ZVbOwQ>{F0&)(F$3tX9;N$@$*uwF)ZL5fQKM{G{b8k)H zzK}x2^Uh`y2Uy_g9jI?!6n4q%6!fH!sez|VcG@B4=)R4|SaUGiGd$`NMxm?wAP){N z=o)j`s^uteQ2K%Hmz5PjGP1R;Mw8d^ z{rMpR5h6iYz@yyxMe8FmwkUlL0>I6UYqmC&kLC9fE0yPbxs&2r5H3e^CdHDcNzL@o zgNh1u3=9n10D(KohIzFD$*tP?24gHPsE~`dx56ErutMq)eZh=nBW+uSf=J967dZ4# z@kFB!`y&X3+R+T@p+z^1pK^AN;)mE+;dz;&aSD^V3pa*(Re>T#QJ|SQ?*M~i-b%v@ zs5`~icqEJ=o3HR1y)$k7VJY9Ep?C5q1W}-k3=XR@G9wvu97mMrhB?wShvE_hMN7D%Y6;e3JE5i|Yda20L`kxcrkSB~ z5$i=DS^L-vdtyQmtwyj{_$hU)t4C8a5>2i!HrZd@}j1d zF>hR{JV_NP@BX>FIc(6PRD6^h|{9aPbbeJxfNr{XvURq`5a`uQpo(HO}OTa>TgkgvQqP7st38pB#}9QPFnmrkX{^Nu+HY*-*# zDxJ8b;y2Z#a;qst+Ql%-&O5}^o*&vFP+Q+GeD(c9-i($lWtXN0bAA~3%-#Yw(BRDW zw*6QWuW2s0A>v2oMob8>)z+O_u##1n&Q;oW1kqfq5%A`t=y#d)yV_$P!7I_Jk~>;i zdjq}o?GAeN%8BE7+)*Z!eVloW-bI751^rJaIqSVQSlKe3il06mLXcdZ_QGipR@_1* zh!UN%&pWGAD!m<3hOhqN;})YFGS(|fv}uZO=<)-26M!`yVpm9kTVqhkuX_IOU88Uk zN0CcMh8EZNyKuynsz3R+LT`qS(o-~vVXhD?Q+;VulHDC z?&}XVM{~WK{qMNITb3!PC3cGG-)>@=GEY9veZ8t8KjmSa;dl^ zx6O7&){npW@P+{8-oaV8!8x~V$FO*QQ?3Uo)4b{jjy2`(FCS?)z#YoV&}!ffuq(vo zbcDOfcg=d-PrRIM$#dXV(3FX1s7IyY8~wvK)s7JjYZuYSVD?oR=WjeCrl}ihz+ipj>TCaXsowX=D{FEZkR-jB zbwkN;Ty+`!Ot83|zV4&u$MdYE@v=vB=|+iV8Do?R&hNkd7{)xJAQKl@a=y8??*7K> z9R*rCVzUk(z5Lat<>!ej&568j4oCJGula0yh$qW$%;7S>@wQAmi-5m8g1~yI&Opp^ zrRkaq6Y$q!LO(RnsgINx<7e8+q5GZU9*fD2y+fMWc}K5!_A#wKcfFbPe8d@poAVFk zKj@teua$nQd&)a?Ze;fTNy@X?;;e6X1m<=KY}~Ok@L!(YSi9Xv!xTnY@CY%yp0CRH zn46vQ%yXxZ`MKeV^V{}ITHnZ^Nkbhot+HKDad{Jw>j;=MZM|e?9)A^vMKN1;;li z>!wSF(@v&b^^f)sHu2@5PUw1jO7-9%wOz!W$N+P`a>n?#BPI1|Pl7Ib8IZ}qxStKu zZ@4GbrsA;7r8y=jEL#@LwQQZ;v9bOjVo?x!vdrWxIWGDu&(i$-5+SYJZe5M!iHX(h zrg5H}oO#DN8p@HaEkD(%{2aY(vA&o6Qot|-hS&IbhV2z4#_bp27)PfaA4P~~e{R7woV>N<07Z&B(#PY?mLEBqi7kZIdDG!PhR;Z*z9ALCx1v)|S2 zdm$xmXJJ!yefSDT!fVsSHwWh*S>ZtuyzxQOQUq-Am#x;ICF?{rV9c-Wvy__~erG}u z(9LEk57G#Nf)PE6!Tz?+;0eqRy*E*|-P3tuVJq*Sn1}_3p4s%@cfUC182u)OCuFKa z)+;6AIz4bLPcU zqT#*H6&BY16&L}INImbV}Bh% zN_1xW;A)n)Su8>-PqrfN95|Xe=|8%yh0UD-^Ox$6CsfNS;KgVh=PADRJnV85cz*cI zy5JcmbHr#{*DT(J^y@GP-Ns1T6Q-u7hW=oxwb8p3(vh5F1drXd?sOG)JS6L|BU&UA zy;g<@xRgIXJ$;z619p5kx%R%VtmcJU>?bCi#OBQVqUxPV*@p=x^6$qJ9ndl0b#t4F^FE3S<)KV}Fe5lcuE^nI?mg}9zm$$*+a)hLb14mHD*IJ8|h+DkRfRBncC@Cm6E1^%`0ZuM~=t1$<=VCl= zDj)NozIbAMQeThnQkG#p>59vYu}LNgrvsD}f}gzMSH9fKtya&LMX6jcYMXF9d?f1j zaDok|=)Fb_-EVgE%zu4H+kD#5M#uwM^+h!4+w|My^BB{Y-{d@sVz*77KNiZ}&B7x0 znmzv^!A4*CHPSJ%I1x6Sv;dhgd>`Q*3u_!B4jgWNTg49t`l#M+O`NrEnPZvv+>B{U z+V;Ot&lCIN@4iOd2VtipF293a6DK2}OOs<*)U~%ky@> z!v_!OmFWE9;^hZS2&bO6o9>ch$&*bxH~}SXuO+iOQ(c4NNU_nxf~@re=dw^}xtMB; zt9O>)Z^^jbu7{yI6&`;aQBk^hpyH&lu?p%-lz?FK!)fgL!lY_C?^BBfRHn}Q`@ckS z>XE&rt_}-Kkxq@YNqAU%g>g|aiO%IrbeqK0rs?RKL>}R-gQkv=C@Hw%^RhuPew1MCzG0XxhFt}&PAxLZAN+v2fT2aWZ$Qk7J1hr z!APy+;H-K=zM$>QxQ$jf8-^^+;W6qXw4~TX@$?tcEaft^LOYxB!LK{1g~z1u!!OX= z#>@&EMT%>^!@Fk6^^8Ol4zr7cLfv@-R3X#DjF%OiU|dHiy(>o2;`9hhoZpoBYw2Fu zGFQilK%MclZS#WY`Gp~2popn8b#mIPgtIBE%-~5XGCle!1or1vB2|OlS=jGzHE) zFBl`ET0nh^65L01HRnFGT3fRT|Uvx#H3}ZVyzr;&9TXmkpT7LYb4ee;1|6@UDfMPKArBHU4w5N zFyDbU2^>Cy^9E(?o9&+UU-xzyK5chpXW;DyG0)@V92 zIp!P4FkP-%_cp%XCm|HO9%jr@J>cPh_~BNb-C< zPkDXh0#C0;2-{x?ssMR$g5jhT2ZEU-BQ8ku`ovC1->E2xbPdwm^*$5ctN{l zj$UV)PZ|E;BPpkmC%v<&-FCK`S)Evq7P#hKIPGt?)($@v+j+2ha9)5MpDIo9JzajF z8{gxJCv?46XCEIC+#g^@?i)@uze$}gLXNBFaxqQojttp3HqwilJ6;0x6`L%ARY^x{ z^0f8^FJ3y&o7YcWTbVwx?N5_AJ~Fj^RpW_usg@wDi18qexXHcHc}?`ClPy&BRn0l) zUw3ZFy%A3yBs*93N~QM3Fh_YN#kAKDy0a$Aj$ll`eBNo)aSD zm$p)@WdiF-u((cUch9uIu4RUv7(lm{Gl)lvcSFd6po3c2g6`E`#$wvDS3rR2!d8+G zRd{VBddt4-C{|Z)vb;R0q%msLvv(gHFMAi$Odq3yZl!)@cj01(D()N>EqW$1@9~YS zGK2RffAGBA1^`*@I=?phc$J_6bJLQShH_gdr$ObrCy#rcFldjvas?dvL7w>8eXC*b z#Lu2H418hW3T2Kx13&m_LqkJTQ`2*hK6%1zpWb-@$ANl40&Xz~ z&Gz+u_KaVEw0lVC>r+9yuJOlHL7$HV?YYO`1qkr|1MrW3dnD-dYY)hyKwr7XzYYU| z1^tzNo&%Man@o{!iMwm5X#?T;UrvzrItKDps!vgY8t@884Xobzwk2r%nO8ti&LVGU zr;g1hIG!BfBCJ$CBF#Lb0Ykf*g0^DE{1=BXY|%_>c9Ul3d(e%RWK)z7ATW+{WA)rr;P=G~4S+l0i@<%TNjBhNI~ z8XO-}CB`j|x`)3>@78h?OjTljk%)UEgY~-1SXY#a@pB)~SF?Nr-J*9dD=?_dZ$&OW zq*GfZp5F8{ITV1I*mN+0xQW)z%PsW0i`wfzJKm|6w>JXX_rD_xcT>V)3g(w0V^pDw z&}LLQmobzNOuA04Ch8esXT6Y?WSQ(TJCHnEzH+mw z{WV;gefrlS#528!*zzCj8Nx!!sXc29D~Z3hxzR^`&<;b za~-x{!h#9O8tc3bUG#)X(%4%=q!-QvJ4PlbRo-w8SfSVEqPI`4hPzB0cB92XFs)A) z35^I&TP*BAEi5Q4xGv}iTsIE5WJ)HB$q%)iYicg>UA3(iGRL z56zE9CvT)rXO`sN4=IM_9#rsfTE73mO&6EmH=0uc9<&lPy6^e^G}U-t(+R`aAq@da z`^S@WJg^;_((&Yo6Qq)LtHwR2uQ(}=kiQM__~5y*LRTU#H*9*7`H@{zgAhT>zFEJn z9RURg!I~th{1)Hs83GZyXZI70-o7t9Ny(6iZGASd1wM3g)4wbc*K%OtfJp*fm$Kaz zGtP6<8w-r7T*vP1#NA|W;(Ka%@r|j-W!{zz0j!?4bC4pPhhw{o* zTiF>Ax2t-RNc0`DFlu~DYX>3|j2a7!sxou5PY;Jz4RstZaRCiIAV?DDzqXZ!!F5bL{(1}wBjSE+J-`k&jzZ@%^k!-GP#2nAp z;`%Z2HpxozgM+3H_;qzWb-_v%hpbU}#X48I-MMx7qcX^Nw7a*vSHw=}=zFXWJ+75- zhJ%*`oP2x+wtda%`!cs@1z$>O5y8t*nHGm!2cu|8S61BC*JgW7Z@kTWJ>^}VuSEd2 zhDUbm78MkbsLVaMELY#@+FYdtgNvhr_d17aYilEwINo>|Cwt#Pf$_p3tB&Do`pg^E z^J6HZVZI}jM9|oEDTYC@%vU%9*XRPq#Jg@^CWU2>ohUv#Wj z5~2Q1)R?XBWt~-pB%Q~YJ;4FGh^D0rNkhzsy6)VRRA|_|Nr*!7km(Xje!;zO( zQB@1uk>LB2(wmORm!}?C|TzM>9A-|D?FYP!3Jcnp9rOQL^Y!W= z1mifr+F-xw5LgJX+xq>qeU4`yrn_|ELWkEixCLCPY4F19TKmiAwUjeAh;M$ zRWDu13R?0lFA1VEfx%=FVyK~@9V33X@Yd00`sOTa_Unrd`!_FEa-v349*8}3e{Cw} zMsl(jc>d#LZeDFG*x|g{TQq#>7IUv_wz>9}UGPAd~}Puf-&Lfg1}; zQ_srIYXY6ds#`=s_Q7IxX-YD_y6+8RkiNKxBX6N2Q@-bhY z+c)j<2B^*;FkQUi%F4~n>7-`xoud(B^N;N+1Z8e8z*m^t3{H3u(1_oYT{81oFq`e6dn_0dETL*ArzpAK zG+F#inDnx+43#y_C@r-nQ&`Ft<|)tAmhk61RgD+vwq@q{9p2nYKVz7&pTPRWmS5O| zo-&%Ve9ER*nD`sI#a%;r%uuZk-Pbfe<>=%@f11u?GV}!XhV+6S^0w90hawUZ^2@PFTd(V*)chh84pSdIx5&(Fgu~Chn#f&8 zE1o|d;T?f0=dtJ&A$_%$L0s+@X;dT>>vht_F{_ z%Tc;A7XN00YyIX^y`nS3bf+Eae4chHFK2h)4cON)&2YV;EeTf1*PEuiOyK6c&ZQNU zD>4;2V0bA>6ug$^x)wX6A2u`-d28)6u5X!?oK2hZ>mN2nGTa)5} z&TiuIhNfVS5@n8~^_k4-uVfhNxOxe%#G;7fdKbT> z?B!_4IoqSy)69s|r#M{Ls71nl7u8A!GL(683*E zr)h~-9rs)tvpSL#->`nI>Fx2cP@xIUdc8vGw#AhPwKt^Jk3Or`=*Q}9P_9|zXjt(;#i5`(yN+ar-rDgsF*|((SsN-E6xtHzkl`0OaSkB z#?dsY4`&UP8P9HS@W*yuws~FI-*4!perfDO8M>I0-&}Mewa5+XQhki`V+xnXw%$iB zwsH#Pk6%biO!5=;1)JYd3{A{_=*eRrL|O9a$VkfCiK`5p3u7_KRm*NZK0e!JM|?Up z(%W5Tnt@A6bn}(UGCtpp=J?KDlYLp73LO~7U+U{S_rEOjoqXugGrhK%J?=NFH($Cf zBzDrHRll}lwEA|_4E4RW(NaZU|5v?@jbWQ~HAMsTKF;lKzS%ijSL!bo`DUHeDKdJH zFle-#?<;Y7L&>WMYS<*uj}}Fljd^0cTvk@r!%rG}==5>{ZdtB8Xf7F4O<~SrZdI6E z&ZHHJJ@oz>#}=1ygTfhh>?b~JjbgrU*#_Sfwh9O6Ju1ZPa%*Qegz>;RtbAFmj4XEN zY#%+@V|~T!!O_cQs3k|2vNqRWynXw~_suAp*!%G|m00_8DiV_u6Vak;mrc`)qs&}w z8_N9N6E|=&_G0Dvihj^$I~%S(BgFI}u=4qHm05h{i)^Lr=oELSuHf-{Ez)~)*gON8 z&^|Y>C|0B;Eqng4xF%|?ZjaGYRC4kjS&0Up6(B=F~H{H zh|~-0PPaF{D@%`eva3n)o$)Q_BH03#nX+y@Jk752hu&SgmYW)0H?{L($lYf|SFF@h z;Y@-i^Suw!ci10)@LrivwI{R6E`HWU{$%!gJ$J*p!BOpF`x#G405v%<(|soXnZ=#- z%^Jo+HNCZo@Y*@W(lZt}Pf?tm?deIE&!KxhH|H=*7kF2-RaX4;@>rcZCRGuuz?odn z+hTV6-v`%IQaRa2d)F1ix0#@nYD1IF~s^s8U$Se;vTvk2+Gs2=Rxk5gE`B1=ELq2<+Uz%l&Y8F$T;1IY)by)8F0H65fya@ zkt8Q)=e$X4F(TphjLXxjt6lszntQl+m(>r`PeQ1lc=6r4zMD61q78zFYC{`!7dzkh zjo!jXy-0um!Gq=H;OXhCTJmj~*QFi{)H)Xp6^} zcVN9tF;yLBu!z60?yX@zwC=(0#6kF&AfgTVQo({i#)kX}hhqq<-QTUH)dBx22Lyi0 zl$M8&b~oeV5~AfkD$K(#%*#c4go~Sti?+5A*%OAlqN*%LKMFbF0S*`PaY@khF+P9; zF5?ixI$rp1fyVEGi%{9F**`EJosS3S#+5xYg^hhYGc_|KJyTjbtvHaI&`6_-oJ~@y z39iw0Va&W<;O))aW9G1OwpnKX4>4Nv>I73VXgs#kk%q6^j4s5-h4skI#dp3&lQw4) zrsEghFH7uhv56?HNEAs-76`{oy%Np$kRtXeu3Sxu4`tq9cj5tToC0Fs05o6b$``%W9^QXj#_Ml!Iz7VB;hw1m(b@xr;JH(B&)=24qOu9+-_ly!xtg~DmEN_X zZ#>9_d`IkyBW3ktRwI9!0dv=p8mPM@2r56rYJOq9qr$vL_gHP~Zv=kI`U|V^0rO4z zkzU+SvHHm#tEn!r<5zP*K_?qX<7tkf(vjm{ib&3$!!51kyNE-p6j+l|4DFZXItM-N zlE$<&JUXS<6Ys%!dP4anK?8PZ)B9V8Gq{#T2|Uj#R2E-Y+!V$P9LSxut6{ryjwQ^L zK<+6+HCNZgm~Qc&RzVDl!xsoOl+IaE_8cKHh!A;4HjfQAJsT!z!Cv=}9+H7oWl9H0Zn?q9lm40#He~AOQW5VF4PJczTK`8(G zh<5c~{ZS)m_cc*+{VS1D_z)Lnb=>w&Gj127Nv{#3v)2AzzF|iS-{)xDlYgk%{+A^A*Ia*b;2RDUaIJ>?Qf<4> zD8E;2RY0{>!HQ$-=K;rl=3yN~hcp|>^)22-;gWNm#-)XbFA~MARLTWLo*R%CMf0G6 zs^h~vI}YI9K(4`O1y=bF6_}Qe-ZyLdtMZEj|1%tDtkymKOM(4Rf&F#cjPV-<76B9( zdK1j>lM2HSNM@n#Is-MAgvC*G!rhTF_F0MjI}Rq&!u*wfao~T91E~~87=9_Se@Th` z>kj7PKeW$|9Xlo?Bcq_8ps1(_o>8l)sHm!{f><~BEl^EOO>J%MnnL@{_2^OZT*@(*?1|7DT>HMd_J_(Kl-3aahuJLK0t532Eg<&(CZ#w8>o zL^D5ELI`KY)r7RsGE#k_y(O(MudrmM^ar>=7mcEa&>`E!Fi*>h@M7dDefCiQsY?45 zX8S{-|8?>IG6#Nz*?w20{q->0w<;|n!W8JVSQNJ^R0GCnG)<_z9#c0mC^(I{mXz-x zA%3L`PV6A$VILN^Zf!A&6td4M?Z54rA{F|t^os-kCpZug7l-^$mVUjb_**OOudB5G zo@d(lW6u=%f8OHmo@6u2zSj*Zzju=D|Ag%Rn#3;-{2dPb@=X6lGmi7KXNpSRCWx!C zv?HN`9&}zKM4v#1M1$Ypz%xuPydHeBV?r7znkp#Jh_n3_N1|Cp9udwS;UXj86jRf%4c;pr)ggjhu}{{O44U_R{vw`3=hEk zde7kh#Gd;#iT@Y}e!XY#yXveG9LBAL+4Y2i7cqYBFfQ9?>kOB??X(IP(mKO$u|Qq9 zMi&suL;YOi{^6YiX3+CvkPbC;C`!}K!7kPrxwM~k*&|T-!Owi`=`!RyYKYk}KahRr zX?}Xe4F9jI;N8F=i?)R+Ipz}0sl#*;uQ;SBB$o~NU#-y1^KqvchW9e*Q99kqUBL_* zkz_#Ann#5O4>F7@9`Z~81Nk!aQc(FPL;vdm06`?XkwZ@r!NkVeRL8Us42wpO7S&UI z_e5S>HR727$%D{+H+ZpZt7rHV6EK5lUv$Dwlffay1VuH$HrAqV#{ci!Mt+4Wkxc!S z{>M1*>onp2SGSS2UncSY*arMH-G7Y(zf9ua)n$L(M&sWziLbP9<3qH#((Po6XRRM< zL|zU(>x+U_Rr-!lt)Z|+Lm~copbjZp^{Mv08G<}c5*5k|jYoX`UwdBy-)3><{k)Pa z`L?Xsj^iUzV&zWcJ8^(OeB>}WaAK2iqz#Jo#u1SvBgsijFSqo7ohMp^}h4YJTvpm%rnn5 zGcVS0n;N|F=g*O-Em#M+0O$e+UTPS)V1=2HsLfwyUSpB-cmB9_>tmVBb+7U+y;<2< z@a5P3Zt~F0tNS+wsy>9HCqD7zJ7P6AfBGybFeb3-*^83EBL) zvn)c^qY<)Ol~zf}KDIi#F>v=y|5!nv`NJKP&#vfTmluz}$rnj6bM&kGpgSvc4BYoW z@B8k+4d1PKO=9^^+iR|R^JP8Jk(y^t|I5%f_xyOrpa1A;`ND7i?Up+pxNXhb8XgUA z{=~0`-uNzVVMFfx5+2UQLOXv!xzDiB`ujz(0JkoMg@T!kL{=u$W?tbb+`(Ir4@3nOA+c!P=qq04(w$KNTeBw}Pn>V!MpMUVvx}!uNYl;8nTQ|I;%~qX-nRG62(u~v#fB(xc zaDkKl8=iFDspOn=a0sflwfU`UKlMgD%w@lAY;E3gQRim4-}c?l|N0ctS++JW-*w^( z*jZ9{hMIkA^ItGIKlQ!Qr&{+qyGsiOR^4@b)y@YG-Bkb7z~H`teNWx<ifgyKmFrF_doQ^o5p|h zl?Q(Exw>6XJ@fO&e*MkJqhI=d-2+Q{-t+FK-}5G%r1iZa=Wmw2?^O@IeQ)Tlt`9$Z z^)Zn9AA6++lF3MRWW+xmWR4JF8##2 z-|^{N{`F)3u=as3m42r0mK8s^{>b;oBh}+d_uGE-AEVcQ_1OB=cfF>!^u-5Gy=}?V zkylLA53Tv{=YLTD%)6id{Z}Sl_1|@mDqpXx`Vo=%2i>jMMhM`F?8UFyV8;&Fvj(OV{Q= zkSNf7A{K})6R||H)sHrMWQq#JQy{41P0t1Hpp4k-7pwciu>w11mhVEFV5v0xJsh$7&C3DWc7}VeJi{h>nEQiKOg! zyQ8UePvTTR8g^&mgqqwQjl}|6i|La2rXEyd>Tp_(2mm`vsPAk6^vA=)>F5bn0NPec z-DeBPsE_jxQ&iPQn~$Z_V;40yr-qNIqv2F&G&-D2q!LHdq2a`6^T}xZ=&9zmmX?jp zr_jNhxijj6-U+gxkb|l&QckU(4-^;aNmq0jHNslVE> zapUGl+tK!xwvLXY9rgWdhGWSMam**FvGA~Z(JVRF&+?9_;aY_b=8CZpr99kgFXbL% z)MztTXz-XCi(MQ}rPR?Qv576Y3bJ^HR0`E!z10psSMu3`SLI3q$Rj)QLk{f@Pb9|E zvuBVS`!Xf+Io>~qe0me{bTSc3&7Mz)^nZBWLbbYRwUhA5=#t+W0LI7olFu{?I}nxIa&y!1!z|k zhYbexoaq$c9rBv+B>h+@8U^6j`ApzC$yhkjgbX58whS~Xv5*ugD-)A6%q0^u_UvR2 zCw>ueHxDjWsB(97z7Z@HJXZ^pO;i@vnW_B?&h#{1#)A9iocIDZwHYkblSssd5(lEG=#gkFnw~IT z1sbvRb;h@i+Z90Hnh$zE=aW)r1S8a1`64xLcg!WP?)dPrL~<}1QHK&&fVtDOmS%;7 zb}Ub%#;s1|m0KP)Af-aqyt?BfF{tb`j0ToEscz=ijhDIrzbhZ!_KwHUDt(E)iS)5( ze8hy_;G)`@UN-J50PLQ8uqE@wTCeTN#Hf7QlZdD>GnbVGv^;;b#)EF;w=Z9Q-K^3I zr-7o;(QrJHA8w%2O|A1z)i~%uY4+qR%}(@>xtFBXLmTFmqVZtioNzLpPRt8#ptBG- znRlu+MYN*ZVB@WN<{^yxp7C@#5g$xX#8iJJ(H&FZ`oa*A(nAwts=q>^Z%t95##&DJ zOC9`Na3CBTM|3CMk+DV(tSFvQIcsJUXe%L$a>-gCD8k1_F=z+EaUM;qF%Ttdgg#fH zO*6Ht&@5=Gj2s{W!P30y=PrMpi!Ps{MT7D1SPH{VJrNyN2coCcSgLVDF~qV}c1|YL zA0Hb}hhW?|k_aawnpzn$rN63xim~^|Q22-?u-Z+I43+Osoa|GNM&nVIJ|TH}XxABX zU(+9tsHgn3g&e06y8iLexFuR+R|#t0Hhb-@^+wi=!I;0K2)w@2wHG=zzpt3{D(O%0 zs88)oq|*M15-w>WqKg7Fwv{5E^?CAvvZF6?GA{d#zoZnRfR;mD8H)vr`m`9_fat=^+iNEcXzq*`$#RyYlusfYlrEuODDhHg^v%}#GxsCu*UcnvO!}gTO z6>)!wmtndF!s%mvZzbOs8T8H%d*RnJT1^@jF=DFwqDkoVSx*qNH07cyM5Iz!mf~u1 ze>f5yPx;HMIm|Nuldc(NX<}Yaw_+Y~CU(`r{o}yCBT51Z`5gz@4 z6%{iMXTw4Ti;OpaELfZ>^A>1xtln@5OZ1smi-S2Pb#I^Rsy|F|} z6)6M3MR`Ygr@yp=o(FvsJab@u6|J6akO^L19Ua3ofQGJ}U;A)ky?uP0bng_ESfql$ zhH6?fTi!d8iSe-^J@ZSJAoGnm+f>UVrSTvVJtDQ9d(B2}!V1|7hmzrV>S!W48dzOJ z!P!b+WWK2mndcr{IWyM+8`sn$T~p3NgM=Q(Al?&>hcPkvD>u>0?1R0ci$}LHFEzF{ z09Kw!{0j7#Sa?F}h5RL(=@Gr(m0!gCmFEiB`XFNZOD?AEM)$k~jF0T9ftJOzJ~u{m zlD|_8gKX%S3AEMD#7&yL)Skp&vV~qZr45aWOX+6I^c-kjLhEMFU(j14`_?+zkUPGa zy*FFH-Qa}GgVgyYAt^CHU?6z zzd9^vi{HPULu>7!-7ywkhK@y3{^}j}RI;?o1@3 zH=+SxdI=v9_BjVLSk za1?)56lhLQL=)pFJz5~RG%qb}_1EmBdbFdYEBg}(Av(qU)mLzE`F>XJGZB>HK-B<; zmhD!LS^^jCilYneEY6e#i3aEOE%R%0FN#k7U;*MlAf;lgGqnhM4 zhjiDtX=#4CW}WDeraP&I{dGgMG`FnbUvVYB$}>GS?(iey?wo{CE1OQu^>z}S3ItPD zTd%;{0N?~?udwb zURkXAL);y!^lDl;kH+=OP`i~g)lO!jk(89b;bpW8_1hCZ6&*zz>v$3xAAiluIhP6< zcvz3)uRqLbs(=#+9a%}Luj3@;S`sZvWB+m#sdp|7XA-I0O?O!nAkB?c*OV@Ll|Xr7Iz+M((VdrwRTrT8??J(`j&QALa$Kxb`urRCS~-@CUPS`AH7p#xC+{kJE73l z-lG(o#J&7oSyV;;M`XPTqkCmhHC-cio7#jyyRxW;D!>vEt!f~u6vbLuw3yz%io;eG z)zWvw-6l|ml|@VFKSd!|7S&PJ8X2RWc8fb1qk&$pJ#p$rx_d3hlBKc#u0pPDA^Elh zF?{$|;aiPw4Ze%j@+@vsUiiyvLWA*=jEH*b;efKTxrD)%hBty)fWq+iBj2xg2`Xtc-o+S8l)tSs_V z;A(!mvM4|aakq*5vV5M&GUhTHwBOo$Y>+eP>Z zmK0FIZuWKCk|}YM^C$31D*j-`#Ucj5H=Cb5AIvCg@lYCCC-Cbo{&Pla%%JBp8KvzD zXV5n?hzR3f>leXTBrMaz%J|Vg#zy~|M)XY+0NYnC!bS|H3t{Y11 z+L5X=wnlu&fVIU-o8}2ivS*2;39||Va%(x2vOKLk~F zlAfOqG32Gy`5@|POvo^L-m-P{jIJxufq7t62vwcws>F=JqZrK)`d!BPvojRD{B)+T zIoBjU-E;op;l$`zB94Y^?jMEXE!8{_jdM$c#^NJCJ_7>5G$iQrvDhb6L3$@GdpzTT zl3Yy>A47L4d&=^plN?EFG|Hp*>R`npVdqMRp>vOLPeg}CPZS**gGY?P-ihIu%I~U3 zX}=BNtI5-{zLf{T4O1HN3NEdo+JWx3jjgrbQcK{vU}*!nhfXFAh9|aU^!&xBT$<6XAV$g}J%kCPIgdY!KI|Zqj9Xqk zIrA&)l!f}~QSXRTDS23C~ zB1(UiaZ8$e=ak$1bDj>hap8GNn-v=BOjV?ousaqViI4IGpv?`-8|fjY)rFqNwN!Pr zx;ip%8gm4?ecV~UZEY3%I1^1+VenFRM0&yBZ(uTk%Z3h(lM0sATk0$Ol7@6337>XE z6hmm{P6#`!O!zaf0pQL=DJt!y;IL_()z%9>F8V7J{M?k_g*{8fRD(ErH26T@vh}v9 z3Jqh{IY~PoB-7cqN@LPpB4JcQbqfL=9UH*HF)Wyhr-Sg9aZ4>KIEqW@-b zo;lgkAL`TZTCcxRatgKyZ9BAPBQR6NEi8lEh2eEn@ClYY!HQ1f+pOIk)zQ2AdEwA_ zRx9<9(ersyfsEz}2-L3iF0Pi<(@BHYAbM|~i4#IU0`I5sd_m9eC9f!Wzrx>V935Rc z=ZNKo!OCUXoS!*6fz{LbKaJDV8Oj-_2B$3MUGh5w3Sw&p2+*;z8dUD%}o$ z8dxiY5d=)QuMq-L8eV!#17Y#nJ;l>}C@jW_yOxW0`II-?pyPHsz{P>LW|mE#-UKUb zn+2f*@~pK?XJUlpp9P^P@~pEY(`P}SF$>PBYcaYlPcp0|(X=C)u0#qhc2-K0K|0Vg z!B{Y9oQcp|g#2uwKl@oI0cI26Z9=jHEkw7Qupgml(FI>G`a&~(9HVAt0|r6N1_oiH)mZpExKA7kXs*yq(42nKkODMPpfnJ!)>*&GX{uJY*&k=97)6#D257Ox?} zU<=Vyr^>;a`dq`pEePw-B`|P2B1ZoWLEqd zqt7VqJ_qeOm(ohNPpe)`avqvJ1a5hl>K}s7nN)SpI*SF%y;P{Hz*#=<{7c69uV(}Z zcx?tfU&$yP_dsR&Rq^ZTG-paVQrSt#AZgHy)IxVxK5$|fMVC&2U&A3Gzo4Wzt2)Q@@s;LuURyOn5Zi-J?bqY z5d3GMj@Im64fB*cV4+1444Oy4!}>SV62WD$`A#l(6S5XtNRnWhi!LH(OK9`H4C{Qi z!-P6bL3d?4V%TAkYO|cn)il553_yuIf!Y^eUtu6P!Jjo*dY9B416`bh$)8Lgn zmC*-97Qi(=YMK?G)N%qMGyS^C({7~-7Cvn)<4PX|W(A2J%WVPew&=Sv0n0+RNkG_e zHaoIsiaS?i2g{$#6tap&8+vx!&jfw$xEJslxUL4`wl$h!CiwGd3M~g&2Uaw34o1t& zl*8Ow#wb0PUx#gU^qFAy$I}U|8yU89tLzx`dzaXH4SH`f){y3G z{S`j)&l2;T+TOsN)y{5~;v8Gvz+Gxb>3yr_+x=Yvy#3JQrhBMGnKu^!pZP3 zT%NYYV$rcwG_@t;x!sU3#7Zc(Od9DdI^8Tau5|cf2ae)qaz%#|tj;WZFypy09_7Vz z0DM{l4DSKFmP@MF>GG75i-e_K1!-O&%V{AD2_{*%bNv4+jQBZl+>MCGCim4yZ5S?f5Z5+NHe+s3XQ`Xn3_FYzvp3gHBiPQue}`{~TqoJuQ;U!7cS-rTJw6S|MxPJLCK)Ee7+ zzZ7+#Ub6PxT}Iv5I)S?Bt~ENOg{T=j5}sqt4(R2XbIo=eHS>FE$@KM!3sEtwnz7J< zJw}dAUV;}3uZYZE?zj-SvgH9Yi*y37&sGo!rNUCp6)nI<)OvGCDa(qQwN)&f>VmVm z7InFds%_|$YtsirMjsW1)H)g2Cs_^FH0d5ih=k@Ak?Lh6Z56F;l{sPocOq7ej8!f{ zS-_y0BEnJ`p+@I7?MgU6D$pY8l{NXFX;Ix;)J6%Dsj%SwY)h8`(xb)m%Xo`Tkl8T{ zvmlx=EhbSwEYjlXNYQh)$12uht(EyM*JI7>#|+RVS)gZy`fsqzLD zX)rMdqmlG6F=cnaNMmbZYc#oB(;iQ#tPHa^)KBP;QfHgf_O08u^Ekn0d&rmSJ|9`k zlid@_@=_SUu@a%_*Kilw3(dN8OV^!(UA#&`yt_iaV-F?GVc2{(Am71de)_w8c9@7` zrrU3S2iW3WaB&S)3IJ%yjAz(8e{SmQ(GsBg?3^|_aR zSlb0jZ0(}y*@cg**AC8_46kg-?9O1CCzqjIuhcAnY|#%Lh^i;^so8C{s+hSLc!gqM zk&iCotfiE4A3A7FUCOWnxc*nSD2e$2hye!nsZF&2lNm?46M{ zPM*(7?*VgZhv*mv`sQn!sGWf*&f9umSSA9-Mgex(dG>Y*Veenkf(^4YS}S-t+d`6= zJt&M(z(S3ohzOQWz_nQTFl@;PCkwEonv+GNmlj)G0qm^stcEMooL|$d*-qhN0_Ow) z1A^58+w;ZR0Cu2a%X}J6^M++!xW<^?>ab z;Bv`JR#Cyxa4cmhy0CDDCC=to@SHx7!6mgbRXBg83}*#fJN^YM!-A+*&rHqmDvO#0 zm)rcEb8->qgPz$bSnkDSm@3bjLe*I|QLj?)&oHl|GNHBEY9Zg*)u#e&Ko^tsHz%_p(W6-IyVMHxbwclRMtOZ`8b7%`qYzx7#9GVxORA>U3aIgqaskWbr*oTH) z;sO}Dg$D?RY^;wcJcygFePH;n!crMHvv{r+OJ>~eYlO3ab+wn3F-H-BF6fnY+d8kM zlsWZ?9S6a&cwWR3NGwORc_C{E40@i-C|IGSuSYKYAgtEBj3no3WZRk+;j(P39JWs( zGcv*1F3Q=@y2NHQq3)f?6Qj8C?xhA{x2j+vA84j6#-K$s5QY%Zb z@}f!e>Sk@NwZ%+cJnz((YqkLU%}(Cv%f%07Tzj#i7)~Gy=j<(YqU~(vv3q@UzS;&) zMiZD*FZLRI0S1DXk-+B5rMM36WDvX;vQSvY7zQvH)K^5p3;I*P3B z+P0zw&(&R9FSVv;75+9ReyUq^2cc+O+o>uCdYlqHhb4NhJ6H6uzH@%)scj~oP_#(K z-zaHt&*{vLoO<;+u3*<7pEOKe2H?{BaFVQk(syg!!Dd zj4$Y~ot?nv7i6s-&IUy^Zw1?TGe zu6NlSuJ6^gxkzjNzQNl=?jBva>j$v)Fm8COQi(3<@SK6>8@WHbU4I zw%L2Qpo`Pi_PM?XWMtfVr|aWWn@2JSdJZzCF0z<(3F!2GLyIXlP64>pJjK zG0eGm|C3;Km@0rA>w!A(n^^%}dnsX86p0w=Fys2$G380khOW|B2ouEuY$s^dB^di> z7@Wa*(k0Be{o#C-2!F8>8yurfFvWy3PbGpq?LsLLbf`Hb@|T7|kav}wc}qOo4nx`| zKf>G9w)v|eU$bb9GX;X4BcO}CUT#?Yy1nngs#Ql(Q`feQ+qySy?-XlSTUpa@I?ulO zj1E)mHncS3wH#KE?I0_fFSjKyxA)yldn{`^;K49w(HCeNIkJxvzP4B2%ZLs3^ksrF zk=VUyDeOAq$y6d4#LmyIoj7vzEwJC^)Ip%C(z4o^wpw!h*4vDoAGHmNwO!eSC*${^{7M8j)}BCl0$$?6Q%?6liBRW^uIL532- zc80wXs~mi`2mEWh;}PjV3%4xMMnW`doGOM<0V!C+94vQG;ogJ{(4);=C$%w4C&jDt zXVOWbdUMiAi7otO=RjY182eSC1Le?3vH7^OBinpD&5xIj)nJr_@fqT|CV;s(o?HlJ zk+!k~EXzVE!xU&Njas)x_v$l}BbF{8gnf zMzlCK-7wt=#2y?)U(Gn%TChgh>QTUrs=34FY`^J^pS=^hY-g_FlG`(jq>UxOhXMwq zWe00rgIUPLR;!?!Vqey`V9}RmL+W}UgMCShpEI{n|0$MIgLoC;1k?^LxUoHXS&8X! zmtsG=h~_t3<ZJ6rH5 zGy`Js-}F9RS36r5mTOOD>j=6Bxott9(IcuC*`b@gOH7cWopcv;c#4>Vb>{Z+-JU7c z+6xC;s`F_m*Bl$Fq(~p%wr28q^=8sv|7|o9mZr>+R?NSVEPDsxJfL8?N`?C3Eo~Pa z%zdI6F^a|d2HA{Eg1OsRRnSJSSiLeEk=kL8Ivv$c=M*%8jkI8%X<_o4&p!T zI!GrvLM@^8miE@o98y3rTyMr17EP}v`U8Fkig3?+2**cK9HS4L5B~|to30$BOR!rm z9;s=^mHmDA-HqpCI0>VvCzd$Ek@1IBOUgn22c1Qn<%=uY`AAZ}?ZOwQWMHukjtpsyjnS_xakcD z_tC%N-bat(T0`ZIlS&;Ob__U{(l;HC;Ci+55r>bScYYt+{}#FU8W7hl;(9<_6XJTG z>&-47J?vu0-*gQ)-1JjiQHp{!fL~X@X*)#7@oxE>bQVO)JQS;%?aQ^@6i1lKzH0j^8w1rbLn zdV~?LVV3)ff>!RN9`p|VX@p*ht(|y1*QDa5cOy2RLBL1dd+8q$vl?&Y(?cR=5o*pc zzanB5;S3pt-l+uWz~nN=MqD?DYbUN7Dd`x)_5I@dOL6r&#}MZ(=SF%e008vH+P5iu z^5+l5(@&KTiYMdnUg1;J>crEJly526Bb1uN(-+C-Xhq3d#FK(_h5hJN&K3M5OI=J}@gz&l2MQ_lejGjHppW9J z&}ni1S#kfw4A&=}ytoZpmOIu_nBJz`O;K^ZL0l)q^|j)9i@4r~>j&sgas2?UAEA%q zdOv+qggl1p-SmXGJ}s`_#q~k@Ij*0g-{RVU-1z!}xGD;#?Z*9^l}hEb`*x+3KIeX~ zvIODxDoaG1HS(&g@;ro*yvg&hvKen1s9U>U<@o^aRb2ZK@_D6OIpz7XvQNCdTKTBw zX(gH|A}i<`MpTHxbWM`4N9=^S!F_`nov3lzl>Z43;(b3T7>^X zxtd~yzg2F*+bQL0h1+E_-CnrI@d1Qf>FB5D3t#5=q*7UQy`voMw;3CjmC{yRy>tbx zL3$T_057I(&Jewm`duNcvKw=RaDvqRxUQoNuI*Hdx4m=%*Io2VTnFiOxL!-|z;#%J zAE#$=pAz@4px@yBCfWpOZ=tQOt@KZHRM|=&LOrk3t{gIn@pV7096l-H+^M)6JZgz< zaK0VaS2%CSby8g4gb>Iu7##}QiLWK-<9s?6rzk_e<&}thEysHWw(TMK`YgxTZ8bA+9o7N$_20A)?9&_@mMoS>ek z7otlbv5m*nOKEN=qJ$!`7+sk%&IE0pH62Tj*b+HK+fI!oad0Nsa0!z>htGdNEslE+CNhpCD zT1hQ+)8kwf9*ybu8uN}LdXmS-$EY89$OB>kAg&JMT+E!+B3Z=I)NmphiyqOS(G^Fo zM;g*Hr;td0cvv1ju{(jIlOxn0$8qlA7-VZBFX~fc>IfXjXlP`!ZEYZ zgo2K#aqP!BJfR(OHvvp&r>GhsBWn7v5lSiB6CW*aM6|YKFV0fP$}O}Qe1w3&hqaReD8qG-2r{}!nz0^&xZaa)4vuSMb(sOiBL!Fu{j?wH~D#Pk=yU1WSXJ^e**Vr(MG zr{hA0#(4H0Y8EOH0xh4UfceGDCDYh0%0md}M?-H87*eFhF9>TS^}h`!y^wdQifo z6^#fGRo{<_of3B`6P%V%v}ihdB#M>wmUf-n9HEs{O~TP#lGBK#z*@a}QQW@7C`gbj zA?OY?v>;;0>)o92lKWP7ptAkB*FkGBFjy2^}CnAmQ>s z*jXbqkbntLBRSz@T0ZU@4`b+}k$cn|qug90qnNVj%6?5?CDz6YnkLDJ@hEh%;)T@8 z3cvzpt9jcdN~QyqrIGXw#X*_1H+*!5MkWMtl!Zu9cO*i)vDu~-fGoCI;jFY03n?1F z^kATeNuu!(8WxkC*58=CvEm=71*-XJJ5J%&LX5$olj1#UIvfe7!!+ZYD})LV`GbVu z(Dw-=#eQ`piepZaa+cr$lZZvpnPS{I^m(HPM*4 zz^JPDM8NJIq%k^*-)=eq!6HTpic=r1!*m>>Lv#%BM)6JIX&aqF?4)=~K>*>n7b9i@ zF~-D`ijXuli!i=RA{0{`LdJ1b@yxN!H?4qr3i*z*@?!F)zeLe?qu?W`R@zcIOCc6< zm7}8iajl|Mv>hQaE@IiBR;lB7M=N?znKV9(0KQKGrCiB9s8SNSL{U|meC=PNT74qR z;j@9(~&vG5l=(>433u=UZd10UVEx3ln}8xI{=((%Jv3NPIr{l@Pd zeSdHUNO8Cwo`A!*#Mf9}5O64k4XyzBmO0$z?lv@83zf?szU6P=2(s^jbaWJ-cIW`Q z=m_*dow#cUF5&*-_N@TiGFL!Ra3SBC0^DiW4bIhgvl@YrlGYN(Dd!6pL8-j5@=7j3 zISQgEl{fHW#F{{FQ)ei^9#^1JWb@DJBb zof!4{Zurh;|G4dzonuqsn^qj$^zC=<__sf zF|J$XnOU%xJZKu-AX+{DE z2eu1?!|`Z3upwZcNRJr0Fcy$v2@NQ;3mkYV5Z2hkKoo41Fgc|H>0|1&BmwN{X9Wos zDKVZ7q$WUHN3l6H4AF~ZaRw7d(hgI~SKD0Fb_XvjpIM*N}BQ>Zi)I)wjJJd}zbC)xq6T4?XKA!9;Xud#Sr zSc$CAPV7MxufP_GCT%;Y8#3z=C&cM z!#$Z2wOjt!WBWKNr~C-M58kHGgLt)nuy3&U#h;!0{HOl7^PL?JufOqEYTKU^TEr({oMab++hZ0AwKLnmqg%~);B%!g$ z5tQfkx64MtExniT1AI6A?^a7Zg4CNx_Qhg*unjl~xms0)a)Q%kR#0H;bO0AZ76=2Z z%f=wb+-nCY$tZ~Kv~Z5M6W^=euh8=@ev*IByE<@l09wAoxNf8Uxa)_ua4(+waovu4 z{(IQZU#gRCs3YoKnx(~ z34GHcFOX)m58EDOdB+4!CeQ-RJgNd6CR-Z-MiR&?O(*f58P@b)WqPwB_RSZ1! z;cW^$3gd4KDNOuY;W6vWC5a0TF9LW6X#g;|b_sl9V3(ta5ugqD=B`~X_SuRZu0#vS zs#&%J$T5l1nPsxGU4&AtLwxQvT)HHFnTa>CV%Fi@S^W^|F1TQn^Odw7`R+!ZBO*s` zl`*szV^MO~pySiR0<;>TYk(oMT(h-RfZ9Z#-2|-iT`Rar9=u%VE3~}0*K?iq5yVfj zN0@mmY~9CD3k9vu!c7Eybr`reF%BAn5Gh{C5piz)hNwgI344CoJtMncbcrAf3@Q<~JP>6*pl;$CHmRqgy%L!#}l4uIU+eXUnU(O6XbC-1rmu=!OakIWd#zhNWzWj zl*-MMW(oNg7N$H3bV@8j9T`mIxp!}8y0lVc;AzG%Lnw@akTH3;UpF}C!g)IUV(jp_ z0f{%95%}X@^gTR>`zr(ts8_^Tgsh2w^)GcvBu2;_;C9020JpIrbyM@Fn1RgUI;|@M zxoO_lcg|IzPNX!3>jaHFe1))30oPfffG<2F>I!&kez<@YUnZAj!c77_+Z=&kRcl1o`HTfMaYD>i_kqTkhBQ{ zrND17b+5Xg<1yJS4&~hr8+|vRV@coLiwFETdD{BnSNQft?Y3@e6WV9~i;JxSdKpG` z-MYRT@3&hcZcT4EZ82|70%owgZkt<$!!rb zZR%mr*be^!!V94eCyzbZjcYptzT(s(xk8x7?;?~-3uKu>x$3NoP>>~*`Ev8*nNpcp zl;O+mCX~rVQc0U&zCZr+!P_%%)Vhuv0 z4SXHg2$jOUZ{U0p{3?LR58&Q#;MF1UyA^)3;8`BzeE{EuAaKGUzZ3NB-{5`%q*+Gw zz18siESw((7?zMv3g_+M*9Y>X18jG=zY)@x!o5tmcLu%|z^_gjNQMfK9OWP(9Qh~% z2~ZvqLl%VEir`d$1`v<@P!^J+Oq2_EB=DO9S28%yfW$&LN|6Hoq>zJ;@*%|lbQ{WO zRdWy+Og4a^vyX>rhSxm142hu391Q>iEP!4$2Y`{!SCt+FJ)w*4%p@HOpr%5orvhjo zuQ5%2cSI<;ZeT0Ysl6+3e%(M;rkx=d#+SMQ)u!hfUX{#Hk)FDEsd1AUXBR=E$blKM zpm}Is+SDAO(3(}JB6%YNtK_1Jh*u`#^H79>YgVo{xfZuZ$X|EHe1h48P`f(vPj+|MNomN z7VAV+5I{S*F7&>TRMAp+2q=VB%7gDv4KgIjt7xf;8FZCq0ZN?Cma3e&B1w)wR-P`B zR3yguf+`43C)9;lzo7{6tAk#-jT(JfMH|V0T5^KR@fppeWuvR8x^{A1$n6>;p--1;EYBSj{Z3ndDH0@T1bux*4xq_W&kPz-|tGO~lhLP7;uL7~CIpb)n%43ykm zB*~Hvkw*#S!p{M+y8%ko#5Y6{E=np>(d6)PowDzRieYju^h)jw^Xu~wK4+1bhm?))VTI}$Ni@%(*bmr`Z#Z#7z zp7Gp$GxT>jvfkB|54J$UTEkrRiGo;vpHnLnv7i?|1vwe zYs}Lz%fIVdvU1H(<&Zn}GoR&s`>nWRp|ara(TJRlDW%Sa?fMxG8`Xc(=`b^CyEn)4 z+6^7_dd-W%t9#c=W(_b{%f1tB zrln_^-OXq-SLob#JaKXA;86dh)cF(0ivvUb6KC$fzv8r_#OtEd;ipeWzWCZ|T=+&$ z&bB}HE`5_|5_;`QZkgb>t8Ju>9``;q_o$rRhJSZgpA+AG$=TC31^$^CZS5 z$E=M?ALaSSKOv&lZacJP_wg-zeg!E-im2U(etUai;k!%Uy}PvN^`&L+E-!v}W!d|y zKZ3-1U%KMM^;I8ktod+r-G^HnKHS*^((A*$E#>#Ol|R@~{&3gFN4qPFv5${S>LnR& z+4|4FM1hhqFD60JpDv=>(jw|o^1c-NvDXcIHJiBPM);|)EfF&kr!U#94BCGAFWIFd ziPAUx(uZXOqNBpT?_+&z(b!pc?RU2rF7;8qI?=YztMgNKSbeoTcib1@1>@U{`)<{O zWbes0o%Y3fU(X6Wa~ggM!_VWNoZx-Ty>Z`|tvh04`BiiuTXEXPLHAaU2X$P3X7$A((>-L@ZCdV2 zUOqZ{)D)B6^V%Li)Occk#QK1)N0YbbFLH|eX81+P)(!FNJ0Cs7yW$;xap30l(d30s z{6%r-hFJ1~7wr?jRrdjKo>_>OU4qb_xUnSlS*NeA$MeSb_2>)Hh z)>*tYqr}@cN0awQSjRLo%AAcxu76_9T`e#f<1Q{$?wR1hp7?ln_%rV(rSrPAnbW+( zJnjmUnNNE0ylmU;=-DfA@CUwMi{Xmbx0>xc=y}lBui>pG2ZQf8jJ1`U+0ShJbpMjr z#942$&n)4!AHKPCa>UH>7d?}QZz(N~us!!CYj4|;Jext&!kz~B_wUEN=smr2h-Kz{ zoWd9d-EO)g&%n9sO)hs)(Jxob*T-@*W3KR$cbX*#wjYy>j)*&V(JFmqpM8>VBjWsi zdyqLL?CJSYT@4b`mNw`<-cIV<`Zm>)WefinSvE$)ngmnw=bcA?-gyl4v>p3TfhoD`;2E$c!IXS+>4$o2^1rJ` z|L@i&O7QzcsQss_YDlfB?f17HdtFq*`Xj1I>sif(qD?cb*@em$nW%|d@0&Bau2A+3 zU*yx-uTT4iOK&w>nbn~zbH@Di`zKm|dF9Vl4Yn?7Z`GaIF>hVg2{h%-JCE--&o+2! zoPMFe6Kuo0%j3AyP-s&0oQwlrR{h2otzVnls)3is-a{)_-s?EI@Ydec0IS);#76M= z;v43)gW)~w4?Z656U=#P9D1kdi=Vy9Z!I0+v3S^VFLw4=hIk&g3pIR*D9WFh7>kDjttCg)mx&;&$(r^iPSIn}Bhv1^7?ykD}x(-zE zb=?F<*NxlvYvSvA`HFIPRpsk~YSe$~DeyN@;K0h}Cjj&(3n+As6i`#nUa%aMVjX)X za@|kqPx}7iZuU;O=T2uy!@vB0`LlHOuS^rgw{x4ekPlyS^o7sQPBV)V$4Dm5`ni!w zNvwIPuTlPR;n|?p&rP`}U)T?Rb%H&9Rm{1E9!$4uE7PtmV!X;w7O!#Qe_*)=^yx9_ z2X1-sp8|vNOB!3H8yN5Rw@Uvly(F%Q@u=c=;xUP%Jr)@4ev&$8ivRU}OvT0EvhZnt zh{u>T@c91Vk0T%aaxi=J3Q_t#!^49H8a_^S7Iti6-6c&nJ8GN%{KO2&nYG_3UpEu3 zd3>T+*1b1+4Rc}|QfJHGE_FV?`>K*;0{2zDaQd4%Q$5%kQoyU>ZGTAm$x?^mLQ0(x zXD@XDC;Qmzqo>-$b{^D!(7_PTNhU@OBd;kJhkre0?QW-MeIt^ecJH53yl2LM^UwNy z5iqpxmN&ykb?5i;wdi>H?j*y}8+{k&4>Z5?e7j{>h*50kd&Q}l{tHf&@k>^O>|L7A zI(y&V%3z_3->ssl!x+hHOvdfA>F8s3#U%gyyK~L_E|zvnIK6I>Q&!J$u8ic|1~2VK z2PX|`UXs}Q!{e1-`E0YD%1yNGW18P9yz{Q-QErE~S(mO>JXr1%*1-0_)vngDHYZtO zA^q0xU6IccINgXTPQ7X9>Sh-2?=fu3B z%Lf*m-j{w{Iq``uh?qY0 zpLz<^k^*%WU2Ix(UFc>I0M7R*2R5W1>}Qjj4Zw|F};6A*}XxLh0lI&RQippk;k3=`xgy1+?i}}f_-s@Q+SVy80zix z4jK7UL28Lfi&>*BChYxoYyqRul@!bKJfp4Mc5QbF$z7Nq{b#TF^FD}k@Hq3>HX6w6JgH`FGe%IeeB41lO8RvN8T6{ zerk{(-05*W`NkOEMLx4$ulmzaEE&Zw8892(pRYum2#slkH|{ng1h zef{Ki2Km?DhGgwrQ&w{M3_(JynUK3IC)hszYp4B@tEcT&io| zsn7peDUi_YueEg&MUNf0St%HYaje*(9|gJaG#tF1I!NE%@LBNa8d)bAn;w%+dsdru@l!7atfEHgymeg8_>! z(mr;<27; zQn>XaZUdDxTJ!%{8kOGstKMS!tUan8*r!wAPu|O)AonNRWDFZx8eQr#I>J7tb*qdk zuSZNc^lje=1A{wC<+0t~L8%T|CsSWvNiAo+nKx{p{gbDz&zJu&`nB`UE%NngDQkya z=$v!e(W@+Gv1oq4$VR3GeW#g(cm8Rmsh?vv3#XyiuW_d}+n2GSmInTW{r7p?X~?cYxlFlL2eChUpgV`Y;dYU zC;PvCFMJXX0d$Yyo#0IeH%$WF9vgB*R97a>v5h=7O%`P)Qg)Ndm4{=+5HRqi)S95>M>~V>+&_5 zmES!Q6Vj?gEv=@mdvt$K|M73{`pM(JJj!U?a5!cym9+XN9ZxvIaxtuad2@BG%Ij1P zD_$P#(CKojSD$c8)qnncW@qBwO}uDEi5lB{qg%g<^C!6-g`Lq=zQ;&lRoR0 zoZhk~DLockOvA?)e`9kkc5=#vkZUm|6V1AI6*M>K7T05f(_-HaJ0})9H28VFbwE^S z`$8LVBSEl%_nm#rZgHh^ifuOfGCM^a?vrrVKAhpMj8B-!f?v5HZTw9q>ST#Ad1Ac3 z?D~NVoMgMWKE|U;MNP}aje@%E8O0n6A(V^;TjJ*odiAti3=vMZ`#&BrB7-^h@fz5M zNJA8Dgr&kdmJ#PentWr}i3lAkeE}PUR9rc%qWE4|ExDJmZAR`RNK}*6l1x85J{0zQ zboJ`M)JXe-Pk-LB`9)lr_kp{AO&QXq$*3NzMJ4RBTV6%84)*rm9n;Frcvf_iVN2(2 zI{$0C(>taNIPp#xHGh7~Nn3)dMY~zT4>0&puY088X z%*IADr!dpE1Z*fm2O~BPLcfOkgj#*?ln`oJeCg1EI}Cf~(L)UX%X2S=7iVxUg`sR$ zy9MkNbDk@^M4XxN98DaVbra3a>nQf90Z^Zlcb~7@v98mpG-dC5E3;QQ2j#kCZ?WGr z}A@r%i+u6s~&rL#GXH2-f{2cA$y0RL3@UMf7r1{ zndQ|okBD$L+YO~{3Jxx4`0>r#+|_f=j(Yv8yL4jVi1+1hty^y>ee_~fi`YJVW!w8M zXP#Pgcrj%Di5+KGEs(PNHgw$CVArFaO&%LPJ$~@q@wL`w*WO=y`lH|SyK^oqn$O+x zrtP~0TRF?x2`23B7MxM=ub zZt)$9xrYa^|LMzgzv9bnEk|d@C2tvgE8*)+IdS3lmapBOxP1*j@VCyr3)ZX|nm6=Y z8_ON5a>cy{KA7}!_?4`_y&tq4u)W_j_U`i`C%W9})8NtlBe#Em^TG_;${ae6Y!DUpTe*6XTmPO9wq)m6N(pevEy3ZM*WjPYao7e!FPI z%Fq4s_D%2LvRfH!qxM}q7%4p)O}8kCNId3+nm%A{WH>cWEMi3nzl{h*Oz$Ss&`+!F zju@qX&%14dz9}%cgv@6x3pe)X;l z{`_ER{-R;-rrpZdPyD}j3yY6mtK^lPyYS}~#TP5AM%s>SGUP(;<8Gz{oEW3z-1%tl z(gzMxOWnr%M3mhdI@T+Uy~M;i{Fi>$jZcouFt zcbss~G_!vA)YyDb^4i_y*YB*GcA;8T9yFA#b5ue7dpxOy9?sl?AP5_CMg@ zdHNM=+?D04j*R%~*7D1CgEGuVdcJ-;Q1++i+oF!1qr~y)M@DQ}dFB1gJ<77>)0$mg zvEgH4^yA~_ZeN@8;RNSN+x~l;O^yMC!%bvQI(#vr{Po#DE_-!{^n-r0UYCD+`;oMJ zKjp_)n+jYvz8!61zI{)^u)EjhD7!sd^kq@`?a`6WeWsO6f4@Vq{dK#wJKw!LG3`Of z=DmlW_nQ~!Z?l)Ycf5DkdfOzlx5y@` zxb)0R)A)SL7&~sEV%I*Kh0HT7V~@V;@>zEyf*GUYFEn%8+tT_!C)r1b;U8~K@8{uF z7&by$w(P{qsbL4$dr$uQAVheRZ5OsIzUb6yD=6X=eW)6Lx#OzWwe*!g}YCo^LPxHS-BHma`N4wzbpDMeCZr zoqFYN%P9#PTaI+tQ}`}w`*x#CY|Ep5-HI9kkcK-P?uUB&^V;3#L%K!_#tpeBfNbrG z2EW|+sN6-qb^A@h&z`rJTF-rbPqC}*)sDBKzK<#{br_m`87TdJqHhn+h%(bQn;w~1 z?;H{9xZ0XqIQF|suUN*{b~iNZW^BDP>Xdkx0ZZC{hG8?7algd_wzOf4+Pdz@C4F_BMO*>y}0lWv?81uCFhy#>6bK-}!u1 zn-XQw-Y?OGi~ZL&T!v>3H3o)k*hNyuzyMp(AWLJc`VDhuz)n-h7jJA4EfW$OKXKDw z$4-CYWnW@CSv&Ldoo+|K zElT+|gU4pJjNh()@d0jD9C&sS!^afp6)$n_NbdvGnZ>9(T>@xF!dEEZ*hq|r1d~Tt$ zso5smVa0~S8kL-s&i^slIre8iNB^JKzuFb_MP|{`$vwrZ(^G6-ZcO;_ph}GI1i#)Z2m^lcsaW=FFiw`#};Gli8Cl3D2*?a+JH`NqYNgV}P zmo(VTx&Bj6f&WDc9NX8ms9u2S6kz+nPqB~T(71guFh))0lj@>{U9O=JtG6rv7kg=a zooh~kdb?6(Nmo?KYQCQ^ZC3_qsAQ*$CQnYcu{NB^l<#Hr@Sbki8J#(7+;z&>ua?*z zv=4T*wk*jvn|T=(_QZZegUcCv=@t=`J4Ij7gB{2!q}y_H#|NUOb-sV&mX ztwEw?jNEQ*(A2y$N;Ujp@zCjo5kli{8vpqHrQ&=vuJ`mSMo9Ez;^3@3lW{_pPsHWeU{WomGmo+S{GlBCQTu+A-Z)8h(S5IWfB_She~bTvVl{)lX z@XNr|;tapis)~S03nI!-_TUy?-B&?7Q-zh(Ua<_r?!U&Vnd#rR4jXd&@t09f`#X;b zF21#4;J&+U<`2w>*)nf>(&~!~6BF#Zt-JnvOk>vl?<|jOvPRE}N46=?w(Y8g|CT!9 z|B1Ff#^1@fjFZ#EbMke5luN|39wFDCdp-&dSkiOS1)pwil4Wb38;>oG;2Cy##6p){ zc{dWh2G7?*{a+=$v8l=XPR5yG6Q>(Z5AT-rW@mhA(&Qtdb{i)+EC@0Y?fWZa;e6w< z+^c69MUDn2aeiWQ*y*NQweUZqTd}VXTf|hV|I|~U#uTX6@~a#cYd^izL}Pj>;YL8z zUZpa9gtfxd7by38tToguxi({Tm@Z!4Ho;7Ea^?Ox?$grn z3-i=+8Sh(Am+I7hAc;{`$M%g?Fq?B|pv9&6`7K?txNg?DtqOu|Zt~0*l!>ASx1G3X zdPu;Mw+#mPkLLB*aAZl?goUShiBP4R&Env&!5&TAZ}4 zk9nXqKYsQ7-_OKM{@P!>Z@I~(w~fDuI(xwQ=F+)SR~sjea=03|bAH0ql!425qp}fN z?=N}s`=DuoTGjcQp|fc$ArZN{czV-c#=%8Rmb}91;^0;xEy*RX3(FoALO#`!S8Hd> z4ucQEDi7L^R{iQ?Vi%vnKk`loBr_w;4O1G;pJ|`)bDz88WxB{37c z{~VZctsu*xfDt+6`sKWVzvlQhp8sXE`MXVpQ=H2)h84M{HF;I`r|Y@7XPzG~8u7|y z5982^{*qi~(ldQb_S|PU_gtB^M3WZtx?)lmL z$iV`!R1zc2%;l%$2=jz;ev(ijllpSI31xDTRMIAp?~ng{xzPn;MS)D%Mj|Xw$OK|v zZc0IhSd`g8Sd=Es6-wF!34=pJTV@4j2l)pE2WJPnCN{|w%bH6B05o5aDQs0up{~_D zL&&W+19jJx;&WixKUy2hBvGbJDwk#}_}xX4Ea?zAKQ%`v7Pl72<-)uSaZwvxh%~4o z7X!KWjL?R!D|_|8?R8}V$OGc_L*{oB6iEvd)fb?f`eaThCpWPM>wEEIGRh35Nu4#EGGHE`PClY>AdFtE@ZBsYP;yFpu9ukO#tq7B@AneMXBGf{@IR(14af!9xGAmK@kF;6*vIO%lom z2(w~DnF^3z0vR+K$AW>M7^O-JWSK(uc6ilIOFgW?kCIBoY0_>YxhO*<7AcB=M@g>X zy2F~3DxbQ?F#vjmKIn-Um|R#T7%q>2xcU;g#~IY5tVl^_j#QQ^$`YnYI{`f?&Qn*2 zXMni+61hh(p)B1ZTm?za*8~$O86Xy_o^d^x$ffGX?rm8BKTIFpk_*JpDlyVzsUk-t z8K8#l#zIb2J#*vMNw%J(Nmd18$3p9VZ0RiIEvC8>%cv5;e9fM%5= z(=-9}AVpeHzK~sws&Pj~ZfifZ%$YSBaLYia{I~6V$#O*`-PZ`Ep=x;b2jw zFhx`-6wBS48zTeMh!T{vK9VTOFHrD7@5+!0WLe3A!J+}gSi-S4MaHljN}3=;PBQolhD9I8Qa-1x18XKT_L7qe-nR}QCR6nr#>T6aU zipC@qbIdG}31YI6VRYlzTH&(H66LsW$rGe<1;@%7V`>b^2?X2&O`#lLJ>|eC93vef zAvu;~W`j)W5?pNI9NEQCDR2u43l&L1Nr8KS89;7UJ!Fmav4tE5JM<6}OehAb4i-|Q z2HzauG_D>FE)drdfLPk&p1{VOoYhIfF>}B$St$ZV4#(ONpPQ(p3dgJgI;o^+<>rJ5 z;}9c~3CRIWtkIN~&X5qXQv_LAApAIHE@(cT&&n0|MRm`!al<{$lti9r1siwVb*aux z-tj>FJ|a^mQGxrmEMd&92+0hSG$&0 zjc~P8LXFF_)(a-sy`=@Te^B-9Pl|B5KVaqtX5g4NMljoNNDL+JEiG#c1~Vs!BaV3! z1SU2Kh8t{y{B@Iz9AX6-Vqqm&*3Jsbu2S*Qlw~@BxVN%~{K3_eKs%>e95hANRA=RS z+v;VcfFLf0~7==`i5!oneyj0E748iM{sAg$xTYEsNhVezP>lp>8g&hD2 zs2(FVF1U%(L<+Icy@kF0e4647I3f}@ZsWK#NA|iUAIF=IA9-lzqJ(0MKq0``!zGtz zub0k&?tTt{T@#(PQd>9tEVaqx0e#ikKM|DN}M;Bt@*grueQE)8%kq3wctbL@3 z@;TlCSa|EflVcW$?tY|%q*)L;N(;V*!MG?_jiRCylE?yuGyxP|vOG=*PU57UBw8$$ zQ_syqQ5k3@gucr4bwG`)>sf>zEzHY@!9nQW+Oc+QgEP}?W7`5PFGpq?8acPQBWhAz z+3_-IL4F!tcz6RSJXB|+P-Vy|)r71$k((~vF$}kX71=q`WCDpiTPn-rHg14;)nTA2 zyoHl~e%0)GRJra=oFSi=PNYF@=EA6xB#;O|d2|nOfs}d%?oMDui3LTZV#G0PiFVU$ zVc81nRP0XRcmm^%W7ZnQskkQ`lpT_jxc*MaS9g7BDV`t{WC>+-y}5zTRjH6__R`M6 zF>8ZHl~bH+)fSD{7^b;?E~r`cSGXN1 zr)ke|iN*=+G!oD~o8uT$5hU*L+~yutRhI^;iM~TD24YD+>Q4v-4kr%Zb<(~YDaNK! zT8>E0afsK>MON7(0pD$)$^|F68ddR5#E(5xkCTN%5~MQGP-p;w7{(-`cXG_yW4f_$ z({Q{x;2dt6IlxJx5M^qlZ`cv1aaE;Bk`4wdKN$qO3ZzdGPQs~>1bjM!MbZK}os7%l z=p6?FIF88(yeyQ|=pvO8_L7+6&>?VFqrf7LGy&{W@Lh|J!fcJ3cAfD}^E7F` zI-z410&0{LEYUpmZHH6>D&68_CwC8bt*O+Dmx;1qND>Vd%5a;*h{@$~^;WV4*V|LS zeiF(tPeXR9Q9s@dkc!kP)u^IrQA{@j!80K3$XcoJYp55$Q1_2;9 zh+CB7(gWYLix-0nobXqw(>wIUk1SJjq(ev}6_4^9PA`1dDN&vv0?{H@5MDH~Fi}FG z<=Pvwq&-awP36Gd*8^(jQ&sKALMX8Ub?JjVpe{**LQx*HGfhmwpTcqMi%YR0Z}z9t za9sQ0JoZq3Fe55tap;e;SW;Q2B<_hEKq8vfy#8N!u5tEZOpHYM^o@6M;Gk2e3eh;8^G8L$N6m_1`19*L`)$mA7`EyO@0q}HN zHE?060d@ z$9&wboMrAE4e!W*>Xr)CJ|1L4yGu~7>~-p3Zm2=3aT1RP9(8i9h*7sey%Ih5FfI46I7OdQZi zF5G~-29OJEM^EyK30Do!HR7s~3qs%U@O>W>C**;*B8M|))Qvc60e#cQ#0B+gN#1uw zi>Na_WH}P!*?Qugw-etiZ{IoHA@j3a+gnKL|um+0>T)|?( zHH!&>_ADlF9g7Kj%Cnf@RBmX1vda0kN+!5-jo3^y0o_v?nX=G50|t)oV5#rlQS#U@ ztrjq-T;t~5DiU8M6Z>l=zN`cQOzG{l8=Q8K{+?e$(c)Znht>jV7UQ+mCFpF2u^ ze%uJDCM?6-yQJR?{=1q{Q zrc0D8Y``HUi@0VlQ8Jpsg*m?&!AeG^ACwf|^4KLxM&QAZ!2C+YW5aYyz`>7Z7Kr&H z=4m+aOrNWO5&1zd^K2}U8R>5!jLv!GJobJi!~ft%BO@yUDT`A|cA&4nFMJ2V!@a~q z9vfWQ0G`D(1sF~?IBGyrKzmBb38s1FVMmn+>Np(ghs}0EH zTEZfAMX5{;(;j3`ggG+D-U_;6SX^LaeH;*1s{kF|CN(5C5|X_pB)U8rA|D*H`XJJI z)R18UdqPCsN7@rb17m|jn{WRy%n^o8AQ5f`{xc=>?nlH+*sP55)2VZ7#>ce=)i+-% zfj0C@%maU=+%H9hqv&uu@be`DZhQnuh=nE3wgEQ42{#+fq83M#>{NwJsL0F#X0kY~ zaYf5kQm9fQmgZ@ml@l>=7E?n ziOJ>=-AyH7j9Aco*&tSUJO|`KN}~!5%1@LNF(g9VNeqp-WT`Z&<1VJ_a{bsYLusS7HEXeSP>I0GK>?5<-&igCKf8~i)1GwHs~m5n37a+ zVDM2@n)^&iR=QLPNnuKy#|F#Ze_lDep=R^(OuZ1%er=S{fX)ucPJ1|smKI19n6!KW z0a_0W7AbjFEG#d?VhAk3@`A-O*BTEt5gm+FDW|JcN?R;4r1%4yD_q-IlVbB&wL zc;-B0lr}`#T~LG()=(Cz(nqUOJxfVt&yrF@2$}7nq$dbfrJK-q@UW@Ya<7t#Yp|B$ zdI|&}3#mtbjr5wT4Ah!dWk?-{ly$+r@CQkw&}J0d5`e9=0c#Zoy`=iWAfCg_ zhme0pc8vg`iY5jZYkq_rFtWwZE7TG{MxcWFsX8bGCy*VKs%K5n0X?%;eIIu}E#BQg z^gx&r#B2zLF1s-y5HylCz!aZRZbh}Mrk+J*vxIC-G_uha4(PwOL=BCcNfHIB)(e@(L4YXCbrMskZIqyp%qRzq)y4sWeAQi>Faiug(G8&bGl_+MwNz_R1b;8P zna1cw3{v_BMQ{$YeKoStgQA^kP$Z;+s;l8q0=qUTpC;wuB&~4Dl&17O+>O9PMR}%p z?B}FMtD=WW-!(C+z!yu$44>)=Wn%m%qi)nPvkHe2p8(0Tc0i`&%o1)D z`;RIsQFk`%0Kv+uxeHRMsf6uMNE1Sye5Kq4a~$kPl-|iEgC6zb^MFe4+qBv$Y6ULo z1^O2SG&r#4KuLo}D$@rXl)CC1gIdl&EiWPE81(W-y$t*i_74({!Oz&X0iWEq*pcE8 zh^z?zPh#Ex?5YB%6&NV7o0aW8(Y>PS?_z?#l;;?PtceonxE-ngf_%Y<{g!BA9@hc6sQH*r1E!)t^zt>khy-KhfMEI{R)S-rvovz46c56n z?IaNr1})_pq`iX9fyj;~9E|{3v&7BH=uadb4TyFa5(KmjLgqwCIG#;SydX{DG4&BI zL`6I|2jr+hJPh=2CmaiWsx;v=IZj=pxXsFlPb3-M>n0_R6kYqGkGT#O8i6~P%(LB>e{+h6zVmY9nqv}<-XC8h2lODQF85r7M6r( zikj$mBzz`YA%2^j*sNA>F(!P&>bFkJ@DjbDjhb_=!s zLJCA2@T(e)!IW@>DYHr@2Fn=6V{qCL?laKkiGYL#b;C1^5Z>%i0-@^b*uVkVkl2#* zwtNz48mEeNwuYz@wI3Jz-SNOcBJD&Vjon7HSGj`CPMRKs(-<4{Y*;X%p1|{}qXzDx zu?j|es+e@=)7p>P)$FXhIiQ_s1-v1(cpU3h+Avk>ww7j91K4UmlR5TMJHfOFa0$=M z7#R{l=54@tPELUsyOXYYQii{y2S;#!V0RW!9mk<)0WmjLyFB$kq1-6CpqLmVCIqq9 z0+GMfX{}Z}6c7@l;cTm$+5zr0Dm1}G+itFEhDT*jL%a}V0i$|1a5|?Yawb$-9AQDO zE|+6_7Efc#!2U34g_!>QmYtQ@yA_Acl-871KrB-b4uMc+m@+Y4NW_Y~DFgrCd@v`L zee_zO+{JwgE({zp!V5>tS$g5f$$(aQTNqU-rr)lZ&x@=Z?+Xo2}Im#(S&}CnGj~v zh#swtV5iN>PtpgpTN(gY#;yX}s`&!PiBw`+%;F}8mCS$uV0@m*8Tw3%MKx)w89PM; zP_fLZuq+my;vf%%8wxWVd!Ld4HYO2;g?~G2R(_J|jq8o^kIlA6{%`l)P1 z2Qfs-)wtmHBVtE1>H@<8#=P+{CD~KeskPgW?x~auL>;t4P7Bj0_uj1R`Z-Z1du|m- zH#w#xyKYrTtGccx#c_xcNpakCIjB`S7#mm{ zi<^ew$c>hqs_jw!I|NhZQ5W}R-Z7<0h0sx9-7<&@@1Q$E(q?6RU3sb+aibEHbR&L} zu&K+aMi*SIfKhc&I<+>MRf?Ai#QYpwUcDsoKBnYU!{arRBcB?d2*k;y2~?fz(1WCI z$w4#Z=b)iJN#PT&*0EF_Ck{62s#;ovVXpw8#t>(DpZ>gO0~hibs-35 zMn$K z2;(RqOe6aDiIEDZHan*D)`O~+NTG=eIMcY+rPXNyRUt|$AgfZY=xmjnUqh@A;WgT1 z{oBMz?Ge=wEi_Fv+W&LVv`W!JXxG8Vl>AB!uNErMjWpGCOlV4lqOk?-kLG}X!YHUf z;m~7B|7y@Dx>pqy2&UwM2D$$k6QM#CS{zdbR8s}AOH@$@x)Go*bR+yjc0z?pgd9`) zRZ|Jv9jmAUZ9Ql-!#`p*s4D5NJ$oW1 zu|kcG6f|>Jl}>tswPOTn8dO6&EmxmToIWcM?4+m#iCN4!5F;F+WWw$+UfY$u4B8=f z1UZvp>j3dsc+(x#v_7=DDqW;19gfa|0V!8!vM5zDR|nXA5PKZa&!hc8&r`lv43M>Dx$`z3c=A8M2*zj18LMv-3;-n9Mv~h zf+}4N+aXbvp`inE)48dT211`qYz9odvD+iUw^n8BhQ^vWa;cnOq);ZM*T*H$TMbeE z1}*OA86Q>}1b{`L$-5m?b;A)rP&ay&0}bhO)C{lxt7FZ&(fHK3W*t>E<2WGa%9}QQ zj*7v)8ya#TNmZhk1A;((yiHWaJ)k~EsW|ip#vF1@5$u&_ORhkmLa>Rj77n${hl^Jw zIIH*B!pa+-6{7dv4TGicRMLiIQfmKbU7K4%V&G9CIMjtqY)iTZ@x&p$XaW*Ja}$YN z$wbuFV#MZK8mWMGL@Gxzl_d#EBLP&CNC2B!<2pFfn!fh@CzNMMC8R5>_E%O)YD6V< zCt+eKOqkMIVUYlmO{L?I=^Cg(R!m8+sHY*SQ(`((n?V9ZSk9?M6uM;XRHjs_rewJd z=~TGgaL@-1GObi8vkIVfECU7v=mqG+LKSCZgSYNV&4+E*LA~iN%2MPI0skQoVMX9c zx3Fe1a<3}wblM@lFeM2L2~(2b>C+kKi&a#tCFxnaUTJ*@9SU4Qt*SCKm{7MM($?z{ zEYL`XsTXoJIqd}?mXHz8I+4$4EgCFE^|KW68LggbJ?pFu6Vj;jb_Io@6rmb_scQ<2vZ_&K8VIt@RkVfwWK#*~Ii_Ig*Hy`D=kLZvo=Uu^@vovILwpB`+&RqddtEoweJ)PxASbq<2v!zp=7=yO_oKxo+p+S9{yPrxP* zF(XEpJmy8P(o>WL@uqE*L@+a`rBpDpy8~*VZfd@^I$UiOk~*f=F^~#>gD7r@5GG)N z*;S=truAkY4J}Q*a{&Q@R9~>UNi4^qqiVGxN{B@T>XpHotC4YRolY8(78$Jjz=5mO zUVu0#idYGa<94-6z?yHOyoy!jw82-~!tl7Ej_%c>n=1UX4ndU!{j}phb(0TA%h5|> z>q5MLzCJbD(1(a3u00c&c_PDXym(&~xkQE)3P|3r9ib{MdMEaJaCWPTJM~A6s-nVm z^UdE9iAn79WK;Ek1CJ^UIJ|~hD{plwdw<7}Lk%)Gc1v@pt?gLx|0OgL5AuWp1Zvga zxOfZR7(uSCQpLtrqoPm&rUcK}R?Rc;h}4x-v8Q#>g9$YjYYpZNkZQpg0NjN<5#|Zl zy^ftm_^6s%*N_=tOu#G9sOd1T-$2{^O{vm8K1F%Mo7B`~mk~z?WKA#7p!aUYVyC7X zqy#yj=2{WLiE{EC9^xXrw~jC?Q9^?ycWBiHPH&OIGj~_hQZ;T?l4w-4HqqX0+U-qk zoJJejgt|>_u-1@L!HIpF+>tr8w=A($FkZ?6d-n3!U14GM3?kJsBcqXsJ)@XVa@FbuK2Pp=h}P^n#>AxC8x3-qjjFbb?gr*?Lq} zasegB203dOJb2y?-l#~u!3S@G(hKj@p=$+YH7d9HAL^BYJo7)*7lfwWTfOSCu}?L% z(m+cunW#0F*x9SuVrn&BuZ-5U8V)pf>^1>bRR{lmo~4+iH#G>nsVwa^nYc)5uWS|d zHJ4<1y@jcTK8PS>UviWKbCB{HH?@YH8{~9;jr}}yEhnayPqN<-6GwWOg{F??B1TVkQ%58 zQ(hf*tD}JEri)z=vLFgn+m}>tRr8A>Nsd^O91v>p$XoF zdK#&_5dN}fFj~?9r=&-Pwy9M{lzX`uIVi&Z=n5gv${3l@j0zid(d$xdRiiXLb{Y|T ziJVl@F99PQouX6TuK(1=RNK1LGZQ*Du8?UaxgQ?bX)DNT= zR!dc>Spp8V>BLvq_ychCUt0n&loK>qOwPb1y z79eV_mekHmsFkoJxDKl&X?EAznUQ1*2RB_pSwA!2?Id+cNfkfTVFfcKEp=dP=T=!% z>c{n8^C@tuwHNAS8{i2?@UxNR)-(#BOnpWHZ3d`~gI%a0VMl6A$y8w!(58l_A*!v= zQ|l%P^&gO-CVKR^#cQP2gCRi=drl6pn<;)_EXdMSc()7r3O+r$Ar(Y}QPP|}(5d9> zcIl`@ye>UVHO0Wgj%N}pLiLp>YN@_z+Aj^cWIffjg^fWMTXkH{8@$&9YJT>;gIwLJ z)-&{*7u6$Mhnemw?BeRMt+$D#_|*`(`ol0(yr;D{58*1Qw~2Xw-#k0)2yROTsuKJB za*?Tew`oe`g2xKN+vsH4QEb?_{Rr+Xb~^0UgZDZT5Why&3t+<%0~4>X*wEO>(6|s{ z+mZn6mdBxO@ODI=Ne1kE;v3)tD1@ER{xf_5H$#*$Xdyf;*qkjN* zs`qu$JAy&$Ftqn5CW!&9VU6E)1}MbEwG6|YN-92hvv94-lIh>8(}($!D3j^!-F4KC zV1!DMYJ{Rwb^3+sB7*56$c?9ncPvc&sPWbe?RP9dB@O=HSF&bX!E1&rKzs-#ZmEuk zWi0nS#q$ohzq*%Oq{170)1;I?iD%Ek@8yM1@JLA(8S72Iv49ZS?&YSSEkX{gcJnM* z$T(R_-k_6J=h@VXb_fWiq8;!XMXK^>LKUDNRvYF(cQ(T5XpcMWF77+xJ$V&8njw|K z94dvFV-F|fB4VRq&m66Ne2D&vK~nC_3SsDEXax4MsHd4#>-m~Bq5XEMc_7j)7%L`T z5W%m!+>dfcHMOo~Uc7{eMJyH6vmj7=>fdyhk`*NtXEg-Ds=2ICwM5T{r>6=;NCdeQ zvexVWe4FY49wU@z!W%X4+p@_bu-v8Nm!QQ_6Ika*ye*t?xSq~4m3HKdp15gJc=tJJ(aUkTfi_9Wtze(|E*?$ z^-(pH3bk(*jh#s0#nwE_9Ar$dAjIM4po4?HOf($1{Q@mrv9QIAqUo|%iJQhg6-mdh zz!=ck(nR@$G{7a`Vho~E+ea}#p}`+>_zn){`}2eRg93<`>>465+}j2(ef9bRV({R- zueadqh2Pa986d}bjM)e&;Mc2bDjE*w@G2MN72h>627V{Qbp%cyC6;EuHU0o7Mt68E zF1)cAp?BUvu&XLjdIPv5)Lt?Tf*4KW8pFd$@#~FAEKR9jBQzVehL_~7Mn51+vJHCM z;EIXxm6W(LfU9oBzrw49yA}UN9Ip|_J8(SBg(T<@+6q))psU2yIHyDKDq;piupUCa zL3ZO~0C8+d93zQiB5~|Y9DBks9SMk|2#yj|1joT>Bync~9DAb~#Bm-Rhocp69ECQ( z(FvBL9YReQCd4@eB_a+`*ckEPXpWk}(Hgaa_&7V{&)~z$l4rxw3!Q>vGsH3AqaYLp z$JR&)$7nPgjvdfKIHsZ{aO{oN!7-D#pNq=jTuz)1Lsm>a8jYObI0<<&S;Yjm03}H3 zeuX9j^?`p>9|qI~e=y(BA5*lDIMu#KwvpyNA#x``Y2GtM`6}?3*S0`;#3vkdw*s-S zEz31(Kr558&PESp}Jj$`7KY`9(5pCaNEiVuy3Pm5&`|0J6do}m!2k(_ii)=d4af-h<}G7LJ_8 zn5HZy85AeeBrV(^YT5;`EF{k4YH(CWqLme*3=u50)o5$IJrJ{g2Y3sR&Q7D{=;ROJ zL)#Jk1BNoGAL;>8NeF*gAltg5e3T8pksvVzFbYbM1jWEH6Xn9)G?WAB^583nt0eeU zAQ?Pu4bP=;Kc7f1gggr5r;(bE3ISRkF{&c8XJm}^oY{+$c76NPT*b}fO^|WhIMHv< z4PssxZynmFn{#mK1Qr+BS}?hYVPIs*;-jX>C=d$tN0#IdKE+>d27nC%!J7?#K`0c? zGvMv*A#fH1D1{;xm%*^a2Lt1PJz?F}geHfuxdsfImNqR7;n&jA5T4m|#wm=8zXwT= zSj7m<0_kUjMIu~xNsSD^k`@ne=e`{o|A6aoZ0?HYKc$xs&a<{1baCIy*a->w<$}@P z-CJDvI)2AXZ-W_Y3xpmvDXxkxk5TL5?V*B>SATHd_CPxA+KjdXeoy`8=i(JJcQ@F> zQndf_9`i3d*O`4!jalBNp-*&|hs*bWcpLU*+sE$dtBVw63E6iJH)(vu$Yj;c$hW?G zHXC7-ZTboss0lwgHci#-d@0e>25T|CAP%yD^V&px2Q%n{}Z; zQautO8wN7x^ZUTRT*8-2azV9ZP@_GZ7!xIWU?kEE9J|W|`LHK-EEGo=xM{FbWQd%= z%5(4D&NwaRTC54=cV(db77SqDm{ij)_R=8njp&(5;lLa3J3Yr~qFeP5<2S=+2?zJ- zp4OpHuzw#l#?1r#0|Uas`cP~Y$oKD4O&$0|>-Ujn4D17fO$bA*{?z>ZtPB*~jU*_b zgOc$%7oS!BL};W#sDHFn79$oX!CvKv&;o=)Li@n^l-`INQ5it}o&Qh@V4DFtI6}qR z2ojwR37!w_yCkIl946BLg@h7{!DDQvyQ{wrTJvfe}fArvkVuhvxzq z|3t)CNF+e(S-y~j0XX6DQUs|6=zwHQr16J(lYhZ5m;nvYdaxrHU{T-^7LUDnbj3y} z9*sqC#)b0a@P|j{3@E(_?ug(#pTJa|gA4ia_|4TAxw#snG?%E644%{JbZG%xqJBky zO#!6iLb*loRS>0vP=-$eypoQ_H=m$M5wrjv|AoYJwZ6dxib$bU1sVd+Wdv@RvY9Zt zBQzZa100&-G4NClPcZ%RA%~j2n($&l)4;e$K%2oD4Hq<;6o7&2DTO~V=rJNl!9~sC ztGj+`y+)HdFob|OR^!tR;L89bH6Gf!34*eGAU&=R#z+RgSff%?LXG#Q>Ro)Op&0%U z*s;D)R!1mj08t9&mV9U#OsxUX>eyFN`5qTFhPzFG5^7wkYZERCBzUt0P!FF4fSQH< zAh@2LsIoA3<9gEVhOfw$SC>)u`sM@X3}{)beP#hCW&##!%7T1=JETs_1!+)Mo)dA+Vj_fC@Y84z z+6;I67fW1gzLdge2i{K(=tt|L{+k({j{0ZjNmcwprDCvBT)@u}%jF6+KU>0A7RmWi zIX|&W2ERa&D-qh;+XyJo=}8E6VlYwQu3cT}+{%%Kzb(TSq4o@fIAo~9V0h-kb1B?$ z>F~1!S#EeD%8&1;48BA7%n%ExSL_6YxWs?moq8oALwyG^PzHVmxE_{Np#JS^2C{?q zHxdT&(GNHG%-0s3h{=KX_IhcAYDuvg-d$6myzq^vE0kORkB?B6P^nVpKp;^zC?m3h zmkw~(`-=sH2$d3<0wUtFA}BM)0ZOkHFCKr^|9b%S$A7qN7RVCi_GO^YZ4k01LJ_*j zM`%PV21<^hQne-&-u+tvvU9O#vwswEMPd3ng_=0WA z#nBe?^S0!D60vyQycerO?p)pZp;zvp@23n&>7CZ$Vq~A3@9&O$u~U`$Ftt^d!}Y;y zQtpROIW)BA+BI>VN*13i=zorxnY*rJ%lZTR&j#MQWix!X{fONT`^V3Gw!c$zCDfEF>*8buzxDZE!8TvUZ*)$~ zJM3Qk<4}*=FPD3kx&9nD!7)8(?99KKcD%knB2q1jF3K(HpVqsN`17ox`94riUnrtI z^c5~JjTrd3u@NeVuutH5A>7q~s6fZ+h?6!6>*?!k~I3t;;~_&SJR4q-VEb`pN}K(8LzNQsJ&3gsaQ zT!knbiBSQPK@x=8O5stA1{0q`Q7%%T9Fz|sa=7Qgn-ZS0A+iLn3Z#aA3P>SDg%D#f zN`X$*s`el-m_Y!7PW~5gpfpa7%fc+t95cI zG>Qs{As3p5rX{y1graI!ovP?v+{z>sRV{dRG!JHI69FG5-W)wT|IeHCxjXq=83x#?&5ZhERZEWEn)k z{6PY!rxAY$goF^oXob)=a)4R{uoci@4O=R_do^?$PcV?+JYph8IycKc)tcE<;#>j| z`Pzc+9{|kKSV41uzbSyAbi_0@2chOQM>STs{Jd&SN)}F+!$80sZXaE-+7=+x#8_S= z?U5{~NLvdhr3nNWMmJWx@?j=g3J(Fr&`JgH8=;4W)gw)`RMiB=a#M^lQPAp%tD>aI zXoLjDP*N2ce?i15eTYOj9no09%ElrjtOtlU;k;43MwYghYTbrIQIVXCdSt52HH#N1Z|bk4JHE z2eyH-v_A&ShhRqJ(+{Cu=}L)8B3FymAOGD&BcJ@OnG#Cs2^WO$)M zsph#_;CFlay}MkhR`DE|IFOy8R!Y=4c{~Re>ZC#JM5TDRR6dwzXNep&$TD78q{`zt zTHzN?ibPQ$Q7cP$wro^Ufmq!nIclB_2Y+LxOXNJRHELUltYM0qlP{O3R6IKy96$ka zvPEB4BAX1gSgB4|Nabptqa6<6B*}A$cYYAVd}W*S?CjBw3S>!CogZXjK1nz~h-p4n z1V4ynK2{_@$kKeQD4vr8nqQ@|jyObHS)Lsiu>iqDHF)+;_{FNrpg}5$njd6kK8qIo zAh!8f(flBe`B*La!PY3iESZV;!8Wys7RC>@twpqOez09FqDAn7?Q0P&k{|3)i)c~& zU`O-OnnR}CT110PooW#+njh?JK3X`S*QFNG0KKlYh!)O#Qh{6(QOi8Fy0BGfs453o zhgc;nkme{AD#akRFh@}k3SE6racFaqC@QoVI96z(9v6pcBVvHY!?hKoIHWF6SfExS zlLl47+!Sbw`U|#ZAP!b9K$r#cq@I|l3H8K6anzF~%A}sG&@JkTjXr>xFHXxrGpQ$Q zw1j%HK^v$iTXdLuvO^cBCwp{f3$lV* z;IFR8lXzkRqZGi5nuQr|j7DJ3Kx`3T#E;}hGAacQ7KjsqL48BpHa!;uyABH2Qh(@ z3fR_&5!O{>}wwM-*mJ0XUs zE2J~_5!#U{5=K`4oERSmX-$1jPDpM}fd(YA?DPu-MG=sN0<;wxMFh$0vvq zT9}Mw(4;2XMM$-aJr`OL^3|bE+bYzjB%?^DKa#Ckr9})s;-`p3{6>Exa9E#0bmtO8^*=~U4$gu;bo`|+pw0m)+pxua} z&sRPvzO-wNeD07_af`Qn$LRF~<4q>>#g3+nIy?C=R(w5u+Jn7}AHq(0^tUW5i1a#t z9Q7Qc8PhTH+)ev|r?ak2oo~M>^bf^0i>%(C3J(UBCUxD+pE=?|hiS6UZ?x<`#c5_% zj_r-?n9n7i{U;GG$M=m8bw)rY*DZ6i;-ns-dy?N&DE7}uC0Fa$J#g7*8}%@b8}02E?TADxcgEmEzVkUm|!xw2m z)2?~!P7b<~+x+ASxD~fKgKv2eyP3O^Ke1hX(8=MWgnrJl%ymOW9_3@R79XB);}6d3 zinhl%QGLLBVrbCWt~<8v`#&Dci7NQYfi2>H++_#@`_W--Dyk5 zC5)YJ-FIHwBl{aoDU4kc*8Nc0mcoS|$)AimC*QO-Wlh&Z`vn(+QqB$8uqJ_g2~IgD zi&~pRz6er0CSJ)NeXZ~I+{JUI$8lFQd-G;nha*wTcZ%=r)9m@S{Jj5*OU0`DHoPCU zjT~@x@b4qO>N#56t6cfjk<5%QU)jDh zduvLuw@(hG?TO_kHnqz66pdMPpUYn%wjS>*E7$Ct?8lyR@6$Gqg6@~k>k;!=vySul z%dF?z?;{9wZnw2}pVVP*grO})sh|JRboW00eIcO%e>C0~aouf#v&z zLE(Qk*;-)X+5H-yzp&(|i*{?0_&JFe1!>!C+l#jxmXC`~K7GzHYk9xj@-JhPLw~uQ zGd=p@nX%n1QZpAf=sC$n5z;GoR$}Ccp_8K@{x&v=2yQURWp&84yJtf0P82L(J9wV& z>(?cb!9mO1FOAk*O}yWH?2tCCrcb`n`Ky>v)#;@J=11Lcd?tE9iZbHto7XQGXScHN zM&Ai(V!+E5{4Km}yxwdQrjkEyJM`nW!yu<^-E$nKlH2#4gxMraC10HXwthDG|Eov; zdutOf{&fn}{_RCIq!ZQlh`1B3NXuBi#W!v}x0yt`em0j~tZ9*h8vFFUHoN;WP5(9v zgS&?I>kzQ`kEY9WJ3h#nJwNN#(bgYc{QZXpn-+F(?8)p@usZiBntuJ2-`5*HwRp(M zI$PuqbHjoQ6ZtbyROf`xviAl$4wzK3W>tQx27!LN_Ag(4v(vQVKXzq=IeschZ3v&w zy+5aR$YQIDA6gmAGWeet4;^y6ataU3;tO zx~_qu>*}AkYNP9V`ixR{nbLJZHR}KBG4MBGVDIu~M*;L(GbnVLWKh#jopl(S&P_TQ zxBC06`~83NwSA@8dA+MV;4jfnzn8E0nQ5*5^7AGwRHGIhdJ_Dj$DESX@$xBie{5)7 zmSk5RVpTXwaw@#_V;lalC$7Vu9c54YA@TGbKc>&+<(ZckGM;5?N>_Ra->|&H`t_Rn zEx)4lcd^B!MU5P@EI4~aj#YRIsHwYsUB=CF%TH=rwF3HHP>Nykz8l= zsq@`H$v)xAxEW4KU55@Fx-Zgys+-1!-Z9X2qYKO<8{;_Efdk#!5-8p;knMVUY z2piFV(G8sUUh2+GayrI} zjvTON*Rn#E*yCzqX~s26Zy(zfk>AXrg0f`~$J#qg2;_{-QWc)?P(#EAqd!#SJY9cR zrW#UoVt3XN&5$eJZFX*OkuTqFJf5AtfTa>ue8;Fi^fv-@7(z-vFn~HR8CnO#|<1((mnEb9TYdgTr?T7JT^S z)ZV2F<=4MEd~D~5yVG4(b(uZ=(fGCFIv#zzVAsKTMnk(DE3?b2$94I^qi}cmp55P; zemv#tz_8*?C)^8n+bi7DSPL>)%_i@fy2-h1jE`;cpA&bk?q1$L`@tQ?)GLQheN);~ z?lEFijO`WC-Z7?iN~azYWK;l*@^GXkqkJ+^Q0ip*b7nDBd_`Sae$@>L7oICj{+ zN2UoL<9$rnZC`ih>LaH#6~`jK`hXGX_wg!zmo>*R{@UXlbF&=B7x*`rbMW=f`6-_#eYbq+pTCFQ z_+dc0+nW^@*P0c#&UyMl*WW^%GB^CPuPkq5f0xYemR%Nb4zGK{NMj{+eSsQ|ZF77r zm)X$vdbT@AP4hgWAI8uB?(->QKDKlTvz;T@H5Ed3^E@W^<{lV2@=ZvDeCX8)ji!9% zw`Aw?rw4CY&E+@@Vf{YjdFghq&^NZj(#DN>{Y8TXANie7`Eho54PBbIV{`dW%u5sb z=axH-A2Pf&?Zq-zuWcXXWnVfVy{UOM{TA;-hESOIBJ)f4V%#!X)-&<_vz{vUQ(BvZ zmuJCjYRRkLzIhF%2$#QqT@FSFtKR&%4jWHl+k~>oZ7Ed0q zW9Ec`RaH)>m!~!Tpce+O*{M9*r#LN8eENT+pg>JVMF)- z)rFI_W?DOo!YeN$bGNO0P;^D}dV25Cl@@JegHs!P-`fe}T+50k|C6lf9c-hjv8a0G z(!2JZ`t9HrB%ewHuDR|z3^^*_7<$*;{KbPD- zyYa85L#%clDeLUqMw9h&-LnS|CwmFeE5eaQE>y`DR#5B+9&lZ&abl3gqJj$IcrG?3xeV1Id^>|H}P?EZw6*{{(Q zi_e_Xdl&kz>V3D zV<;bkff-$#Ytk1}V|HaH@0%d98y@xR`C}WGRWcnN`d(Se7Pi^`YRdDLJBBaa`TLfa zXL(Cp2QR)~yr~kmftDMs{2%5<<=6hIpRv8y9#s$Q?J@AX;OX~}`mMPU!-?ib=ev!I zbxmyDD*NK|(UbRo*+168;<`q2ct=ophFk8jjOQ0KDp)V(jU3{7|DpHerQeQw?zwHF zYE5SPs*z{A=3Q_Pe31B!bbi>FhBih0XIi)E`u%d7Q1>489wV+?=Fe=pJ9}-}mlL`( zt%P$WllwAzMa~&{Wq)(mDT~TBFjjaS>c_ouxVh`2HV3{X-VUy_Ye1&G2x(z17rlPX zkg~D~g4Dtx=!axw=z?AoLGv9QRoXppo^60n?}_oQNzoD18+`MacrKiLyVGZ4JePI* zb!)FR&$gv`Y%YIYdFHnd7v9bNcxk&`V|Gu}Tq(76JTAOeFlF`KhdT!@yLBT}-srp6pYI*{X8$AUpXH+&t8e?RV2!_h`MK*)tM;(k0N)zc zp?q@usfY}VF0Oz5WVN_t?ZFWt<(I!64>PvBdm-zt$M^m;D`ImbgkJ15H{I3J!+w?h zy6d}RH?M2te_SQ<>gSbv6ojX;JYmQ>KilXQjr==jh~|e+U9n}Bz}mw;%^pGEb*g|JFSoZERXNp*Pq?M(|NciXpx!yZEfn>wpDwI;{&~c8NXEul*_4HVj`)O8Yr1xU0mOldgGC z4~sbD182{JD|^rK(p-}JamJQQn^edehWFSxmN@}TC>aelrhGQ^*~1DMSUCMT@ZRXr z*~|&|RuV27w1U$**eYyf8*w2ZwU7h84$=PdCmrEdW#_OK?j_TKnw`tWXz$M#|^EMuSA_$-07uW!(f#8xhx zxe1L&E}pmk%+KvkY@I&%=qpM5{P``XPB?e%#py#GUZ$)NZjW~B^0e#vTam$^a$>_~ z$$ZfI>64E#8(Gbn&dk~vwzdTAi(NMq{Tvk><@mKn`zVLf^ZWN+XSgyC?PrKCe15J? zX*U0SG#cdX@&!BHPT*PcGj!%ZqKf3kQ4__$Q{R7;$HQ0W4TjP6H50C6SePk8a_VVk?55Egt zdgHUR3+MAUzG(aEi%q;G?ZlIJbV|PQSK5kv`N_NSFZW!_6E8lta_4%-uS46F?ihCa z4`h*dxwK@|Fn;NE`_B&yX8+T#S)rvD+B%HONlx21?2q;zug^7!-1&DZPq%5N2AmdR;=X9 z*eJvdYCIEtzry99Ro2&nKb_DgMHc6g-P|Q@EWTcs#`i8AGiPoJ$~W#tNZLvPpJQJ@Qz*iU1s*Jme9X+^Bq^{nnt=U_M*I*=(g$M!3W^w zy>(m5*>tx(Iiz2A*ZmKdbnbMpbJ=Iyg-5*aPYH6}8}NeF_VXSE8(jNr+pzbuNh2Es z?BNP>zbyal_cso9PXhAS@6bHIFZ$RgIwfV5M)2VD+21d!KUn5C#(7NR;b-&j^{^T2 z!5FLJ&quo!-*%f(?lUPk_QA~&69S{zi>$eAej0Fvb8JkW1#9N2p3(o(Xh9E7{qXx& zZMKdmIrVh@)}y{Tw%j`pId((SR_&;`a((s8v;8Y7f4p#U=)G6Pf(1S)Ssc~L{`W3u zidxSZxYy19#52~!i%WkvIQpYMmR@ifnr%16|M|-y%HRE8mUQwTD@(~bIC|sqi?8SG z)I3-^v+0FpYb#R|?j1S(=jG4d9Od0_J8-9`^gHYtS;i7xzN_4eIP3z#Qa9KZgn3t2Z}BN$^-&NlVg)sp+)6Rpy1 zROPi<1N;Juqem+qEIImgM)Y3xu46ynj+9(uyF@QZDLKBv(MnR--(vBLQ@^H+_`U7Y z4+izy~;rv$&xe!bc5Amg@+$DD!Rwcio={LfcM+pqB)~Vo27mWZ2VncPqS9o3>mN|LFhcV(#b9Z>qPqz0~QC_^;zj%iTr{x&WAdJtd@< zf9wOBnDuw9x!Xo3xv${zizj?_{uzsNc}IY44-R)*{BhYx3zlNwY|ExB&VX+QZ;WA# z-L(4PST_sS>J#A?zCyb$^vvC5!x-E1=DdO~rR8^>C2b^w-D^uB0(u3 zTubsZ!6!H>5G(oMq>Z?VL@oJYEm}2?Yy}?Fnu23Q5r5xdXGq6Zr*=+apJ#e-J%xoH zf5t)(C4Ae$XIp2+FPA=e1A$csp6$f&@!Q>5Ywaz)-8bKTyZF2K_(hw? zhH?9*@A3$VjXPqIeq#I|*$1MYeYq+jo3SJ0cEb-UXLq~X#qnmMWpio#^xoG_^d0}{ z+$m?0?|gddnq_=;NGt!yRt=Jz)j6+~TX!yKyHYYtCM~EIX!{|6Q7A(vP9;q94~h+aCTwPRZhFy=5!1(w&~JYyZ)myyTx> zY`x+;cxvREZcjCzt$u~JE*~6l*jw}hDyAEQ!85-xRAZr;LyW<{?Vk}1FSS8+WUGi4 zt-@Q7sFr@vcNwJ9qS^tFKj8cs2&xsTw~?s!ozcu;w+Kxbc*ylrUJI7Lhuw^63xBv{ zx3w%{qAkC}*gaowMh#*`W6<7T<2kv#Tion%=F_6klItBWJ07x`eB|Yl#@~t_wQ(Hw zVf(Vp6za{jQBgZ(-cCv?J-|WKXE94%0`CYj-hG+Y_6=k|JHx;KlsrFNk#P*Gq7% z|EtHqzYqhT?#Da58A#nNEd#q5{ulqDjOXkiAc4B;jw0Gl{~4Tpqae&^J$mN6m}%!B zDw)Pd&Q?blz2`nIOCCFY%x~!E@FP?T^U~<#y zjmzGVfpyF5@oy#H`g;G{F>rWy_mX-BW|V>L20g`YhFhZ!r9dRLSx+4@L2I}XP+L?4!k*xOqgz0%@xSmLMqGZ~%EGMqz9Hwd)t5?u0%dY6;0Z#Yn z6Fyqxyw5elo9j?kXglWuD$1WS_xYfltGJo8LfWxf^0)d~X3f-H|Mg#pf%;jdNtRak zS*9UNv*Q9s%O10ZYth86E6T9^_L~v2ien|5Pa1vq_4(35G_miji&jW_f6B1jol~(* z!~0`t_4CeuVOOrNGKqoud8bL1R`+?QAxnD)DebUvDGi?yX-BMXiho#f8eU9EY4r=5 z_5J%_i-G!y=X+#nglRUhpvm$$5j`#afu>!$)r4{BlX^O4x}-<;@;u1l+Mi^K6I!M- zyLMutJ6-d)%vDA%z|^OmbiOM)``40keZ}iBP(SJX+t`_%F?J@hKjWZfXXT3gPYRrF z#9(cUkCy zx8Q1O;IR1yMgNbYo?~PEx(g>Kdde)TS#5fBez7ejqw}Z?=fBRR33xfm&mrUdlH)EY^K_sj=SjQv0i6 z@w+sdtkGP*S&T5t!($$m_FL0P8pU5QZn+~Wdos85QcwieMCb;@y|v_ORR+X*)5Tg- zdws@YOeKdYih(W)q{2o=RBj~{$<^LPK5J!?#1 z%k0ieX9Q<27%z5d+xg(Jl!q?!gOfdY`_#Ef?VVTLjJkR{Q8~U_V31P;6CGQ==QH1# znfSmw9bd+N3*MzVbstC)wbgNc;TXZ@?H^))etuy~uUx(lH@{U;gwr*F-4_p}@x$6q zSvV^)Y|+aGgGJ*6z1ALF6g_#tiN)Ps`JeGXOJ}q=e#O4?2L^Tdk2VcfVa#;Q*)UGl zd2>Iz=3HUQid(;)Oq}+yNVa>a_4${LK8QcHmve3L=QCDtQpdVoO5QfV{fzV>O9W#F zA+$y$zyIsdnavHV^D)C{(>OpRa(D5pCO=Jtm)dN3h26ywts+~JTV5ADxLXYAv|C=e zo(>&{?Sow&v>vVI-Nl3#pW@#NPK2c~PdSb~{k4b&` z{{BPKVh{Op-8!6Gk~RC>hMfg>SlpA-HcVewIU={qs{5ZMK56-4`KDEyPJdK%|H%4l zd%QZHIDKo^-BYR6CHc~f*m+s&WP+%|dRn(v#eKVVmu zI63I|A=#IUa@~p;anr9{C>Zi{UPz<)A12tnT3XAge&KK=R0$45#= zKl9qj*uQL`JfGS56F`lw%W%JjwPFb9j51I>ii3M6c+1lM7zlGKABK%x@%$Y>6Gy+imtBubT3A&+S;6ybj%{DdNzx=1OBkxPoy zO0g`2pI($Lljd}klw>OMCGwbXNkmjs%iQLJ!bQy^A_hfxr#8-!DVxc~0JTt@BWYDb zuHH3#L&&Eu1NAf(<9(EJV1i*OJ4y5DnDIn2J-1=fqJDY zB`S$rO}Jf1Rzmj}u2AOdNI9a`9WE?;PC=sg(kP;h7po-i17uGY z%Fr)wfCDjc3omU#v0|MamqBZ#%s0rllFu5XLJMvP?w}sY;qHl}Xhl zK%*qp@O@!Zipj6O$qaxVYYuuU2Bwmj1j83F5Z_!R-(-v0gQ#^1(XjJ}l&6>Z5OaOMo434mQc}Qh_9sm5KuLt+OImBGcs(Y>5KQNAvAz1^IO~ zmtP!E=rFMwP*hMLmgky>%a61|VRcW{gpGoA!~8&Em?sDMftf($@kMI2LY|>6kx6(? z7HDn-vdI)f7gA@I6iRrGO!R97;!r%SglEUX@0LBpvLc9XiRNkyqg!DBoJ^&3@L(Wt zo+BHj8zkr8cQQFYn1cdL6b!Sk1cgkY3=iW6Tbqv-CgKO%n2x5aB0t;~g__6|q@bb# z=pN}}Ii_1YoDpd8jbTH3wlLM6#IQ$=vqnJhgY8TgOk2%xo|iT1P=Q=Bns}IWFfpR=Tx}2soT6lkv-JYq zY>|ZqIdoGDPm~Oj%B7e&0%Np89V?MlpHz9Sq?qSnkK;H2-ir$4deMBNt)c$SYp%b3 z%^_=yLmAK30a+s^D-Fgtp0gv)%QjVodzh-dLZ#+8a&bvH5S=K1Z*v>SC&WxXFcv2& zhRaE^<=HwR8#)IsXLv>~iBt^Sgpy))XNkPXH_R3wH?0}6Ui_qDo|_B0gApc?0ak}e zsIfz62XGqI3j*#`Tyb|`V`|RrBInt!xpN8e=gFC6N zOFH@DE@(qmh-eunKisFOUQdSb(11#01BJ__D8+$~zJd(mK_tc**!kmEx*yxug1|*Q zy8twiPQ!Bu#4lQSwgU8~0xVP2fNe)SOm|hA?k0~29Av|(zU#pAM9!# zP*?;%$jyAIqWHn?wEz~*4{Bf@SWDlQ_RvkjYwjlGct^7h%mbj$@a!5Ru#K=J#$Df* z4s`{C`!KL=o?R0J3JDSnKhgt+P3=6_U;rcq5^=UnQjO`ibA-%Iii!G6-zX5@R$NFQ zQ8NwJi?=WTRTB!ku_&VB3zfH7Udxb4x*w^-rBkDfV4<&hQR+D z1*nA!01B(QM7pwI>}N{VGKp^sSM%xgIXtv>9JsLKc?prLapunp3dNuN^ixseLZVnL z#-)c>-%vNmxUta!>t=AmZW0wSi%{`=MaT^ycU>I@CKO}VKd`-2uI4#}AwS@6Sis7Z z7V?6ctz+Mmd6#T741Q&C-dV);V2%4Q4(Yd z74_Y&1$qF27a^1LgS~3e*CYAOyiwyC`wcOtkQ5Zc5GnC(?Or#^!HH?gagIhyE0C?; z?1V4$K}~ARJVmJ}D$JyFZ_@yBk22bNR3<7)L?cl|q^7fXZ;2brk?bIuO0iruNTDp? zH}*wAH5NgedkYWqM62KZsEmCZdqTQEqooGMm=7auXR%xilC*D_7sNCpz;uB*rA%Bx z3Wz-0R%i!JKn|_3Y{~8dYB-q6@@(6nWG$V=fY3+M96!ttH8W9RnoqZvh;t=My5jtB zo=It1M~a4Nc(!fP*b0iu9owNvdcp}`#77}!NOR_vQl#t za@;mB3DD*s3N%?HT@{H$q^!wn5R1DaSNCyXvP>ZcmJo*uDiNES?(y8?aWqH0Xt>FF z`~)2AStU45MK=J?D-lO<(ThNH0-k$PRgjoL@Pz`C6{ex;m)|WJLvf%#4J5b-kC%c& zJq$zRWO(|RnI~28+}azaBJ1pzibES{Q^7;NUR{DZ;Lm>A&uNn3?G;Mt2xtPa48|v- zm-1{oV#Kj<jgP3%LM2Q=n5SF?l z7wx#6;scQ4jItyuKFvsJWNl^@Kc7v`Bb9JrL;B+{jYJ zE0mbQ`xlag9+-o%7C+$Y8QB z$;H|8Q=6cqw}y}^7h~0;gn*RX6ve+aBrQJptwK;#-N6t_Mccv9Fywge8}1K8)2wD9 ztSx~Li1GHg6EQl&Vs6dMm90$be1A7L+O+GqyjoVYMG~27q$uwRpr3a zs8}T|&@K(;C<;P{OXY)#Lz|04QK7}Kgb`Y()Gg~UL1D*4EacjXQ5;eiC@f@2Cv9mf zQ{Z8ZSeC8*QYvtb&Xy{?WcfZ8HUU}}8?kos{LX8c0Iwfc2agnr-`6@O0MByP0jI~S z_qTir8RWVeWB~jEuS34iRm&=w=q8`F$wU{s=A}{a(~b}(bAdAh*~Kf1fMQfaOvmji zSaw0+S{{Mko%##5W&l~@zhG+%Jdq`yn8=ZO0y?LjEU|C`f5FyPc>E%s*eH;CvO(B2 zJ^pHoU?CL#S|B!R!6>L~fvh0Z1KlD(HUx3Rse$%8ic057Y4zfky&QuuxG2Uk!N( zEfABj=$QD9v1ueWAE6`o=qIReL-d?_YJ`%9l3|U}0_v#=dPF@nMeUX3*AVm-@zeq} z1n7;4UqgR{I$&SP@Wz54zK2lHcp^ymQ= zD7QlBtYLz-+KSCYlhI9$l?@Bsv|wP%7M3pjx<jCadZh%oILsOV5}=$gsN4$cR8>NrBqv{z zE3kq1naUzb@5;IWv!hXXNb?^+A!Pa=L7}$RY*eMz1eWdeF@J+-@;)%rrYp*xDe=PI#=2(b(D|<~87|Hj6YYJV!$s7V*wrq+v9H7dv57 zf|RUm-e@Sg6|l=RjOP0)f%r8@z=jp3uzi)b_K5i%rfIkcY#wWY5$S<33!EH~EvZ-` z=9Tj*1nfN;hG<`gb^$6drn0UNZ^0G`DJE-vtJ!sZh4B3d&_ zuBpwdh(4r2P{&bFMW;#oVTB7sP~xnI>E(M_Qedn=Xd$YB(l_#bK}4P~F-NMPs$EK@)8znghTK zBHd6Zo>mJfWtfnjlHr=ut8Io#Cf7=XM%<)@72}3l)DadbD=L&an6AKkV(pL})=1D5 z!|VbVHrNgE4KgsIQ_?~5AtAZyL!$GeAqw44BXbbxG&;zza6dV=ppsTM(ZJZCgs@OP z_-ZAvLd-1%&JFMsozSMyG-`iP!_H7ECF-0!peFkhdT%syCAliaV`-umIC>CkrE0NM zF3H7&2=okuNYFF%9ij^+l;p@H_#0?d!)F6{FT@swgyB9gw1Q&O0zYr$ksjAAb09qh zph}1rq@feJ-O)H!`2wN1FA+TnLkhG;BP=j~X4(1>>|WsEYrG$s9|r^;ekPI<4>4gul+7o4o|f5Iv7iA5 z0f!L?+>js1n5s0XFjYm^(MWKAvE=xZ11hU#Xkl)ssVQik#42?%)=hxr8D&Lc2-;34 zA_jhHz^BC*XodG!5o>>BnJkv6B>z}V?6razNl#X65LeJh4JqxwIHavK|B;5Qbh!qi z!rH%p9e^03c@^wH{pJ(c2oTYJF&bz`8MI& z=>;|w*aac0%;Acj;u2h0QsyAowx5PxIMk-JrbF<^sVmMU;BqXa8|U>t9XI_+U#5XN z(=rVq%uw=)fYSh3#OKbdpxCm&{*{Iu2Fw)LDTovHo;Xu1UWjIEd`{qUTjuS>3|Y6U9f_CnzDp$4jUCrxM1=q=V%JSYDudcR(=Ogokzx z`yiFd%Y)Ycn@ywR*jCP1sy?gVMuze^B^{C!djn)Rm~s$djyi(ZhHIE~aA=MO z^kI~tHQ_dJOH~=+Qw9l)vMK%gI~l3JbM5M1i-H?vU~f@!nl0&<+~r+L4wg8!4T;gl z%B2ysZq>ORtU@9N!F8>i@%JjEg+C*Z{X@0v5Hu#$iObEfh*m}j2?Ts|oEEto0o}k5 zG^S+(j*OY20cTlD@I_dh#q0qz5$whUo7Rig0F(Lb3P-Bn=?lVCGEil(o9HE@r=T!F zaV9WfgAIXPZ=RwR9Sl%$(+s3|5UXkjNuTio5@^P2ZZb(v9;?nQYn)6P zm%!^TWdp?-ld|7Mo(?DV}TB|Sk6B7V(zN{6- z>neeSX(f;*Tzgx*9-xB#C?I6eLrxQ}9#zm%2bfG6&c3zGnx@X$iy5^LDTv7cC5~_@ z(c_;KGxX`UZUO_Ie}Ni~5E$?X25tHOS77io!g#H#GhVQgBgv&M0s|IfL0V{z1qPbY z)hI7u;Q~iwG5-~V7goJui(f&SznV&xxjFX_FXNTwwc*MA6ew+k_KD(J-GJ2eJ(T9wbnpT@Z={`N5K0?jhJw36;76M6 zU{uS#OHCWtq?xMO^4zB4hcv0NiUt;DW`X`i0gY&0d!Xc8QlT^l9Qu1rs$Bzhu7RGH zQtbwYp*|KOgf+Z`YWF?1ZS%KoTdVty6*H|(^ z7 zXh^iqm%yNN1hONt!iI-B?1k%Nk7*8jQCjTzxFL5v>|vmPJLXuR7pF0&Pjk8&rEJi| zy)D)VV@eujq|l0WVKxDz3Q|uPb#*4015E5m`>9-sobLPvS~8t3%-zoz{aO(Nke{Zi zeKXcAflau8(*jwv6m`WaC{i(Jq%d3uZD9!0qM8drXiB_{3O)imKOKuE$Jmc(h2T5q zEAaF)LFr^p8#ID0EcDiTbeiG^CW@7`9vzSH0yjS$YtoX5Hp@;dl>AQQQe%EvR;bOd zBMT+HZGISHVYd14f&6h*4@`=k2Q~1^OT;> zLLJ_g478M99ly@LRXKbuR=M=?TD^mGW}%d~Eh)Lh#h{pkDvL7Ra3_>3o51XzT&k{7 zjube!Ar8HSjVA=`)f(o;N&>`E=;rJr8b-tt(1!d>+}Y7Od4}YU*h*VFIKxE49o9gr zO+Z*27@k2JNa))@(kDzz8oXOMTN0d{-GV4k&2?zBo=Lk{@CKx8N5Ir8Se>P2{ox_ucqWS1V~JJN2y$L3V8f0U-MZ|% z%I98sTb~R~0myY0S~SwFBX}Bb9B6e~JP)9}B4DA*5T;fbHxRpO0b8f0vcoG79?Uz2DjL>)Ki0d#W_*ndMT zGg8JaUWT)HQ#Nbb**#dCK@yna?|`1gYlS=sfg0QBkbW6dcs`BoAe1owv2Kl+B4Nv} z8oX|ojHgL$C|QKq%pw^MhV!uEX0w2>HhS>@)aUbIHnXHM@C(g${zIq)HaZf-AU`q} zgI#BOdCsfA8Q^(X!*JwZV_dwo1+Vz&+YQ;A(6DegSZ8$Ipy~Kl+#VLz^L0uE3{9Ax zmU6XHVDqDfl?E0mc%cB7uu(V)sIi1ZSF2h?+Y=hP4+^?%&~$naWhC-3QOL&OD6qyt zl8YZyDe09Ef&Nrekg-A2`8^bq1a6|7!QqHsV>zKKV>*QOSfW!KmN0#T=Iw+K!^Q^4 z)r(h!bakYGjg6|2E+%v90~%&n7!bd}`Xv2iK&JZG)wjSS% z2P`}^I;j{_SOcUj?hLWscY~(;do4A= z*x$CysdBXfxRE}}@gkw)aSbeC-NQl+$7NsCTaodWcj3t4utrov`H4Peq6QHZ zchE!lKQw2kQim3YHDNW>f$SD0DnT~`REBPbe`?}Tr52HgHK8@s0{2N1b)cscdJXZ< zOe1tP09$ZElTBHwjs^98gIOANivzVP$gBxXxMWoYYny~Vda4h@L5bM zot`y~-X=X_RMn~mY{C&snxnwh3idy0*xlt)>|F`~Z=e9ft^oK~BNZ=~T zQjOiB;k2MVC$y@B0ltaC(lZ~Ug|=;{Zz4tPM$qL8dhYoDw_No!O9ZL5tJ zuZ@Ro#bEHsHySNL8_nAdTy|n5rPf)K(FBRw1a5BN|A}&rVl--!HYzSEvDT#*@2!nP z$knH+cuD>nGt(k9MVkq>?I3ETb0VczH(fKd*QThsxl*<9YS|7QvYzWg5F@+o_0t@X&DTtU%)w_u?T}1fIjVZ($)wQ!VJh$lafi!K7fo=$P5@2Uy zRXv5hk6f|g5sWP4Ry5D5i$=skQxIkQ&Bxm&JayjKu$YEdg=mk}(cnCRiW)#hrChHY z^K=T4fkp{aRWCBKGpQ29OOy1j4u}NJO+@l0BT*jc2p4U7u>f~OEO#=N0|`nm0#uWT z0RG@{9o%WD-f)E#^0TBO(v{WeDXT@bqN4heFfkV4GT#6?7H&6eXM&Aft5wRj3TPu6$)NzW3j<;& zjVE%#{@pSP;lu(EVtPt*)p^8_9RcQDL^;WvOyd=oVAMoxqvOpoQ*Aua5j#AVDxfd}DsP!o6pZYMy1s#0P~ z4kdfNchz2R+`WnZQZXbkXcx*rgYcH(U8GJHGX1Fg1Hz#0HYc1_W*$!el750!y zhSTz|eaF-Ba}X6A0jJ(o7tSusZWlb7jItou;kk310zq zvy&%?5i7j$;vZ0ho=*>gFtq5atFgI<38wh=rYwA|k4-~1^Y(@;gt@P01i0I$cr78z z8F&yeGy%|GTh;agJgFg;!H7wXT?uRwmga(?YmA1lqXvJz9HSVn>5+N4WkDc5KRL6p7@d3$~!( zE#8!ON^F5e?4HNQvW7WevDfGh-*?Fj4;likU9kb;v<9c|V#P@`f}zE!ar|N1JbI7w z|5$};`-D8Hm%YhZtFT;{I3{4;(?xE{UBETjhn~dm=$t& zm(~`y1~ElnUUD`~Gw_L&m-KC22`_L4yYFf#2Wuq`j>uTUSH-CYHl@V?!5bpG zJE5^^!mTA~z#stxMT^COzkuxdi$*Jtyp1@AeI3=tRgJqF;?jFXX!pXH3mJ7vp&ht& z`yJ(W+rpjrsq<3IL;Isn^Bl}ED?d7DW+&+e_UxW7-dd@{m zk|-yBbQoc-3pVnUvtz=;HQs3huBHW?9>^jLtgHl_p70Re6=nmyNLN+t-h@vBE2}<) zrwDx)FZxnD6cMNpCR((Y7VKh+%qgDmn+;S%*B-Q79^rk1wj_JYBoLtYQ_h=g3sz^gInBbcQNt=K-7m>7R zFgzFqsga+V@ z_d>|h{d9Xe8wJ-;E4^ZwMH9876RUFdTTCaYo8`d9cG`h#j+G)n%R0;6_q5TIRF;N= zvXo`G;}hpe`DfRnUw^}A;7eFJ=#L0Y4j>0HnDJ3cVZw8SicYWRPsA7rP@6N^FNoD2 zGt@$(M}G^aK~V+ovW1f_F{OMZ6v;Z=xJA&GaaSBu_W=4OyUC!C*FGf0CbxidKTQ+ z4FwwSX#b5fV!h5r$|HnE>=BH5q$w$0gQZ+3l6%N}D{RTZ4BYIiB?3ndvZhHCJh#zX zRGj^)j(Jvu*R*3A`usaWm1)9PmbSy`L=Jy9{u$8*nep=Xkf@keS1ZQIrV8iV{KCLG*#Lg~_byck5F)o8|l6qgxxfyf#E`)cu-~ z4)dO<+?ba(I!vF+U5pWNJ(U}5LH`#}Id)ge^Q~EKHm{MYxnI7EDie2c10TEOhIDg9 zuIs+^>dfSCD71E8x*^9jk6!b1_%8d>wcOTV!#AO&bn`VPt(q^e*)i!|MhALKs$N_d z-|8}?`NIC^)Tul}lpfgD0^}8PY}D6wK%TYIcEI*#owkEk zn(3`Z*GbC(Iyl0~ExBV|U*|z>QHQMb^C127n_RH2l`kz=L!_q%9&X?d93MIl;%5dN zszx46Yi1fv*$iSOkN#4sQGJMU-L`g+H#TF{uD1&CDjZoVLQ5c5*Kww=uj&clll9cq zQb_7hB)JrDv+4(0@$*0AoQqWdcsn6CUA^@*F4_q;;bn?Gf`PUfFuAcqP_ya>+<8%c zq~4ai2ve`W&n4Kq(iJud)%Vq;9V7p1G)Of$y{e)0-lx{7?y8mlUaga5O+Lgh(%zRo ziqO8)NmcjXsgGjUgfQ&#FY4VjRbVqmYpR-XU7WC^A8HjuL7a7Ij-S)Y&cD}AG zMVmO_W1O@L_u4U7rm$B)x=grf=OY{4Aprz)hM6;AcR(M6U}$fR=e=;Yv4AZGA8FX*TsCpH;(h^coGh#Z zqm!bN;-Zox31?1Wcr_F69DoCg1=cy>4=N-q81{qb;wMpXrEsr?35OF493{v)FgZCn zEIB?oc^OQ<2Z7B2whPz$m>3D4lcNEUwB-H%pR@|%V@C4)YkkNiTM8RDn0N+?pQ6iNXckI8B;mgi0- z*L`XA75-tS@`w~pvu7i<7_rgMnvOS#Y4oCguf!{DIE_PK0G~OZ-XchhhjwKp{1Dr_9 zCi2Wg>IezK#{M^;)+!5%RgY=WKY|lli(%-ZmP8J;4jj%y6d^geWi+N-a=8qj`Cw3K zGX85_{AdwbWHP?1pOM-Tgi+0;msqGW9e;r?iwHUk(w`r3j?t7#ye&oP2ZTKvyf zvUX>RQEoqpz6$5mHz=4H0X$mrcj#hgmXcSm}+4n+h>`D>-QL0evrO}is6e?6J zRVa44NgaPk=qb7Q%-ZezSJgTs7=A@YR5kpnwmk=%nL#%u%*Mdgn1TN@q8H;nPH8}^ zY~dkKI>m|^oe__A$8*!hw5m_L+D>W`lVrr{Kf>x8qA3kl6K);T;_a6#Vl%awEz^dE zRW@@qtaybiH-L0os@-_4-B=wgFjED>;EdcXUc*jjgIu-1Lz zL2N@I%_?w$Ok`bm~dqM62f_ae$&>}iu&=4@9-j98`slw zj>d&NTallsP{{bC20(?4xeQSXZs%Z3BaS|s3RFVbgha2`0K>AmsXH9^I=CMLs&M_E zFj54s1g)E(WiOAKNSEA7S`z`#%3Xu~{aQ+Jb1{Ujqbfq=BU*;uQ3f8gbe**73BLGc=rxS>L67U4M)1Ep}8w&wwO@#wftH-XcSx(b;2ry0i7*VT1apMoCD4V4pWcM z=n&5UK?ncY!EacEP$Uc&g@?7oA(lu6*UbdX#U>xD!ZE;MFjB)k zuzLn7g=aXa3k9ZhPfdjTEO_VO`0+ADHoW6M0LADD$I@HlEMEnMgAZ&X_XhAvh{t3c z1UBu&JBEj&!a?s;DQ&2`75W^-z#;Xk&{E`pHo(;eIWeBYwGE>Q!v!Ghe}eQh%t84N7N< z;0%>QxH_P<%%xB=x@;Je48TDcl+2QNE@g00Z}@HvZ%l;W@`*RF_(nZSk0Bqp{zhD{ z64!@tJ;8@4Xg}HlSYV(_#M?xVgUAEk{Lw+w7d0lXVZ^m1ag8Icsl>G_T(clod=6A89#-qH`)W&K;&v6L`{j1aMTQ*TcZJRO+dMD?TCiJH3JQYYhNNf z2knFBeByZ|It$O^P&r(uqFWZMQi56l6C`#&LNfsSKtI|)2E@jHm~QAl8}t?NXc$Je zk$#v2SrMT0!)#D*EqF|GTOdE;uMNm_MKVcSWd8JPVXjPudSo;gg^39LOHE18Kms0g zeie+LJ*1fI@B*3L-NoP~|9;GHEu-D1q${1*l8*5J`?2byrGJibM?}sG>-j zBf+o29JNA;;>9Wnl_jF@=|$NxX--E;Nv0xSB1iE>a7;S|PuLC4x|0@2gj8JU_=xl~ zovaiWNQNtv`EhFC2iZkxi8hI3kPONIl|peUm82kBRzi$Rx`=eJo}5zsBhbP`OL4wBs5%77#3dPU3U2jJ(42VuHu@nAny&f>s)=>qQQf)p9ozvG7KmK&wW&MRcOM&xP)>j^>GdX1PZ!IWa47tNu>ivB_x_( zEzOpKvjROLFy99;?RSJj-Hi4cL$#=Iun?M+=piti4Gl%TP!5v7zg*yNJy9VV1ot@L zonjaX6-bT};hF;+ONcU29>gnvp9Z=Y#Pz8hi63jWELMe+cWuyVPWN9 z)g1B?AqVn?AMuZ$4e+8-IFxn}T%+JQ8?^vV9R+VWaAgTm6U5>(7!LSi!3oM0${AA2+ai!NU%zH@0Jl4hPf>srNCb ztX)l|w>DKNla}jX@$gdE&qGkPh2rFQprC(5Q!V0ml$!I*V$RIb=+GJ2z)V>lwNuZv zOz^h5QbU?Lm!7m-$^@~GECdtTx4Ps_n&iU+N%$sw*Oyd=BM^kLXFPHxp5upsn>Dq= z=RRWRz1d93q`qPn4KYm}t%f{mO|;P}WQ6TpM>_!N1hObe^l-(!QOaDxF`%i)q~|$Z z(Wsl9G^aDJK9@DkoSwC(qq9yvI)@k)&4`vce7LY%80n)8lT_V`r;G0FsH{sy`3X;d%yTKAtsvS@LsF_AWmB`zilH^3F<2Pz8M89v2ahOBlyOj5jf65pmfT zl0(ufjn)imU9@L_4wfK=KgQ#RJ&;v{OdhB#P))2d(pTiB8nmvQaYTIBKs{Fds80y~ zFg7vv@J5Z%%0h|2&&A2eH4g4&)L4R5ENR$-(2wzr>X40UP>e*U5-2K^tKlSxhGobz z13CidGG3nWLIlJ7G*#tw#3p6T0HdQR<_PhaU=bTUJvEE=lE}uE%>n`y5VaNKR4krE ztBV%4pMxHueQU={p%+V11llv=6A*t0W3ZMs&H`}W0tMmSGFmkYKnO-S3;ABeI3;in z`PBopf;26lXStbk33tvcLXAWD{yhKCp-TZLA2(D4{QALbLO8K!IG6*r%mikb_wFm} z2-Zwsmq|7G&|3B<$$etTIog9P2w(&2vaaU?UhK)NYh{l3$)Dwat+OM(Fa*9fEHMK= z@M&*{23#*jxq*=-%`M&tjA H)>z;tk$(M} literal 0 HcmV?d00001 diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.dll new file mode 100644 index 0000000000000000000000000000000000000000..a7d76cddb14737e22b3650941f1fc79eb8865922 GIT binary patch literal 426496 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�oix$$%!l&L`caa_u-+fL*?kQ->um=|n6d?fg$Ti6kCf8M>e4$W#k1kD z_@;-mzLlQk_Lj~Y7WlrMxLH$#MtPo7DiHc)4=Wk|x1LjTR}uwfG}#@@WCVPgfbB8+ z?23Iy%)aOa7SnUI;ir&wCr>*cFTDvf7AT)OL?q=he%#qkiQ%~x+~`oMkV2j<&tb9W zI(cSd4~ly}+7NrLmS3>uopPTbO|5T~Q@^(Eqe&79^AUBp z>}oOkCQ7(ziv8R!G$oM&Xz7-CTB>D#LnU9m-1WiHf%?m(rlXl+-{=(w2~aMBz^K$8n&8eYe8|&4ku?pcqAF~wT{y8u6#~Cg;qKyie-j& zZVOQ-I0M1^BdUd(QrbC1l+VofHMg>}4D(N+xmYK;PW{3xDBA@xct{^orDw|)vm9iU z?0IlpQXkAmDx)>|NTsu;w^hFi1*4_%l9;RqpszmW8^zl3Cj0S`8Z~R&ny1GXkWVG_j$$dOI3U7V6WHu zp+2wlL!1ddU2M zI@U6L7|dNk9KFX-=NrGrAg8~_Fhu3mdkmcW%{BC+PChIErGL%a*;;1%jAcTJ-!7$& zYk9@AQzh-U0|Vl`%kP_Zo8TdS5gOU4s3iI2CKOF>%~$~K;iy=Z%(Rpb(*pEi6Npk<}f z$hQisp|YYVtt=URtSqq`8JALAKpVY#%BuF!&oC&TOvgcaWizY6A>-Vg$I^p8I#dWT zzCovT2fra}N4obDeqL3o7#PmeW1L{_QRp{RK|r z^>7-mCs`6aK@`6)ig^y<<)a_qL=_T#Z>9djCVt-W?**SpB@qvT97~E<2>%gqI9jNl zK?ivfPE3L|?RRRS%&xl4BRwC8)@va82A$q^feapA1ex$+ex_sQ`^M{!O!5s`WB#=y zULf&8oVW{d5eu(D<`J0<*J%k{?pI~@yCZSmo4N4lMFu}IDY9&MGL)rUodOPfHS+KitpS_sk^|69%Yr#0h0KBg~7XZ(8<|I_hGcRcOXvf(1%Nb@c` zo`O1DyJD(h+PkoI7x4YwSkrK>ijH8ngVdJ0567<-ss1)L@bD1Ju(oUreu5SU)NZ! z`-VLckHE0HIVuZnL3lPf*KII;vsh-!MX%MeB6VVVl0^Dv4;W)jl>?c@s|dS|>PuC9 zH=jxqd#H&Wy$;-fdlq{k8Pa|XX>WWQeJXow1G~znH}}|LMswR9t~b}wfNP^ASz_1; z7j^p4V)R&0arj#Lhcnlo;CpDv@$_?oxjDMrs7BnZ6(nT?j=ugVs;-np{SMmoeqm0#md^@w0C^{#fev`)HXYIt0G{P6og&*#Tvz4A&E2i zhwD`wOs$xDjt-PZ2dm>~EQ8v!%u$wwXoTO=AO&seFa>>olFB+#*`Oot2|!HMM$*3V zO$VmJ4PgSn7;C_$z*}`Gr#!7X!%dbrprhIh#D$ThBdQS@D2@)<2#!V11Mm%c6{2GF zc?~MqmTX*uAgvnYDVL~$R*Tq!onFz~R*90!uyGygiSb9<@vS0J--Z#EmiLiDJnZw3 zD>j5wzu-%q*v7L}zm}ASw7aoLQ%O3s;kZL9TYE@yCV4Jfe{5$tT4||mjGE!N<(%*? z-J(iq!sBB_mNpl6uanSp+r+NfMRITTm_={<(R4Vv361_*gZNy|eYNG5Rt{%gZId%|vZp^2sq`wIo}i@1 z9EkSXkzOaBrMEl0q_F>;E20g`aqWtDNkaWK3lH89HM`Y4n+i8=Y;O5haFJXSfZeg?%`PWX@b!u7$ea%L?``TXq z9gAK-=Tw_XeAnZvPUU^`W+-q+ct6#lI_8f-v3BE*@Yg`&3+uT)I;$6Hl-Kb#ALVrp zPHVJ+#G^3bI?3kY$tW#I=P3PiNOvElb;6}JdfV|E8@+X0r8!D>zgVdLe}w-3m&mkZ z>|TY;=IbzGWA`B%yQ!ze?E)D*WWv0su^WL8F?J7@hPsX2Lv-m{vKT~4K6Wz_*x0SF z7eBf1vHRe7?0$rJx+3A}Q1SFr#@6iu8N79Yv2Dy3p6^F?jQPVeto>&&z!(qvCm}LZ zDdJ(jf49TFZadnr|8xX*q2GyWv#^?t_OT4bmR8+scVDux4OL&SU=T#q`fI=QD1!}d zh?S1ruFUu<06n|zrgYUO?7}1Z#BwAv^R&DL`b76yM&Cg_8_i~9^9(&>u)c)$sp8KyM8+Gi=^0xnN$D9wb4EYW zGg4mZ8L@Yvo}o%x8br?++LbS>572s(REKb1RRPFJ&loO`E=JE7E-miRGZs@Rc|)Ky zY=k$ZU)$_HyK+$x5=~pcEQHN|qV~p!;BLp~xo6oPufx73}qE zCQ8G)8NZigyIp-e9h1F)jk?Z`)-wRH8^rILd=1+W^4mk#gME49$zHbZvzM)XSuwH$ zuZ3!bXZUpBRr*7mXmmWq57^GX-p|~;kUsw!%xy&^+P>3wEUH*t(W0JU`i?~((~_Le z&0mq(_rsYX#E?P!=Mrk-zx7?x3{P}O)@}&Mc&aTDowp#8An8aevz6%ABr9d}{3P}j ztg4u@DM)9D6;)#SsT=KZ49k_NGZrk2+Ibo~bund!Srox*$!tthkWQMzqM1JbQ2=1) zKYA77=TTS)jY%c!3DT-?7dFF_qy&k>S#cVsKG9CJkG@qxh4YCd5%ud@73jI3Ur{YL7OI0WLSe4+T7R3@;)WPf%4LUb;UV&_aklXG^b;~9j8r+B&X&Yi_V4bMSf zvC`=&QUHs|b7mrQ$YcDxBn@scQnAUub8bd#ZQuBOc>BG08*4lP&OPg7Y@;%E4*3lm zFc{ABqn-J6c9v2-^@t`!Y{u!k?U5wPR-9z-6!Ouz;I3(I-hX!Lb{>R^MdLe$B(gz? zXu~kxE<6t$W5efiuZ1`I1I~C#TpM1B*PX2;BU@_F4S-?Y0ARW%SvAl8|2!SNH5%JU zHtI8cY;N0lpPtRKUSr#x`xC4vQb4s2=|7M+7MR^3O z4pa`dUWuBG&R4BcjBGRxpxI9z>BSbzT}!`~?43S~RQ`xe>byg1V~PS@=8PmO)Z1C9 zJ%a+H8rJV);hl-N(TE1bT0UGx;z==GK;j-+J1~x=v8=W#<+0*rBus()cu~@$H#vP~ z%&ErgTt>Y9NxV+PyehcK>*NAn9})AaXuIcCq2kqICA>C0Enb_T=20kJ1oB?$yttPV zq_dZrL^>)1-SSX>c}Wwi9%Bj8iM4MUYk^#@Ym*DZZRXFC%RY!e=dcwV7s#&s%BEbl zQ-*Y9w$5`r-@m9W*dQ{!4|`K(%84CI+gG&ho&0#jTNK57L*tA`j2^FMNaGf0_Mtin z!;-t5pRvKnI|68D>8H-*tH0T&5HB0O7+Tl=l03H#uT5MTUI@YIzKN%rqqZg+T?C-E z!lN%`do|n-QE>AiT*H@f=O)N-4(TO)B+e%#;=J|U5+@^?Ald8XYmR8TA?3qf5=oGB zq+48>z|_~pq#tCjKZ-e|ne%HrL4aK2iF_!>IeGO>{EDwLLP2Je<(5vRehIL~H6#&l za9t;-X)7eKT^`>E(@MCnn>Lql{2a9gc75!a(=#ELjXof4!S!Oa!^~f)7yg(M zTbhnw`J<{B4&iS6@!l`<2vV#o{@ zMSSjB(nj5}Z~pLak`H&+#{65#wTh?4i%^Q6Uwai&RvrLaz0)r(X2Uz-Xfzq7GW@m&RYrTjYWMUw(LY%?u3N{g1q}35NG#PA~u{Q z|22y5ZBn!a7Gu5UOegtMVNUa4Rrl<0e#EwgRkfUb33IiCsf<~+pk%?j@()ik9B0?r zHcr?>Vq(54zecEaP(y~0YRI~NmAp!3h3E>vGLwEn2N|)g3a?mw(-?c*mESMnfbCw1 zwpCTV0jaM1CuREI)RkQMR640+A)2Zh+m=({ECy@WBo=nN(7l|OwF&0K$f^+S4N9(Z zs`CT8Cw5`CRkC870@d3F)uhT=FXhBzWdZ>J2N!x+*7$F5EyvG{}Kbct$K7P z;Wnfkl*2!&uRk=1{!TB0Ike<1k&fyyXOW#q0z#($)%jqRH6)2pU`UyR9BP;=r64DjQ{2tO-KEQjB?T4@G+8EZPv&OGQVX; zgug@3=5QrTq&&xv34egs1I>zwyk-e9Tt$rdmePxNj`jKy5VJ^@fa1dmI`Tnurlb1! zGd@nx(pO*Vy7)1f`g`orxlFrMwCQdHtANk~Lu-vXj-l zry-Wnz8S=uVKwXN_^!B$)T#NeC)?Xt*JPo*cX}C{jgrHto?kXW#LOSMl@+m{O7lA% zM~>RdgxMY2E)cR-%mm)1$p!1$@_!3`Qu}=6gZ4orV}w=?s>n!hIeHr&836kxQSM#E z3Ui-7XIB}hp2cmQ_feF6Nx5Y*F;jXAITomj!Jcf0K1Wn-kpk$8u2MD!*a_#RZ*g<% z*PBdd%fGpwyi-?-8~>tpy8+hr3P5an#684h4ec0&G>pto;s1bFos5p-{|Xu!dgn-F z>SX^0I)R90uJv_k5zj^bQ?K@KcJ1E5>~pfQF;X-I1;&tm@=ts}WApD$W&U}DTV+2} zg?cr~Y!}Gj;q$2M%(snT5Xz$6^(^mMO`Z$bXu=nVA{4ic|@| zO2DlKeJoVS*u2nG*Rq-O$uB!-r3F@YQ2A1+wp2c6J$eQt`m0#K+K%Ijto4i8%I1jL zkjzHEpPr4j>i!{_eNOjz=;;AR7az^yYj_Prkk|7iOrI-!6uwST8<-Q&Voh%;+q;Yg zAdHUqRDQQ1T5MKE+ez74>}>$2mn4Lnb369tbcYpnSfsAj!mKIL^slU<7RuKvc&evX?Aaz) zE$EpVci8N06t5e{jcFgj_W`4AQKxb{ltzm7c=lF>U>Fs`3Y&7P2UD|WOeM4uHT7cG zm9w*dCn$VA6`8_)0~woQ0MvK7f3{c!>zRoED%KqWvl+}Gm{NA^l=Kbx%9aySQ8n3V9%ML{;JA0~Pzd&hO+{p}8@rKV5S}bqvuQKo{VHRj^ zyd+wNuvqphXY;*wHZgh@6brpuH}@BE>%L*29yfqr=qZHHCeUEK^l`Yv+&h$WsMXaV zGYSvly$j>Uqw%WpPh}!o&KVm{xtUr%e2!;MGTAd-U-u12w~cNtdM*?ekX0tshqc7W zyLsy0?&8UYD`4M)vg3{C5tC_#q!lrxEH<7mzY{<&U+ygu%MKYF-SO5~LjyB$2` zJgY0wRIO^P#A5D^BEBw|dm-QO=ae{FL$>}Re2pWq`_Cn*IF8NN9wWK)7t9?+pcYRJ zuOYnPY9WL-fr=Re_q+s;pGEz+iZS3EYbzi|emcllZnbkx4}tdnl-n4GE)CC-=ZI3= z*-s0@8mm&iCm+33>9F_oGQP8Ct7_kj>#Af8H^_{Y?SWZa|2qM?S;}q9x#O5=U5+PVdT{ zMQhUP>vvjfJ>OS?W#?k)gG?^av&Npe_B_4FQE`GwTS)ghr{pU1^Ris{a>Xj@1niajpTu*nAn>|R*8*ui_9xmsN>O?FbMsuu~9nSJd&?}V79FI!ef}=ne z_6Q>T$-SUZ{|_}434)o{CIm57i|F5oyhifYn(#yU z_KH8NO4A1gS6f{kg=#UyOE4$e`RJA4?qq96K2M|4zq4mexqoM-Ftune+63#pL(@%l zCUe9QnVues_O4)ZJ4xN}6Wom#fE`TIb;bT0<)7H(fiIFL+{7RxJ?EwPrY`XB#Kd~q z+RK21uZ9oqAYU1T(8>oB{S8G7vU+cD(UK=NUM{rDlF*4bG<*$c4H2Logd~(-!)$?) z5e<87W2!%{6Y$C#D;An1_`c?0`lt+qfxxncDuALHz#ITX#Q^32V5mYd2Mat#*(hz%dXK=4w#CI{D77W!1l z{%01SS5;m?9OfPRgs-J)gty=t$q@1?57Ea%UY&&en}_HVzD_u=OhR7cA^Ld8YjLS# zQ#*S!=?}nf_Ex2imJy3Uf>?h5UMm*+T|bG}<)z>C@NBtv8SGkAT|{$hwmGy7{he?^ zriZihi*9qVO)RF(2s>l~nm^A`4X6Yic>dH)UP~yZuLEVRl4po=K~LkG`f%ih9y6!X zGXI?7Sm6mA%qi{`)ds<>@XY~0(G6e@0E%h=a{w^HsvhQ0msf|_+2HffivLYi;h zbq}tuN)?JTK_ij;CsOgl9eau!WLVcS+O$=AhTTzBxejDF^W4VAP=2T|)H~ESR2=FL zsd4StNe)~;kS-$~+ut%>X3uKYMwwCV6dnWZw~?W#bdyAU;4#_CspY97z4`>@sgT-f zx{dNTNDOpW&YA=(MtG&~d#NxMEj-Lduu733tr9Kxc241xP95e7cbe2);vn>X$3La@Q)DUIS1#i;AyQd z#i8S8MsFguHPs!SgwgYNhpdi;e+Ij)g*0<18B|DjgmmjSD;k@Rf90D9&g$PH3=hTi zB>Zoq1zqF$@EGpxaYguM_*k#KBwmH19Sku%Wka5e%ZF0NELNBL?L44ZmFl<0JY=oz z=zj6+Xx!5Q{O$|P-a~{6L!k2Uj4>Yg$wlVu2 zsh}^C3K~`{YO1qIM0s<;0o_ve?g%wiqtMYuYG!SJoUk`wjOdpviL^g?-v7 zOg1UF+%?Zrdr@L52_tt&)>*>wK4mB$?koDVwTiWfo-mZ(Ire@(Dt+8p(#Ifvbnl`c&h9AbDiIczT-#LZ(|B=<i(PpZTG~^S86HFAUYbaz2L)?;D6I^U7^90xxYbL zTk8a|@p_8#h*~Ao_~e(xk9H`{jjSga522m>`OfSj?pN&)J3% z9#l+_ba)?pa8J8A2Muie;%09tYg_CrvGvl;-obM8R2HF}Awgkp^DSzGZ{?>D&ak#Q z_0}MIE0Q9}zOC@7RNQcbq9P}i-6Q$3L{-XK$zLO7!r9q&JWg64jVzmwKB0sT0ncJ& zFIT)&Uoj9zvCzuYEioItf#3a1r|wwB?UmWwq5ZQT)y(#0=<{~g!9jK^$Q>HwrUIlc zUBdo&Ve8IjETq1q!F!14c5hRy*xKd|LS1Xi+Kr?s)&_H^ac&-sg^67Rm3Ia78t9`U z;d}8PjFZWh*Xh)Z2t;3D&3#>V3Gaeg#O&d(AW|@kv0#5Zj2Ca4PK!}q$F8!o)g*8L zZ>Y%Q0nyuGw;cV9jSjS6i~7%CRvgn=KsDekE@MGXZs)91(@tE^eQYiGQ{~@7W z>G7BFL_#NrOtHzT#u>IAGl!@zjvml)4;t%JC?@Y;Uqx6^Vc|K{MHlV5Q7(EkGhf*f zo@+shuw?!DvG@<->Yes9r~8;{D?;^nN1CUj@g0gwf!5yvo7)94c=%!lsqiL#Fa>LA zEsy)T9(+!T2!^Oi;SWFlmy~DmidlYKCGs|S^E7rmxJ`Q z}ksu3+zH`zL zGJV-?F>l&0If-jIH{5TC*zlf?YJbPtk=c+v9Sjs|`!R4sVww}hB2}v-NAa5*BG*ursu%Xw z&UafYqeCM@;cXDEJ-T<>07TeRVRH*3kJs^Qd#gH-(VnACXW90t0@~vBa#?D@evai+ zoJRLh|BjksdvQwEY>!W6f(=Q_oN}Q<#L;#VA06h>i&&d3H?7aKWh1e4n<8Xsth+T9 zuZ#0{66a`P=B{>ma__q-&`}=aZSt7}7&BO>sZEu7U8;CotmCDw8%@S9-Lj9lpv5?N_f@GGpLo<_){*;^7kDJLyi;4|$H|d>>f2E>gh0eYt zAf7w{nm~4r;l|H{*;zP^7cxr0N0umptDnme9eWZRi0n?-7Q6Su zJ@z)`3i_J*{v4c9AAd9Ly>Sf5vUjPEpRYq(OaQu}Q4IeN(dLf>YJ1!BWTgHcIsnKEFNCOXnsmqfI0ASuYguVp9}4GOlJm8McUgAq&2 z{LpFozmbhT4t8bzzMM3IoL$O|FXJ*Era-!p3$Y#@+EAa;qxp#UDbHZwZtZoq-U~^Y z*Y`f+;RthHKi)^2fNS<;4;J}EA?wGHIoX_>eanMIK1s;>i68M0^2Z-6^2tKhk0U=y zUWTh;E2k}2s%u*r-UjZa!Vc$Oz3-HMJavya-KV@V_Rd18u8bO%^wO!~=W z0xd;+aN@*_>93@djXp($ZpNe&`vEI6QzyBemGlT4SEr%D?DJ`Ew)fkkyk;QBIocZO z)SjA+=t;3)(dUlw^%r@F-;&JLr`1JP57a5B1BloVDQ7NbaaVq=THvSQE<{nUMxVj8 zhUf()gk_CC2cAH^+fh_R5|!^ zBE-Hgh`%@J%b=)6*nTct4KzL%{(P#VBB`;pM^Z!Vi1f$>k<{QiBB}ATQ&Pi9N3!|* zYPerzW664*G01Ky=2yL{aL(sXdfWStJb19_{s^<)G7M%9W?LeBAz9K|gFy~$hinY8 z>lhg<4ija(2d2EI2I2W+RWATvz}Jav4Z@c~k!KKMohy?GUm~fMr`FBhP3JLQ{{rQ! zQSpmfHsQO0`I^e=6!OF!mTU&y)&3lmU3(()xV6b#JKIn^57N;K^F?eiYqqCY=(aSe zQ;DSGtNNxdO(wP~m=DCE3-2uoXV3Q*6~pn^vuM6q&>hch!0k)9w9JYHb2rdVWdrVd zzOfBBIo$@_p=#7*;zl41{g|8%0BUvlWTZ1{{0k+v0mu9-LzBr=4`B_&NEy1>4(D{9 z6Ek1q1xl!5k<6r;Vw-U^1+*DQGeFBYnvregqM=MMu4(N^tw(vpHd@Sm%sA(4!dp}U zSjpLTzSLp!tqa0e0QGfSX5;e2t6s0~JQMghiZ!0&Dq1q9Wfb>EX1+*;ik)AQGu%X> z7++b*Df2GLijx%KmkDJF`RxqH9FbY0b>%zb%4jGTXTx)m;Ppo_#}DRq5M)lj^VE|$ z2wJPjWBn_H=)R0%1mRu$Qj+3=i=JQQQ@@QAqIdJ->v&0r-%kH)#7xo8Wu6ZGHKPA@ zLUd18F`T}W=VsM6+Q=94OAg{VymFn-UH?MZcALB31b`kUcpChEIEpFFHB)a{=~ZLw zB8P85rH#*1;B!Cm`E5ePr($&Q`5izlF%((G6?d%tu!czMHIAdZi4?L#TD?Yrl_?B# z-h^(fo+Ra@e)VKf+O5u);|%2I?*Z8q{d<$7whLtN=wsxRqe1Hsj+IOFam%_VD|fzp z!0n=Ckolbnt^1m^1TuJp@a<0F<`&Q``WwLhV8G<)lX zv}L%=<;T|-Dt1J8s_dU-^;bzFOKQ`#^Y`N2!RZd4HK#OOpU!H1=~C#jH;DRtACVWR zc4t{Pem_C8M@!|q3l}}4JtC10v1!5lX8yYhJ~s(wR^l&O#KCBR@1mHByD{wdOm{)ZY^y^*W*@sDgw*M_Kogm@QRljV?*s9py)L-%NSyd;g4ow;f*`Hs3K3y;r55!0 zAp8hlTdt6!HQ)4r$d)TUsi+Jw_9X$a>>Yb2AD~s88{R44y5Mq-^#pzvWNmoA`j1a3fO68gpS}57d%soD zjIRH3R$7O6iaR~7)?)QnF8ev2WX;{jd9kClfbT+{7ZjYo;YCJ{&T=hv=?f$p?-}V% zVIZ|u^o*PB=Ru(2&hv4OyYm8^OWpZ+oXgyKAE|Z@mQB38Ws{qH5vsU{UMBC0o8Cy?cQ(CGk(Vh< z9GTUE+~l=re~vpV??55(vNq>E@H6DNAkf*0o=N!lzwEsSKvT){IQ~ciflx#5iGUdC z0(M0}L{L!_RO})|MS)-f3L=Vnma})ydY)%Jd-v@1?7g17_ud=iKePK@5-^DJ@%#J# z$_LFWTV`ixXJ=<;XZIEI!56Blpet=yaQwvtvQyY@0X&ISic~Fu7DkU?5^)A2Jb1L- zam~XJZSjl@#=w){s6#uS#8Ghzn#ab_9u5d?ina+nzw0&xY16Ro@oWYy-tm`(pTS0BQvH2JL4{o%*5u1Pre8RfYEB$u2?0+No-9o@4;xqu|s~%!< z-$d|gM;NL{ z6AA^3jQS%V8W8;!rm$kIM;fsiLh*Dx6B3g@d&264g@A_xeFQs+Kq`X1KwrV=B9Iz{ zbFV}3m8W_A1z-7^S1_Ikqyo+BaC|k?yu$2RfPIC9JQ80G7(V+7b83M!(Llhyj>1>I zCHD$5ZGfzK9fPlinpc>A!z&|X^Nzz;3(YG`Wd+iVYR}^mPsCRbdmA?IBz*OJ zX10q~ALgh6slVnG=CA_T{h>Mp!+gPPcwyZQR)V_$j$8#(F)W{4i;cbjx#>3{1Hb?Z z!kBm=Ow$t|i1D^GH+2+%)`1AAU~L0E|wmQ=n+WGY_9n!?UU zC6oMyNo2M-zsIqt6)hU%^|ltph*})mpvn42$h5(VA)#?W6A6XWcKGffRC*V_XhH0 z_E-)m76jSPINOIIo%o1gh*op41d#!%AAka1H#kD3Jx^u@S#g5Pf^LK@i1Yw`ll;+e zKX9U@`oT<86HSi?qwg;e93V!BRRS>#DUH|*4Pw)D5F;qcz~18Pr^U1J z&&Bg4izjKj5_n=rX*}O+@C0Q|LqIK_tc`$;)b@-CBmVQYcTZz&qOc@ z;E6YI&LJ=(T~7~S{Mu7HFXE9@5)UX^)0mo~2_Dr;;6YO%Gs1R$%8I^1Fi0X#>K4tO z)fB);;%J$`5OVxU0Cj6ZI2yO62hezA?g1`NkMQ|-7*JL7;6gt*j6Ftq_ZtA7>i~GE z2LN)m(lD@W4BqJg_@D;>vYgV{uEf%drV4Zp47jT~C^~DpNJCH|?FxQ}2lS?sJ%hm* z<_vQ&Vn`Vg=tYkiV6G`(=7WvS2X&5o%%jKwyJrqi5{?ctvNo`WJw?zO-aOfJfQv_a zN-WzE19dPA;jm809D+M&x=bxN+m z4PilHK&=CS7oG9zMaqvu%2N+gx+o0-IL3Z)6eZAlS(IQ8EQb^LQXo=rOMsf|V#Nm8 z>%t4vj~6`z(%8?J;^ki+TCf{MixzG&C&Y$BrG*-_gcL2|*J#n85@^91v_5iiX!)>c zdFY{5i6-=IW$YJAi3QFVELO1hUV{~FLGZKqidbK@p|25bK+q~)0f9A!z?r=KNnqo} zV~!i5S5^LGcmuVXd&Nk2g&N_UXeAKb7x-IMA1u|dd|QgmVXrhW9bH;8cyvdS)X{{MgNJIW$T7e!2?2QdJ4)4&8O<0*kYr|y) zkl#o(5UxIDz^*_RDEas(NE4=V~|cjO9yCv5)E@;o?nE{i^$iKJrEhAV1$I}EKJo|KzE2TBrs}es1pj% z;KXdyRXX6gr1PfDoJ>{)8+z(SQJA zBLzK*@yBtCb&JTy1b)G6mJpcv&V#-Q%`Gt^A6UUpZ{W!YmYUvfEL7|VO@f835ihU+ z-kgY)DLQgQz>I?O0%&rfLkbAT@6x-gMbm7eFO*1hNFAQ62TXhNk7vU??vNlpizo7GIhm1foqjuJ7jR1 z2ku)0-)saIfXQLEfdy1K9qxdGAYFA86}xDjAS~6bfXWnJglBvD_%A#<(8o*gsA;JFpy$9$5w{4!%n-K-!laOF5rkPF*&>K{ zUOq;WErKLEAG5Rr7kybHKp>qbi^3Z{lBN}p#HQ0cEc&BL2J-R|3?xC|>C{DRE^PQh zPcpcnCmGx%AphVdg&RpCYX+r&&MIIcfOhytq0*8h=H1u_o0P8Lhm4p>oV(EnR}zF+ zxD!Fm~(`PG0f z0LX`~N=|OU`&TEoV4&{FEg}c)Q7m|3$=64*yuqS=;3$@s00lboTg(Qu;m%^I20T`J z-PH{gZ8(CGD^~X`7Oaxu9l#)GvAliAqpdprX{oqebYGjs!)AtY{Pz`~o|q z9#E0ohts=O(6H|?&w#V%K_#aC=^db+#J0kh#Sw9XnaNVPKX|USg&>%slQ4~N0F_)9 z7CNWMKzk9T6~*nQbzJ*ouFht*iDItdX+?4Q5C8Tn-gX8U^;4H7!3wc z#Y%XDGh0cJJ$d7H0?Arq#c}M927F-rhj~dUc=w>%AUa`3SUW7#6YSQHfCxtJipO}P z!HQfEA|M2xKoA|wajt_tRoMtr`*}AooZ7*Nz*8Imutwx$GHBNrY!O)!T>Y($6krD9 z2oJp%7WD{9CFl)Pcie_!SKxqsMQ0*rkF0?cF?|s@5yNm!uG)iM0uw8!GiKABi&3r8 zOYG&`4lFhdbJT!*(Ue&Y$}7H4;lmW{3|#nxg;X5@ANblLq@tTk;IR9~^wnI|9LR_kR6FtdhD6+k>TL`Yt0^??$MwVX{{$9=JVO^nH@L^#Q# zV2zCw3S49O^x7Cc~V2OuWCp`>|stq@EZ#Sf#0~M*Wrg26r_^q zPL6`dA*2d^cacyJ_=nWf655Dxa-A^jH1R%m${n|>}i|uJ8 zO&}O6>0d=`&4Pt4Kus*3p&LQHNh?h}enJau@Usv9nG+-No))J)LPi zy~WNfXlJ&b639X7DRD>wKu9p({uB?XSgJ`ZmeOiUDGs!j^o1?nH;VQon@Y5S!cz@ls8DfX}@+k?cF=oil*Kw*NN!9%ka{0Ux(F2`q_pu2~BLq_gKj&`jh8iZ`8@etBp z0Gp_(Xb@5=gJ>|OL=L7z*2o1Rd^xU6xj+l0wiT*ed!lj;KA^rfzV!%E8%udif@6(>uq#HN%mp%e$PSgaK!VoDitiSp?i z?PU5%<8N;h0AJeh7YEF=fv>$$mb0d`2>{vzhy%p_K%1+zmI43hu!@Zhr45J}4Q=cw zUJhahwpTdV*o*CqK$Z|$3xOySZ7FT&n=Wl~#Wp%!6GRBtHEn3u^b*^!aBWzgae^EK zrV~IV9g`&u$P7(V=)PnyVS6!KJbn8XX#(wSf`BxE;-Hx}E&w05=80V>X@Y<>LE<2B zAR)~J>_FOHWaCOn<0f|1kj9;oMk_F+HWIPBkyt`WBO%q$AqGT{in-Cg)E^|ARytP# z*+9ox2qx0mTkOi#7d{X|x|0V)5eOb2wcJV&$5ZU7Ni6oH#POsE(59g;kPC-={d`l+ z-X<7`Q%xK^)5Z%@65@DK;sgV6g2ln&YDgU4zO2xzOaa+|zVwyQt72;-6ML8LwjuU5 zp}tkbA>z=PHdV!yX&F_-RjD|v0;RwUWDJF;P;sa@1j;)lmTAN!F%yEML%W|8dN!;x z!&*8q$U*mI#UdK2?cg^Ze(RteQ8dD3}0Lw$dp;+k+INAd-Lp!*uBsVA_ThSOuEG=&Kaq<_;-- z)ua%9l>+28AWgPZl|~xmchBmKrtMHH^o@EI*f&r2Fb@3?TzP) zEmh+n%txoS@Vr(%1h(cZmSAob>Do&f*zrf~t)db(Q4B^is#rwrsJbP<;j8*eFx3yh z^lJccEUP{MW|fJB6-F-d2NLtzw2tQbOE9M;*pj(c zBow|J6eT`63K#d(+xk%3p7x1MlS;kP`7E4{Vl;3z+U11cr(MF!61e#|dseoq73q_k&Fsc;_pMQ0;-e@O)V@KEYj$ckrgcYk-bR)Qm@8L7RuZ8w!s6J_3wlE>gY>11&>ISSN%X)SuQznB-q5>xLk+9xgX^g` zw6)&QL3%@1=?y)mH`Fj#9}bQ5h7Q#mx?OMR)smsCoyLP}*OQtj9Xkzf-h$KZ(JupS z0Lbg$_(S$?8AF2>xI&v#V>noH+{gKx>ErrEPJ`Y*az!fOijS)t9@D-bf1=A ziTzrJst7POll@wTbiWpYqDay!>>!9lYxEJ&4rG6Vf~_zGJiTEU2?FHEel0_~9}0#M z*bl|JAn5GZ!U`+QAQQVu3xpwV)^ZFV3gn~vvHbE`ifKrwZ@-q%Hx#y8!FVgmMwcfL z6$qN_*D@gl#nDixB`FMs=1?r;A*k+!ty@BhDvVZus7SLF`^Msdg2_@nF87sK6`)BYG_Rk3IRbqHT$0=*L7udjsSZ;0M0osg@ z`&96dGqC+&7E>WvWk=m46MmoIhrXA!-ogcpNd#&>0;zo)L+lIe;JMareCCmGuu(yX z48F`NDzJwqFe$;+FNEH68UXY9c|%$ZU5IZ54w%Y;fOZgFovu?5O(k1^4Q~Od3LG)1 zBT4ET2te>%F&o;X0A{DKH##406rd9e@LDXJflWNEt#;>r9Wl(H8% zN+Nrav+z0og1t|;|4Em>u&fgN1uieRTNC&TX##d<>LUZWG(3jSJ~ZA`=tTJsc@TfT zCdhz@+!cI4e6Fy2NozB_y0mB>BW1jzG(3qol;%m&dOAFbtV4K`HY?T}d6Lwh@MI=O zbV4SKBjhTgxdp=bQkjvA?lVP6{aOekMk; zYM9MeXe0|J`TZ{oDX$wqZ5Z@JgS>1iI6=xNCko}#GkRZ$FVJrc7(Yl$%YiaDP(mSv zuFZE#Hy<}XmcFBJW*or7KVJSa5a;N2f;Yt+;5%6jETAS_Yz%7^LV6fT$%qEB+(4vi z3mM@Bz=TC)$vvc-T%dIvbcl>M%VuP2!NHMro)iWvPBOQHcuh!i?o z^1~Y}P$P1_kC3iH0~5gb#$%c=ofgwGt9i_MCdkOZ3~5*LR1+LG=s8#oupg3&q1O_ z#x>;Z*H(;uqd>RPQUy8yrMii=3BeA(pu#m9_5hAzFz$%RXH87RhDqiCgOF|AwO+dF z8VD4&6=2PdaD>P=7_6q+^1xc5107qDw1*CKBY-ZV(Dy^5h(H+>QDqRmhQhT$7SnP! z*9JG31`^r^IM0lLG!Z~o&fz3TRtU?5epO|I;il*h7vhr->qA<7RyG8J@dLehBnj)d z0?YQY#n3mwq4pl$__A3*XqdCifg5U^m4MplT3_i3YFp`&# zw}KV;>_`%7H3hajOh9ai6y`=u>O_(fO#$C2!1Wlz%f}l9=*$8nngW5APf`Sd&^V+K#t~YPIHI?Tfey%jpeL}L zRe+qO(GyVr2DSkC1O$SaCaeIF2kp@P%!rQmRGtB3nmz}VRs0|Xxx?;jJ=sZ$XGYn0 z$M$dmc?e#a47i4Z%$pCLh%kqluZ=O`1z6mULM1~0-w3d0rOVxGB4a-|f(>hQ#U9L9 zke|-C%@~O<=QnRa`utaLT}r@3<>y>!_*cIHze)&&--<`@f`cnae%oR`SiVSocnl~F zOcd6K5Fp1Iswy(7Jpw|FWJ^H=`-40L?E*G=XnUBAz_%61T@?!Lg>M7M8+vKsC&!4p7Eh6jfk_4E zWJN;JYm2AoOGD8E%MrfpWz87N>Oj5CO|(aS*0zEItr;PSK>dqGff_5Sjk9M}9AqGa zw4n^XlP)T-0$}*LTUkAb@TSO#4F`a~qkwvYh1&CU-zB1?bVWWOLX%RYlDHJaIjn}4 zCI@+^Y1nbnD?F(kn;&b=WyJcY>lB6Wq^JT?6eguq(G*1-&~%C-?=+2WQJ5bZ2Yp#5 zK>hJg`5EkJC;I@C)BO^#=a3pk@fcX>>0kM>dIB;^yAa5v)Sn3?{a2a1Ak)D5K;n~H z_{BybgV~h5ph+}G$Av*U+&F|KQD0F+5BFkYh}IbuLGcwJvdD-9GKy?B!lGy{#1C^} zNacENnEGJwI)aXJ*>6Hf*soROawz4K%Z z0BN2g9IoJyR0Ynzjetj4BwT#q9AZ$v@eEx0pp61!4Z_0ya(XSp96$Vg2XHJo*DpOG zPn9jt2xui&DRPu4a+T((l{`6BuJn^;s8STl^t5h%(l&CXDov4DKQtf+|M^K9=A>um zDCPAti+y?dyg+zFgIawp8K3F!`}_t z_G;VYZR3W|+39|8;>8KC^X`1=RrI*^AH$v+?B4bw|KP{Bdu-PfZ5S$2-_CC6Y;XKn zy4L%sU#G<8fp_maM%!OD>3Dv|%`_1VpdbL4=Rg=Zp@G?I#4xZsh3N#(g)orp;WG?; z8jMMS`$Q1@br4T@t^{%5VaJ?@F#OvMzf5>XZx=Y$gJ}scU{=NWLbx0z?B3Z-Pxt_N z2K-b^AkzcxnebCGX-obZMrlB9 z%2ym?&^t#zeQdG-#>kF8vyjs4BN)UmoquKlUpHOK4`#GS$Zd9Y043qeCfR}8}iF3hF@gsoK zp=QlSyt&!hH3I6K(e4&GNGgAKzCPw;3?TiqZj<3jHTdGV9-!Ni)&@Z189j!A$O;0U-kgSW1lp8*3Cd^O_=Uiod4QsnZ~ zfVNrP10wn+rzRTc5&>A&rrv`Tq2?`Dk?H=k9Q8^`D>7SXLAy;K3 zr^xHXrKKnpDn<9~fVOFwsfvE8fP|j%^mKLIz8%*M0P$>_3ECN%>%LF5ZwRvfIiQJ-b z5>jqi5t%7H70QIPRC%JJg))ufC~bwjc#O2XL~h|Q*CH2fukvI2iq}Hu4lPqQqon4|#TCUY6XgKFnB|nq?tRBrGeK^#GMv8Zc*z z7-LqJ6v@ie=E;52dJyp_u{Ffy1M|e>ZaRT>Mhs8QShP~~i;{Ow z%S=N-s*;!snWn{zQTy1;RC%rh-1;DmxS=9FCnHlQnOiNGtuw*jrh_g8plGCSy2R83 zR_6JF<{+>o)*>v+G**RdrHWCgvL%+Lh^a9oCkVI&i=Z68a>{|BBTCUPGcqSTTahU- zH3I`KTY|GW8gp%;*c8~f^4#n=d1j7VHB*4>`)$ZN=^N!r>@1ikNHBRiP_?f-ftZBc z0#J>SeH#uIh;;-Y7M93TLL6CATL7|F2vZQBoZVAmCB|nHO^3pd`yE%aHF32;!q`Qn zDdo^J6q(8CI!$S6%gp2wTG}BS87C^!di22Y+0vegFTryT_|Ed2nIkh?&AnJS;fpX5 zlpl~D5>sd9OA#Z$PA(C4o{0H@o7sXQ(P#I24M%Awq#%JKl=5VWvljz7_4Qv# z<;oc4uA7VP+EK~b$!yPc3$%lRtLjBqt5IsKx+;mAH+oapYwOUZVJ`OGE-`7D*%FH? zj63v@MAUxLvLuydC|$}yL1J2!ImC5N4<7{Yq60oMJ2N6DTM+{a2rUEFw;+jQ$s`Ta z6)HB~%#V2i{g>zuQhO7|nx-Tgj65R?WRu*juKka-H)iJA+uEO5T*R2_=t5El5o1G3 zX{=P_WF>ON)N_DhYUm{{3r)oihB~>qa_j?;mX?%%6P3xCs_qJ9hSb`Wv7o6n#nf~x zpLuk<0at=WAc#*!7@wSq^31I&8qPiSVhduaHzbKm&P)cG=~m4dQkF9`v;Y+~JvomK zy%N(PW(U{C7S(Xn7Pf#nC1}PH(_kjLm=)rtAuybB&!NnHHeBj##@KVBF@~%xaFv(3 zn(OjH$w-N5b!JEr3(v9!Gg3$HOPwrWv|tq*(g`&nT`U;~N@A34CF2~d7@OD>MJCb^ zG$KtNCoyBE%|l}8I4W_diTrA%jqDPgu1JQyQj5tbW`wN%Cb6%L$t-n}A<-q$IvDI! zDmX&LVJ>m5iwRivLwvh%-9=(wuQW*PMN$WA5EyL5brH3zkI5~#s4k>WNhDzys!;)H zXheECC=-c2(^L|>1|@UR%DIPQsDlO;JoMHSKU-Ff6Gow(MjXc5YxD5(!?qH!bGJxNIDG|?ji^j^dR9N;(>n~Sg6T)yHF>8u0!*m>yh?_B;iy0BbrLuaf zMI19%M|m-8j;~b9ack@fv9_nmI>kz3>!eSw?Q%dhlxk@FmjmJpyhRIo|$;HT#_7a|VOVQwLnAiw{&F=3T% zg_35K*tBCVfZCQIPY1PJo=TKjhxRzKSw({kQb7acB(t+g>kf=_$&r=+riihPVruuy z&d#b67^q6=DbGk&1!QOpktvFdzCQ87v^nTN{r$F2$R25}&Cd1LA2E3X zh-ljqAgHZM^<$RKQed>|!uXo( z-P^>3`3omrkPANaZ6abKae@SIaIBPxDf6DZRRN6%rl;`dZDPj!f$|id%$a}5Q%ztd zZxajVD##uTw`A;4&cKru6GxtC3NbT`eZx3wW;S+xf-S*F=eY`0G}VK~3L%9t{7m2{ zf}bh;%;0AZKMVL-!cPo8YxrTf6;lPq853{JT?J~EM4w=ud7V6A&8t9NHv5niFu8f+ zN1mWA7X$E#(#AkTBaT*80NQxGkPh4rO@;zK7(@kp zuv7~8@Gjtkoln4rW)tv@@B&jrpn{MIuvYV70&XNUV18vTtA)_#VUq8`$Ea3nKG{~dpVjh);N-J(>iL? znNd{hkQ&^kj0Qj*0U-bj2no#@J{WO?E7g3koA_AS+Y&oMK*OGC>8VP2W`Y7%C{lfe z77QPz);?BZOHQ3ljZcR7Y+r#fe8Op+nkBOtQ_B*BVhLJrCbS0dUe&FbKvbIo*jYjV zrz>D(IRj5g{oJ+~3edLOCJn6mR!q$wghfXfg;ERC7I-1tj4?xXovRo!1|sWi#YjsO zphu_ILUN^$Y;_@V<#7-LtQc8&5V<^B$YAjNH9Vu3n+0&dgjS3}fNgOtF^C)>5jI1> zD>eUqG2_)_gE}fu-xypM#=ZxnVQ6+ zrj!QLJ6~W5J~9RAH`d5M6N*H!Dvm}h3;9@?=>+1+dl?-YY=t z|4;V{K3HPC#FEm34jpBJaGdE=#0@>V9hG!gI;Q<-&-xzb{-5VrQz?U8yj0h=c4o|? z!FCVRBr^M|ulA_KOe}(aF1CV2mTXvJ3DER!LqiY`)!1JCy`8y4_W%t_=%K^sgk8(; z9-wXsJ$15i-NQ!HJxc00$nC(BtRODQhbUq}L17gWFX3yd(3DnC%6ljM0d#Dk7s1QN z%11_}Vu|riJNqPkpIX1lRW2$MkX}|+jEK&BupMlR%h5@2Fodx~_>|Rbgw*U&ZfTF% z^nO0ytUw8qU%5aZu|PwEzaJ=-)(T~Lz+tQctxunF=UIhm&+}$b$0N$!Pizxeh1&!b zl*Sv>5fxTYbhQ&csI*@8RT(Ry9dM>H&|+A{8T1KO;RX5_FoYmJj4+QhhnJ-l1A}Ix zOf-q6>M)cM8Qx)JBST_~OgR}6Sxrm$k!F@!G0s|c4B*OUEk8QY^sCIAuGVyex>1Em z!4=9WYlIxuRT(ov4z%QINfDw;3O*%;Z^cOgDwQ!u3Rf$}UWXJ|?vIioW`jDi!ek&; zXpRPSI701Ba0_S68YfbxKtcoRFsyvhHUnTT9t@dW`qK~_bh?I6$mtK28 z1qqgxyo~)AUhSZks7DcP4n#DWYuXdlV-pzl>5S`}Ld?s;iZSM9VyICHSE>0MiwTIu zusq_g?S!;iXgt<%9*kV}pt*lFq6v(FlVM^^^fnGJ(1l@;s4!juq}D<|g3!0?1gj%r ziY=W$22i9qoJ!Tv%gUb-Y3=@~90T4gF&zogsBH;9!5pGb5e#kHrJrC*aRR2^I6V$z z@Xk&nDm)Z8>#QV}oSjmonUfG~#ewin`Uwv$$c+RZtV0yao{}&%a=(Q1`3~4PS);}d z=aP!R12ufZfnn_uW$46^1sGrl&{7h_I1%}Q_5ev{Ozt6S1WFmWRSji4zlj^2 zB(cbGGbS&ylR7l4xFG?tqcF=r&pVWneiJ=dB12|7sOG~HP^tuC6;~h-F#z~AR;Acd ztE!^G<14mA7B)Vh=GCgTpxDd!6#Gzu0d*19wfhm{pTLYYDGG3ANiRf)Mz#{}Q5(Q; zO)Q9bkK3SbTyZ8r{2OItW#_SVHeat6w$4mLPXXj(6rbLQ)wD6nsx@s4)@I0A9Z{?z zy73#-O)7?7Y$k{lY!So}TZI^%bh{bFPj*;M`&n7|as3Q2L>m%2Rpl^jwL#tNCtygs zTNyZ3J*=kvtt=ch{Y{sQfGme(!UlERPe79Gb!A{#<*=HH(z38*MJeJ)%n#H!$Klv= zgSzQYz>$d5ieea>nXLfHpi4!tMsOJZBr3*csz8_0!;dh=V&C@&VO%-!rSW_Hzg$Xq z9ad|GY&~`Uri}Or%>r_w95JC0V~|u2g5?N_)*I9<{zKkoQT(Qy(DXq4NR}rh+H6qA z{~Rp8Ehs7CU5sNyX&8K6U(^)PgYls?kK@`de(oz&?^C&U43pcQU z!ORcQ)Ylr<2FT=(k0^ojn_)J3mttO6Sq$|H!hbMzDg#+g?CM3@w1%!tl`Jo4%Z0g* zBg1cB3=>aoVZ_u$Q#v)Do`AUm50+f|6ydCyqd`S!SJ8Z^)BFG-1^nr-*b%PggR7qB z-|F_fnvAd(otax(fjJpH`84Jbn7wM!)z+j#<1&bY-g=YO(Ij)RBJPMfUUGUfz~Opq z`F2*|Ey()m=uKKrlN3=XVYq?zs;HTa8W&2FrM{*tBnz?G=-~996{ewSn5GakN|8de zj)*$NXu*37`Z(T;)D(*LNhq|mH{{PK zk}NoDNZwFWq{NDG`r5hjXOu`+Gr3B_iIFUWds;DWw8YZBnm?mdv~g-|Doz@kiWJu# zowWY0sFk3Bgxm5|3pdSCGm8gJ`i;F5kQiE!Ed0P%=Mb(QXLLveG$)DRSXfM?&zBrh z0i8%Hdzz}07dRw4G(j02(~!`RO~_SNJ6|Yit%9URY*IH0Q@_VFq=WC=k+LN; zU0MFqkP^?iL026PqPB3PGrL6r(wVU7IHGVWRmoH$HWhpk7)j^BrNVa8?{os7O-q5+ zV*W19S2)G5zY2_@sd5KS}O;N*1R1lT1d_SYFmZ7Ag2l>@Usy2Cdmb6g**?_>n%w7@>x zumXg5D0)nU?sF{nFh#JB6P5IzjvaKJeiJR(Y zShYdzm^d%HF=p%z9I|N&{SROVftPU$hF1;kIL7htP@^Sy=(c2pA%5iFM9`vI5i^UC zQ35)_qE$k#YdjzT90i=h`nMBDU|L=z*^q^XcvyQ6fwlK9u)6zM%`U+slc1d(SK=X( zV>ILWYQRRX_q>j!t1Ru|yPVK;WfbS`fr67$gv!%$gq#DIUT-N5O2yp2f`cd@l@R25 zL29&&a)xjLDiuaXiMTgF>*)l0bU%V2sx|fUX+z~1s9UU&!NeH&h zIxwg5RkdO~bve4C>R*LTPGB3*>^1m_x}#?9`3mF{U3Y|Okj8JHsC#Zjrd0eSz^PSo zFG~l;gku-*oagjDYZp!`a#9Ko%LirgxSHF^PVCGem^9v5#JgVdzee5~lqqikf&bIw zEzIUPMsl=*jShI8Q2?m&i*fT25$)hm7V+JVXy=&b)R&Xg!tWG_$y^M8<^G2LF~V#e5M>#bu~0H-fH5D{P7 zQX9=UUu1Sop`xsUrsw}bf9C&`M{wz=;=V~RFqC#~{%U9k&)uInv=cYp|ILPW!=F2} zgL(RYx1k+29HVQ#Z|R}k$I3>Gi*T$)PmgUYSCUk8nGUS%|Mv{z#3JNGEkfd06?cFe zIY2<3TFNf;wSGV*RxjE8e=xz~oVJNtAl0Y^WM7h$5k)4a^zH%Y_++MXGcwMkQ%RGS zwLo(T$OOv{wGg)=^8`2xB2mE(6<)SHJkcRFyJtjZDm}>p9rJKPM#^(55`n%5IdIJJ zvVi50<_a3XCHqfjf}x-Yl{E!~3jOCQN%fLb!0Mr;r+{Q(180Y!!Q6Igt$jj3d?bnO zSZ9`4YRQA{!A1eB_0rXNK=@YWhG%ZJ#U85ED4pyY3@FP%q8vAfQZC0+)PhJwda4J^ zwsoB;G|m#xjlrUE;Gs3diQz!nkYhn&YB4UNVs{6?Y&+70yg zzy}db7$$IlUuaO!f?~}sb#qg#CaA*YjCQOo%GR2rfi^+ujjh7=tQ(4U*ZQbpZda`Z zc2IY4fzDB?6iP2}n-|2u(V3&w0^Bf&+lR}wI#bgQYpX$bca3Fb1hwD1pyEZiM$LJ+ zRFJEk9jOYdpNXksz_-|lTS}wM3MUHSZchzA+1ZqYuH{X#;6|8&TZ{Wn=CGcmHe;D1 zIxSuPlexmwgzMZTc*5F>;|VVM|5c7aVb+W{{gMpFgz&OsqaqSxnm(O&z4w`T+XHXa z)~TZm5A-_lTeH+rZG4*dICZYwik+i&E;{qDVT4 zSr&Ko{K?>&HEdr-MC?42aXROzv$5Nb+>h_xTu~h_y7TVdqMBRzgLkc*)APpZP&bPa zPQzy?5)$r>vYfXj$!|upMVHS0)$yopd`sKc8NFHu46N@hT6F)WZT8*b$2aRvc2Img z(PdEBjd!&>wrF0b@#hoQ9;D;d?i?UUB{BRlP0;#vZu+Z@PV@JM|{py^qSf7-%_m`s@?aj(^-Sd!Wz1 zlDp&UA9UO9>;A6$7KL$}7LzUxo&Gm}`mN6+E{-#mRI6btNiY@79+Qh{vRyYNOJ4Ua+ zIEecYPFj2gKr=F*L+&!Qt=)?B*epL0!y z=3J~Auyyr6_o|=!xa`RupIIZ$_o^;C*~{$Sk<_*x^SwXJs=QL#ROEPe!jwnSp1T$f zdo??L_`-z0?0o(@x3&E=!GySF@eXG717u{atJR<+U5vDDWuxlSc5M2UxX8$i*cBr!MQ>~7 zZ*)AeC~oq@I5TI{@k&FlRBx`8p4R|oWcwncq(>VYa(!$$OevqZH(efDYC zh)wqo-YqD4c09}>t?4RN+xNSgKmOHij)mhyFO&1Ojj9Yp$P=Z2A1~hJW79wvTqqT+{#bg7=+cp43(keBX8X?I(2^ zK}2}WQG-?Y6PG{yt;S^8=ow9t=8nJXFu95U;)3Z-8?0_qW0JSQ{;q5Nx<6)o_%}|t z{M#kXdY<9r%J+7U_;~UD{=`3~B~1U=f1aTYljtN}#eZYf=WU@uwxt;pXgPn%oo*8* zHDlye7gsA>Dzx7k|NC#=N~_k3Z!=SpCbhG$Z#8z=!Cv`kYfhwFhr7=kwWOJW?6>^F zV}1W!)Sf?Yl%sS{|%DZNIt+NvE+BWJp;ei^n zQVS9tE1hm^$bT^QpH-unCC~W_yEc%fCF z-xsNKUiGitb3fnNZrzN(t_jt{-A24FytMe(xffA;BSzh}{r&Qk;XQ&^^17}cRJ&L1 zvR&1VwH?#jbl}G3#k{HAA`Kfkjp+rvsO8>!Aa(V~U-%$0lVl7>F)@9n28F^+m>nC} zNO%E{mGC|IJpL*KnPkPZQ^9GEd+=wFc`_#q0!wkZC|!daLW|T}k_7Rs({Zl^cQpg_?+AFF0U`HNm(xH&|zcXuG&@p8J;m~_H5g z?KFO0=7r1WRbO)cUU6GI#`eJA8#~^2?fAUXn)fHpym}S<^wNf=+bZ?*+AVFKyJpkC zjQ*d(0&7ps`LffY?LoIJ=NE&$+U17CxEPOrc6*cOp!c2Hx}HgY_eFS1JVqttD{h9~ zyxZ^fy||b2{u;jDBl6@E^_Gp(`hD3n{>|OIeO3L&wtQKA`$GSBBftE%v&pB+yVqYI zGjPL;6O$es8PUk{{J@TXuK2s==_xBlPVfl`X_*?lbL#HAJF<_Vj@4GqY3rHvw(FwY zq(vPq=k}~V?0xk1mL6*>KWrSj)b2^!HFM9^O}p=sH)2Bvb5Rq!yR&!jL)0}}q{QcU zNIK@YvBhfTVb}GSkG;q}eca^u{Yzof=Bj)AdSm^GJ6^kndJ6uTncMNK!q0DL^|p6s z9=Kp`Z(?DR)UI9aYW3?E^}RQC-Xzn*%=jkb!;iOnu$_0a_=a;w-@@KWq7H9wvw<>H$keyzErLG7y3=5BIr@bdC2$4k;NRpyBs zLcd=ZRykdDO@Zr4QUC2V3R@nRR8LiZZadz&n(c)Z^Ov5V@O#m{u)uY%hDh=;od^QS(j=6v|1hv06dWva##m&KfG_-^ALD>p$MPRF|Y3~lYV!uZ6i zTJH6xc--+gJlgQooxWTB%{D#V-^8O(rux@wlWj|}png)zy;Dcr6VGfEFh=lV#+aOk zyN~vI-E@0(pI=tR1pL{o`8FooEav|G`|rDK@1Jul=jwR31MOzbn$^L%@@p?;YsXG$ z_BT59?%jL+`t@EOyBDpNAF&s2yuPKnvqjV$r&ISbH#MCe&}r?p#=FyZ2E+;;-{A#) zc=z;j^xh{2B^R1l&)pZh@z-e{2CFOYOAyWVQrbE7X|c|vV~4-b=Y`Nb|L8C4yP$YkB@T)jC9O%bo1k{Mqd)*Z&y$eo(~nhO>;qQ>HCw z@%Ztl&?;Sif4Aqz^(Ow_*^~N=&tiHD9!G9l++02J-t+6$j#qllw7UEE{3}gEJ{@@< zCNqAVeJO0W%Z0_KKHqP&-)Yr@Tb79zgO^e^(oW8LAO|p33 zfZ`{X%7mP4bs9XM8=W_Ab0D*zZrIEE;~xy{5>_}@R-F2G(WN~vKGr^0d-B?$xpVGc z;CuhMd6X-YY9L(|^VhiPmiL#h$scv;;GWEeT_z+&t)J2`XmR-3JAr;yxxX0AEcDnE z@KGjnnK41}%JI*7le{YJjQH#E0REg2M^7yf&N_T#eT~SwRT85Q53uiWDC_nR|Kbmx z!OwRudKH}4V&a$V4Q+n0-+s|CI(WCZDC5b?o-Klpbci;8nD}sayZ6rb97H?X#kcCY zd{J&6NHBIzn`c=of)-^fCPo}OwPU2u+pgaHWqBX_#Eq2Aso5p{x6V-luXQ~y1etEH zbEw0~RYxxTaWFFBh~WIx@#?(UXREB(otR~wC()qRLq5ATQA($k-KgC5z{`iuZ|kIQm{hwwsp$Jz*}$6KF!TJHF)y0 z9j{KOHE^4ArQQQ~*D-_5oLj}ZRd1O(?v!zd9)5rLA2oa5sNU?qxBIlddvf~hXbTtT z({;x*8#1HIZo}&%s;&Cx%+;795hJe6vcJBvUdY4t(y)xJCQAZZ)_xUxe^FBPgq~9- zUf*Y->VB_YZgJgN5BDy+VEF6!q7QfH9cj7n;<%!^$VSuj&7R$GH}!I zao5#jEsjaH&8o4X!Tcj_o!95)&6uV>Cw8xMf8yr%qh|-Ge?N6g-Db#BX}{x_ccdJ! zm^ov{ulv;LOGci4viHHFN<+lvc9r@xo!oApUCqrFou8gN*SZoD%Rjz*NXnbrYd5xt zi~H51;rOnX8L3yJgnPps=dl_--$?z z36+lcT<+=iB6!y7zx<+J^5uD*?nnEk2$tj&_{9w0wX*q^(0R*mZdhn0I^_9r`p)9X zF$<%P>gB=cX7fyihC1dTqhM_cxPY)VaJwxntzv?#C0mbXp$%Ab)nt zcC$=UJWhJ7{=;XLjnC_@Z4(nSpY5_)y5-mLwoIt4em0Yjjw)>C>6U*S`$7xATPP zucFB&=8pYpgq~8~>6d-{-3Px-H+S^^BTP^?GqLvE;HjI#u5LaZzO2CTZSKPPH3aYL z4H=sG`^~BATbnC=mpSd*A(W5-to)J5$5@-0}Rum#m&d*STi1;M2q=;~QJb)9$w(|FY+z%44^z>~kcdaYnt( z%^LNXvBYrqZ^QSmpKs%H;4gJkizUStG0j^E&4-T7JM&kxzwt^_r#9)!9_?veoRB`_ zgKf~BV`&*XeR_gIs#SIUL7gpA)x|?eqnqwRjklBv%V*-7B{qWa4I4J>-Me?+zJ2@m z@BinYe-0izc<9ifqeqV(KYskgi4&(!pFV&7{Dlh_E?&HN`SRr}SFT*WdiC11YuB$| zzj5Qn&6_uG-MV%A_U$`&?f|I&{{5E%|7TI4MWS>Oe9@Z8Zq+;izfk!9@E?=#9=2j= z=fAsP{=3US9I$Z{1nQY5J7qUY%1(gKEB1rKcbRxNk|#T$d80&W-;jXn0kvw@E$jq@ z9fb4bq{dHYTwOaNT*JCOU7HotU1rVDR|6Z!?FSS}=I@>#M{5Y$51k#?&h;;M@>t=n<1K@EC$4O%QU9J&IXv~c*}W?cPEq%!hb{knIOkcj^YWPLK9&}b!#b@P z_& z%h-O_`-0GxJ3St@8SGSvSG?Y5X-c)YL03cF-q-uZx%ZxT-5(v_TIoWlx$B^UFM_>Y zf9vt0+3E(^D>bIQbrm%2^`fS|lq*|ueED$(Cx`Hb7Ou6GcfbTuWr=zCN@2Ho4|^P+ z{dexmTk>A~C5GXf_;EW27JbUVmtBPhb=-R9PPje$uj32D6Hje)jGR{EMBwt@CwB;` zzixoCSD!B3I=5}srgv_yhVhXbx-|Q{ZEm$+vP}=EL@KM0$ww+#7Z6I8K}z3$2E-iO-VpMPeY;o?I3Cs(&RIC@?5|Ios?V5{_*-(`+hn#ZL;Oyk*!P%Kkc?3uq8{)KRBd!xar*I zVehl+ZtyGoaO08ZYRk;M{<*xhHv~Ba%*GpzvXKzoB16(K?~O@S3u(j~M_XZ)m|yvu z7Ht2mrNvl&l9k)mcaNkpi^2%O#=-?LeVbl;{CKD6m_<*Y{%>A>Dd=jo-JpH=K&!ti zKQ(C2WCyQx3zCGlI^~iTJZztVQ&?fU!gS#k;f-3k{3eU0?~cg6SMAVJ;|F|6y|B&i z4XVzVStbYXj|N_Y87EO*tO(cfPB%Al6TyxKE9%;!A_KP*1( zY@Rf+^X9CZC;w;|Za0OQofEv^9B=*bJ@3TF+Ze8%xhSBpMu$S%rwr4hPh_*?yBCg? z;M)`W`Sza^;P0JZ=q*{Cw1hAphQz@iXL;XRNrHm3!p6ahAN@ zxc%Km&EK}B>cNgL4MHczqz2EJ9ha=EmJpuPDe$7Lx5KgnQM=zVUB9j3;lV zo;);q{P@p9GM^9KJGX8@QO*8W2S01*@b1mWOZnUV>h`Z!cZ<=+y5lo?_v^Q5SZEx7 zU(lE?e>>)Ts|%wSKKER;({OK>=Q}&P%}o-G85E{o|EQpqyRrS%_hIg?15do#v8?@x zyB!xdxO%hct!ugUEV5NA2c=)D+1^cb%zRv8z41+|4EcRrSZK$7rozmEi-S5{cR9Hw zKt89~?8w#=-u>p}ZBoT&)O~B;F?Q1GXZNm*Y(Kp7(uD_GOcZVRYiyl!!Z~SX#?I22M*I`_X!RX8tRof6bI&01xn`UlaJA0107JA|4B-h4XBYLlmIQ{%V zoJ#$|{No9^<*3)LkDgC1O#7%V?BtwZefa+Qcf-af7@piSV(GN|*6BqXf62SHd-~Hg z7IDXuraYfkfV#L=7I%ja2I$e=;jn7Pf-JM-yBQ3F7e5?r8^T^xbeWJQre(;PjAW%W zI8;h*K|!^p)oRuWu3jf3Na`C@EhtF3|1g}*%MRTC@*S<50i*;D)aeGN#rB zr>_qD0)eHw$#&MjJzkp8l#Q>m^vYJz4N4fX3=}+^>^ea6{#hM%l+=`yOxB?|6&; zC*%5`iZ3{wIPgr)(BE^1|Jnc7g{=$EB@H>({+A1#M_lYQ^51TwFU!YV=|28i`sC}q zC*R1Nc1!i!ZRLzRIkWHfn{z*J?*0D1KiIx~d*Q;zBmR0mcJ-^t8{W?N`~95lpXcrR zvi{)BjYn>6I&yo{(c4>(-`RTn?zZE1_w3mNv%8ZgPo6n*=G?h+Fp=AJ`u?ud5B8sb zbmY>LBbT0@xc2-c{(o`d&TG(tfeQcq`!5B`qJXolKdz*)g2ZAk$f~^t2NX+EA@F;q z1&Z z``*p=nKAOfd~sF3VGVaPh5L9}>)NfFHu_`wmFMf%Piy0AXZm8_m()<#H(Q=||Fd)J z)JDheuXW0mGS?d2IQyl`prN;3UT?beajPcvAAKAe*W_b^0k1DOjJv(f^ZL$_S%coK z$s5#YR{k&V9V`7J9(dk8<(YY>9t&OSHmvz&SDp7ACjRa|u<&ZbaS0PW4eYBm8u^xa z*k|C~8Dlm)K>}&i>OT7A3x0gifyfsR(JBvk`7Zeq)~rWFi(ZWq(qr57iR+NlvU6UW zlz}Z8Om7)J69i3%oHEvP+!6DCRLX#5==(*? zu3fv%o;?e~1q?-CB`Qn4oW1$-?9EqaZ@oNw>lMfvup#|d+#nbI_fLlcc6}?igx8A8 zmvdCUQ`*LM_?~#%PurU>`*+FI zQ46~T%!q2$0}jG(d4J?ru$x;1b+g+_ktBC6ky6|#?xhsF z&%4$;J84gQ?)mk*_kQ2~eJAbkU(d62uf6u#d#~9u^ON_`nm*;$UD^C*%$SyL2}7II zvOnta;nNSkAqNxkoqTxY(W8@o&1dGRlRGERI)0vx_iE1%4>RBR5WBbTH%B(Eh)6dv zZrG5Kt%_}Fdh}jotz^z!hsWBkJ>1ghM1?gCas_Od)ys2nhS+=cr(P|Pv+T73cV9NM zzZz09-9<;#)Kd9oY&qB@Y+sY5!=^VlKQMUc>eVlOGda)hy6EiNB;Tf{EgCNEndU){ zu!N@@ik=NEcmK+j-X(UnE!k;!(N6^)eExFY9W~>1n|kpzb3aJ_b-}^Mia&TUj(f?P zZrc9!bn_2xqW>l2WE7kh+scXKd!7Dz-Y^^@!@{}3BroNN>ZR2b~m};6% zoYS*sfn{#b-?`nKaqPgLu&>8?eBJiD+UurnSh0A0J)hE#-t2fBy(l_=nnL%h75AN3 ze#B|-=L@$jJXNQ0BY!X7UHQ7UuDoSyw#v~SAA3b)D19OOZ-tWob}V_lde^e|8~1Gu zw~obISKpsDB6O`Iv|5>JEoX09kna8X1HamK=KIt<_HF6cyEDD<+Z}Z+>gNd!ekr{@ zZ;60AAMMlTkE(sQ+_gWh*9`h!Hr4#ydQJ7uS5*6arCGJ9&~jIWmf!t%?dG2k=>O*Y z|7s8TPp$Xv|It))-ApyDCQX?#&DSsW^?SGOwrtg=MVl6FTefcAw@-`aMT-_KR3tR4 z;Mp^^>({GYulA(rK412=k9qj;LA#C}maoW__h{A1RVt4eJ;u55Qi($A-?gyyam(3Z z?8_IVKKm@8K$Y&1T zc}jAvGx@J4ApX(jbo$onWzpVzpZY()wfegWC~?8KAw1E@Q@V6PvBAhbyu!7-aps(m)`F_G~Ie-z<@#9)=eL? zhxIvgDS zp?=(()-Bkyzn+%ALl6)vq;q+T`0ky0yK2_RP7T z&i!=e-1#4C)~OdgHGX>hbe}Y-?iB3R`Z_*?vY~J9H?Ll#Op&4jEuXqML#3ldCnc|Q z^k_h?JC8?JpD}Gs`kF^GZCy)q`@FU9?UgKM_3+~R9qnd#oQfQkeEZw@#gPSG#oWJn zGiv$x?Xeo(aSc>R=WXF7TDqT%qDePKow`5m%Y(f4 zt(htA?`Nj}rEAgucv|}Jy7d3WN9+Hen%=h89)1+%pU+GW%*-@6zJ2|nk*VWy`oG?> z?C$RQ+oxr2ne1kj%(L%?efX5=Op5Ei;jP|0?0L2SjHtaYd+&}uu{cwm=M8clcHb6r z?M=+SW*zNgBI0w7iTKzrlh?JTJJxhr)i8HJ{VT^kzyC4t z(04x_%Q)}XETg{LRpe~xW6koqy*vEb!`TTD)jzo{J{s%Yp>f+_9v{|JH1@BjqW>N1 z)c<%k`p0j~|98!r_w|4O{*Uy)<@0;_@$r8?6+Lw=9{tr7Qnwy0uCL#;$y^`(>GCM# z>|b0P^=N&4{gy2@TX6f%ZY|ZfMH*Z_dGhMX^WH-{b?zJ$v3}c}RdezNMb2#Ay>B%N zcr)CVGG)rNsq#I+3X)sG)uyGIUp#i~Qu=&Pp5A+S?`fLrPcvP|F9qGE_Urov=ZG2A zvqhOn{X%lks+^7HCSRNCKv01K+w2>{Q~Go(+dFu4a_2L*SSmNP;G5tGTfvd3M(&9@ zx!)f7`lNS-nKZM;(772xV|)70%^$`-cjWux4euRmK5FyV&w290picdT1Q!oZ2#5Gj zp7ShHyl~Otg^HTzJlhXxv;z6e2Q=`Ur#GJbZ2I$gShC0d{d1nXc<1!Hm|;SG?|mUO zqS=wu(=!#dXHJ`9!nk>>9;Mj1w{TqY;3`A+&)-IAB12*+;cOXa>xM;ti9SEQ_hAT|2p%>Ra?65!Iir8FZny0LgkZoVc*|_*~ zrOy8l?$IjuaG#o0V%r3r&+FS@T#4TT9(&pv7KrLwvBBJX{%4=fNFRREzNSmcM;~Ic zmx~S0ANuu)1?j6_?plB9o|Q*atljGI>~mXo|JDu9ZvE6_Y}?)C-;U-5xx}7s1@RY; zdGZsrUb?4yJiI*!B9GbfR;`2GLTXn%^HrG#-P*S-SEzYH`+WgD(sp=$;LKNzUkodo zss>U0h?L&P=2Ys7T#5B`g7{DBDU`IHmG?_$99Hvo+UJ#T`ekjMC;C$NxA#kzDpL1M zxeYHXc{?`@o0}`Lbam<&;q85JVJke7o}|KmvSHpcmwrlEzHH3Ws3$oG1*Qv4YcE{z z=I!gJMlFaNvcQ8Xv~YNDn$*Yp5B1=2zW->${@t>tYw-PpX9IPA<*L)Fd0OYQOzm=K z9(SWanZU>w4T{`&nfYI(r3F_IcuNUf7p(H z)L;3le;QqD;)$i7ek**v=hd$o2RgBX3KS`u?{NEN$>`-UyZ6(3J&ydLp0oe&_E$NX zUYpPN`z>W*k4y(Uc>O%PTd}~_!9hM9i}x< z4Zc0RFnsjfQ;TZ!E35BbA}P5J9Ni${xjHhof_9sCyNe==v`+4RE2 zixe|+*4$^0c}dHfvwYHdSM76P6s-Sf&eGSm{VsMs6Av z{kC%J+O6kC_I`S7+li**>kdwxvUAJPTf+;N z+BS3IuF+f8FVC~_P>Q|fMrXg)q2<-yt^IqesPQ*0b?$JyUA|nizbc#J_l^C=r~A-y zVE^=WbN~A6TKaP{Prp3YfAFt?d(^=d&AN1St3C}~W6eB7Pw`b@Cyzeejr~LMcy+4N zAHV(3xd6V2vup1jt=jaoLbcnpXx*kqzTnP1TXpTxseQ|Q!T2V$p7;ns$-)If_`iI? zWqWt()w@TVl3m*L?$x73r+mRRd$;V=z7@W;v~Jgq_?4fQMT@p5(yB;UXt6?t+k}J{ z%lfaC_3qLOA4qW3UZ+hjd{Bq*yBzwjW>h);f7zLiOE=!V{O$JpPqx*3J!bci=F_gU zEf)4_e}UWY`d6s&G1K<}ZeJYT?VjdphE$GUo~9lBWM;ON+2>`;zNlV!)xwV>?sTcx z?bi6Y-9jE#>NgP^Zg(Tf0hUKytr3m^+oHk*c>59NM|qx_7Eo1q#}S@`*K>rkA-)S3 zg?y)RqmUztx=<@>M_s80wV;;NiP}&zilW}s3tlB^Pp#qbU)WzKErWzz{v|^*owW<% zk|S%#zsp({b#|qmx?Zl2GX)@1zQ4{?mike3B<_MHCe{*!3>p7ALphY*iaJt$Bq{js zlSH8zCV6k_tn27Sg^(@yud`LqEpLJL@*V5nRPXA-I!F@q=fay&;?_4rf{=fgAPUuW zqB45d)Wt4qkJdIvrd)rO>90De7ZMlv*Tlx@h<*64ThAZB`HNO3ZuvJz5caQSR!67z zK@ZjiYk>XGNp~lB(-7pM5)}kHiYjYCY6kTaxa*_b2@3zu8oxDyIX^6cJ0}oKLMre_yWz2 zDh>Y|+@fc2-4-odwrL&g`c_Tlu73qbnau9`cfpjOMlgPZH5fm17F@So`=07w%Ke{} z7{EXAiLa9lu7RI^sacS|}r@@uF_Gmuv(8RizN76Ond_c z1Yb4qTU1>B0O(;z*8*Wqa}F=QBzNUO6jjEnBwj1<^2dt^73ma&U->MViYO;u4yr35 zPa26(KfJtYH~w9MmmgigzrlC~P}r^s|Kg=#~}x6d|s|kKS3HJ2ukP>x&S#)InJg z;;rVGG2l7EB?KKR{(v&znsoNeX!?DU)_|D9}U1l zSTnpF)ITlJ7kD{nGw!3NR@$YQ3&zs6gD1b&_ zyqMlyo5d9xkkz!slQts6v4M0Fq3w8iQu1uBzA7Z4K$?t@iT%#!G=xWP6gv>ZNj*w~d8-#A-6-Zu%UG=s{h_}~4 zcM#%n5I`G?xQ>OZR>(cfc%D=bA>JZC3NPyF-SQF&p!o=yJ$Ok%o-`3F7d$#WsWoOJ z4*5}E9K2j_0DeT+v^0QX%D75?g=+;fb{p4lg*rAdt@k7T>Ily3N#`*|@Hp_JHLcB7 z22jg3t`>xMG_ir?=;rFbn!R1MJ;6Q31-t^O-T+rAIR?7=>Q$_3L?j<-LIJdUgez~{ zC{srO6&&sIZs7LP^!U^Tt~MV(<_g`gLY00n`^}Gj{n3={pv>1zx&T^p!&Stybui6>>|V=suJm1tDb8RYIr; zUZ2|<<6r*sqp=8e#0&GOgtE{%%lic(Zj~Q>l#n<1dnuXQb0K76iy>s@gT@H)826(- z66>JB2ywj`X*@!_9S&NGkeTbQBgDsygI-!*9enk=IigPan7n@U3qo9nANl(#J!AS& z7KBU-ezZagzmvdQlm+J=MaS{-rlzTto+tfiDMFmXn~oyH=coXBi4ga=gZyzFWLn=A zAyaZ^D>PU_f#i?h)HcUpq!nt45FaUlbj1oimJrSclFpOTrE%@wepYCl6*?p#PqL*o z>HH`VA?`mvs*I3nRVyph-wG|XLdy{{`+P4#X5PJskQr+}>0G6hwL+B;GO@L+&>$;z zoP+}D077P_zJ?H=w*u)CLT1ao@U!J66l#S^S)pizIBy_zlaL<`M~K@ONby$eLMwJX zLOc!v>89ni!4G_!KIn^(*~;No=o&)%@WR>N3h_K-`oKHL)f;IgrDr`)%7~CDc`8DcacvPu=Mgezrps2ynZ@N5wn9a+y1bTF zC>9|uC4lZAbR4e$`W6539Ev{XU?RH%Tf-kl+4+y~HggiO7^BE%!nlOjT0ThzFa>zICzem2(vN8rivQP_k6 zDHlSO^~foNkm-%q2$>u+t#q~`uJTe_p#oN@mKFNa3Qd)eANhp2j=|Rvt`^KMX+oZK zA0cz?<5S9YoM(_w0L3F@T6Ga2-ZKtbP}X%8+E>X{-meIm*`jD=Md|VKqdHcoB|>H| z#3R&M$F8+PJFL)ggiH@zM#$vIRmBzRh>(em5zj%p5i(bYjjOp@dK)3r(rVRRIocs) z=Aki`w+JCq$9jo%(3u*FcH-qn5AZLaKOB_pbJtu~QbGardrenuMQSNZicoR~z00Er%2q$s;@jY^Eun*Q-jN=9ErqeVQhwqkswbMC?<4+2? z`iqkSX@Ye*!!0L>YUx~4ty~$Yp-#gs;M#+5jnRzeBeYH&LMeT;gNs6GVKBvL=Rp!@ zv@Qn|xK86huJO9A{Ni9C5O=~0kRvLIvr;=vlQ^ri(;N?Fz{?*$;QAeUjp&v*>EImFY2L$e!|l00h2XBAbESZCIoHtBK7^l;(trL~HS|$j zPB0uUIRk}bsV5d`Lf}N<<&TxT&lK;kj!@i(DRAdsOwC7#S9CcSuLYD=3&1IohMh>1 z>_f}o?8D1nJDlcbk~C#e7gl`XnA$5-Ib}yKFE`lu%T5ibm2P29IGiRoHKDHB;k99Q z@?($o)8#Z2Clu>kqjl|_#qq}K%OdSefMeRznU*N-pS5sI|8%D1%7zj*!{NUoSRead zI|q|E2XwBBaJY7Vq&Wim&=bq)Mdx(?*zK+n)t4^oKFlCa3ar9i*ISVn4wsXiCQwe> zeAHUe$~6yb=R6XciGyQ|D(W=+O%|MsXd%_&Cev_nV&Fu>@u8J)%$BYotoI|)1vtE= zB{5R_YUi%ytP$t6<*XOycgxu#&L_*+C61fBtK{#+aazt{aZ*^$8F73p=e#%pmh)De zjF#h2rp?(bCxtlqEXNlP@6&?f_)~f~PUTC*#fhTK+VPY;XL1r}f_CO5ab{{~WfJFW?d(Y6EY{A!B+eG?{FuZ! ztetB~oDP^PvX3>#bRWB z1&7CKdDP|U#&gRUar~*K8t2BNce*(FskWNv#(QujoXvRoQ?#0mG(L0`>L~Q$cpE|0ex;-V}MB(K{ zoz!tRKH{1{@m#kF&Plfg2z3&NsIxk+(+m?Q5Y9z6KA2~UQ<8eA*ShvaaJbE0)E^FS z>J~WsSA@o>Yxbvxmux$;+XZJkK$yc)vBzWw=|8@Y-uN2t16-{9}0uRJztMDsxP!t1CE(V zHmN4s`7(*qTsyOpIIVPD$KY_A>(M5~A4>P3>*Dy+7S&PbdLd3j+M&8@$C1qBYC^kI zf9?2-(_HOV!*&0J!QnrD+M`D3G?n1+{;Eg&*ui!+6DJGpSEG=IsGF3NAMZd;u*brR zgTs5rpAIQr8TX-SlE$Bos}*+Mr%S~tNk6D>?ekI2K5>Yy!r>mfWaYZ5HtIAltu!~( z7G1l|(`;7;x}kRKx_rdRLGHHGx~|-Ccq>Yh!**7e90`Z_MGKt8jnfd0X|tE@Cp(X* zj&S&|2xYJ(cPEUfui)^AY6B;wJGXE=9NrhrRaRSC%mzNR8jjh^*=*^wvrE#{qwKaI z?VJ@S59P3B(&apZ!&e3EaIVVg&i!mp?mAL(+VUX{dJ_(poFCT^HQc!mv%%roOJYth z;aGq)q2l0O1vuQo65{y7DT&;epDpJrTa->yTb%Y3XRGGm+P{RuJyw85*=p-FJta*+ z8e?nZ;MymPQnO#A&YPiL(=q8R7G7Oam*JSBa=xvFgOAgPmb2K_6={fm z6{jSv66bfz*(lBj%h@cB!ka@}a!J}Lj-Tc16(`to4v3S>a*m4=YB>%!)1C;+Ng+-d z%kdMZiskr=Q_phJi_^eziiy+2a!QEP!g9)r)7o-oiqp<=y4g(&J6ld~aRyksjz5in z;{zw$a;7>){;7XvIVR~`<*YQb9P!$zV>xpileN>%a=vy zMw|(jvjL6|_p0UWb4=H{R$0ygcF^XH;`q}MNwddFbHXu0r#WDy`GFmje9}sD+A&k7 zIb)?c=UA@OT(Z*q?AWB8>y~qg9n}8B%5_CMzVyy=Za6mUG$~TL&IJ!0TXZ==;zZGN z$5uGLl*4j<(~b{?T8`a=)A&$?<#>uy#&S}KQ_FI^;qY0eg*ZhhOq}*foSiyN?KfWvL}r#c>sJos#0Thf%I`W~xwIc>zLM_-6D6plHYH}Y7g)67lc zY|t(I4i1-`n;Lm+*3Qr3QEPxC#zoV+g@!r?!ETI`WtJKf=!y|V<4JF*Ry zG$rYhM=7Tl>f&)|ay^8@3jq_YG%q|#YiFi7MabqX?exlQjvdYw1*fbod4ZM7;jHfT zLVMPU6NM*9t2;eW*A8*~$p;RPje~G_Y?PtY&Ki2VuEODMk0F0&G_LJ^$mVC9QWW59 zhBQ8u4vyJ7X`QWgng}?R@$#p%&M$SEFQK|?C(zkhmmCkpCFiFg=Wu5%TDVdif6C|_ ztIOG(#F?ba*)L9eq?xRpi*Wb~wgqK&&T=k5>p#IM$lXC%o!^*}aZIq|4`-pS-5+c1 zTzh{wE1hnrJ<=Oer^(^mqMgdVE~kKVuXbi-bUB|n6SOlA@9vmfAV?loWE#ijOCPZ zKG4n)I6vd%Pi38tw6h6o_9j<5=Wp6cY;#BFJMA>Vdc8^0$@xJ$iFI{$e$vjR(ylaJ zoGKab!E%uoOVJHJ{^cc;5{ibuK9^l*A;XGd9=Gtik*JFhHfkkeN?rOLU|40fi{ zj-$NG8RGQU&ScB^%9%zx2P`MXnNB-zEhpBQUOO8qxXKyo%%GiLEN7TAlXikCy3!1H zX4X#PI2_^3s-481ALY!gox~m+?ace9G-I6kwUapJ$2vdLPU2{p=q#$8#L+UzSxh^L zCC58UXeV)>PIi{mPU6U%>MZ@IG}D|>+KIzE5@s(?cb3)8c)T-VoO#Y_+DUBBa%Z%5 z61Q}Pv%Yo`$InV<1MPU=oeNXW8s`_uVyOV0!dgYK6b7yXCxb`8Pv8Zd22$V|tX?=7 zWd~!x;=($@4#E-OIK;mNzgDqS8c%I4gRTLthMuN%EUgs%0^E-H)OeEX0N5G)3EZOT zOFv_V*;&AsLh%H{F|Z4G8C(rM1|NVQ!CZKog5%qQKA-v0V(@Z-Sh59ixv>-ven7cp zGT{7&lSUl48hTDJo(zQEF8mps41G`dtI$2O@%@Eag&`nsS4pj7>6NB0?aM+m4dpD& ziWN1RFCFz)bhuy`oyvxH65Yb6Kz3#*UCM!T9C%j~?azgkGkaz_mWOC0cn%x~-T)`r zvCW_t_?yu5Unup{EUocK9irEp)Wjv1Tt#erXhV}BPwKO$YS&rHAO1!q8)1?Rel zQU{RR7XxxT62Rq%&lbYzLuo(A@fSgkPZ7$#FMXaxQR(8oG)8zpNLkre)E((|qnv&q z*EbP73YzT*qhdIzad~IJAY2o2JM%cgsBR(lLunw$^~P(h=zEasJqebP^k0HzKPqZm z*lb@fuq*t6MTla-!eOS~GT=ARjlqQ=*SFo_OYQMoS`H6ix(`+aKZ13@GU0rD_);gZ zJMn-v@cz=P6-ybC8d( zIaCRTLTt^-V1WRtWj9qgDwsh2P=W4z-X{6*chw?y2k5Y_kS2=DZ~8~ zM(s2etp)jbHQSGOg3FqAx!T9=8tx3E_wae#JS>OLouQto<%uSMEh}K$I?cF$6KTe$ zZ#CTN^{fl@n%|t&v^bhcZg<-;)!WNo|>H9!mMfzCb zMB#MdTuqby7Sb((z6-7tt`lz6OicG3^h2aOAUr9&B77ixu9?^#Jkn3Ek@4gn94Z_qoGn};Trb=y+$a1|ctbO>zn(%* zLi^mS7lq5Y0_i6TzY(qz?$=D*UuU7$BK>9I zUEwp$#B|CXYKNk2@xhJ0_1i=C{b_ zWycdI;9Yzo_W*bcJR&>|7IZp%egfBeIOq!a(3zR;fZuy&rbpl{%o|NH&zRg*Ameg)@aagca)WeCawbgi&v3p7+*kDmn+o z;=K1nw5n@#T9DJ_7FH8>6@C&%DT)La z;=Fb^zoM$;eCfTWnO_SdJ}VxC;U{KY=Y@1l_&gU%;UJ%%D}mh3V?y7iMt2Y{7XB)1 z(v0In=>&Kc<=UH@^IAWU&+mNw!0o6Vs;CK;CgOxUK=z-5E#c=VXmlg6NqIaq*Mj#y zo{$1P-F)c^=;iH8&omVcYH7}2d|krV1)HHceZyAfJlhWB^PB6ulchDso9jcqp5lIC z?niz7!V-_S@kmz|^Xp{cbm3ghS}}{jNbk(F3#@|s^rIkOhx`cgdG!Lw=h@pJ*Z)NL zR+y}f@iTypk-r$o*O}2^3+OIjTQF8Q3FPa@;~@9*%63HOy`y8ww&(4Mj`6N;SVMGU zVLM?j;RxYO;Zori;XdJU;d$W=;WOcTVX_XUUSDBuVHsfqVRzwB;Y6XUyt$%X^=}pZ z$8y8y1AHFmJvw4d5YH)31#g0z!H3`lFe9Eaz72AJ@_p2HN33=Kk-rm*aq?U!0uqWF6MYH0P=A%K=?&te7CsgF_uzP3H-nkL)nIO<=j-{cRT9VbPw?xf zi;j6BwD&YRNLWNzMc7o>OE^}zP`F+AgYcdZpXx(B=qGRv$n(uSkoOb&^?Tz}x?nqy zuQx{umkRd_Z-YmW&fdo`v#_+Vsc?vJj&Qs1g78;i>b|C&&xBQl?S#XH8-!Pc$@-am zVZsK&zQP&8ZNit}3A8(Nf1)43W+2};T>&THdUkRN+*?-lrQd{2@hmCp1WngTgZ2l9T+OohO7&}JPYl-9-I*@wVT+76C|e^_g* zyn$TaZIH{!8EcNW3Sa`#^#@OaJH_YY`8KpUZgGDy)U>a&aE0)iFykGWZ2Nk}j0ICYkehPLR_L z1P3GDbzkKh&*LwQ(t&tm|4AF}_DVbN#j^D6xG!zduZ4=65E~ z?@XTGnLNKUd46Z|{LbY0oyqe%a}4Td@;uMvd7jDhJd@{nCeQQCrIP-T@SZT)0*-fW zf328&&|dahF~x+HG;uxvPoZBofqeh`o$!e8r0}fphVZdw;`YCV_RfI&;)RBO!c4;a z!eYX*nu+=Sa^ik7L!##Og|sM-*B6*|ke*pz*jO_$J+B93Kzs}M%ud4onu+N~LT5pI zyl}2?m1bhPP0%@!j@Jp8yG0)qo)litOw9KHIv>(M6}}YyCj2DyTx8Pu2r~$C3iAuY zg}l97ZiMJE!q0_ug$;$Rggu0Pg~NqYgmZ-Rg=>VngvW%JgtvvSg|@|}UH-yAVP;`o zVR2z~VYIN7u#0eraEx$@aDi}@@LS=2;Thp=;X~nDq306Q&h*0k!qUQ8!giX8`*R@l zQ}p|2VZ3mraIt1$dcuA7E2LiopSe?*AUvj-nEof|w@7zcGts{f{Sp3ip?#^*0mA&6 ziRpR#yJd`yiGxxxj)Wx`d$jlx~R{lb&N zi^3a19-rLaUqrtUz7z8P=6KsOX5#jGK>H=p{?I{4mqD0QSWp-)j1*SZOf0V&bUEa& zCu}NgC+r~{Bpe}}Aecma0Aa8&k1#}7LKr2i zD6Ao@Cu|~YFYGQHEF2}ABAh2&CEPANB>Y);Tlh@)QRu$Hv_FL~l`vSCUl=AVEvzc6 zD{LZcC+sO4C>$xABK$_ULbzG@z3_*5EbK0f6V4W{ z6@D)~E4(9oC3IhH>J1R)5ta~E6Sffc5snhh5v~*N6P^>^7rqmEtugfl3kwM=3L6Q# z3Wo_N3l|922)7Fl34apa6TT68tTpwf5#|&Y7Dfqc3tI`h35N*B2)`Dt7w#9H7ycsr zU6^8>sXwDIx3HkFg76DrJK-SVSmA8pdf|TIY2h{DW8piYbG@nGUzk-GDl9FmE^I37 zDjX~vE1WG{A>1YWL3mU6TA1uxQ-22GXTm69Jz;y{0O45SJmE&+Uf~JhCEBH<3Y3*W0NU2 zqp+Z`g0QZzrLdcDh;X`at#FUwOLKR{SOSV34v*jzYB zI8(Szcu;socwP8f=()|*lT{cYtRw6o94eeGTrS)qJTAN`d?QS;-ISkQSV~x1*j6}D zI7zr#cvyH@_)O@wgUd}kfARJ17n!4D0^l>V2|v?JOcx2=4Dr>3^@L4?ZG@eL{QfYf z=l3s}J;mqian?gbj}*oWrwiu^mkas+j`MvhdZ#c!ctZHI@Rsn2@U`%hFy&5DUIt-K zVPRouVP(z4e)t@^J=)Po*iP6}7$Y1foFQB+Tr1or{9brM)6~QF{a2v7pq@Lz$HLdb zcS5&aCS3|)YGDRpeql*rWnp#A#QGXQ_e6cIgzbf0h5dy5{ye9P5j|cwTgdkl9KT33 z-?y;l`xsrmaJ9s56@Di?AUrMP`y|eHMf5G<1K|tdM`6nEO#1YiiTf=l^hlJGPgqD; zLdf@B93LsVvaq(Wv9Oh}v#_^tuyCx9?~}N^c+m@lONHx&JB3Gu=Y&^<4~1`q?z>I7 zDTNt?d4)xUWrg*GZG}CAF~ae}Il@K4Rl-fe-NGZnGr~*4yTa$fcS4UnroH~c%)(G% zX<=1iBVl`CZ{Y~xB;hRK0^u6rX5n7pQQ>*vb>S1???U@t(@sBOMqw^tm@rCMU07e( zM%Z0AL^xhJSGYpBRhS?=BfKhnAp9sy_Pw-Em{FKVSXdY(tSM|F>?G_jYt`_bVo)BIW-WR?U+76gJ_(iTkY=bUUQL;N84*Mu*GDGnMxP#7XCFKi*~DjXr4AzY%FxSiXeV^PmR;c4L| z;V+tr?S26riRU8JA;T2H0AW@kj~h-`Ky)!-q_BptzOc2hr*MFf&tH+=iS-YIABXmi z5>BjW^c2wxgnZq=>DGzfE#&JC_Vi~d}=vZC>My>)Do z@$?1aUm<-HVF%$r;Yi_R;SwQ#ev0#L61_)wNO)FwQ}|S9J7V(r3v&vK3Tp|!6!sI2 z*G%m9uc6CK*EH$)xTT{+&TNU=0quqK zoDwgcF4`h4Y2WH52RQ{>g#zI6rfvkl$Zm&F3}dPVx5(PYUm9n)3MhiI>oM zk^a4AVm*#yc>Vx>3ZcJdVtf#EQN(8#ekLp-XhUia24!_n2aul!?F!<2OuZ$3prOxKV4#ZSdD(od3Bb+OA z)wd3sw__8??cW9lp`1OUlRhUq4)Lep^M1Kt=yMxn|DottqUi^dE(Q3#Cq4}a@^gz> zz>uu?+>z)I@HU=L2nYH579+uN*_2Oj5T8Hr=@0VrJVQa`xAe$AXa|jj=Jrn&&K0f@ zZWZnY`FJ=YJSV&%d?@@~=y}SdPi^Rv9pvYQL%=QQrxL>Q!aBm1LRUX`hvxPT5snqk z5-t;N0e7O@1kq=Ocf@}!nogVYQh=O3jWCF1JH20UxCv+5=kFP)XmusGKZJ(=LSHJUo)dlm%MXo2%L3crJ?{lGR9+cyg z-b+39v${SXKaks>$&m6JpNfE7PPnjy(Auw}tAO0@XpqNGBhZ%JK}|(>5W3pi584Cq z!@(5bG|>x0uM%zoxx781j|xwVe_8Yc;qT&mpEKoV1UY{}(d9%p5ZzjIU(q9lvxMt~ zdxWQiSA|c6pM)vTOTEI+gr$Vlge`^rgyV$sh3kcTg(o!eJ-*lZxnMkZ4f1ntuII|l z^W^3^tS$}Ab6CCb+}q!M&TZxm%%Auq^k#55xEJK-#BPEcpv~vt6#Wj}7|*x!bNf%F zT>kuLt($m$Go(RW0@7ya2SlfEM8=~gRd70AzbCcAB(cP<9< z^N&fN8_tC1hWYbWiJ1m^+3Uo7BU~ZeB-|}LDZDDYFMJ_% zJTm2^7v>R`5LOX35q1#{7ETn-6RsC-6YdlKAiN~JCwwJze{9;}BTOgEE-WN0EvzD} ztBLzBVQ29Ng14M?Vnzz5h(BMrPPj{WLU>ttU--K)*%Q;g0AWsH5zRtW4lL*_M74y? zh3z%Xal`kkUp>Y6&x`d`;bP%h;ZET};aTBL;bWownJLFd7%VI*EGJxih131x^SSjo z(po4l9PMr?>@AEHP85D4Tq4{o+$}sRJR`g;d?KXhrk<3V4jSK@``tnO96ytv>u1h2 z)a~Pbt&j9w(Z1F~-v6w5|1-OZ-(NUX6Xk+j-c%u9Z|ZuWd!gUH5iSC6;W&4F?waTG z{`jWwKOVoC=~tv1k~cFYe}U_syuLIJTn^3z*C0Kgr>=vX|22I696mq4%%6K_^5?8} zH#MJ6&Wr2k z(q>$I!Z=!pboHTkW53qGwGVHvXB56m0OOta8-Fh6uljvE(iJa*Z#BpE)ByQtzb7B>IY*$?k|@=N&Ig?ZjWm`9);%p#N=^!5#yBejj5>cIRLYL z%TeE5#5eYK(9cy(zlBsY+E$&*`}fC5fAq)SjX&-$e13q6)=>Dq5gacdkJqH-^5+-+ z+&_DgDLUB1K`HV5D9rRA@7JuNKLdHZmjRD9G41>nvwoH z=;aK+_mAV-SzJ05^i1ee!R!o6n+tjw^aZW&CUd2~u63L<0`VIW-!3z!Pf!)1x08)J zh;E>@ojQqb2mL)-H%{xj$reJNASWe=-lBCfdMoKqK%XH`N}Gktznjb_4bc@!PBlem z*E$7_&^ketgg%3B4qhzrW_!HpN39R4I*7lG-w82)2fao?-=~x=?LH0qWfHvr`YpbH z%awjDv{HVS{s}r&5`7CgT@w8qI#Uw;;ZNE#?H}XQ{z>PA&YmQHG3dOB+Py0DGD>B& zXA*Qlm8cg(M?gQ*+aD+UGZmH2%31CvGwn@9m9&m?rb&mhB+?&|c+>vWbXwvIAbx~O zjg@(m-?ZPK{I!mAme=wAR7>K`_6ATxiEpCg18ADWo9#_QUrT%+9iN7NmUy#0X>o_o z^~KV8#7|Rc>6zAdlbP)cq-;4%e2PGh52V$3O#96K4Wi>lE3CtS7!fapsD#x zdb58s(E-t>|1;59(Wd`1(JQTEsX6Lfr-G?he$F3D{h^mp7FwlsoO2&^c9n&;nRw?# z=)BN@xSHVpH{&NOWzl+=^Bv-MtE|-EGaawY{>?@)MOeoB0qGRi@?p~2rUstkQv<)Ca@$2kW;-%vUAx65#OW3|pj%O(9hojx}O6*cu8(D8Yw zuILL|=cRF4A0%@;<)hlV{js#v7iX~o`DvKe@w5|qa{>I$g6JSW++i2^jD8f|5c*t! z5V|6II`q8)q4bOBv(Rq}6r`7;{qU_!2MQFT)VhD-sU~!?&k9o!(G#H06(~aSdV6BY znOf2O0%0^)bPlbHQm=5{zPrhSg1A4!X|?F$S{I`mS|_MR(95Vez1Mm;^@aXb6{lRq zO#du__OO+p=AysTI)bKYouDr0^d;$At%u9;SBf*^@1Xk=#0S|D^*iV+w$dgV@yRmq zd=+KsG|*XWWn9|Jw7;CCP5aB!c3q!q{;oiew2q}5$UjY0pcExIOPrIBkAk*Jlv?W> z$*Lj#KHmDwto7Yw@z4>7&#m=v=RD|0==xeGs5Q{b@a^)=wT`8|qKBIN>L<~rfeG&S zp(AXSX_CoL=KN5Z=1clFh%axeO1n(FQW;rSr`-~7`r~stF52{8O}Z`G^j|G}3YlxX zE5~~sN)chSIo|71Ril%c<2{-hNWAIaXzC<77wWHSYe3z!KByv~YeA>hyX>H<0o}mX z&}<$Z^qK+P+4hB{S3q}9qIc@}Mppbu9iOOg==jD~{0kkQsNFJg`Aw|&RM6d%=&aBY zwx(8mA?U~?dJ^;iTQe*E8|auMdbN&kZpH7^@rn8+m=3;^aphMFR7Nqo9+LS8j3dC|0RtSZMMH1O%!dm zza4!i+Ki9(bU?HjAMNR}Xfr-K&}-3Vd~~1;k!U{VD>FViQg+d1d~~GhqRsf|MD;|Q z@zIF}i#Fqyp{F-j<#YJs&!SuFo|-`cUd5dX23Q|E@Ov?j|$&`|^)-Yi;uPrRG{EkeRRg(QMIX zzUxQJwRX*S{ph&FoAK3;QkUoQ66ioMkGFo*ShP8x^rN4(cJ)_3`XJi$SAQy8f%Ci0 zuLG!oE*;h9@mbs^&|%S+p!2v*q8Fl{Ydsk&1Ezf`a^T%yx2e=vbULl4Q)kgxwVp}CMd#6a zHtiA}q4ivPA-XDbxZ5}6R?U>px|G{|@)2Ddy1d&W;%{r>{%NH3GTI}$BXmu-RdiW& zf9M8oYbbMdlYSI*bGL7)u;_1~+q-R{PNFwK=W*LktF@j&d!T!{?WEK-IDb6Za}o`8 z+f5y{o=*H}@X>DH(`eBF(39Nu(KgY!p=Y@5r-P!yv`(P2qRT?hbvrhJN67fo6)X3jNyc3hffz z0Q$Y#b&9FW`QxcOw2%EZoz;3e4S`M#eOvT+=ydiwl(wF!?;EY}QZ>Rxa-u)!{Ew)Y=(?YG^QB%=dp&QxXQ%}*~LpQg7pw(JWr(@7<>>uf@=%-pM^}HRntwdh1Fg;ZV5;3irPh~Fapaa4i(yz3q zP_jcI6cYA=UqA$^6X@O3kMzzp7&Upb^ zxu;b~W0gKUr@AG&1a$YXT*{%#i>F@Db;5J2y*j_^`UFex`p>l$|J=L3e|GBl@V;q3Yuw+Ec_T?>yoM zxffB+_FSQByd%DY)^r!~afr{MwYk52NkvtR*8APe_zzdX9XWjh5$@CD-HWL~S`QxCjZQ|J)-9=)hVrG=`{2*s-S9i?b33Q~b zf?BS1f^rMNyF~64)w6CU-WPfqRZ}6jJ^>RWb3-rlM<$9t0hU z_(obM&^qX??$uRmt>c{L`n`tgqxEolqSMz;>Kl01Q4Ltk+JLY)`w zEJ$?Cy^-Q?>EZp;A|>}vV^vA(IAfTW`7oA`0PHK|Y zuH&b(D%3}BpIpy&Rwayfa(UTRXH{KvOXSZB-ALID7V-bJ<7Izh4i-QG>jmGq0D zi#WQgwOS9SjnE~acWFI^E<+!8>!FT_eh6LB(Lrv#%C{;TXZfR-&@rbT}10XYLDnL&==hMs>52l`lFvZsaUq*vf-2q0g z6}?ULQPI@~n)r{<{T+kV@j*rh7UBF~sgM}f!>PJxR_HJH)}lMbu#Tm{qW6j(FS=Z; ziJvd}u;|0kagMLlZPCx6Cpco&-k~Nvz8DO@`#4NB7-4i*=w*%(s&1Uo!=TqV;#9KH zM)SJoG8(BOq(AcD-QZklN2;8nOF=Kg@4l9o{DpEUT%U|q*>!%iKQ=nXstBzU$ZX#@ z|dzjvj~9E3M;cAaoy(!zyHw zDSs#QFps0^w&<78V?Bo{lW;+*~`^+a@K=rf3auXQ}tfsS*(pbAgn z`r@fI^mF?~RaNUaC!epEcwAO>MDzK21@s`%6LtAl)DF>K>+-Lt%c8eJN7$~a+oBIb zM?zPh%Jn6vbI{*wy|A=_exnQu{*{FZwd{8G5K@OM0_EAE||+&Hj9(R%spQ zj4H|RM?Y2@MK^}NO^?+n(X*hx_jsZ%h~5l+9J=rf-5+G$uYam)iZ<`ZJXdqI9!95; zKEn1=C1@Q-SD}~DOZA)4&WF%P)k_sJlgq>Up4P8a8?6%*U+*uY*D6NhQ(#^GhR18Q zO>|nVe^rkqeNN~{9&eO=7MFKdnfG6QQ%+A1SC(&ko{hgXB+N`g?S93+1_4W5EL9|(4|DcYGHtXvj)GN{E`uwAM zFWRiHe^lAN;r7Kji(~ticzja%L|1@b0bN;iZRiLa+3Jh#4E@G~Y|TXT`yL;l2Wfp* zjfJ*5m2I1er)kj3$Y$#`PuE9tL_6mjy;AfxtrOHb(K}4M^B{DD&1Tyt`V4d=^fl2B zbiAAGp6E9^-pyuTK=^ZA&)IEt|D+2opyo}O|28i+<&;++!u3vEM1M{>vxCETWi<-hSOGFw7DPgvh~yYAlah0d~aKfNpG&Vd~LSXtcN)_>-4@h zPpxB}3DA)?Ut4OU=?wIAho5cIT9f|)^aMw0+thVNe}MiU?7aze6~)%~UEN*Xr~4#9 zzyJve5HNGXtcV&UASg0V3J3}c4j?EfAP6c)FfxgRAqE5lK_Upqs352)M`ThNl}QC< zR1hKoA%J|lcJ1n%^febB@BP;EzH7Z?_1gUEziU@@b@fzT-6zW`udhai-$Sb_?mwdR zGm@FSe~QwhmJ0tME8AGyPetpEk+bYufNwA=>K%!j0G9(Eh&m88Q@w2ktjaVK(E9)zX%VYd1`a0rv7{7}C1+hGS#_8fKQ{s3mkDqb+US#!rrK(ph9<1K$BW06Cj=1kUFv z`b)?`O>iMk(@#mJ@sM&ojUr>A4-O* zx4%sR&SPy|o(_D}U&JE+X@5Ic7x@eQ_qif6ZUSvw_X9B3=OOgs{}RxcQ}C z#P5Uu0$(>*Ujtk=>_L||0vGxpa(NGM9_#M1j9*4wzL4L&L(-^Op z%U6NZ!iu<5EBG3JSRYrf2;3yBuggiu{gK7?xCOXv*g#j$1nv^{oXhQi9|?Qj<%fa$ zhP~kO)4)T+M!Gx#cw|_X%VU9G4;$xlF7T|d*Ij-acwPuE1AZ?o+toh>UKuvYWf^aZ z%U^>2Nm#DSdx5_Ud(&kRZ&%nXmu36UcKICW2f~W@D)2kLIj%0td)sAM|M@P<`WLaR z|GTa(>%YKdQQx1!-gDX48v1kC5|@*KFNH04S*%Z&un%3%1l^}Z?D7EMYT=)_ES~Qqg@5Yu^Ps1Pf9CQi;M(DzyF3B7Uib!=bAay%|H9>2 z!1so4cKKcO-{SIe;5Ok~UH%Ms7yHWP?Wlk4@)6XxyL=J#9WI+~ME+eamj&(=zT4$k z;I1K@2yBM!arN53h5jPW0PYd~t*f^L?i0SxrI|Kf5gB9dTL4D`FY%sH@9($6S{2j=Q`V;tvl$;qvFe zyVx%-Zv|f9`_<*|f%DiYm!*FZp9B5n@Y5bW-{s4oPYC}VSsZ`Nws5`+Kkw?1z;B2D z;p)l23&JnD`YphD?2^lwz{|snxD)U$cG=Y*LH{c*%lZ~^U(o0CtFAr>^Z)7cOQ>IS zS++kj#Mx0?AIbJFV%h$htIPJ+U6$<+Khr?@W&3kv(H>)9{{Vb6{6?4ak;}X6YX{d`;n6O~0$&P`aXAfGkErZ& zLtuYI9I|K+**?`=mhDr-vVCrHb=f}gF3a{wa9OrbB63mtB)crzC(UKqKGj{8?Nifb z**>*gmhDr=W!XNrxGdYJzRR+G?r>SQPXm`_`((N-+ov(IXrH#wUXc+^jEuFS1E}kx zyNzz23Rd@vcN@czHy96tf0}l;QGgs^PXNy`?=gC;7yj_8NXYjZE0H%C^MUhN3!}nk zLeH`n11D%Lj4H?h`%~aF;AGOp^OtvgEsa{Fi{~#3fDa-EwL|SiyjDj11`#i)6%a?l zrLSP8gVg^(9?4>fuMyWFw!aYmS$0d{*oaof0b)5G*UC6eEXU(o8JCf>*?r)j&s!VL zMp>TVLf+O$MTYS?)Y}=iA_tK3SO=p$a+WQ}6FL~Zh~;=f2jdyaKN|CQG)5o?HNl1a ze&bEjXQ1B6c$aj+d8~`E5jo42<9%I>y~J|7uZwYv@_&x`A213izu-dN%_#S!Y!5je z_@I$QEXM;MG;T-EW@0=rpFd= zIX=?c_?YrPi23^%TPeTbLf+RnMgF6JbM1b{pTtvvX99xO=UGM@WQzXRvmuNmU&Orm@-FKZ@nMP!&C0-Vn$7|F;%O>iNf zXrz+<8gQ1GZB$1Nuy=vy+LI0O^(L`?p93%OO))wnXW3VPbM2`{AL5wKqP(fb5M=1j z!1+AK$U=tx3|z=_jnT*f_7Lz~dzx{UcqH%w-*jW>Hd+5Iz`6FD#yH|%foB3wL(XR5 zT}1pDMjmod6I{q=8HB@Mp-` z>;P~+f7|#5Ij9LPcI))0>ao(cRV zayDBGoX_7i_8`Oi4#0(cp&`CTB-(p7@Lc;nqscdtuK+LbEi%Mch{gW87N+9l^TkFj z;xowa8@I{x3u{|L1OH`4W8yx*bM56u3*u3zuP{0i&q95rA-)DG%3qE8D&sNYov43c zJWYHG^$(39#8yoaf3*=HjssrcTVsqRz8&?CjLF0uQD1A!Abtwycsn3H;}nUmD^oMxs40 zAa6E?BCGM|twsPj$RZvT^ErcsvPS^-(+?S^i6;RM0A_nce0bjtcy+{Kqb%`3;7@=Pkh59Y?l7M*;wK}M^yEln(2p9Ei1UCmf!{<9vX6lGMI1Bc zNu9={j~N-?ig@t+0Q5X|%;&Vlfx#>ouPb%l z_>8zb@&#i%aXN5JsXvUU10sG7%S66t^dRmC9AD~^v55Eypau$0TxO%C}#%0O& zXy6R}vSA&>`qK8eY?KP&y5OIJd`z1K{&_G1`_>R$u*fa$ALfI8d#Ni%L#f;HeUd9i zW8%+2pUX3m*rVJ9XZJ4`zRLAMTYqaP@g|f3p}&u3kp462Es=xtexHxeLk_^fO&lK`z6|-WBcJbt@ioNq z`A!)B968HQ2LJgyoNpnn4ZMqm^Ha!b`$h2N!wmkZ_l-*NvB>be75p>w8~8e6d3}Ea zKSBO-``*AeVf)JWYX;OS&0j`6n@xxPZ$P~=d?oQx0{v!3wz+*~P z;}a#@hk!Hmn|S)KQZE2rY~I9Y6JG_MR4SPtA};&5;B@XkCH>=(Yw=j(ddN3(`?S>W zL9Wlo6F-2Q!Gpw)A!qU%f0O<%A~)d)#BU-uM8(t}SzR&T=rO(xb#=aYf{WZm z^Tiaa`C@%YSM$Y+Sk4#g%LiQ%5pvj$#3QzM*#EHODD)i@JS4Da1ed}lV0n}A_&tQGU`J)l|zgeM( z<@4ZyN{?s@`uqxm6q{Xu7lrUcz;8B+f03WIsu5Dr!t%AY~bvIF3Mpu%we zJn>xMW56#XA9G~+!}(a`peD+H!5+@Xhw#}7FYtBJAN55QUgVj7iuK>9$@O{3t)E=q z5qtpZ$23|0m-#4SS^t;$8_4o{*@$|XFAd?+QLpgb$U!FSGls`}dX4u$&axx=isR4gd>wIR;960y z^8)y43Y3TMub*VE^D=%}zWlz!>%1bdd|zTBPnK-U_a!FrTadHpdSMdJL=MpV?UVR; z((i=wwrG=ikhlZ#6n+W$u=XTy9-GQz!(@Hr`xjGrs$}{;!c=}g)<2ugxkbFcnZuV6 zuLkxvdV_aBf7xCQqjLEplI^b{{@qd2cpv0|eE_&2@UzHj{_S-B60v+9J&R|_{B(Ww zHlJ9`|80JvnE!l!rkMXiezBPULf#@=tlu$B#$UqQBdhJZoIeo4ouZcW{*vvmelR~X zY9$|n9I&eb*9%|C1Ek-I`YJw#^wy}a;*+FK_5XmsBbkZu-#qpK-$Oi~_y}=s8F)Sw z^#Sh|A?llD7eKsWQET`VV)H4%AMwqSDgIi%gY@R0PmEg2ewH*q4^0Ph^&r3pYmPEs{KCYrzP96{7?BcVp;yDJmLls zAI9IF7S|8!c`P!FzX2EW&v{qmEL+xZ1Al^8)^7tJBK=th@XupGeh4|hx&klbL0-1B zh#z22BX8v5t7Ap?JDd1uWO+Q89kq#ng)Hm8L)*d+O19TP{=-pQ`4QxR{RQw2Z7V+= z;-AO1@$<;)dUhK(%gFYV^AET2DC7Y99rEX~ulaCfb^rV|A0>7BD(IaezUGUNRr`L! zpC~KhsrLPb_m@oXSA4@?CYJA4e8VRqtM@Cm^I6F1{feD@2l>nQD|Ydpk=6SZyLi6z zXY&1q-MkchhXl@dc4U9}mD{L2yc}}2od$d!xDx4&QU8|5lim&WZ+SZDgHivE*Cl-- z>fiA@NMDHhUf!7W4XE$s%}GCq`aa%{^b4r(cLo8^dbH(@?<97YYL10i6@o|-9ATn z6Up|U z`Td+z{2(%npF=-c+WeF{A4bUc<4(IQ&bOnYPxB`5g)lW4PTtS`GZMC@;u z_)WxRhDz>HUFh)TAmDk?m-q|BPXli-FY)oj^N|br4CEk_^S>^0@%3MkU--WteTA>D zD_QuzAAOa#ytzpKAo@=}o>=G~L|^06iGM|A<~tY<=EL0q-wSG?nTv@(Le|Yy#Bmuy zH_VTTvyi#D9OKF3*>};V8AMjsGq$-MzVcUeJ>!@ukWU>?8b*bg^(E8!Io!-dR_Et% z^Ipj;bC_tq2=jj82Y@?8MVLK^`=fq?xrjIm^&3pyK$I6?xu};hGl-X=UdC)fyb<*q z%^c#>sNZPLCN4c(lwZ!Qc&Cha8*rzna%MH+hfuFzHY9!y^$KP);_;|Qo9l^J5c5nK zZ#Vi!o8iRysK=N$6FV=6@?y*k;!41ItdjW(aUIkvnG=ccLcNMP7GLQMu!m8vV$POK z=j*EG2X~3`bL?TDr&X+KZbuFO>U)26%%#Ngdw+G!NwmFtLcg73-fY6g3%TE{M=b9* zJ4MxZS-fBLe8t;cmiL=?nny8ymVI`Fxc+Qto|g5oF9X*LZ)jeWI`*fWikW6?GqHX_ zW(7q5yxVMvti~VjHpe3e*bSgB^WAMeaj)>t#{RajVl(r`=8~g8UsC z$?O-1-&yZwb`0T@6(2N5h49&m51A`Nco*w#o+7>m`OjADVK!@p@tNR1Dn4w^3*mP9 zBPMHIr0-%q&H9q*eyx{zAF=!%SugVmVtK#zs5zTh-mg7o?m-T)@-K_+`?z_Q^ygxJusJZSjtRI~(hMM&rm-S5?CHAkOW;5d2 z!1tL$&HItFSq5-Ef8HF99MlBcF~iM+y+!^2YY9BmdeMBRkK`wS=a?hRMaWt9Sl}(% z%jOZ{8OS5e*e8X5Hd_XqWsWktA!pe;QO`1`5FbT;)!d96V3&dKGe?_8NKbhMzCRN) z#=Jn>7`Qwz?$$OJB(i!R8n~aVZ&&bN#>bh9hzB6QW`;i{^pR`~aHW{n&4v91 zXW3r^C&WxN*AX8FP6OV8oDD9by|T@{$U%6RCGJNjoBPSX0dPXh6!R2uXW%s8LdyRv z=AUZX14Ma2O>iN9!}KF(*-J2gt{F@G1?JB+Q;9F4KF!P^F8!*AKh11T+z>b+X1dvp zxIOCA%|66gz%A`J&Edpzf!hO*Mb2jHfnolFnTs6M1jGCVb2|B(qecF=%tgfU!0mxQ zqWpIO=kwX-Cgh+dxRAeXZXy54z;$Bgng@xO0M`fp1v#5-#{BclieRBf&*9Ok#OU)U`K}~QWUvADKy)AH-xx!pQ`QHF;7_-X!f_M#Z zQ{Y|Xe*ie2e_$R)hWQ-8g?zPnj&yyTh_}YPK>1q$*NItc+Rw`Me;l|zaCzixHWE0W zuQTJ3gPPz%{)w4L`aIw)^HcK<%6|s9Va#V{E8-i+i~4E8oqnVZc`lt1+~QJ<~me&RO3 zO@U94|3Kh;zRkRV4D*G63;EZkJrMUN`aZ`uW*K5RKC#`bNjwYu_nJG*R>bmq4?E2P z#PWL&yUgd2v+Nz<-!f*mIiC0^aC_kC$l2@?a6aE-zAN)nOkALjJS)3;9=iUDW@Gd4;$(aCcz;U{T*} z))Y9OA2p+pgPPz%e%x#=ncm+!VU9)~$sPiIf$xNQk$5ojNwe*9B3^)H1Lv_{%=eK; z();DVm>&}_1bve4S92Tre~kX8%$h?){*mkg@RKp8%v+JO>^mpIe0|`1kw>w1z=MH1 zA!oCm!1?^N`6zNw6I{s8nCp;7vXQ{A#+)^u7$)N{0A8&BZsxuuc^mNSG3U%x#K(a* znCHwOa+WQ==lpt1fw>J?y^mI4UX@Jmqn$U|2)X|9eYErDE5uhI9=uO%&Oui1r=2%< z5X<+|E|^z{-)bt}PrG1_dRfF%???V&PC?GH>%u9lPRvDfK5=v4`oJrZv)RMI`TUak zxy-K#F65WZAor5UgA3fQ#H$4|ElCAsM}V@ z(Sk>^AaKJdzqJxM%RUMGQB0V1iufvWxD`J}*5{_l@cq1)2&)@$J>*hW5P2kP37n?g zU_C!p`o9W1F{-pRp7<@`sld~TcK}b1DPt`nJ`Ow^_#@lso|SXsd6wV7b1{BVw!>#A85j9uaG;BA$s{$@-Xh z6>yqX+4_Qb3+h#@uZVv@J}9|cqmr#8;;q0_fo~x` z2YfIl#kz<1D)2&{V%>+F&3rKBC!eQUqmYA|;6k2mO_?I&*8=XRSGVR9-wiwfcn$G$ zsMoNz5>G(AhV=vTNcIkJnpV>~PWl<(Ix)4ZOT^{h5c^jx%Qsb&m(3ag=kwZDIb`^L zKX4(hYgHhHIDc!=5K4wB=*k`_m^$0m2^MG8;b82wX+W4{SF)tfxm6j&bk}V zr||tr;ErwETQ3l=L+)VRjpxg37N05fj#jr}vb`n&52$yam5=9-Y*yheF@Ai%)sc?J zqkx}k*U2iR~GY?dIFD6aQudGG=HN9tc}=Tve`{A?$oM7 zSF3>fM=xNQFJc`eeg$|~hi(=$7W~^7@yT0ad<}jsgjhVE=o|Z>wG`V!j_(Ws{to$= zBmKKuKN3s-?$&YSEc-abJ655)byhOoA8#%Ky|o8avmar!|i_5ys8lkM3m^5N9GkYTb_U1MC6h z$E>3mKfneeKW@E`@dNB7maeXS?ZAFdaX`&kb9tMP@WtTG`yJN79n0a<-7`e~~=vHV{2)7FE?>Um~= z>s4emp3&cWkC?uPZ5<(&;~URd_aV#qXWD(wTD{&8^_Sase(XSNII{Zw)*!3d{33m0 z>>z6*vYHR@oOOzLOAYb8$6?kjdBR_<-%D155I$S+C94y1fOVfEw*LsLFY+->yf3~d zc7!#7SiEn21bz>19&vB*KN$P6mHe)Ve@yESd^9%8YDPQ^_*Co|YXtEK;5;_onoayF za6#;NYY*{w;LEYETPKNU0JBOHt+)jm#-9UxGn7vwu<9Xt~DAt%YGWTUU;sRBmJp=O|xbf^PdJkyDZAjVdA}sCh^m(&cp%W z7V*=q^~6(vJI23hg}*2LrvrD5pJ7E2zk~V=+@D9VoVaDc5691RS>}JsWl`Sa@v~hP z<#mjo=ki+M0rBrx%`tv}>YrzIKvwIUXZ7&teLebkOgIGMj&D0lKEkk%0 zd(V1;Sbi^Hku?BWjmIytMj)&4`bE}K4G;P$n<5!XRh`_~eyjfXo)X1{}fQ+HA%89%U^5FA(rK@wU!dg_E~GKCYJ59*7}TCw$D0iGqG%+b=FQ|**+gz z`-x@yd~E$pEZgT3>sMmgKA%_xl4*N=YSmbV>regZGpm7zn|c^lKIHk;XW0J?n2#sE zk5{|m2A9S2s~Zx&bQ!;om+%#_Y%kmQwX2K#i3!_X7WwNW>~UG-Z<27(lm7=-7x^cZ zI^?p*-zwpV%QF8j$Rk*G+<|WydnndWyadfB+DF8H70`@re`14xKT7bq`e@+w3AW4Afp;d9@{K0{ z<-k8BM7p||UwbYg+P8`H4WOS(sN(A10$)u?@LeSRC~}Icp93}%tNY?t$olyA!uKQ+ zYmlB37Y7`fSkv{d4IG_V%h#6t8zE=7{%wKb`Jl@W0S}08>GG4vtzCW&xvk5uAh$<` zmW-PKTs^TPadzB$z}t-b$v-DH#4f%sh|i;cS2updK6t*Js5m>W zGH}Plhkbj={}$lxiI4gUh&us4p7^+1-caCviM@T1D`k6)0Unar*VS`@UrBu0mqz+L z;PHviy88RT1L6n!8j!vY_>IINZv8f)KGfx%z%vquxqKLSe&P#myfeT{6G!;kQoKKb z*CdW~_3-`BpAtv;`jcK2cxU2RH{LD4+l<$Idr24PW6PM}>UV*DFi~-KTsz=ni4%PX z$-fuynZ(I%d4quq5~ujmSIPEy6?v+wzX5zHF~`@D^gLiKX_~8l0Bk2s_YEO^Bl4SW zef9v~kTk>PpMlFI&GJno{{rCHq_?7Kqx{h+T&TuORQTrc2eNy}V*3AlaI3YXsm?w0g{%d3DN zO_v zI{>##j&jR;4!FI`*>R(RyCqk)cawh(a-3Vl2>)#gi)5)D(?gM;2`2l+&`M(Mr$-CJrLik$pgRcKH(5;k*>~*An z09+=e2kPQ@u@m@>#D`rz4O}VZ5tofaa6OXpsLR!X>!kE{xhZhtlzzw~Al}2k?NbK0 z`ZK_he4wjO2kw?K$WC4(+E3p9!uu6=E#wWl{Qk#ayBTtjzDN3;{R}d^e+t+C^Z9f3 zC}R1(-*fgPWOyGI;^*@r_H3D76I{rjx7Q$V(C4=k_cz1rP12v{?+mlAA?L93;D1CP zW|#g*Zr{km(0@{f+s%p7f%~PrXb%bDXH#CXcMvxQ-HZ;{7l}Iq4^Mg7F27cT_03`3 zfk&piV%J1g_Y?5kCWOjeim815BRD*oY>b>+)un}-?dJ}SMLLkwx2~l z=E(N}$J$Ftm+u3PwYz*Q{EyN5e`D>(k%LVB{?#~p2(p?VGtQoYoMjJ&`j1W-XRkw6 z@Ar+fgT(UvzH#uiL{>m;Ga? zHqoAftj0&O?a`l!{AxZ(ww>^~VAY=4c6G@#A3WP`NG#`rXWOli)qL%icJO11l~mY z7Sw0k`$^x6`fU3&>7{=b`RCZzNRI=~1TMQp)Cb19QGeTxM;^ucq5ihbsQ%*jVy0?y z?fR(auoa*mPkG1gO}q{{&mKnn1@Z#>HR2t}@7Xhm42GH@#uY}5AAehRsYp?OUX1p zf3^K2v7Dd3#?F;Y^Yho*7m4Nk{B`#1uW|ioe*PzRHzMyTe4_uB_0XBnw7uz@?g z(h3)Ec2qh85y1j0nfDy?L)+4ffx8L z+cgi0^0Vw!z`6DnyAknb;F-W}kh9tM!1?^D{UCBs6Abe&?Czvr0M0U*^9XW)mH9=K zr#qvG(|{NF4Cg!KEc<@oT$?*5i5~-=3H%3gHX96_&rQet9@|F~T*!Tn4;h|60cV-E z<3|p#w}I!{ekX}|HShvonA1e&XY%`M;m$VFkAObM40kerkn1n!-CyDqZ@Lc;wrxvl%TIi9^ZN!y;=i23* z#>DdbMdh6q#Pa(^6`U!ue7b&)a%TM~>MQ%>)2UI;hao&XHOASCtlqz=;;jBj_^bKo zan8Uaf&;8M)PHPhHRmF->hB58uA|rtj z8S*2wC3nBsIp4zTASe;!M9`VhZJ{2X$S$?LmRXCkq@o=bDsaV(F1 zUn$+mA(p?VRNaBfun}x>oET4Blv=}OalgGT^>&vB{U+`|8@v1h@UWyN#5r+tyrHS9 z%kjm#T^9GVn^W&`S&V;dPHjP)9Vf=mcBHm(buqrPBeflIPFxn0w?DOm%hP~=2;qgm zZy23i{S)BLshyp5xW1E_i2qA!H|HR+i2qCKgKl|Wf&Z|ihg{wdJR+&PbD8{)0OzMZ z?CNKL|48lWgr5-YJDFVpzLxr^tIP4BB91sC#)}?z^-92IT5p#VQ7__Kft|D`U0r9Ph-P6x%0< z-3;6b^k&HF{QsIWRqA$Q(0io4=FAG=PH7XI`N(R0Uw1ZmcxwokvR-$7L{`u5CpyQ8 z<@5WA&JDlF{ZanjbGB0!S>2yzJN1a={plp9Ke2p%KiN5pthUD#r`)e1o;=>2tuVz& zKvv)TpXyXc&axN4`rTqpb=o4U`TA3x50L{b2>Ki|$Js`@{C<9})Blu+ufCr@(+MI6 z>HGULout!6*U`Kc!BRjXC|_`zFF3;Oc3)y{F^b-=5Ee z#Bx00BZplRx*R|FC2g%^BdhzNwa&*FPySxRRBf%(MAOCgU;{6}@i_fsr@)Z>D)J{z zB$xaqaM|=vowmeFfTPpbJHv@TL;lQ3Hl_a_;Hv4LJCT-P)n7L_u^!GqR`ZKCIIDfa zU(GKHI;9=S@_hbBoMPE8Ih)=iE*yM~&&V!g=mYr*C(;4)9&+J6*m9 zxOMs-CpKKRPgmeh>EAgS#E%2_OyBGDC4L6@$@G2BBI4(PpGn{E@Ccb-@X+)FPA}q# z$OoO_#M6LBq<`S+Hwae!>qn%{!%JWqTG zxIXY`?VC6>c^c^$N@GDIFFrll9Qmi@P7Nlr8E{-!dS;I2AZUKj~~wL4W58 z@Nn~_vsbbvzT+X{9U>k<+%i@AuLXX`chc#IEZgS@_&=By(v@=&S`?NC5SG@JK^G>f& z{WoW;WcG0tjiuNB%~@PbKjZvH`fs4ut$)T@RZKtYlz9~6vB)@$-CqB!)1yyl{CwvL z$*f0JQGUMT3=P$Pcf@xKV13#61Ze*|es^Mrh3e;=bjhq$qR`Jd@x}B4Cxi5-Q7>?I zPYBI_-Z?0l?N8CzwFc*%g4aX!3(ghEEH+haj|t_OCyjwUViS{o!mNUG}d(oGrw%fBoTXBY)Yy{&039 ztN!(e)2|#Jzv=$!qBBS`ORA@_dz)W$zAC0)a`uqk6!lBa!{tNs7dpKqv&T^{bVfym z>X)7IlG#kqhuwPF$%vKf@4HoFh0U)xqlo4DUvb70%k{tFJduX}&g0;3wz%T-mrVQD z6=w*sT>mT1rgZ5q*Z+#M9a*ja73U0cfK9($Y_F@1Q(gE6*ec=#;_bwZh<_#S)=c=T z{qL&NOEUYifyTmHUv&l(e~bL5qje1RzveiSS&KV0wx#tor_24JI`cm)nGFYhNe$-z zqHn0K`M;9P?r5m7Z`x@79|ni&y8oDDb_Vo&o9q6`Lqc`K|E6TtIa92^;a~VdaecXD z7S%|^H~ia>4{P0kwRYSe`J(VYtjX=g{jtPydvX7RFQM*i1OIUFe^fGUFYfP4EVmc; zKSlm>dvX6@WVOAx|Kh07`k8+A3Nrf|=5OC#-}KLWHB`6!izG9b-u|I_Q$K{6V;r_{z*+!vv2>0JIEmV*2H;~M(pdR6GH9b@><-bodt96ga zU&=pWMyP&+KSwgl1>N8A2LDRp<-qSpm-h3S=+CwRm+4r>-Sg`Sh#BsQ`?N-~RR1?R^u z<^9{Y3SAv9EBK?fNtXSuf%u_o^*Mn3&+P)`^5Ms zNM_Aii}P8G|LC#M{IUMilG!t$f72$`KjmtuUdca0GV9(({Jvi$f9Y#NKdj9GPOVYd z-`z7xuvTrw@urHu7qY5P75^e)S)VHYmBg|>Rs7+2zo6<<#UCk|>QluZODyYC#Xph! zWqqpnXCkZmRPnDv4zOKVpE&&OZaM=T(1= z^B*CW>lf!gMJ(4Z&R;)Fwzs@~jPqworuB>SHzSto2lXL;xqfl}AhKG&IRDScs=cfF zuMzicFX~s-4^KtdM!41$b{krq?J0qOApIEWDxb2yT_^oA>DS2mE{Sq=Ru*khJyg8w z*-Df@p7MM7dgUZi{s_2R=1up;_qMOnz5S*g#eab6=|Uc7vrDOT3oKfLvOisB3+tLpQAi&gbj>rqlW zsr4D|Sx;|%Z-09g{dG2h^2v79S#~kjnAcD78|0^0#gPp6N5%GMoz3vXRrOYO5$Zbo zi2P)_&OR@Jza)R9|EIjw6R$WMZoT%9-w$XFb`&jl^>f$JuaPeEY0SX=U#H`&!73ng ziuRlPLU30ZgJNq?Pr{d$n!qm=(iwD8^|+5Th)d+ZCu z$`+5Kv6n#C;cqPYsqH%BAMzZ`r?WiDznpjtT7!K`=^H718>LH~lWwv-7vipDA4IFO$I%+B|8>%bl0K5`M6&X@ptDKDs=POeXMrtU zT4VExz2^-ttM>3(S)R_+`CZxfDX#J_$xr!v?Yc_xJgnBoYeoG-uZvVU>nXi{oXqdF z>Uij*{lEBijn2Nr{08mMob4=DPRY7zul?lz6WGx973(MX1nJ6Ot@rg<`Kk3RsXYrQ zzU=>Soq9#IlfgJz&g5~!WMRlf*K^+ZiXXlv^6Tsc^8cUmjg+qr?T;$1+CTqpJ)=GK zEouElyNiC|ZBJEhN%nf}s`Qfbmy|B+1N#TnU-^0K_n)%7?$TJT>ue`gzG^4AUM2VI z>*=>qdBxAi8uN1T^RdPnV?Ld=r2Jl1?R`Bf^A*KY*DWQbE4>4i>pkzw^ZLJ@@8$IX z{2mbH^VUnACv^50>HW~^Or1Z}dj4HMb$nCydi_IfPp`dRzU%3#{K2q3;`k-3*uT_q zK=mhYdni`dgI-q06P50@-uo4=uK4fzDgVD~y>Y#Ky*O(9)O~}x54c{wlJu9U-MzZn z9_sk&-JXB<_^OV_-u&u#qRRE^*JE|u9$iBH)pf0kUy@brr`mH8#hc-=qW_1UcU8QS z&KIixde@_*_{v||zuUg59_l_pS?@T5+OJgqQP)ArPsaJ@$Lsg7y>zyW+HDnBabNHe zT7#_*O^0i!uR>S@zw^Q`4(`LypBM9IapKq@jt&~L;2E3pFF9RfrSMst#%?4l^5OX# z^K0xTum+Ty9Kxc;ibea2a?*qj^{R>foZSglXC}J`*^aKb!JPKa;%+tkz3J!ghlQ%h0d*dJFvn;SY8_*+I}wqQosF z#QCO#I5T&ND6$ixpg*Mpe~;zpZh60kmJ=t+7IFT2_5Q1Ri4sIQi__V;64r;~ zGh&^Ep*7H7Z6~#UB93?cM0<<$GMKLf8z+3kzrUyJaT+T}^{E6_^s8iK&R&B3Lx(tG zKM?UmzXYclekpQ@`U-!!J}Uh`w6Gl~K{*=49V+@SSUm2y3~BIBgTGnA59*PJR_+f)`J|s{ z&sF3nj}x$e0E_x>Lkr`_WRc@!J`rE}t9nQ)by2TYfHLLQr9Kwx<}>vZ~0#@-v73))>G9( zUB4--(v_cTCuLQ-^6N?4>!0RV`IJ?0RXM6$WmUTJQ~8ut>B>*#Q&y!bKb22em9G3$ zK4q1kvj3;~d;7PS)%ExPDOR>KJQtvTH2iONH2 z3bY>HxZd_s+uQ4>(!Kq_>*wXFRIa+txZe17D*Ed*{%zp>8jw5w{r_~)FaQ5*pPJPE zchGigLbfg0`^k1etFs=&j}yyu!%bJuxt<|CK>n|j_4b#)JKj2t@~iz^_T!@cU+pLI zc&oFw$X|^UDPDr!b3OWYzJ$1=Xkcc|c=- z&2ZgO%wK1Z5EmauQS&#v<0i$^#dxQx-);3|{~U_(iu$E$C+~jw3YDwuSYofuhV;;J zXm1?VZYqwl-Z+ZYd01KX9AB|~PV=wF9aXOC2Wr3f?w7K^>hydVMzX~CC$y8AXY#+z z|NeacultkQzW*&-(!5FU{^mX3{QGt@n0!vi|K&NMs&@|c%X{$oxxwZjbG87jN%OKS zilf1&JmvX(9a=R`QqnwtB7Fz>tA28T_zYQ9pF$7+^?9f0d{a{YQ_mIEb*Hk9F89aM zWEHFDKFTUx)yr$IcU%kg7yD^6l^2>Wj@#-vjM~5AOYl?mQtP44hmGK!kkI45_jp(#Fj?3bnCebd&oe|9FTj%(^V z-TNH+5%RlU{Qp#!^WAjTpUU&@$6nog-dE*&?Fdi(m0nVRQRPg$PCb;a#xa!L1m98; z$H})Tze-o*8P_X+Sqb%3`IIfG{z_N&@0P3LseH<+bnpJ8(v_drdbgjKKc)5D;;|}@ zitjD=db(O)l~4IATfd<^kE!cUuT|Hf%F24E`)7@*^PsY7p0XNG+>h&{yZ6g#|2jtN zc@C_&ZfAz9hpLYnkGh@>r+jK2ids+adi+o4@2m5qx^7a}HL~4`?kD89_urpSD&`rB z=ZqDp-f?7WqSa}BvB7RehU-Vt@A2sEC|%5#5E13PWR*{2-N^q@v<7>M{9gns${$1e zBuf9g@l}0P|CvSk7m$_L^YDEu;`d=5gQ(x)P(4m#%LK>4eGR4?>`S!Jj^u~=<3wKZ zuPC0pZ_?TKl|6TuoA5VkrZ<=C1EwX-M-2QPeA3`wni^`bJWj}%WSWU5iSnMve zK9+{M&FY|a*zIWjEFJYQRt;@9Yl`V`oIs}d(0>2z`0BXY3d{2xC*q3wXFH*Xa2F3_ z{|(V)e=h2`Jwp7&e%1$Ahjx2jSjF%^!J*}-{o=2lx`P$l;c2vRzX0>;!m(xgU!ft`-}N@YWu5xuJRY-kb0@OyQw_n5MAW^t9BOSP$K;x$)lkdq%E871e`swUX%n$pcPqquDhtxyX6V6wpt9pNr^QE9E@gMassK;OK-%y@v zhriNAyOyT-XyY_io>*C#zo@^dddPM*SQYYD<^0|B6p=5ERs-r$8{_EgcC-fTKyg+2 zlb-bdRy|a`M~e7y1{+P~7E6bojOiiuRr*A#mpl(}IuDpE6OUIGYk=0r)N$jV=9`W6 zD{3#b{tGTZ`!i+knj3)_>zC=8OI#KiF=?%JaqneHYbdA6kRXmqqO)*TZ6m zQCHXRIy?Rk`3#l!2bFi*HqmDPem@B9hj^Zc{Rz+0A=|rHI>ft1D<-( zA;bM396!Z&5c6>LIJkZm>2VqxLb{v}@71A+@t?*kEMLsV8#4sVMSy$9-!`f zOB#<+dEW7hlI8~~fAzdVJ-<-TEz~&9 z-(4RSPmQbmU8}}lR5>c2idT~L&d+-b+d*gZsXhKvE~#8^y4r5u_lZ?I{~PXuKZL!WmUTJ zQ~8ut>B>*#Q`WoPl%L9{;wbB#-*Y`K>G|+qr(b`*(rMT(;<#9d)?g9%t;C}J!Mi@H z-fF!Rmt@ubcoiJ~GgvIf=S)6-|JVC{`8^ApzGvYu`5tD`{eGIr9~UmKuj1rcM4TtQ z*MXDZThrn^J_T*b*N<{Mq3FCI<#E@;XDbqq@%WUdMUwkG0JlAx`Rn`0E zqp6+~&>CzqTF$1Uh39Q#htoV|WyO9b>aX^jlCBffaZv3~-u+Ll|6h&oz}KbSdAKV7 zUmq9Xy(p-Q=z+!ORsQSoLOnN9&tuelC%GQ~{5-da+DTfStt3{*QPob$degn_718;tqo_E+iUJbXPrbzM}FO`v$nD!-bP zuIg3NdFXn&w;#R<-)o4U$#@x^VX8Mew-{vm9L(^dTqsK(oeNRCE_@; zH<7hk7LRu`U8kygdDmO9s-IdfZ$6b@STPQ)GY9V4Y*NGk|{)rMyj98jwurjPZESa#BhQ)@(gvEg+gO!D{%R+itNG}WNWg-1W)&!RNuw=rL z0ZTJj;$SHaiw%nji^F1oV}N6TV}L6`o=T9X5~Npx^h%Ik3DYxJWmXj;3}@9~iH9Wt zmPAOa4z;Kb>rov_uFjUS8jxNKY%MsN)`9Qp*9D(@Sd`Y1C2MV1eeFJ$0ZV=De%29| z3|Q)Gomqd@1@d)gtyoW}drzoGPpC&vs7Ftze@|$)o=~5jP@kSqpPo=&Pc~ZX31#$U zi?pY}r$3Z40G4N98Nse-FEg%Zf&XZT`8w2N5^JJQg}76pEvCYnOoiA}A?8%@nF=v; zp!{i&cRK3_ODpz0EPt|ru+)bo6PD7jWWbURiw%njivvqCETgqQp)S`ThNcZ?wpNun zu=wHsvD!db>cf%=O9m{>V2OjJG%PkOCM*uC0{(H@AXW|Xq-uR&c}+`&HA~eRfo%n? z)CZQ=wEB=%AJXbWS_7@I-T=}XXm^8c1hy4xs!i9MLRwR87T88$TR}_rf#o&$^z>6; z8-Z=bx@z@|u8`JM(_v`@ODon5(z-!fH%RLSY26^L2juMmX+0os4@m0)X(x^3^5X0G z`DiDkYh1EJwhY=`EShXpvMFS1lf8{>Bea?Ny=2>=eJ}lCw5!s4lN~_%P_(;Pfb1Bu z*<`1oU7NlD?Gd&NZ5~@g_A|24OxAld@eZ>4cBP{zt_)VM|M_7G`H>O4baRKoW))31nAX`-v?XbYtj^c7n{(5CN*>onEYojZ` zuR`dN+RA6(*Q0C3k{(Ox@su7;oKD=u{P{-sYCz4Ku^iji#ry@hZ_Nx%wo4ODwo6OW zJ5qW#O7BJKeJOn)r4M)GorQQm)$C$k0DGb4C`uns{!_?*2BpuV^hK1ulG4{vdXRV< z@ow_#VirRDmuqoN{`x1^F2};JNa+X3KbF#CDLtGxoOl6)reiH?r(pk_V~)pu+otvu zvPUpZ9=tc$xDxytqaMz(z%J6lSt8h}+7V6m%W(D`a31SoHi3ApYlhRW1&6csm>$kf zg3W;ZZ-LF!k7)OTUsGVMGW-gMeoAW%d<61$0(-J{0si{%$Qq|K*on4afX&bwX~SUu5_TN$e4fw6uSu2$eH!{L(^i8mUuOXJuPSxI zne0ac%xeMoRqHyZw7sBL2mga$^VlhBcaHnnu?i{dS4eLR`F{cbW_8+OJ3Ue-Tz@l; zvDfr)eGS=tU?%||mzMUAaD8GG#-7*PY2sHQ2SC30phG+Bi!eQ0|AP1exsU^Db-m~TE0XRSf+4DJ33#G482C+abu z2h6Ep->x&pTnaX?&NQ^|L%Yjg)#^h1ERxzMlG;B~liN8GkE^ziYw}m9BbjQye2AB! zM>5%dkxaHCp>-l@yT;OX9iaIjy=>hv>?W{P>jpIO zD`)-m-rCK;!ro3+9G_C^4#j%cue-qP0O{?(_6Pew-DPGL*dBFLj2Y;kV$4Gu(8RB( z_0t2GF9piUgzei;AH#Z}U0_zM1IJ@?fVK$y`%?Ttb;oGyfnNZYzp|EMYzLlHcMbO6 z+`6Bc=Yij;yBT?bFI!8kpt1KLeqFGBBU@_$b}eu>Wa;+>@M7dHtXgBZ=`ubu_W{3C zx3_*W#P6%R(fI4Vd%%ic^*va(Hf^U%bbPLD-Wmn_Z(Yrj=Pw8Cs`N5s^Z7W?=l_3< zy$f7aRogbc_MSZ_V1^kO7%&7(N=;NikTVW(5D*0v1rik!Qxe4kmX;+ZrIwbam6{f) zrKDw+l|GSSYH3+%TIr(}rll5@7CmWM{jYoN8@}HD&-?p6{jKY|?|ZGi_Bx;Tus7yA z{i~_E|1o@Thw7nYV6(Cu{wZn?Q*V3?=6P+0@+x%S*c}S>+rZd9rUTHo$LvrJgTrH^ zO<#fI!0q7V*uBax;9T(U%u2AXo590k6HRWgq8w7fz!(=~x{rxNN?+(Dv4@mF;NL@X zP2<30VslMZ;ITo6p6*afCu;LYGKQfVAmV#5 zl;6kVu9&XC{zP25iN>e(ao0?LKrhl1v)(Qg^UWc68XR{;qxw`7t2zk!0qBFlAH-SJ zT<{m*5z=l|!}L3tbEfHm?EufSV;>Q^I6Fy{23{O8xViGJth&$%@*7a8p%9 zJ;?ki^Lfcjj2++TCe-`t&SwN4`A2Z=@M}>^wIIvYAiTKO%#RT3yAkl zY1hY_pW`nH{cC}jg#H!4M6uLE{iKI_55hf%a?txtwR&qmA?(IJ>LalK9`96Ff<0=r znlJ6u>R8E3Ii33WbWE({_0C@LB2Fk$)K%<1L#8_{X0GI{#0BQ>;lIJWg!8k)oQUz- z%dkf37PDSoXA%=dOb$OYO)|cj z_9pY?dVz5$QRwY3QRwY5QTD6z`2Eoqg!fBI=kzA3Z|U)i12Udw^Y`FxNzLZ#;P9kG zp`!iHKsoo4yxZKXCzW5dIvkvtw3qX7RB~R@Av4v}$Rx}g1MrPD<2qGeA8+FMa*5FA z$0b6a*Ah+i74WAFi6$Di=k!ig_4HS(`qym}#SGkMvprG#5k>Lkayu>Ka3{@A!hev@ zN%Lm#d2!PG2J>FYi87xLCKXBEjNffgJH=Pi%pwByZLC(kz#g?o)#tMX(jWUk+3uRr zo|E9eG^yE`1%4+sQN10!I;o7yuUh>jT8I-!SEa8IFM|7^e%ldm9m0+2R;|thj{+|R zdl|NII*K?SR?AjtUn1U?T&;czeqV8_)Nh_MSE?7F?@Q9>y+cVwVmIOsFm03NdL*e@ z)xQGoRR2P_6tr9YEAV9;f3>QARd|U?^?DZJ^{)_Ct8uYH3^SqqgHIS+)R;JopQcK_ zu0_4pUx-Pj7WMg_LhQtP!<$YLlUvj}gs(O2SGz+`QCrk!p>G!ZRa&=w#2ANA-0! z!Y@PmHj5VZeR;oV%cpYxSt&k6xYXptF5PgmA~KTGSwGC>eOT4M?slB(E!slubOhqP zkK^se+{pZryw6b)i1=cXPjfpy&+WKH{S*FkP1iX6RO-8~ye_$2O~Z9hCU-Em zsEZLE>t1yQ?9Xd0>O&~kwQ8b8pFg9S+c~}Ms{XaPGUEn>-y9!pq5bd(50 zlxVR@UKcHP%5c%*9cgb-7b5(Nre^gx^r>pIdP(vUV^HO%J`g*>|&|T^~INlu`Z;>Ga_LV6`hDgaRYAvqcjDEC^ z80AglANFzb>&Rd=6YJ;zL$x{*;b)+qQN0pVz0JV>;U}yo`V1`M^RXpjJi@i7ED?8u ze@;mh`goKmRzv>{I*o%$YNB`*x(DO-0m)@TzfYn#E%g;<{cE5t>Okl_v_!E;&W|Co zJ>Oh(%Pr(6^+z4Ej7@t*&HUUk~iCyduMg7-;{V7#w1t_27`; z2PGMa@XO%$l}qYwFyL=Qn4`*<&|ieEm+uvou5U@(E6a1U*u?9Q zU=!_EZG*3<#D0VGc|5+N>ihFxxek6_J85|&O^CF?SG2c>;p?u0_5Bx}!_fMxWN?Z> zKiA0QdN?cV=S*UmF!iPRt6B|`e2vGOYIP9w2M1THSzxqpe4(4T**FROzOqEz3vMAzZas5({XduY19N#FH<$Nu zRorfBWV^hje;v2WdD1>7q>9VEf&G`V|0?$1E9mQ!9(5h36YDb6XS;b5>rLVU{C_t# z3Hs_}WO|cugFR}KxDlM9_L1qud9CC-($iVbl{_Q8O!6^N$#$G;^rw19I}N0ItF~rA zFU+jA-V%j!$h@ZN>)C5+JajL^HMKx8)=fwktrKgZPtVlPHSfwyG3e*85qw?~qWpmK z#}GBepr1o-!%swM9kEU3ryu&s^SJ)?%xcw!dVRxq3F|^?S39|UTDW}n8|b{eU(7YR zE}o&zuzrMakGfZIx)1X>aGb;I>pbkIWj;f*uuez#o4{VtD7UO?E3NwmW*z78;i%j{ zeK>H1vM@%TlgR5Vd~Px+OZRU!>wG5huuT7EahU6~k6{(A>x1(hecqX?==;LCyie5I z@rJAgia!1?Q1tOXmeb!M^l`C6==--*m$Y>r`-Q_6qC$;Bnb{J>VQlEP}qrwghKSint?NKYyypu2wfezbiXY>;k{9 zbnyI9tfTK>N3E+~;Nc`6K%} z*V{E2zR!@kd>%Kq^E^)d8u1PsvPAp@ULF)}Qe$y`GencmTl&Scb9&kh`ucZhZr;cm2r$oMzoWTp)E`z$(NhQIz*;Ruc13{Y;5;BXO|{x#u9 zsawo0Z6mJx#+@S5u?t)X{du=bJcIMxdYq@esWYFyrwIK%DMG()F1P2Svft1+t+(?O zu>kR$a?e%he59!FT!qdU0m_}yY;EsdYCvON36 z>=x=EMf{nY$?;_Jyp*Ep>!nQY*SWHvIrH@W`|lx&7v=w$$mDv;*Ph3EC@i?ROWy{) zPjJ4buaETeip?TlqjT8A;Bt+A;ro@lyes_BAWB!crhlEeO4=>vOf4Ddo19m};cGa2 zji!Hfv{=)hqZDiUxRl9U$KmTZe4VC$wYgZ+$E|#=;6_Efk%x3+Kk#y%exJQy{drC? zbE3El_osPh7x=5Z22DRlSgPs!hAQs=t5{#BU3iw-=RAYXn>hS7_Fu*JoosJmd!|8u z&X~#T)cqXKDotM(R*BEB51wb#_hBW24|Dk(*YxYE418W?Xiveomyh2hpni6_^SOUS z^7DvD?iZ0f@8xs<$mjlHmG!z=RLc5J@0MutPNj3^Xp=u!9Tsis26o{bwHMer?3!s1 zxCqawMu4B!6uBOoJy7QvYOtji_V<<3To32FSg)_svc51MXbTZ;Nbq@CE=Q8uxm?;g z|9j>5`TDR*!(#}S+--r>TZbuf9s2&Txl%tq>=3u(E7}@_J2y-}7rz9i@%-|zKEkws z+L_a9BmB+7gJphk{w4H%LWg`Fo*tZQGNxglI6T*+ufIDuogJLc4$en0mvb?fbEZLm z?pG|!^|D*%`z*y=zWQ^wyNByMe|Qh>NBZ--Ww8H+^sO7-hwaVQTab=DLt=S+OX2jT za68wZU)9G%bG;?1n-Tsi({)at#?LvfYxKPJnS$$@eqOOee28!<>UECiI+weTQE%5i zM!nr7dR;;|6WagHgDJd=&u_8sgYIRB75a0vSfM{xixv8Fw^*S+cZ(JJbGAgR&GB}* z!bdzPqlzBjZmgyW4c>isK{^-Rw165;gFIyaNkkND*{A1nR@&roB< zDdwL-b={x!X4XHFe4f`Y)#`(YZ!>=JV#T`pJk~Ax^S4-jJ{K$W=ZLPZ`1R+FF1}B- zdR|^1%jr$wa=XsyT_?+bPDm#E=d=HQwwLj~p_ucjpT~J+Z&USp+Q#S4JNcYvC;vVo z-AjLN?KIN!wWleZ@|mA6l5pIo>K}&8XM=QrTWD=9(_MK5ppisi#J+F+87* z=c^+%quxIg#qc3CpB%E3flrO>qfP*)sCC9Ko~7}-&Pen8v%z&nn&&5l%#-nM77ZN# zJfpt8o5%5087ST9!AseH74tggD#H@^4==7V=;__mW!K|5%KdvA+oLV|K5QqKa|@R< z&M$KCT-a95;rDa+a$cX7^ZGQBpQ9e;>#Ah<+e{HWUgmN?Jf!>^@omQMXJ|`sF z)CPU<=xEb-;QY~tltr+Q7~N!`H<#M9CIkHi-7^tQ1|=8!Vdz%LWiq~TqtD9w;C$bU z{<1m7a$KgbU(5{YZ!I}))Yo~(jruyT+G`K4$GNJPe*V6M)3t)RNvPX`9lRb-6kA}wt+a;AKhvPkyD0|!cN3?% zK2i+&bMf=W;|RYQzj@Q2!`E>AWb*#1j_akJuj^pWReR)9I-0GeU@d32*Hm!dvfW;f zNyhm-n9ieHn2&%ri|c&7X42OeJ|;bVx$0&3Pc3ut^S=<2-rrJqzK$^I{UTEOyNj+rOxbC-J_&znBH|MpRu+ycKso5$;t25vtM z+%6ipT|{udEjH=%RRphVLjK3~ml40d?w`l&`*OKIPY+J?dUQD2%h*J(jgpIb-+o1= z`?bhx-0u4bGrkU=KX!-W29FqfR<`d_Fg=I8W31v$>#S*G%emak#0Z4zdqWkslPYc> zRop(RxLwqk^m(q%^gMp4Yt!mX^ow0$itoIrGx-+cuL#E0ndq18#QIn5>r6MmPT_j8 z|BrUe_wG8=t#^ne?xz&*OOKal8$D-v+*K1N%30`Rn&>;QKngeTs0N zH*P7XyTNo2_xW|~DlY#9Q?pD@gGoOv+sF0s*2jPSdH9rZ)z;(iuN${X z#!J7CGmOArL5$PauXx@s?t$)QxWet~idY2wIr9p`a`43Q(cU}254f+0x4_M2i`b&R zZn21M>YKoq)mGpx^?hKAwC|VlK`9@WVUDQB;d@*?2|O)*+obP#>3dQ7w!_ydI$*bo ztFT+eb=a-=!(_5s4DSPd4CL!Dkgv-?zCqGA#BdogM<9$v^hOwqh(s8Rh(Z_(-fKno zO^{(y48KA482$og8Z@g#srq z4EVCdorZCccNr!CTMUzdt%j+<{f3#qgND0-hYj<9M@B~n3Yk`{fEYPBD0{Un-0v%c}pi7GchG~_)H^gS@rG|1O3qD=FFv8IE-1e4QY7b&LOfF9FEV5X@Zm}81_ z+C{$Ueqf>LJz%lP;b#}6rZQl;X#=pr^c}Fu6zgvnlTG&lYfSF~r<;6TNV%yLILFik zoM-wLSZ^8_V8^>q<^dO*4gi;$?16T%+*ATwWoiVjHeCX)GsU>=;=1XDAiEIe9YD?8 z8idwsraWevDUUhkH!Xf5S6cGTl+!{pwfSOmIZC6{TnQ{U-vO*JQ!l78Pk}tyJRMkL zo(-ICz6V%mo*#@~rd!&9;g%nO5thrq-j<($k(Q2NKe66I_ieKhp10E7FIuUD+pTop zC@-?ddXYWBi|i?0WcPScdNREzJvm;Ko_sG#PoWp3r`U_qQ|d+ODfgoERCrN(s=Vd{ zCwsjTf^>Sl0i5ndeZ0=A1@auPy}){Tmj;Q8f#_>q*6!$QUTe{cRwE_oYe*IPn)KZy zEn8%IUY67I3+D9&nX+0dTcsxC8L-iN9B`BO1mG6$$-r&iQ-Lqb^zZbZ z33-?I-M|*_dB9fh1;G8@4*?H)KLR}Ly&QPN`w8H2@3p`a-p>M0dv5}^c{c;kd%py{ z=>00N-Fp}CviDoS4)1q>SH0f@UiUr>6h23Rn$KrIi_a;bk53!W;qx`nr2_q;G=sO_9DHY0vbb+R2x`h0?cF%H>k7kRhvN$jLr5T2A+| zgrcqb*no3n$aykky$snP@3>foUn+6A57p@^AF9*UK2)dc zLv{MH57p^TAF9(`K2)bIKGbqreW*_N`%s-8lrbEZF&vRG9GAW)e5kHZ`%qoC`A}V7 z^l>AdmwkEwJA7^iUiIke51`J1QJY+4 zqc*wPMs0GPjoM_RjoRcU8@0(THfodGY}6)Swo#khX`?o|%SLUo#YSzi)kbY{zm3}D zK^wKn!!~M@M{Lw4kK3qCp0H7yJZ;NGxwYAb1JB#2eO|Ot`)s#S`@C$U_Ss>h_IcGd z5@D{}N`b;Y7O2^82U_ftfIjvbpu;``=(67h46@$~46)Y(!|e|OBkT_Yd)praM%q^a zqwH&dvG!+x3HFV^6#EvS$NnNP)BXxD$NmN|-`)Z&wC@EL+usG2+G#ydZvOysm7QvQ zvYl$Y#!fXp-A*-LXQvvUW2YLQXQ%qDw^RK#*r|RO+o^t++Npk*+o^t6*{Ob4+o^un z*{OaT?Nq;;>{P#7>{P$o>{P!m+o^tc+G+gRWvB6{#ZKc-tDVN5{dTJNgLbO-!*;6o zBX+9y<94d|6LzZc({`%sHapezc{|nhMLX4XyPfL#vYqO;!%p>k)lT($-A?r@e5rml zU#ee=FV(M)FV(NZm+IH$`zcBz$d_s)#FuI$+?Q%3!k22Kw=dO5q%YM-lrPmttS{9_ zf-lubiZ9iO$Cqj()0b)_$Cqj(-2EV1w@;z{S357|LJba$jnht9+?tuJ)ytxz3kb zW}`2)%uT-3GPn3r%iQKmE%RkxYMDEIsb%i+rIy*^OD(h2ms;k2Uuu~LeQB0F>}$qd zj`;cjkNY}-Cwv2er+se#w)utw&->m4yy$xiu-$h6@Um|#u){YIc-1!zc-=Pxh=+4P z%`psUaf|@^I7)yHM>){ts00Q%?f`~3rU1ho(}59=*}&e8dw`LS`M@Yg12ERH1eoA> z6qw>z3G_Ht12Y}#fjN#1zlRrF_JZ0LyVlD)5Bk zR^VyJ5MY}lA9&tT1ia`N4QzLe0bX`g06QELfma=O0G=gYuY=WD&N*(kL|9*$zvM^9pdf^FP2k=kLHd zPSFG9?=%AIonF8Or!R1^(*<1W3~K=Ax$30$cHK#PG2ushG0l(mVirHzi~0Cb3vu{S-d%pQ7Yp)}dojOg$l-p2 zfDwMlz}|iyV5HwnV3gn8z*xU|zy!Yqz!bl6K#$)9V5Z+>V2u~sD9qvcF=0-o-HE;6Mus+{{{9@0GoMO+5oLa?B

    {e

    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%0A-Jz;V`Ma3oayPvWYhY{ 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 literal 0 HcmV?d00001 diff --git a/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml new file mode 100644 index 00000000..abf092f2 --- /dev/null +++ b/packages/AvalonDock.2.0.2000/lib/net40/Xceed.Wpf.AvalonDock.xml @@ -0,0 +1,4044 @@ + + + + Xceed.Wpf.AvalonDock + + + + + Provides derived classes an opportunity to handle execute code before to the Parent property changes. + + + + + Provides derived classes an opportunity to handle changes to the Parent property. + + + + + Removes any empty container not directly referenced by other layout items + + + + + BackgroundWhileDragging Dependency Property + + + + + OpacityWhileDragging Dependency Property + + + + + Gets or sets the BackgroundWhileDragging property. This dependency property + indicates .... + + + + + Gets or sets the OpacityWhileDragging property. This dependency property + indicates .... + + + + + A static class for retail validated assertions. + Instead of breaking into the debugger an exception is thrown. + + + + + Ensure that the current thread's apartment state is what's expected. + + + The required apartment state for the current thread. + + + The message string for the exception to be thrown if the state is invalid. + + + Thrown if the calling thread's apartment state is not the same as the requiredState. + + + + + Ensure that an argument is neither null nor empty. + + The string to validate. + The name of the parameter that will be presented if an exception is thrown. + + + + Ensure that an argument is neither null nor does it consist only of whitespace. + + The string to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is not null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is not null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + Verifies that an argument is null. + Type of the object to validate. Must be a class. + The object to validate. + The name of the parameter that will be presented if an exception is thrown. + + + + Verifies the specified statement is true. Throws an ArgumentException if it's not. + + The statement to be verified as true. + Name of the parameter to include in the ArgumentException. + + + + Verifies the specified statement is true. Throws an ArgumentException if it's not. + + The statement to be verified as true. + Name of the parameter to include in the ArgumentException. + The message to include in the ArgumentException. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound exclusive value. + + + The native RGB macro. + + + + + Convert a native integer that represent a color with an alpha channel into a Color struct. + The integer that represents the color. Its bits are of the format 0xAARRGGBB. + A Color representation of the parameter. + + + From a list of BitmapFrames find the one that best matches the requested dimensions. + The methods used here are copied from Win32 sources. We want to be consistent with + system behaviors. + + + + Simple guard against the exceptions that File.Delete throws on null and empty strings. + + The path to delete. Unlike File.Delete, this can be null or empty. + + Note that File.Delete, and by extension SafeDeleteFile, does not throw an exception + if the file does not exist. + + + + GDI's DeleteObject + + + GDI+'s DisposeImage + + + + + Utility to help classes catenate their properties for implementing ToString(). + + The StringBuilder to catenate the results into. + The name of the property to be catenated. + The value of the property to be catenated. + + + + Generates ToString functionality for a struct. This is an expensive way to do it, + it exists for the sake of debugging while classes are in flux. + Eventually this should just be removed and the classes should + do this without reflection. + + + + + + + + Encodes a URL string. Duplicated functionality from System.Web.HttpUtility.UrlEncode. + + + + + Duplicated from System.Web.HttpUtility because System.Web isn't part of the client profile. + URL Encoding replaces ' ' with '+' and unsafe ASCII characters with '%XX'. + Safe characters are defined in RFC2396 (http://www.ietf.org/rfc/rfc2396.txt). + They are the 7-bit ASCII alphanumerics and the mark characters "-_.!~*'()". + This implementation does not treat '~' as a safe character to be consistent with the System.Web version. + + + + + Is this using WPF4? + + + There are a few specific bugs in Window in 3.5SP1 and below that require workarounds + when handling WM_NCCALCSIZE on the HWND. + + + + + Documents Read-Only Dependency Property + + + + + Provides a secure method for setting the Documents property. + This dependency property indicates the list of documents. + + The new value for the property. + + + + Anchorables Read-Only Dependency Property + + + + + Provides a secure method for setting the Anchorables property. + This dependency property indicates the list of anchorables. + + The new value for the property. + + + + SelectedDocument Dependency Property + + + + + Handles changes to the SelectedDocument property. + + + + + Provides derived classes an opportunity to handle changes to the SelectedDocument property. + + + + + SelectedAnchorable Dependency Property + + + + + Handles changes to the SelectedAnchorable property. + + + + + Provides derived classes an opportunity to handle changes to the SelectedAnchorable property. + + + + + Gets the Documents property. This dependency property + indicates the list of documents. + + + + + Gets the Anchorables property. This dependency property + indicates the list of anchorables. + + + + + Gets or sets the SelectedDocument property. This dependency property + indicates the selected document. + + + + + Gets or sets the SelectedAnchorable property. This dependency property + indicates the selected anchorable. + + + + + IsDragging Read-Only Dependency Property + + + + + Provides a secure method for setting the IsDragging property. + This dependency property indicates that this floating window is being dragged. + + The new value for the property. + + + + Handles changes to the IsDragging property. + + + + + Provides derived classes an opportunity to handle changes to the IsDragging property. + + + + + IsMaximized Read-Only Dependency Property + + + + + Provides a secure method for setting the IsMaximized property. + This dependency property indicates if the window is maximized. + + The new value for the property. + + + + Gets the IsDragging property. This dependency property + indicates that this floating window is being dragged. + + + + + Gets the IsMaximized property. This dependency property + indicates if the window is maximized. + + + + + Content Dependency Property + + + + + Handles changes to the Content property. + + + + + Provides derived classes an opportunity to handle changes to the Content property. + + + + + Gets or sets the Content property. This dependency property + indicates .... + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates model attached to the anchorable tab item. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + A static class for verifying assumptions. + + + + Executes the specified argument. + + The function to execute. + + + Obsolete: Use Standard.Assert.AreEqual instead of Assert.Equals + The generic type to compare for equality. + The first generic type data to compare. This is is the expected value. + The second generic type data to compare. This is the actual value. + + + + Verifies that two generic type data are equal. The assertion fails if they are not. + + The generic type to compare for equality. + The first generic type data to compare. This is is the expected value. + The second generic type data to compare. This is the actual value. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that two generic type data are not equal. The assertion fails if they are. + + The generic type to compare for inequality. + The first generic type data to compare. This is is the value that's not expected. + The second generic type data to compare. This is the actual value. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that if the specified condition is true, then so is the result. + The assertion fails if the condition is true but the result is false. + + if set to true [condition]. + + A second Boolean statement. If the first was true then so must this be. + If the first statement was false then the value of this is ignored. + + This breaks into the debugger in the case of a failed assertion. + + + + Lazy evaluation overload. Verifies that if a condition is true, then so is a secondary value. + + The conditional value. + A function to be evaluated for truth if the condition argument is true. + + This overload only evaluates the result if the first condition is true. + + + + + Verifies that a string has content. I.e. it is not null and it is not empty. + + The string to verify. + + + + Verifies that a string has content. I.e. it is not null and it is not purely whitespace. + + The string to verify. + + + + Verifies the specified value is not null. The assertion fails if it is. + + The generic reference type. + The value to check for nullness. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is false. The assertion fails if it is true. + + The expression that should be false. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is false. The assertion fails if it is true. + + The expression that should be false. + The message to display if the condition is true. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is true. The assertion fails if it is not. + + A condition that is expected to be true. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified condition is true. The assertion fails if it is not. + + A condition that is expected to be true. + The message to write in case the condition is false. + This breaks into the debugger in the case of a failed assertion. + + + + This line should never be executed. The assertion always fails. + + This breaks into the debugger in the case of a failed assertion. + + + + This line should never be executed. The assertion always fails. + + The message to display if this function is executed. + This breaks into the debugger in the case of a failed assertion. + + + + Verifies that the specified object is null. The assertion fails if it is not. + + The item to verify is null. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound inclusive value. + + + + Verifies that the specified value is within the expected range. The assertion fails if it isn't. + + The lower bound inclusive value. + The value to verify. + The upper bound exclusive value. + + + + Verify the current thread's apartment state is what's expected. The assertion fails if it isn't + + + The expected apartment state for the current thread. + + This breaks into the debugger in the case of a failed assertion. + + + A function signature for Assert.Evaluate. + + + A function signature for Assert.Implies. + Returns the truth of a predicate. + + + + Get the input element that was focused before user left the layout element + + Element to look for + Input element + + + + Get the last window handle focused before user left the element passed as argument + + + + + + + Given a layout element tries to set the focus of the keyword where it was before user moved to another element + + + + + + Provides derived classes an opportunity to handle changes to the IsSelected property. + + + + + Provides derived classes an opportunity to handle changes to the IsActive property. + + + + + Test if the content can be closed + + + + + + Close the content + + Please note that usually the anchorable is only hidden (not closed). By default when user click the X button it only hides the content. + + + + Float the content in a popup window + + + + + Dock the content as document + + + + + Re-dock the content to its previous container + + + + + Event fired when the content is closed (i.e. removed definitely from the layout) + + + + + Event fired when the content is about to be closed (i.e. removed definitely from the layout) + + Please note that LayoutAnchorable also can be hidden. Usually user hide anchorables when click the 'X' button. To completely close + an anchorable the user should click the 'Close' menu item from the context menu. When an LayoutAnchorable is hidden its visibility changes to false and + IsHidden property is set to true. + Hanlde the Hiding event for the LayoutAnchorable to cancel the hide operation. + + + + Background Dependency Property + + + + + AnchorableStyle Dependency Property + + + + + Gets or sets the Background property. This dependency property + indicates background of the autohide childwindow. + + + + + Gets or sets the AnchorableStyle property. This dependency property + indicates the style to apply to the LayoutAnchorableControl hosted in this auto hide window. + + + + + SingleContentLayoutItem Dependency Property + + + + + Handles changes to the SingleContentLayoutItem property. + + + + + Provides derived classes an opportunity to handle changes to the SingleContentLayoutItem property. + + + + + Gets or sets the SingleContentLayoutItem property. This dependency property + indicates the layout item of the selected content when is shown a single anchorable pane. + + + + ShellItem attribute flags. SIATTRIBFLAGS_* + + + + Flags for SetTabProperties. STPF_* + + The native enum was called STPFLAG. + + + + Flags for Setting Taskbar Progress state. TBPF_* + + + The native enum was called TBPFLAG. + + + + + THUMBBUTTON mask. THB_* + + + + + THUMBBUTTON flags. THBF_* + + + + + GetPropertyStoreFlags. GPS_*. + + + These are new for Vista, but are used in downlevel components + + + + + KNOWNDESTCATEGORY. KDC_* + + + + Objects can be copied + DROPEFFECT_COPY + + + Objects can be moved + DROPEFFECT_MOVE + + + Objects can be linked + + DROPEFFECT_LINK. + + If this bit is set on an item in the shell folder, a + 'Create Shortcut' menu item will be added to the File + menu and context menus for the item. If the user selects + that command, your IContextMenu::InvokeCommand() will be called + with 'link'. + That flag will also be used to determine if 'Create Shortcut' + should be added when the item in your folder is dragged to another + folder. + + + + supports BindToObject(IID_IStorage) + + + Objects can be renamed + + + Objects can be deleted + + + Objects have property sheets + + + Objects are drop target + + + Object is encrypted (use alt color) + + + 'Slow' object + + + Ghosted icon + + + Shortcut (link) + + + Shared + + + Read-only + + + Hidden object + + + May contain children with SFGAO_FILESYSTEM + + + Support BindToObject(IID_IShellFolder) + + + Is a win32 file system object (file/folder/root) + + + May contain children with SFGAO_FOLDER (may be slow) + + + Invalidate cached information (may be slow) + + + Is this removeable media? + + + Object is compressed (use alt color) + + + Supports IShellFolder, but only implements CreateViewObject() (non-folder view) + + + Is a non-enumerated object (should be hidden) + + + Should show bold in explorer tree + + + Obsolete + + + Obsolete + + + Supports BindToObject(IID_IStream) + + + May contain children with SFGAO_STORAGE or SFGAO_STREAM + + + For determining storage capabilities, ie for open/save semantics + + + + Attributes that are masked out for PKEY_SFGAOFlags because they are considered + to cause slow calculations or lack context + (SFGAO_VALIDATE | SFGAO_ISSLOW | SFGAO_HASSUBFOLDER and others) + + + + + IShellFolder::EnumObjects grfFlags bits. Also called SHCONT + + + + + IShellFolder::GetDisplayNameOf/SetNameOf uFlags. Also called SHGDNF. + + + For compatibility with SIGDN, these bits must all sit in the LOW word. + + + + + SHELLITEMCOMPAREHINTF. SICHINT_*. + + + + iOrder based on display in a folder view + + + exact instance compare + + + iOrder based on canonical name (better performance) + + + + ShellItem enum. SIGDN_*. + + + + + STR_GPS_* + + + When requesting a property store through IShellFolder, you can specify the equivalent of + GPS_DEFAULT by passing in a null IBindCtx parameter. + + You can specify the equivalent of GPS_READWRITE by passing a mode of STGM_READWRITE | STGM_EXCLUSIVE + in the bind context + + Here are the string versions of GPS_ flags, passed to IShellFolder::BindToObject() via IBindCtx::RegisterObjectParam() + These flags are valid when requesting an IPropertySetStorage or IPropertyStore handler + + The meaning of these flags are described above. + + There is no STR_ equivalent for GPS_TEMPORARY because temporary property stores + are provided by IShellItem2 only -- not by the underlying IShellFolder. + + + + + WPARAM value for a THUMBBUTTON being clicked. + + + + fmtid + + + pid + + + PKEY_Title + + + PKEY_AppUserModel_ID + + + PKEY_AppUserModel_IsDestListSeparator + + + PKEY_AppUserModel_RelaunchCommand + + + PKEY_AppUserModel_RelaunchDisplayNameResource + + + PKEY_AppUserModel_RelaunchIconResource + + + Unknown Object Array + + + + Shell Namespace helper + + + + + Shell Namespace helper 2 + + + + + This function must be called first to validate use of other members. + + + + + This function adds a tab for hwnd to the taskbar. + + The HWND for which to add the tab. + + + + This function deletes a tab for hwnd from the taskbar. + + The HWND for which the tab is to be deleted. + + + + This function activates the tab associated with hwnd on the taskbar. + + The HWND for which the tab is to be actuvated. + + + + This function marks hwnd in the taskbar as the active tab. + + The HWND to activate. + + + + Marks a window as full-screen. + + The handle of the window to be marked. + A Boolean value marking the desired full-screen status of the window. + + Setting the value of fFullscreen to true, the Shell treats this window as a full-screen window, and the taskbar + is moved to the bottom of the z-order when this window is active. Setting the value of fFullscreen to false + removes the full-screen marking, but does not cause the Shell to treat the window as though it were + definitely not full-screen. With a false fFullscreen value, the Shell depends on its automatic detection facility + to specify how the window should be treated, possibly still flagging the window as full-screen. + + + + + Allows an application to retrieve the most recent and frequent documents opened in that app, as reported via SHAddToRecentDocs + + + + + Set the App User Model ID for the application retrieving this list. If an AppID is not provided via this method, + the system will use a heuristically determined ID. This method must be called before GetList. + + App Id. + + + + Retrieve an IEnumObjects or IObjectArray for IShellItems and/or IShellLinks. + Items may appear in both the frequent and recent lists. + + + + + + + Provides access to the App User Model ID on objects supporting this value. + + + + + Provides access to the ProgID associated with an object + + + + + Title Dependency Property + + + + + Handles changes to the Title property. + + + + + Provides derived classes an opportunity to handle changes to the Title property. + + + + + IconSource Dependency Property + + + + + Handles changes to the IconSource property. + + + + + Provides derived classes an opportunity to handle changes to the IconSource property. + + + + + ContentId Dependency Property + + + + + Handles changes to the ContentId property. + + + + + Provides derived classes an opportunity to handle changes to the ContentId property. + + + + + IsSelected Dependency Property + + + + + Handles changes to the IsSelected property. + + + + + Provides derived classes an opportunity to handle changes to the IsSelected property. + + + + + IsActive Dependency Property + + + + + Handles changes to the IsActive property. + + + + + Provides derived classes an opportunity to handle changes to the IsActive property. + + + + + CanClose Dependency Property + + + + + Handles changes to the CanClose property. + + + + + Provides derived classes an opportunity to handle changes to the CanClose property. + + + + + CanFloat Dependency Property + + + + + Handles changes to the CanFloat property. + + + + + Provides derived classes an opportunity to handle changes to the CanFloat property. + + + + + CloseCommand Dependency Property + + + + + Handles changes to the CloseCommand property. + + + + + Provides derived classes an opportunity to handle changes to the CloseCommand property. + + + + + Coerces the CloseCommand value. + + + + + FloatCommand Dependency Property + + + + + Handles changes to the FloatCommand property. + + + + + Provides derived classes an opportunity to handle changes to the FloatCommand property. + + + + + Coerces the FloatCommand value. + + + + + DockAsDocumentCommand Dependency Property + + + + + Handles changes to the DockAsDocumentCommand property. + + + + + Provides derived classes an opportunity to handle changes to the DockAsDocumentCommand property. + + + + + Coerces the DockAsDocumentCommand value. + + + + + CloseAllButThisCommand Dependency Property + + + + + Handles changes to the CloseAllButThisCommand property. + + + + + Provides derived classes an opportunity to handle changes to the CloseAllButThisCommand property. + + + + + Coerces the CloseAllButThisCommand value. + + + + + ActivateCommand Dependency Property + + + + + Handles changes to the ActivateCommand property. + + + + + Provides derived classes an opportunity to handle changes to the ActivateCommand property. + + + + + Coerces the ActivateCommand value. + + + + + NewVerticalTabGroupCommand Dependency Property + + + + + Handles changes to the NewVerticalTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the NewVerticalTabGroupCommand property. + + + + + NewHorizontalTabGroupCommand Dependency Property + + + + + Handles changes to the NewHorizontalTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the NewHorizontalTabGroupCommand property. + + + + + MoveToNextTabGroupCommand Dependency Property + + + + + Handles changes to the MoveToNextTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the MoveToNextTabGroupCommand property. + + + + + MoveToPreviousTabGroupCommand Dependency Property + + + + + Handles changes to the MoveToPreviousTabGroupCommand property. + + + + + Provides derived classes an opportunity to handle changes to the MoveToPreviousTabGroupCommand property. + + + + + Gets or sets the Title property. This dependency property + indicates the title of the element. + + + + + Gets or sets the IconSource property. This dependency property + indicates icon associated with the item. + + + + + Gets or sets the ContentId property. This dependency property + indicates the content id used to retrive content when deserializing layouts. + + + + + Gets or sets the IsSelected property. This dependency property + indicates if the item is selected inside its container. + + + + + Gets or sets the IsActive property. This dependency property + indicates if the item is active in the UI. + + + + + Gets or sets the CanClose property. This dependency property + indicates if the item can be closed. + + + + + Gets or sets the CanFloat property. This dependency property + indicates if user can move the layout element dragging it to another position. + + + + + Gets or sets the CloseCommand property. This dependency property + indicates the command to execute when user click the document close button. + + + + + Gets or sets the FloatCommand property. This dependency property + indicates the command to execute when user click the float button. + + By default this command move the anchorable inside new floating window. + + + + Gets or sets the DockAsDocumentCommand property. This dependency property + indicates the command to execute when user click the DockAsDocument button. + + By default this command move the anchorable inside the last focused document pane. + + + + Gets or sets the CloseAllButThisCommand property. This dependency property + indicates the 'Close All But This' command. + + + + + Gets or sets the ActivateCommand property. This dependency property + indicates the command to execute when user wants to activate a content (either a Document or an Anchorable). + + + + + Gets or sets the NewVerticalTabGroupCommand property. This dependency property + indicates the new vertical tab group command. + + + + + Gets or sets the NewHorizontalTabGroupCommand property. This dependency property + indicates the new horizontal tab group command. + + + + + Gets or sets the MoveToNextTabGroupCommand property. This dependency property + indicates move to next tab group command. + + + + + Gets or sets the MoveToPreviousTabGroupCommand property. This dependency property + indicates move to rpevious tab group command. + + + + + Side Read-Only Dependency Property + + + + + Provides a secure method for setting the Side property. + This dependency property indicates the anchor side of the control. + + The new value for the property. + + + + Gets the Side property. This dependency property + indicates the anchor side of the control. + + + + The extent of the top of the window to treat as the caption. + + + + Gets or sets the ShowSystemMenu property. This dependency property + indicates if the system menu should be shown at right click on the caption. + + + + + Convert a point in device independent pixels (1/96") to a point in the system coordinates. + + A point in the logical coordinate system. + Returns the parameter converted to the system's coordinates. + + + + Convert a point in system coordinates to a point in device independent pixels (1/96"). + + A point in the physical coordinate system. + Returns the parameter converted to the device independent coordinate system. + + + The Window that's chrome is being modified. + + + Underlying HWND for the _window. + + + Object that describes the current modifications being made to the chrome. + + + Add and remove a native WindowStyle from the HWND. + The styles to be removed. These can be bitwise combined. + The styles to be added. These can be bitwise combined. + Whether the styles of the HWND were modified as a result of this call. + + + + Get the WindowState as the native HWND knows it to be. This isn't necessarily the same as what Window thinks. + + + + + Get the bounding rectangle for the window in physical coordinates. + + The bounding rectangle for the window. + + + + Update the items in the system menu based on the current, or assumed, WindowState. + + + The state to assume that the Window is in. This can be null to query the Window's state. + + + We want to update the menu while we have some control over whether the caption will be repainted. + + + + + Matrix of the HT values to return when responding to NC window messages. + + + + IID_IEnumIDList + + + IID_IEnumObjects + + + IID_IHTMLDocument2 + + + IID_IModalWindow + + + IID_IObjectArray + + + IID_IObjectCollection + + + IID_IPropertyNotifySink + + + IID_IPropertyStore + + + IID_IServiceProvider + + + IID_IShellFolder + + + IID_IShellLink + + + IID_IShellItem + + + IID_IShellItem2 + + + IID_IShellItemArray + + + IID_ITaskbarList + + + IID_ITaskbarList2 + + + IID_IUnknown + + + IID_IApplicationDestinations + + + IID_IApplicationDocumentLists + + + IID_ICustomDestinationList + + + IID_IObjectWithAppUserModelID + + + IID_IObjectWithProgID + + + IID_ITaskbarList3 + + + IID_ITaskbarList4 + + + CLSID_TaskbarList + IID_ITaskbarList + + + CLSID_EnumerableObjectCollection + IID_IEnumObjects. + + + CLSID_ShellLink + IID_IShellLink + + + CLSID_DestinationList + IID_ICustomDestinationList + + + CLSID_ApplicationDestinations + IID_IApplicationDestinations + + + CLSID_ApplicationDocumentLists + IID_IApplicationDocumentLists + + + + IsDraggingOver Attached Dependency Property + + + + + Gets the IsDraggingOver property. This dependency property + indicates if user is dragging a window over the target element. + + + + + Sets the IsDraggingOver property. This dependency property + indicates if user is dragging away a window from the target element. + + + + + DropDownContextMenu Dependency Property + + + + + DropDownContextMenuDataContext Dependency Property + + + + + Gets or sets the DropDownContextMenu property. This dependency property + indicates context menu to show when a right click is detected over the area occpied by the control. + + + + + Gets or sets the DropDownContextMenuDataContext property. This dependency property + indicates data context to attach when context menu is shown. + + + + + DropDownContextMenu Dependency Property + + + + + Handles changes to the DropDownContextMenu property. + + + + + Provides derived classes an opportunity to handle changes to the DropDownContextMenu property. + + + + + DropDownContextMenuDataContext Dependency Property + + + + + Gets or sets the DropDownContextMenu property. This dependency property + indicates drop down menu to show up when user click on an anchorable menu pin. + + + + + Gets or sets the DropDownContextMenuDataContext property. This dependency property + indicates data context to set for drop down context menu. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + Display the system menu at a specified location. + The location to display the system menu, in logical screen coordinates. + + + + Private constructor. The public way to access this class is through the static Current property. + + + + + Hide this contents + + Add this content to collection of parent root. + + + + Show the content + + Try to show the content where it was previously hidden. + + + + Add the anchorable to a DockingManager layout + + + + + + + Get a value indicating if the anchorable is anchored to a border in an autohide status + + + + + Layout Dependency Property + + + + + Handles changes to the Layout property. + + + + + Provides derived classes an opportunity to handle changes to the property. + + + + + Coerces the value. + + + + + LayoutUpdateStrategy Dependency Property + + + + + DocumentPaneTemplate Dependency Property + + + + + Handles changes to the DocumentPaneTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneTemplate property. + + + + + AnchorablePaneTemplate Dependency Property + + + + + Handles changes to the AnchorablePaneDataTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablePaneDataTemplate property. + + + + + AnchorSideTemplate Dependency Property + + + + + AnchorGroupTemplate Dependency Property + + + + + AnchorTemplate Dependency Property + + + + + DocumentPaneControlStyle Dependency Property + + + + + Handles changes to the DocumentPaneControlStyle property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneControlStyle property. + + + + + AnchorablePaneControlStyle Dependency Property + + + + + Handles changes to the AnchorablePaneControlStyle property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablePaneControlStyle property. + + + + + DocumentHeaderTemplate Dependency Property + + + + + Handles changes to the DocumentHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentHeaderTemplate property. + + + + + Coerces the DocumentHeaderTemplate value. + + + + + DocumentHeaderTemplateSelector Dependency Property + + + + + Handles changes to the DocumentHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentHeaderTemplateSelector property. + + + + + Coerces the DocumentHeaderTemplateSelector value. + + + + + DocumentTitleTemplate Dependency Property + + + + + Handles changes to the DocumentTitleTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentTitleTemplate property. + + + + + Coerces the DocumentTitleTemplate value. + + + + + DocumentTitleTemplateSelector Dependency Property + + + + + Handles changes to the DocumentTitleTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentTitleTemplateSelector property. + + + + + Coerces the DocumentTitleTemplateSelector value. + + + + + AnchorableTitleTemplate Dependency Property + + + + + Handles changes to the AnchorableTitleTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTitleTemplate property. + + + + + Coerces the AnchorableTitleTemplate value. + + + + + AnchorableTitleTemplateSelector Dependency Property + + + + + Handles changes to the AnchorableTitleTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTitleTemplateSelector property. + + + + + AnchorableHeaderTemplate Dependency Property + + + + + Handles changes to the AnchorableHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableHeaderTemplate property. + + + + + Coerces the AnchorableHeaderTemplate value. + + + + + AnchorableHeaderTemplateSelector Dependency Property + + + + + Handles changes to the AnchorableHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableHeaderTemplateSelector property. + + + + + LayoutRootPanel Dependency Property + + + + + Handles changes to the LayoutRootPanel property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutRootPanel property. + + + + + RightSidePanel Dependency Property + + + + + Handles changes to the RightSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the RightSidePanel property. + + + + + LeftSidePanel Dependency Property + + + + + Handles changes to the LeftSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the LeftSidePanel property. + + + + + TopSidePanel Dependency Property + + + + + Handles changes to the TopSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the TopSidePanel property. + + + + + BottomSidePanel Dependency Property + + + + + Handles changes to the BottomSidePanel property. + + + + + Provides derived classes an opportunity to handle changes to the BottomSidePanel property. + + + + + AutoHideWindow Read-Only Dependency Property + + + + + Provides a secure method for setting the AutoHideWindow property. + This dependency property indicates the currently shown autohide window. + + The new value for the property. + + + + Handles changes to the AutoHideWindow property. + + + + + Provides derived classes an opportunity to handle changes to the AutoHideWindow property. + + + + + LayoutItemTemplate Dependency Property + + + + + Handles changes to the AnchorableTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorableTemplate property. + + + + + LayoutItemTemplateSelector Dependency Property + + + + + Handles changes to the LayoutItemTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemTemplateSelector property. + + + + + DocumentsSource Dependency Property + + + + + Handles changes to the DocumentsSource property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentsSource property. + + + + + DocumentContextMenu Dependency Property + + + + + AnchorablesSource Dependency Property + + + + + Handles changes to the AnchorablesSource property. + + + + + Provides derived classes an opportunity to handle changes to the AnchorablesSource property. + + + + + ActiveContent Dependency Property + + + + + Handles changes to the ActiveContent property. + + + + + Provides derived classes an opportunity to handle changes to the ActiveContent property. + + + + + AnchorableContextMenu Dependency Property + + + + + Theme Dependency Property + + + + + Handles changes to the Theme property. + + + + + Provides derived classes an opportunity to handle changes to the Theme property. + + + + + GridSplitterWidth Dependency Property + + + + + GridSplitterHeight Dependency Property + + + + + DocumentPaneMenuItemHeaderTemplate Dependency Property + + + + + Handles changes to the DocumentPaneMenuItemHeaderTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneMenuItemHeaderTemplate property. + + + + + Coerces the DocumentPaneMenuItemHeaderTemplate value. + + + + + DocumentPaneMenuItemHeaderTemplateSelector Dependency Property + + + + + Handles changes to the DocumentPaneMenuItemHeaderTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the DocumentPaneMenuItemHeaderTemplateSelector property. + + + + + Coerces the DocumentPaneMenuItemHeaderTemplateSelector value. + + + + + IconContentTemplate Dependency Property + + + + + IconContentTemplateSelector Dependency Property + + + + + LayoutItemContainerStyle Dependency Property + + + + + Handles changes to the LayoutItemContainerStyle property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemContainerStyle property. + + + + + LayoutItemContainerStyleSelector Dependency Property + + + + + Handles changes to the LayoutItemContainerStyleSelector property. + + + + + Provides derived classes an opportunity to handle changes to the LayoutItemContainerStyleSelector property. + + + + + Return the LayoutItem wrapper for the content passed as argument + + LayoutContent to search + Either a LayoutAnchorableItem or LayoutDocumentItem which contains the LayoutContent passed as argument + + + + ShowSystemMenu Dependency Property + + + + + AllowMixedOrientation Dependency Property + + + + + Gets or sets the Layout property. This dependency property + indicates layout tree. + + + + + Event fired when property changes + + + + + Event fired when property is about to be changed + + + + + Gets or sets the LayoutUpdateStrategy property. This dependency property + indicates the strategy class to call when AvalonDock needs to positionate a LayoutAnchorable inside an existing layout. + + Sometimes it's impossible to automatically insert an anchorable in the layout without specifing the target parent pane. + Set this property to an object that will be asked to insert the anchorable to the desidered position. + + + + Gets or sets the DocumentPaneDataTemplate property. This dependency property + indicates . + + + + + Gets or sets the AnchorablePaneTemplate property. This dependency property + indicates .... + + + + + Gets or sets the AnchorSideTemplate property. This dependency property + indicates .... + + + + + Gets or sets the AnchorGroupTemplate property. This dependency property + indicates the template used to render the AnchorGroup control. + + + + + Gets or sets the AnchorTemplate property. This dependency property + indicates .... + + + + + Gets or sets the DocumentPaneControlStyle property. This dependency property + indicates .... + + + + + Gets or sets the AnchorablePaneControlStyle property. This dependency property + indicates the style to apply to AnchorablePaneControl. + + + + + Gets or sets the DocumentHeaderTemplate property. This dependency property + indicates data template to use for document header. + + + + + Gets or sets the DocumentHeaderTemplateSelector property. This dependency property + indicates the template selector that is used when selcting the data template for the header. + + + + + Gets or sets the DocumentTitleTemplate property. This dependency property + indicates the datatemplate to use when creating the title for a document. + + + + + Gets or sets the DocumentTitleTemplateSelector property. This dependency property + indicates the data template selector to use when creating the data template for the title. + + + + + Gets or sets the AnchorableTitleTemplate property. This dependency property + indicates the data template to use for anchorables title. + + + + + Gets or sets the AnchorableTitleTemplateSelector property. This dependency property + indicates selctor to use when selecting data template for the title of anchorables. + + + + + Gets or sets the AnchorableHeaderTemplate property. This dependency property + indicates the data template to use for anchorable templates. + + + + + Gets or sets the AnchorableHeaderTemplateSelector property. This dependency property + indicates the selector to use when selecting the data template for anchorable headers. + + + + + Gets or sets the LayoutRootPanel property. This dependency property + indicates the layout panel control which is attached to the Layout.Root property. + + + + + Gets or sets the RightSidePanel property. This dependency property + indicates right side anchor panel. + + + + + Gets or sets the LeftSidePanel property. This dependency property + indicates the left side panel control. + + + + + Gets or sets the TopSidePanel property. This dependency property + indicates top side control panel. + + + + + Gets or sets the BottomSidePanel property. This dependency property + indicates bottom side panel control. + + + + + Gets the AutoHideWindow property. This dependency property + indicates the currently shown autohide window. + + + + + Gets or sets the AnchorableTemplate property. This dependency property + indicates the template to use to render anchorable and document contents. + + + + + Gets or sets the LayoutItemTemplateSelector property. This dependency property + indicates selector object to use for anchorable templates. + + + + + Gets or sets the DocumentsSource property. This dependency property + indicates the source collection of documents. + + + + + Event fired when a document is about to be closed + + Subscribers have the opportuniy to cancel the operation. + + + + Event fired after a document is closed + + + + + Gets or sets the DocumentContextMenu property. This dependency property + indicates context menu to show for documents. + + + + + Gets or sets the AnchorablesSource property. This dependency property + indicates source collection of anchorables. + + + + + Gets or sets the ActiveContent property. This dependency property + indicates the content currently active. + + + + + Gets or sets the AnchorableContextMenu property. This dependency property + indicates the context menu to show up for anchorables. + + + + + Gets or sets the Theme property. This dependency property + indicates the theme to use for AvalonDock controls. + + + + + Gets or sets the GridSplitterWidth property. This dependency property + indicates width of grid splitters. + + + + + Gets or sets the GridSplitterHeight property. This dependency property + indicates height of grid splitters. + + + + + Gets or sets the DocumentPaneMenuItemHeaderTemplate property. This dependency property + indicates the header template to use while creating menu items for the document panes. + + + + + Gets or sets the DocumentPaneMenuItemHeaderTemplateSelector property. This dependency property + indicates the data template selector to use for the menu items show when user select the DocumentPane document switch context menu. + + + + + Gets or sets the IconContentTemplate property. This dependency property + indicates the data template to use while extracting the icon from model. + + + + + Gets or sets the IconContentTemplateSelector property. This dependency property + indicates data template selector to use while selecting the datatamplate for content icons. + + + + + Gets or sets the LayoutItemContainerStyle property. This dependency property + indicates the style to apply to LayoutDocumentItem objects. A LayoutDocumentItem object is created when a new LayoutDocument is created inside the current Layout. + + + + + Gets or sets the LayoutItemContainerStyleSelector property. This dependency property + indicates style selector of the LayoutDocumentItemStyle. + + + + + Gets or sets the ShowSystemMenu property. This dependency property + indicates if floating windows should show the system menu when a custom context menu is not defined. + + + + + Gets or sets the AllowMixedOrientation property. This dependency property + indicates if the manager should allow mixed orientation for document panes. + + + + + Converts a value. + + The value produced by the binding source. + The type of the binding target property. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Converts a value. + + The value that is produced by the binding target. + The type to convert to. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Wraps a managed stream instance into an interface pointer consumable by COM. + + + + + Initializes a new instance of the ManagedIStream class with the specified managed Stream object. + + + The stream that this IStream reference is wrapping. + + + + + Creates a new stream object with its own seek pointer that + references the same bytes as the original stream. + + + When this method returns, contains the new stream object. This parameter is passed uninitialized. + + + For more information, see the existing documentation for IStream::Clone in the MSDN library. + This class doesn't implement Clone. A COMException is thrown if it is used. + + + + + Ensures that any changes made to a stream object that is open in transacted + mode are reflected in the parent storage. + + + A value that controls how the changes for the stream object are committed. + + + For more information, see the existing documentation for IStream::Commit in the MSDN library. + + + + + Copies a specified number of bytes from the current seek pointer in the + stream to the current seek pointer in another stream. + + + A reference to the destination stream. + + + The number of bytes to copy from the source stream. + + + On successful return, contains the actual number of bytes read from the source. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + On successful return, contains the actual number of bytes written to the destination. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + + + Restricts access to a specified range of bytes in the stream. + + + The byte offset for the beginning of the range. + + + The length of the range, in bytes, to restrict. + + + The requested restrictions on accessing the range. + + + For more information, see the existing documentation for IStream::LockRegion in the MSDN library. + This class doesn't implement LockRegion. A COMException is thrown if it is used. + + + + + Reads a specified number of bytes from the stream object into memory starting at the current seek pointer. + + + When this method returns, contains the data read from the stream. This parameter is passed uninitialized. + + + The number of bytes to read from the stream object. + + + A pointer to a ULONG variable that receives the actual number of bytes read from the stream object. + + + For more information, see the existing documentation for ISequentialStream::Read in the MSDN library. + + + + + Discards all changes that have been made to a transacted stream since the last Commit call. + + + This class doesn't implement Revert. A COMException is thrown if it is used. + + + + + Changes the seek pointer to a new location relative to the beginning of the + stream, to the end of the stream, or to the current seek pointer. + + + The displacement to add to dwOrigin. + + + The origin of the seek. The origin can be the beginning of the file, the current seek pointer, or the end of the file. + + + On successful return, contains the offset of the seek pointer from the beginning of the stream. + (Note the native signature is to a ULARGE_INTEGER*, so 64 bits are written + to this parameter on success.) + + + For more information, see the existing documentation for IStream::Seek in the MSDN library. + + + + + Changes the size of the stream object. + + + The new size of the stream as a number of bytes. + + + For more information, see the existing documentation for IStream::SetSize in the MSDN library. + + + + + Retrieves the STATSTG structure for this stream. + + + When this method returns, contains a STATSTG structure that describes this stream object. + This parameter is passed uninitialized. + + + Members in the STATSTG structure that this method does not return, thus saving some memory allocation operations. + + + + + Removes the access restriction on a range of bytes previously restricted with the LockRegion method. + + The byte offset for the beginning of the range. + + + The length, in bytes, of the range to restrict. + + + The access restrictions previously placed on the range. + + + For more information, see the existing documentation for IStream::UnlockRegion in the MSDN library. + This class doesn't implement UnlockRegion. A COMException is thrown if it is used. + + + + + Writes a specified number of bytes into the stream object starting at the current seek pointer. + + + The buffer to write this stream to. + + + The number of bytes to write to the stream. + + + On successful return, contains the actual number of bytes written to the stream object. + If the caller sets this pointer to null, this method does not provide the actual number + of bytes written. + + + + + Releases resources controlled by this object. + + + Dispose can be called multiple times, but trying to use the object + after it has been disposed will generally throw ObjectDisposedExceptions. + + + + + HIGHCONTRAST flags + + + + + BITMAPINFOHEADER Compression type. BI_*. + + + + + CombingRgn flags. RGN_* + + + + + Creates the intersection of the two combined regions. + + + + + Creates the union of two combined regions. + + + + + Creates the union of two combined regions except for any overlapping areas. + + + + + Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. + + + + + Creates a copy of the region identified by hrgnSrc1. + + + + + For IWebBrowser2. OLECMDEXECOPT_* + + + + + For IWebBrowser2. OLECMDF_* + + + + + For IWebBrowser2. OLECMDID_* + + + + + For IWebBrowser2. READYSTATE_* + + + + + DATAOBJ_GET_ITEM_FLAGS. DOGIF_*. + + + + Use the system default, which is to display all error dialog boxes. + + + + The system does not display the critical-error-handler message box. + Instead, the system sends the error to the calling process. + + + + + 64-bit Windows: The system automatically fixes memory alignment faults and makes them + invisible to the application. It does this for the calling process and any descendant processes. + After this value is set for a process, subsequent attempts to clear the value are ignored. + + + + + The system does not display the general-protection-fault message box. + This flag should only be set by debugging applications that handle general + protection (GP) faults themselves with an exception handler. + + + + + The system does not display a message box when it fails to find a file. + Instead, the error is returned to the calling process. + + + + + Non-client hit test values, HT* + + + + + GetClassLongPtr values, GCLP_* + + + + + GetWindowLongPtr values, GWL_* + + + + + SystemMetrics. SM_* + + + + + SystemParameterInfo values, SPI_* + + + + + SystemParameterInfo flag values, SPIF_* + + + + + CS_* + + + + + WindowStyle values, WS_* + + + + + Window message values, WM_* + + + + + Window style extended values, WS_EX_* + + + + + GetDeviceCaps nIndex values. + + + + Number of bits per pixel + + + + + Number of planes + + + + + Logical pixels inch in X + + + + + Logical pixels inch in Y + + + + + "FILEOP_FLAGS", FOF_*. + + + + + EnableMenuItem uEnable values, MF_* + + + + + Possible return value for EnableMenuItem + + + + Specifies the type of visual style attribute to set on a window. + + + Non-client area window attributes will be set. + + + + DWMFLIP3DWINDOWPOLICY. DWMFLIP3D_* + + + + + DWMNCRENDERINGPOLICY. DWMNCRP_* + + + + + DWMWINDOWATTRIBUTE. DWMWA_* + + + + + WindowThemeNonClientAttributes + + + + Prevents the window caption from being drawn. + + + Prevents the system icon from being drawn. + + + Prevents the system icon menu from appearing. + + + Prevents mirroring of the question mark, even in right-to-left (RTL) layout. + + + A mask that contains all the valid bits. + + + + SetWindowPos options + + + + + ShowWindow options + + + + + SCF_ISSECURE + + + + + GDI+ Status codes + + + + + MSGFLT_*. New in Vista. Realiased in Windows 7. + + + + + Shell_NotifyIcon messages. NIM_* + + + + + SHAddToRecentDocuments flags. SHARD_* + + + + + Shell_NotifyIcon flags. NIF_* + + + + + Vista only. + + + + + Vista only. + + + + + Shell_NotifyIcon info flags. NIIF_* + + + + XP SP2 and later. + + + XP and later. + + + Vista and later. + + + Windows 7 and later + + + XP and later. Native version called NIIF_ICON_MASK. + + + + AC_* + + + + + The state of the icon. There are two flags that can be set independently. + NIS_HIDDEN = 1. The icon is hidden. + NIS_SHAREDICON = 2. The icon is shared. + + + + The idlist for the shell item that should be added to the recent docs folder. + + + The id of the application that should be associated with this recent doc. + + + Defines options that are used to set window visual style attributes. + + + + A combination of flags that modify window visual style attributes. + Can be a combination of the WTNCA constants. + + + + + A bitmask that describes how the values specified in dwFlags should be applied. + If the bit corresponding to a value in dwFlags is 0, that flag will be removed. + If the bit is 1, the flag will be added. + + + + Width of left border that retains its size. + + + Width of right border that retains its size. + + + Height of top border that retains its size. + + + Height of bottom border that retains its size. + + + Delegate declaration that matches native WndProc signatures. + + + Delegate declaration that matches native WndProc signatures. + + + Delegate declaration that matches managed WndProc signatures. + + + + Sets attributes to control how visual styles are applied to a specified window. + + + Handle to a window to apply changes to. + + + Value of type WINDOWTHEMEATTRIBUTETYPE that specifies the type of attribute to set. + The value of this parameter determines the type of data that should be passed in the pvAttribute parameter. + Can be the following value: + WTA_NONCLIENT (Specifies non-client related attributes). + pvAttribute must be a pointer of type WTA_OPTIONS. + + + A pointer that specifies attributes to set. Type is determined by the value of the eAttribute value. + + + Specifies the size, in bytes, of the data pointed to by pvAttribute. + + + + Overload of SystemParametersInfo for getting and setting NONCLIENTMETRICS. + + + Overload of SystemParametersInfo for getting and setting HIGHCONTRAST. + + + + Sets the User Model AppID for the current process, enabling Windows to retrieve this ID + + + + + + Retrieves the User Model AppID that has been explicitly set for the current process via SetCurrentProcessExplicitAppUserModelID + + + + + + Description Dependency Property + + + + + Handles changes to the Description property. + + + + + Provides derived classes an opportunity to handle changes to the Description property. + + + + + Gets or sets the Description property. This dependency property + indicates the description to display for the document item. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the layout content model attached to the tab item. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + IsLeftSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsLeftSide property. + This dependency property indicates this control is anchored to left side. + + The new value for the property. + + + + IsTopSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsTopSide property. + This dependency property indicates this control is anchored to top side. + + The new value for the property. + + + + IsRightSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsRightSide property. + This dependency property indicates this control is anchored to right side. + + The new value for the property. + + + + IsBottomSide Read-Only Dependency Property + + + + + Provides a secure method for setting the IsBottomSide property. + This dependency property indicates if this panel is anchored to bottom side. + + The new value for the property. + + + + Gets the IsLeftSide property. This dependency property + indicates this control is anchored to left side. + + + + + Gets the IsTopSide property. This dependency property + indicates this control is anchored to top side. + + + + + Gets the IsRightSide property. This dependency property + indicates this control is anchored to right side. + + + + + Gets the IsBottomSide property. This dependency property + indicates if this panel is anchored to bottom side. + + + + + DoubleUtil uses fixed eps to provide fuzzy comparison functionality for doubles. + Note that FP noise is a big problem and using any of these compare + methods is not a complete solution, but rather the way to reduce + the probability of repeating unnecessary work. + + + + + Epsilon - more or less random, more or less small number. + + + + + AreClose returns whether or not two doubles are "close". That is, whether or + not they are within epsilon of each other. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the AreClose comparision. + + + + LessThan returns whether or not the first double is less than the second double. + That is, whether or not the first is strictly less than *and* not within epsilon of + the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the LessThan comparision. + + + + GreaterThan returns whether or not the first double is greater than the second double. + That is, whether or not the first is strictly greater than *and* not within epsilon of + the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the GreaterThan comparision. + + + + LessThanOrClose returns whether or not the first double is less than or close to + the second double. That is, whether or not the first is strictly less than or within + epsilon of the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the LessThanOrClose comparision. + + + + GreaterThanOrClose returns whether or not the first double is greater than or close to + the second double. That is, whether or not the first is strictly greater than or within + epsilon of the other number. + There are plenty of ways for this to return false even for numbers which + are theoretically identical, so no code calling this should fail to work if this + returns false. + + The first double to compare. + The second double to compare. + The result of the GreaterThanOrClose comparision. + + + + Test to see if a double is a finite number (is not NaN or Infinity). + + The value to test. + Whether or not the value is a finite number. + + + + Test to see if a double a valid size value (is finite and > 0). + + The value to test. + Whether or not the value is a valid size value. + + + + Direct insert/remove operation has been perfomed to the group + + + + + An element below in the hierarchy as been added/removed + + + + + Converts a value. + + The value produced by the binding source. + The type of the binding target property. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Converts a value. + + The value that is produced by the binding target. + The type to convert to. + The converter parameter to use. + The culture to use in the converter. + + A converted value. If the method returns null, the valid null value is used. + + + + + Model Dependency Property + + + + + Handles changes to the Model property. + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates the model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + Wrapper for common Win32 status codes. + + + + The operation completed successfully. + + + Incorrect function. + + + The system cannot find the file specified. + + + The system cannot find the path specified. + + + The system cannot open the file. + + + Access is denied. + + + The handle is invalid. + + + Not enough storage is available to complete this operation. + + + There are no more files. + + + The process cannot access the file because it is being used by another process. + + + The parameter is incorrect. + + + The data area passed to a system call is too small. + + + Cannot nest calls to LoadModule. + + + Illegal operation attempted on a registry key that has been marked for deletion. + + + Element not found. + + + There was no match for the specified key in the index. + + + An invalid device was specified. + + + The operation was canceled by the user. + + + The window class was already registered. + + + The specified datatype is invalid. + + + + Create a new Win32 error. + + The integer value of the error. + + + Performs HRESULT_FROM_WIN32 conversion. + The Win32 error being converted to an HRESULT. + The equivilent HRESULT value. + + + Performs HRESULT_FROM_WIN32 conversion. + The Win32 error being converted to an HRESULT. + The equivilent HRESULT value. + + + Performs the equivalent of Win32's GetLastError() + A Win32Error instance with the result of the native GetLastError + + + + Compare two Win32 error codes for equality. + + The first error code to compare. + The second error code to compare. + Whether the two error codes are the same. + + + + Compare two Win32 error codes for inequality. + + The first error code to compare. + The second error code to compare. + Whether the two error codes are not the same. + + + FACILITY_NULL + + + FACILITY_RPC + + + FACILITY_DISPATCH + + + FACILITY_STORAGE + + + FACILITY_ITF + + + FACILITY_WIN32 + + + FACILITY_WINDOWS + + + FACILITY_CONTROL + + + MSDN doced facility code for ESE errors. + + + FACILITY_WINCODEC (WIC) + + + Wrapper for HRESULT status codes. + + + S_OK + + + S_FALSE + + + E_PENDING + + + E_NOTIMPL + + + E_NOINTERFACE + + + E_POINTER + + + E_ABORT + + + E_FAIL + + + E_UNEXPECTED + + + STG_E_INVALIDFUNCTION + + + REGDB_E_CLASSNOTREG + + + DESTS_E_NO_MATCHING_ASSOC_HANDLER. Win7 internal error code for Jump Lists. + There is no Assoc Handler for the given item registered by the specified application. + + + DESTS_E_NORECDOCS. Win7 internal error code for Jump Lists. + The given item is excluded from the recent docs folder by the NoRecDocs bit on its registration. + + + DESTS_E_NOTALLCLEARED. Win7 internal error code for Jump Lists. + Not all of the items were successfully cleared + + + E_ACCESSDENIED + Win32Error ERROR_ACCESS_DENIED. + + + E_OUTOFMEMORY + Win32Error ERROR_OUTOFMEMORY. + + + E_INVALIDARG + Win32Error ERROR_INVALID_PARAMETER. + + + INTSAFE_E_ARITHMETIC_OVERFLOW + + + COR_E_OBJECTDISPOSED + + + WC_E_GREATERTHAN + + + WC_E_SYNTAX + + + + Create an HRESULT from an integer value. + + + + + + Get a string representation of this HRESULT. + + + + + + Convert the result of Win32 GetLastError() into a raised exception. + + + + + retrieve HRESULT_FACILITY + + + + + retrieve HRESULT_CODE + + + + + HideCommand Dependency Property + + + + + Handles changes to the HideCommand property. + + + + + Provides derived classes an opportunity to handle changes to the HideCommand property. + + + + + Coerces the HideCommand value. + + + + + AutoHideCommand Dependency Property + + + + + Handles changes to the AutoHideCommand property. + + + + + Provides derived classes an opportunity to handle changes to the AutoHideCommand property. + + + + + Coerces the AutoHideCommand value. + + + + + DockCommand Dependency Property + + + + + Handles changes to the DockCommand property. + + + + + Provides derived classes an opportunity to handle changes to the DockCommand property. + + + + + Coerces the DockCommand value. + + + + + CanHide Dependency Property + + + + + Handles changes to the CanHide property. + + + + + Provides derived classes an opportunity to handle changes to the CanHide property. + + + + + Gets or sets the HideCommand property. This dependency property + indicates the command to execute when an anchorable is hidden. + + + + + Gets or sets the AutoHideCommand property. This dependency property + indicates the command to execute when user click the auto hide button. + + By default this command toggles auto hide state for an anchorable. + + + + Gets or sets the DockCommand property. This dependency property + indicates the command to execute when user click the Dock button. + + By default this command moves the anchorable inside the container pane which previously hosted the object. + + + + Gets or sets the CanHide property. This dependency property + indicates if user can hide the anchorable item. + + + + + Model Dependency Property + + + + + Provides derived classes an opportunity to handle changes to the Model property. + + + + + LayoutItem Read-Only Dependency Property + + + + + Provides a secure method for setting the LayoutItem property. + This dependency property indicates the LayoutItem attached to this tag item. + + The new value for the property. + + + + Gets or sets the Model property. This dependency property + indicates model attached to this view. + + + + + Gets the LayoutItem property. This dependency property + indicates the LayoutItem attached to this tag item. + + + + + Special window handles + + + + + Changes an attribute of the specified window. The function also sets the 32-bit (long) value at the specified offset into the extra window memory. + + A handle to the window and, indirectly, the class to which the window belongs.. + The zero-based offset to the value to be set. Valid values are in the range zero through the number of bytes of extra window memory, minus the size of an integer. To set any other value, specify one of the following values: GWL_EXSTYLE, GWL_HINSTANCE, GWL_ID, GWL_STYLE, GWL_USERDATA, GWL_WNDPROC + The replacement value. + If the function succeeds, the return value is the previous value of the specified 32-bit integer. + If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + + The MonitorFromRect function retrieves a handle to the display monitor that + has the largest area of intersection with a specified rectangle. + + Pointer to a RECT structure that specifies the rectangle of interest in + virtual-screen coordinates + Determines the function's return value if the rectangle does not intersect + any display monitor + + If the rectangle intersects one or more display monitor rectangles, the return value + is an HMONITOR handle to the display monitor that has the largest area of intersection with the rectangle. + If the rectangle does not intersect a display monitor, the return value depends on the value of dwFlags. + + + + + The MonitorFromWindow function retrieves a handle to the display monitor that has the largest area of intersection with the bounding rectangle of a specified window. + + A handle to the window of interest. + Determines the function's return value if the window does not intersect any display monitor. + If the window intersects one or more display monitor rectangles, the return value is an HMONITOR handle to the display monitor that has the largest area of intersection with the window. + If the window does not intersect a display monitor, the return value depends on the value of dwFlags. + + + + + The GetMonitorInfo function retrieves information about a display monitor. + + Handle to the display monitor of interest. + Pointer to a MONITORINFO or MONITORINFOEX structure that receives + information about the specified display monitor + If the function succeeds, the return value is nonzero. + If the function fails, the return value is zero. + + + + SetWindowPos Flags + + + + If the calling thread and the thread that owns the window are attached to different input queues, + the system posts the request to the thread that owns the window. This prevents the calling thread from + blocking its execution while other threads process the request. + SWP_ASYNCWINDOWPOS + + + Prevents generation of the WM_SYNCPAINT message. + SWP_DEFERERASE + + + Draws a frame (defined in the window's class description) around the window. + SWP_DRAWFRAME + + + Applies new frame styles set using the SetWindowLong function. Sends a WM_NCCALCSIZE message to + the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE + is sent only when the window's size is being changed. + SWP_FRAMECHANGED + + + Hides the window. + SWP_HIDEWINDOW + + + Does not activate the window. If this flag is not set, the window is activated and moved to the + top of either the topmost or non-topmost group (depending on the setting of the hWndInsertAfter + parameter). + SWP_NOACTIVATE + + + Discards the entire contents of the client area. If this flag is not specified, the valid + contents of the client area are saved and copied back into the client area after the window is sized or + repositioned. + SWP_NOCOPYBITS + + + Retains the current position (ignores X and Y parameters). + SWP_NOMOVE + + + Does not change the owner window's position in the Z order. + SWP_NOOWNERZORDER + + + Does not redraw changes. If this flag is set, no repainting of any kind occurs. This applies to + the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent + window uncovered as a result of the window being moved. When this flag is set, the application must + explicitly invalidate or redraw any parts of the window and parent window that need redrawing. + SWP_NOREDRAW + + + Same as the SWP_NOOWNERZORDER flag. + SWP_NOREPOSITION + + + Prevents the window from receiving the WM_WINDOWPOSCHANGING message. + SWP_NOSENDCHANGING + + + Retains the current size (ignores the cx and cy parameters). + SWP_NOSIZE + + + Retains the current Z order (ignores the hWndInsertAfter parameter). + SWP_NOZORDER + + + Displays the window. + SWP_SHOWWINDOW + + + + The MONITORINFO structure contains information about a display monitor. + + + + + The size of the structure, in bytes. + + + + + A RECT structure that specifies the display monitor rectangle, expressed + in virtual-screen coordinates. + Note that if the monitor is not the primary display monitor, + some of the rectangle's coordinates may be negative values. + + + + + A RECT structure that specifies the work area rectangle of the display monitor, + expressed in virtual-screen coordinates. Note that if the monitor is not the primary + display monitor, some of the rectangle's coordinates may be negative values. + + + + + A set of flags that represent attributes of the display monitor. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Auto Hide. + + + + + Looks up a localized string similar to Auto Hide. + + + + + Looks up a localized string similar to Hide. + + + + + Looks up a localized string similar to Window Position. + + + + + Looks up a localized string similar to Dock. + + + + + Looks up a localized string similar to Dock as Tabbed Document. + + + + + Looks up a localized string similar to Float. + + + + + Looks up a localized string similar to Hide. + + + + + Looks up a localized string similar to Close. + + + + + Looks up a localized string similar to Close All But This. + + + + + Looks up a localized string similar to Window Position. + + + + + Looks up a localized string similar to Dock as Tabbed Document. + + + + + Looks up a localized string similar to Float. + + + + + Looks up a localized string similar to Move To Next Tab Group. + + + + + Looks up a localized string similar to Move To Previous Tab Group. + + + + + Looks up a localized string similar to New Horizontal Tab Group. + + + + + Looks up a localized string similar to New Vertical Tab Group. + + + + + Looks up a localized string similar to Maximize. + + + + + Looks up a localized string similar to Restore. + + + + + IconTemplate Dependency Property + + + + + Handles changes to the IconTemplate property. + + + + + Provides derived classes an opportunity to handle changes to the IconTemplate property. + + + + + IconTemplateSelector Dependency Property + + + + + Handles changes to the IconTemplateSelector property. + + + + + Provides derived classes an opportunity to handle changes to the IconTemplateSelector property. + + + + + Gets or sets the IconTemplate property. This dependency property + indicates the data template for the icon. + + + + + Gets or sets the IconTemplateSelector property. This dependency property + indicates the DataTemplateSelector for the Icon. + + + + diff --git a/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/de/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..3005ea9adb669b3dc833d986841e965e67150d67 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/hu/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..b09aea9846d9c36a2251ce8e42856900d65f242c GIT binary patch literal 5632 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 literal 0 HcmV?d00001 diff --git a/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/pt-BR/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..8c9eb599a5ded3319c96b9048cc3899d4033b999 GIT binary patch literal 6144 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 E4f+-;BLDyZ literal 0 HcmV?d00001 diff --git a/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/ru/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..4c77c97e57e2ebb24dc481d41df8a076ce9eff18 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll b/packages/AvalonDock.2.0.2000/lib/net40/zh-Hans/Xceed.Wpf.AvalonDock.resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..c52a6daa0078458a6c9fb460a6cecd407546d38c GIT binary patch literal 5632 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 L`@dG-tOfoDC6Y~i literal 0 HcmV?d00001 diff --git a/packages/ini-parser.2.1.1/README.md b/packages/ini-parser.2.1.1/README.md new file mode 100644 index 00000000..e189676e --- /dev/null +++ b/packages/ini-parser.2.1.1/README.md @@ -0,0 +1,56 @@ +# INI File Parser + +A Mono-compatible .NET library for reading/writing INI data from IO streams, file streams, and strings. + +[![Build Status](https://travis-ci.org/rickyah/ini-parser.png?branch=master)](https://travis-ci.org/rickyah/ini-parser) + +## Installation + +The library is published to [NuGet](https://www.nuget.org/packages/ini-parser/) and can be installed on the command-line from the directory containing your solution. + +```bat +> nuget install ini-parser +``` + +Or, from the [Package Manager Console](http://docs.nuget.org/docs/start-here/using-the-package-manager-console) in Visual Studio + +```powershell +PM> Install-Package ini-parser +``` + +Or from the [NuGet Package Manager](http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c) extension built available for most flavors of Visual Studio! + +## Getting Started + +INI data is stored in nested dictionaries, so accessing the value associated to a key in a section is straightforward. Load the data using one of the provided methods. + +```csharp +var data = parser.ReadFile("Configuration.ini"); +``` + +Retrieve the value for a key inside of a named section. Values are always retrieved as `string`s. + +```csharp +var useFullScreen = data["UI"]["fullscreen"]; +``` + +Modify the value in the dictionary, not the value retrieved, and save to a new file or overwrite. + +```csharp +data["UI"]["fullscreen"] = "true"; +parser.WriteFile("Configuration.ini", data); +``` + +See the [wiki](https://github.com/rickyah/ini-parser/wiki) for more usage examples. + +## Contributing + +Do you have an idea to improve this library, or did you happen to run into a bug. Please share your idea or the bug you found in the issues page, or even better: feel free to fork and [contribute](https://github.com/rickyah/ini-parser/wiki/Contributing) to this project! + +## Version 2.0! +Since the INI format isn't really a "standard", this version introduces a simpler way to customize INI parsing: + + * Pass a configuration object to an `IniParser`, specifying the behaviour of the parser. A default implementation is used if none is provided. + + * Derive from `IniDataParser` and override the fine-grained parsing methods. + diff --git a/packages/ini-parser.2.1.1/content/LICENSE b/packages/ini-parser.2.1.1/content/LICENSE new file mode 100644 index 00000000..fe5f7ed6 --- /dev/null +++ b/packages/ini-parser.2.1.1/content/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2008 Ricardo Amores Hernández + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec new file mode 100644 index 00000000..d958ff15 --- /dev/null +++ b/packages/ini-parser.2.1.1/ini-parser.2.1.1.nuspec @@ -0,0 +1,17 @@ + + + + ini-parser + 2.1.1 + INI Parser + Ricardo Amores Hernández + Ricardo Amores Hernández + https://github.com/rickyah/ini-parser/master/blob/LICENSE.txt + https://github.com/rickyah/ini-parser + false + A Mono compatible .NET open source library for managing data from an INI file format. Allows reading/writing INI data to and from I/O streams, file streams, and/or plain strings. + A simple C# library for reading and writing INI files + + ini + + \ No newline at end of file diff --git a/packages/ini-parser.2.1.1/lib/INIFileParser.dll b/packages/ini-parser.2.1.1/lib/INIFileParser.dll new file mode 100644 index 0000000000000000000000000000000000000000..7a088d18907d711e488820cf176b7a4118462f6f GIT binary patch literal 26112 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 CVHb=5 literal 0 HcmV?d00001 diff --git a/packages/repositories.config b/packages/repositories.config new file mode 100644 index 00000000..40a89028 --- /dev/null +++ b/packages/repositories.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file